谈谈AI

由AI大作业想到的

近几年《人工智能导论》的大作业是编写一个博弈程序,这类程序的典型框架就是α-β剪枝算法,像著名的打败了国际象棋大师卡斯帕罗的深蓝,就是这么干的,一些中国象棋程序也是这样的框架。大多数同学在完成大作业时,也基本选择的是这个框架,也刚好与上课内容一致。
然后这个在国际象棋、中国象棋上均显示了威力的框架,在面对围棋程序时却显得无能为力。很多人对此发表评论,什么围棋比象棋复杂啊,围棋状态更多啊等等,各种论点被抛出。复杂、状态多也许是事实,但我认为并不是问题的根本。
原因出在什么地方呢?由于时间和空间的限制,α-β剪枝算法不可能穷尽所有的走法,搜索范围只能限定在一定深度内。这样就要求对于出现的棋局进行打分,按照该打分选择最佳的走法。因此在α-β剪枝算法框架下写博弈程序时,如何程序实现α-β剪枝算法并不是难点,如何正确或者尽可能正确地对棋局进行打分成为了程序智能水平的最关键部分。
为什么国际象棋、中国象棋程序可以达到人类最高的水平?其原因也就在这里。当搜索达到一定深度后,无论是国际象棋还是中国象棋,可以通过人工的办法给出一些还算可靠的计分办法,比如双方棋子的数量,车、马、炮所在位置等,都是可以有效计分的依据,当然这需要对棋本身具有很深刻的了解才行。
而围棋,在这方面就困难的多,所以至今还没有找到相对可靠的计分办法,从而导致α-β剪枝算法框架的失败。
同学们在完成大作业时,尤其是前几年基本都是基于α-β剪枝算法的,根据与个别同学的交流,花费的主要精力也是在如何评估打分上,程序设计只占了很少的工作量。
所以,在这样一个框架下,实现一个高智能的计算机博弈程序,至少有一半的功劳是归功于人的智力总结的计分方法的,且这个计分方法非常依赖于具体的博弈游戏,不具有任何的推广价值
大约在06年,人们在研究围棋程序时提出了蒙特卡洛方法,并且在9*9棋盘上取得了很高的水平,虽然在正式棋盘上性能还不理想,但至少是在围棋程序方面向前迈了一大步。
蒙特卡洛法方法很简单,围棋不是难于对棋局打分吗?那么就想法避开这一步,不再对棋局进行静态的打分,而是根据随机模拟的方式,给出每个下棋点可能取胜的概率,用该概率值作为对棋局的评估。这样带来的最大好处是,不再需要程序设计者对具体的棋有多深的了解,只要掌握基本的下棋规则即可。
这样一来,就把程序的所有智能,全部给了机器,而不再依靠人的总结,而且是一个相对通用的,具有很好的推广性
从去年开始,一些同学也开始尝试应用蒙特卡洛方法完成大作业,并且取得了很好的结果,不再需要花费大力气去总结计分规则,而把主要精力放在写程序上。也有同学把α-β剪枝与蒙特卡洛方法结合起来,克服蒙特卡洛方法存在的一些不足。
这才是真的人工智能,或者说在向着真的人工智能前进
由此也想到,以往我们在做分类、聚类、识别等系统时,很大的功夫都花费在了具体的特征提取、选择上,很多人也说,关键在特征,特征如果提取的好,选用什么算法则关系不大。这样一来,实际上智能的实现依靠的不是机器,还是我们人自己。
最近几年,深度学习为什么受到很多人的重视?我想其自动提取特征可能是主要原因。虽然目前深度学习可能还有很多问题,也引起了一些争论,但无论如何,我觉得这种“全部交给机器去做”才是人工智能的真正方向。

转自:http://blog.sina.com.cn/s/blog_73040b820101bwrl.html

原文地址:https://www.cnblogs.com/freeopen/p/5482930.html