深度学习讲稿(1)

2021-01-26  本文已影响0人  山岳之心

深度学习

I. 从AlphaGo谈起

大家听说过2015年10月, 英国DeepMind设计的人工智能AlphaGo,以总比分 4 : 1 击败世界最顶尖的围棋高手李世石的故事吗?

击败李世石的就是一种计算机算法:深度学习。具体来说,是基于蒙特卡洛搜索树方法的卷积神经网络算法。

在 AlphaGo 之前,人工智能-深蓝在1997年击败了国际象棋世界第一人卡斯帕罗夫。但在1997年以后,人工智能很少被提及,主要的原因是计算机的算力不能够处理更复杂的实际问题。而围棋作为人类最复杂的思想游戏,19*19的棋盘上,要设计出完美胜利的棋路面临的计算将是天文数字量级的。即便现在的计算机算力,也远远不够。既然无法算出最佳的走棋方案,为什么 AlphaGo 能够击败最顶尖的人类围棋棋手呢?这其实是因为算法设计的原因。

假如让你来设计下围棋的人工智能,你有什么好的方案呢?

毫无疑问,这是一个碟中谍式的任务(Mission Impossible)。

在设计这个任务之前,尝试用最简洁的语言清晰地表达出这个任务来。 请你们闭上眼,深入思考这个问题五分钟,要专注在这个表达任务上,不要急着思考怎么设计。


想好了吗?


现在公布答案:让计算机程序学会并下好围棋。

简单吗?很简单。但是这是个良好定义的表达式,它清楚地表达了任务的所有要素。这个句子告诉我们,任务是编写计算机程序,它要学会下围棋并且知道怎么下比较好。

1.1 解决问题的第一性原理:大象和冰箱

我来说一个很有名的冷笑话。

问:怎么把大象放进冰箱?

答: 第一步,将冰箱门打开;第二步:将大象放进去;第三步:关上冰箱门。

这是一个笑话,但同时也是一个完成任务的方法论。请你不要把这个笑话当成笑话。在面对每一个看起来困难的事情的时候,请你回想这个把大象放进冰箱的笑话。删繁就简,是最佳的设计思路。在这个大象装冰箱的故事里,我们不去考虑大象本身的属性,也不去考虑冰箱的设计,只专注于完成这个主要逻辑。我称这种抓主要逻辑的思路为解决问题的第一性原理。

1.2 四个步骤到围棋人工智能

让我们回到围棋人工智能的问题上来。这个问题的主要逻辑是什么?

这样就把解决围棋人工智能问题拆分成了三个步骤。然后对每一个步骤,我们都可以独立去解决。如此拆分下去,最终就会变成一个个小的能解决的问题。

老子说,“难,易之相成也”。把难的拆分成容易的,就能解决了。

三个步骤,实际上相当于三个算法库。

比如第一步,让计算机程序认识围棋,就需要把棋局数字化,并且能够按照下棋的先后记录棋谱。它也需要能够对于棋谱进行规则分析,比如分析棋盘上任意一个棋子或一片棋子的“气”,并且能够分析得出一个棋形的死活。

第二步是要整体评价当前已经获得的“气”和敌方获得的“气”,评价任意一块棋形的风险状态。

第三步是要分析对方和自己的最可能下在什么地方,并且分析随后的棋形的状态。

因此整个的算法设计,核心功能就是识别棋盘当前的状态,预测可能的状态变化,根据变化反馈重新识别状态。

所以我们要识别出棋局上的每个块的特征,根据这些特征来对块周围的区域进行赋权,找到最优的决策路径,在每次决策后对新的块特征进行重新评估。

看到这里的重点了吗?

  1. 我们要知道每个“棋块”的特征。而这些特征需要被解读出来。
  2. 我们要用这些“棋块”特征进行搜索最优博弈路径。

从上面的分析,我们知道,设计围棋人工智能需要 1. 数据建模;2. 特征分析 3. 评价机制 4. 决策机制。这是一个循环反馈的计算过程。

所以你看,至少从算法设计的层面来看,设计一个人工智能围棋高手也并不是那么困难。

1.3 AlphaGo 背后的算法

知乎上有一篇描述 AlphaGo 的算法简述,写的非常好。链接如下:https://www.zhihu.com/question/41176911/answer/90118097

AlphaGo总共有四个算法:

  1. DCNN算法,全称是深度卷积神经网络。它的作用是识别当前棋局的特征。它是数据建模和特征识别。
  2. 走棋神经网络,它的作用是让特征产生变化,它是一个监督学习网络。它是专家辅助决策系统。
  3. MCTS算法,全称是蒙特卡洛搜索树算法,它是一种随机搜索的算法。它对应于搜索决策系统。
  4. 强化学习和评价算法。它的作用是找到局部最优的着法。相当于局部的“棋感”。它通过左右互搏这种方法来提高评价准确度。它对应于我们前面所说的评价机制。

所以你看,最强大的围棋人工智能:AlphaGo 的算法设计并没有什么神奇的地方。它和我们在最开始做的思维游戏是一样的思路。

1.4 学习的第一性原理

实际上,我们应该理解人类学习本身的步骤。我们人类是通过三步学习法来学习的。对于新知识,我们首先是理解这个新知识解决了什么问题。这个可以归纳为“看到”。然后我们思考其中的原理和步骤,这个步骤就是“思考”。最后尝试应用这个新知识去解决类似的问题,这个步骤就是“实践”。通过不断“实践”,刻意练习,我们就对这个知识形成了“肌肉记忆”也就是认知。

AlphaGo的DCNN算法相当于“看到”,而MCTS算法则相当于“思考”,强化学习相当于“实践”或者刻意练习。走棋神经网络则相当于有大量经验的老师,这个老师会指导DCNN算法更快地“看到”。从学习的本质上来看,走棋神经网络并不是必须的,而强化学习才是真正的积累经验的方法。所以在后一代的AlphaZero算法中,加强的就是强化学习,也就是生成对抗网络算法。

现在,我们知道,AlphaGo 的算法和人类学习并没有本质的区别。事实上,任何学习算法都应该遵循“看到”,"思考","实践"三个设计原则,这三者互相作用,就是学习的第一性原理。在目前的商业应用中,深度卷积神经网络是比较成熟的,它应用于图像识别,人脸识别,语音识别领域都有很高的精确度。但是我们知道,这其实完全代表不了人工智能。究其原因,是因为现实应用中的规则的复杂度是远远超过围棋的,而且现实中的系统是开放系统,计算机无法获得完备的信息。所以,要实现真正的能够自主学习的“强人工智能”,仍然需要很长时间的研究。但是,在某些应用场景下,比如无人工厂,智能物流等领域,由于规则有限,且环境封闭,正是AlphaGo的算法用武之地。

上一篇下一篇

猜你喜欢

热点阅读