AlphaGo是一个自学成才的人工智能围棋,昨晚在韩国首尔举行的围棋比赛中,战胜了该国的李世石,赢得了第五局,也是最后一局。世石是中国古代游戏中最伟大的现代玩家之一。最终比分是4比1。

这就是程序员们用来测试机器智能的最后一个也是计算难度最大的游戏。国际象棋是人工智能最初的试金石,19年前就被机器征服了,但人们曾预计围棋将在未来许多年里继续存在。

这一压倒性胜利的意义远远超过100万美元的奖金,谷歌在伦敦收购的DeepMind表示,这笔奖金将捐给慈善机构。这是因为,尽管AlphaGo拥有强大的处理能力,但它的胜利主要归功于一种全新的使用这种能力的方式:通过深度神经网络。这些网络只需要人类的一点点干预就可以自我训练,而DeepMind的研究人员做到了已经证明了他们可以掌握广泛的范围电脑电子游戏。研究人员希望这种概括性可以延续到许多其他领域的实际任务的掌握,包括医学和机器人。

游戏编程始于国际象棋,使用的方法最初由克劳德·香农和艾伦·图灵在20世纪40年代提出。机器计算每一方的每一种可能的延续,尽可能多地向前移动,从而生成一个包含数百万个棋局位置的分析树。然后,它通过应用甚至是初级棋手都知道的经验法则,比如不同棋子的不同值,以及控制棋盘中心的重要性,对位置进行评分。最后,该算法从这些结束位置回溯到当前位置,以找到导致最佳结果的走法,假设双方都有完美的发挥。

借助现代硬件,这种“蛮力”方法可以生成强大的国际象棋程序。添加一个技巧包来“修剪”分析树,剔除不好的线,这样程序就能更深入地探索有希望的线,你就能获得世界冠军级别的比赛。1997年,IBM的深蓝超级计算机击败了当时的国际象棋世界冠军加里·卡斯帕罗夫。今天你可以下载一个100美元的程序,发挥得更好-在笔记本上

尽管一些研究人员认为一段时间以来,虽然蛮力搜索原则上可以征服围棋,但围棋一直抵制这种努力。与国际象棋相比,中国围棋在特定位置上提供了更多的走法,在典型游戏中也提供了更多的走法,从而形成了一个庞大的分析树。它也缺乏可靠的经验法则来对职位进行评级。

近年来,很多程序员试过用蒙特卡罗模拟来解决这个问题,蒙特卡罗模拟是一种统计方法,从一个可能从给定位置开始的庞大游戏数据库中找到最佳的第一步。这种方法和以前的树生成方法在AlphaGo中也有一些使用。但最关键的改进是AlphaGo深度神经网络的使用识别模式。

在一个安静的时刻,42分钟3月10日,在直播这场比赛的第二场比赛时,谷歌的Thore Graepel在线评论了他一年前在Deep Mind伦敦办公室工作的第一天,第一次与早期形式的AlphaGo在场外相遇。“我想,神经网络,能有多难?它甚至不能读取位置,它只是做模式识别,”Graepel说。“我在董事会前坐了下来,一小群人围了过来,不一会儿,我的处境开始恶化……我最终输了,我再次尝试,但再次失败。至少那时公司认识我,我得到了很好的介绍!”

AlphaGo使用两个神经网络,一个是策略网络,它经过数百万次大师游戏的训练,目标是模仿它们的玩法,另一个是价值网络,它试图为每个给定的位置分配获胜概率。这样,机器就能把精力集中在最有希望的延续上。然后是树搜索部分,试图预测未来的许多步骤。

“一种理解方式是,策略网络提供了一个指南,建议AlphaGo考虑哪些动作;但AlphaGo可以超越这一点,得出一个新的结论,推翻政策网络的建议,”AlphaGo团队负责人大卫·西尔弗解释道。在昨晚的网上评论中就在决赛前。“在搜索树的每个部分,它都在使用政策网络来建议下一步,使用价值网络来评估下一步。格拉佩尔是一名出色的业余选手,上任第一天,仅凭政策网络就足以击败他。”

AlphaGo分工的一个奇怪后果是,一旦它认为自己已经明显获胜,它就会采取这种方式。人类棋手通常会试图以最大的优势取胜,不仅要在棋盘上多得一分,如果可能的话,还要多得10或20分。这样,即使这个人后来犯了一个小错误,他也有可能赢。但AlphaGo更喜欢以1分的优势获胜(它认为这是大概率),而不是以20分的优势获胜(这种可能性相当低)。

你可能会认为,李世石之所以能在周日赢得第四局比赛,是因为他倾向于采取安全但松懈的动作。事实上,当时的评论员指出,当世石突然出击时,机器似乎占了上风,之后机器下了一些弱棋。世石已经耗尽了他的时间,所以不得不争分夺秒地进行后面的动作,但最终他能够保持他的优势,最终赢得了胜利。

然而,DeepMind团队的成员们并不是懈怠,而是完全的意外导致了这个问题昨晚说在决赛前的解说中。“李发现的关键一步,78步,被认为是非常不可能由人类下的——(程序)估计只有万分之一的可能性,”团队负责人大卫·西尔弗说。“公平地说,AlphaGo对这一举动感到惊讶;它必须在那时开始重新规划。”

如果有足够的时间,人类棋手面对一种奇怪的走法会深入研究,而AlphaGo有足够的时间。“但AlphaGo有一个简单的时间控制策略,”西尔弗指出。“也许这是我们未来可以努力的地方。”

因此,改进AlphaGo的努力似乎仍将继续。

“未来研究的一个令人兴奋的方向是考虑机器是否可以完全自主学习,而不需要任何帮助任何以人类为榜样,才能达到这样的表现水平,”西尔弗说。

当然,最终的目标是创造一个全面的学习机器,一个可以学习做很多事情的人现在拿工资做。比如,报道和写像这样的博客文章。

对话(0)

为什么函数式编程应该是软件开发的未来

这很难学习,但是您的代码将产生更少令人讨厌的意外

11分钟读取
垂直
一盘用代码做成的意大利面
Shira Inbar
DarkBlue1

你期望人生中最长、最昂贵的阶段一个软件产品的周期是系统的初始开发,当所有这些伟大的功能都是第一次想象,然后创建。事实上,最难的部分出现在后面的维护阶段。这时程序员就会为他们在开发过程中走的捷径付出代价。

那么,他们为什么要走捷径呢?也许他们没有意识到自己在偷工减料。只有当他们的代码被大量用户部署和使用时,隐藏的缺陷才会暴露出来。也许开发人员太匆忙了。推向市场的时间压力几乎保证了他们的软件会包含更多的bug。

继续阅读↓ 显示更少
{“imageShortcodeIds”(“31996907”):}
Baidu