失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > AI人工智能入门(浅析AlphaGo的实现)

AI人工智能入门(浅析AlphaGo的实现)

时间:2023-02-18 13:42:55

相关推荐

AI人工智能入门(浅析AlphaGo的实现)

说起人工智能,我们的脑海中会浮现出如《钢铁侠》、《变形金刚》等影片中震撼的科技和宏大的战斗场景。曾几何时我们也希望自己的语音助手能像“贾维斯”一样料理生活起居,甚至帮助主人完成各项高难度工作。如今,这一切似乎都变得触手可及,人工智能的浪潮已经掀起,但是每每谈及这个话题之时,我们只是着眼于科技表面的绚丽多彩,而忽视了其深层的理论原理,譬如人尽皆知的“AlphaGo”,请问它到底是怎么实现的呢?进一步说:人工智能是如何实现的呢?

这便是我写下这篇文章的原因所在,知其然更要知其所以然,当生活越来越离不开人工智能之时,我们就更要刨根问底,聊一聊人工智能到底是个什么东西?

一、图灵测试

什么样的计算机具有“智能”呢?计算机科学的祖师爷图灵认为:将计算机与人类分别放在两个房间中(彼此看不到),然后向他们提问,通过他们的回答来判断哪个是计算机,哪个是人类?

对于一些“正常”的问题,我们显然无法区分谁是计算机谁是人类,譬如提问:今天天气如何?他们都会说出具体的天气状况然后给出一些穿衣建议。但如果你问:今天的天气适合躺在云朵上睡觉吗?于人类而言这荒谬至极,于计算机而言它也许还是会认真的回答问题甚至给出睡眠的建议。此时我们便很容易地区分开了计算机和人类。

可以制造出能通过图灵测试的计算机吗?图灵认为这很困难,他预言50年后,当计算机的存储容量达到10的9次方的水平时,提问者可能在连续交谈约5分钟后以不超过70%的几率作出正确的判断。现在看来,他的预言并没有完全实现,现在的计算机智能程度还很低。

现在我们已经知道了如何评价计算机的智能程度,下一个问题是:如何让计算机像人一样思考以及做出决策?

二、启发式搜索

人的思维过程其实是搜索的过程,当你在考场奋笔疾书时,你正在不断地搜索已经存储在大脑中的知识点,这与传统的机器搜索方法有什么区别呢?譬如说经典的“遍历式搜索”,正是利用了机器处理速度快的特点,但人类大脑的搜索并非这样,你并不会遍历自己一生所学才得出结果,多数的情况是:你会根据一些搜索目标的信息去进行搜索,而这些信息我们称之为“启发信息”,顾名思义:能够启发你找到答案的信息。

有了启发信息,我们就可以让计算机像人脑一样搜索答案。

由此,我们定义了一个评价函数:

这就是著名的“启发式搜索算法A”,n是被评价的结点,g(n)表示搜索路径的耗散值,h(n)是启发函数。

以八数码问题(Eight-Puzzle)为例,问如何移动数字可以使(a)状态转变为(b)状态?

搜索路径的耗散值我们就用结点深度来表示,那么启发函数如何设置?答案并不唯一,这里给出一种方法:以“不在位”的数字个数作为启发函数的度量,譬如(a)状态中“1”、“2”、“6”、“8”四个数字不在目标状态的位置上,那么初始状态的h值就等于4。g(n)和h(n)确定后,我们就可以用f(n)来估计通向目标结点的希望程度,f值越大,表示越有希望通向目标状态,所以我们会优先扩展搜索树中f值较大的结点,这样就会以最小的耗散值找到通往目标状态的路径。下面给出搜索树:

大写字母A、B、C...M标记了每一个扩展的结点,括号内的数字即是该结点的f值,不难得出走步序列是是B、E、I、K、L。

这便是利用启发信息进行搜索的过程,在这个过程中,计算机的搜索方式与人脑的思考方式才真正达到了一致,而科学研究的焦点是:如何使计算机在面对任意问题时都能找到合适的启发函数?这个问题留待思考。

现在我们已经可以让计算机像人一样思考了,那么“AlphaGo”是如何实现的呢?

三、博弈树与AlphaGo

上文提到的“八数码”问题只是一个单人游戏,而生活中更常见的是譬如象棋、围棋一类的双人游戏,对垒双方轮流走步,对垒的结果是一方胜而另一方败,或者是打成平手。类似这样的零和博弈可以用博弈树来描述,当一方走步完成后,计算机对所有可走步进行计算,选择对己方优势最大的结点进行扩展,并在接下来的路经上继续选取对己方优势最大的结点,如此反复将会使节点扩展方向指向胜利。

以圈叉游戏为例,我们设定程序方MAX的棋子用“×”表示,对手MIN的棋子用“⚪”表示,设置一个静态估计函数:f(p)=(所有空格放上MAX的棋子后MAX的三子成线总数)-(所有空格放上MIN的棋子后MIN的三子成线总数),若p是MAX胜,则f(p)=∞;若p是MIN胜,则f(p)=-∞。下面给出第一阶段搜索树:

在MAX走第一步之前,首先要计算己方所有的走步MIN方会如何应对,因为MIN方会在所有的可能走步中选择f值最小的一步,这样MIN才离胜利条件“f(p)=-∞”更近;同理,MAX方会在所有的可能走步中选择f值最大的一步,这样MAX才离胜利条件“f(p)=∞”更近。所以MAX方在三种开局方式中选择了倒推值最大的“1”作为第一步,紧接着MIN方会以相同的方式进行计算从而决定该把棋子下在哪里...

不难得出:圈叉游戏先手的最佳走步是将棋子放在中央位置。

如果将同样的思路用在围棋上,加之以计算机高速的计算,战胜人类世界冠军棋手也就不足为奇了。

然而在实际应用中还会对搜索方式进行优化以加快计算机的决策速度,即:α-β剪支。

该方法的思路大致为:MAX方走步时选择的是其扩展结点倒推值的最大值,那么当得到第一个倒推值时,可将其记为α,以后的倒推值如若比α小,则不必对子节点继续扩展,可直接将该分支剪掉;MIN方走步时选择的是其扩展结点倒推值的最小值,那么当得到第一个倒推值时,可将其记为β,以后的倒推值如若比β大,则不必对子节点继续扩展,可直接将该分支剪掉。

用一句话概括:α是MAX的下界;β是MIN的上界。

α-β剪支大大提高了搜索效率,减少了扩展结点的数量,做完这步优化后,AlphaGo诞生了。

四、新的发展方向

中关村论坛研讨了人工智能新的发展方向:从“大炼模型”向“炼大模型”转变。AlphaGo是一座里程碑,但似乎也成为了人工智能发展的瓶颈,我们狂喜于各类模型的训练,可截至目前仍然没有实现真正的人工智能。现如今人工智能的架构基本是:像人一样思考(搜索算法+谓词逻辑与归结原理)、像人一样学习(知识表示与机器学习)、像人一样感觉(神经网络),而“大模型”意味着更加广泛的应用场景,这就要求着更多数据、更多资源和更大算力。

这一发展方向让我们离真正的人工智能又近了一步。

但是...

人工智能的未来在哪里?

如果觉得《AI人工智能入门(浅析AlphaGo的实现)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。