新闻中心

一盘棋都没下过,AI只听人类评论比赛,就学会了国际象棋
发布时间:2019-09-20 16:30:38来源:飞火电竞-飞火电竞app-飞火电竞官网点击:66

  栗子 发自 凹非寺

  量子位 出品 | 公众号 QbitAI一只AI要学会国际象棋,是不是一定要下过棋才行?

  不一定。

  伦敦大学学院的小伙伴们,开发了一只新的国际象棋AI,只看人类对比赛的评论,就能学会下棋。

  AI的名字叫SentiMATE,是通过解说员/评论员言语里的情绪,来判断一手棋的好坏。团队发现,只靠这些情绪,AI就学到了国际象棋的基本规则,以及一些关键策略,并战胜了前辈DeepChess算法。

  重点是,它对训练数据量的要求还不高。

  那么,这只AI到底都经历了什么?

  不一样的学习方法

  故事要从大部分国际象棋AI的工作方式讲起。

  现在的国际象棋算法,基本都有两个关键部分:

  一是搜索算法,用来搜索所有可能的下一步,搭起一棵树,树上有很多节点。

  二是评估算法,用来分析如果走到树上的某个节点,会有怎样的优势。△ 比如,这就是一棵树

  而SentiMATE,就是把第二部分,换了一种方法来做:

  分析比赛评论里句子的情绪,判断每手棋的好坏,由此训练一个新的评估函数。

  情绪评估

  评论的文本,是从一个国际象棋论坛上扒的。

  为了分析评论员的情绪,团队用到了两个分类器。

  第一个分类器,要从解说文本里,把形容一手棋质量的评论挑出来,无关质量的扔出去。

  研究人员用手动标注的2700条评论,再加上另外300条作为测试集,训练好了这个二分类器。

  这样从能就原始数据集里,筛选出有用的评价了。

  第二个分类器,要从筛选好的句子里,分析出情绪。这个部分很关键,也很复杂。因为有些句子,很难判断情绪是正面还是负面:

  比如,“保护了这枚棋子 (Protecting a Piece) ”,可以看作一步棋避免了负面的后果,也可能说明当前的状态比较危险。

  再比如,“攻击 (Attack) ”这个词对普通的情绪分析AI来说是贬义,容易被分类成负面情绪。可“对后的攻击 (an Attack on the Queen) ”,通常是步有利的棋。

  这样,上下文对情绪的理解就很重要了。而数据集里的样本,多是短文本,没有太多上下文可以参考。

  团队选择了Flair用的架构。Flair是Zalando Research开发的一个NLP库。

  研究人员认为,在文本很短的情况下,LSTM (长短期记忆) 加上合适的词嵌入方法,会有助于学到国际象棋背景下的用词规律。

  于是,在word2vec词嵌入的基础上,又加了一些上下文的字符串嵌入 (Contextual String Embeddings) ,用来提升分类的准确度。

  这样,有利于在一个小训练集 (团队只标注了2090条评价的感情,分正面和负面) 上,给一些情绪模糊的文本做分类。

  情绪分类做好之后,就到最重要的一步了:

  每步棋的质量评估

  团队用的评估方式,和从前的AI很不一样。

  前人用的数据多是静止的棋盘状态,没有关于每步棋的信息。训练过程相对低效,需要巨大的数据量,才能比较好地泛化。

  而这里,是把落子之前和之后的棋盘 (下图左) ,一起输入神经网络,搭配刚分析出的情绪 (下图右) 。如此,补全了从前被遗忘的数据,训练会更高效。△ 中间部分,是质量评估网络

  (质量评估网络的架构,是团队基于Sabatelli等人2017年提出的方法搭的。)

  团队说,像下围棋的AlphaZero,要经过百万/千万次迭代 (Iterations) 的自我对弈,用上几千个GPU,才能出师;

  而学界通常没有这样的条件,所以提升评估算法的效率非常重要。

  那么,成果怎么样呢?

  赢了DeepChess

  首先,看一下两个分类器的效果。

  第一个分类器,找到能描述一步棋质量如何的评论:团队尝试了三种网络,发现双向LSTM表现最好,识别有用评论的准确率是93.4%,超越了普通LSTM和普通RNN。

  然后,又在表现最好的双向LSTM上面,尝试了不同的词嵌入方法:发现把BERT和GloVe的嵌入结合起来,是表现最好的,识别有用评论的准确率达到了97.2%。

  第一步颇有成效,下面是第二个分类器,评估情绪的正面负面:

  这是一个LSTM分类器,用2090条评论来训练,用233条评论来测试的。

  结果是,识别正面情绪的准确率是91.42%,平衡准确率 (Balanced Accuracy) 是90.83%。

  超越了CNN-RNN架构,超越了双向LSTM。

  顺便说句,这个分类器里表现最好的词嵌入方式来自BERT。

  到这里,第二步也得到了有效的成绩。那么,SentiMATE最终有没有学会下棋?还是要真刀真枪比赛才行:

  首先,和随机AI对战100场,胜率81%。

  然后,和2017年诞生的DeepChess (的一个实现) 对战。

  由于计算的限制 (Computational Constraints) ,SentiMATE没办法向前查看 (Look-Ahead) 很多步,来评估一手棋的好坏,所以把自己和对手搜索深度设为1,就是只向前查看一步。

  在这个条件下,SentiMATE执黑和执白都战胜了对手。MIT科技评论报道说,AI掌握了许多关键策略,比如捉双 (Forking) 和异位 (Castling) 等等。

  研究人员还注意到,这只AI很喜欢王兵开局 (King Pawn opening) ,这是一种十分激进、带有攻击性的操作,能迅速打开局面。

  国际象棋特级大师鲍比·费舍尔 (Bobby Fischer) 也说过:实践证明,这是最好的开局方式。

  虽然,SentiMATE现在只能往前推算一步,但依然证明了NLP可以训练出有效的评估函数,并且用少量样本就能达成。

  这样,就为今后的棋类AI训练,提供了一个清新低碳的思路,意义不小。论文传送门:

  https://arxiv.org/abs/1907.08321

  参考报道:

  https://www.technologyreview.com/s/614043/instead-of-practicing-this-ai-mastered-chess-by-reading-about-it/

  — 完 —阅读原文