IBM的辩论家项目(Project Debater)打造了一个对话类AI,旨在和一个人类辩手进行正式辩论。尽管Project Debater在最后一场辩论中落败于人类辩手,但是在这次失败之前,它一直霸占着最佳辩手的位置。它的亮点很多,而且确凿无疑地进入了自然语言处理(NLP)系统的“恐怖谷”,它的表现非常接近人类,它的失误水准令人尴尬。
IBM这个项目的亮点在于,它是在一系列旧硬件上训练并交付“辩论家”的,并没有使用GPU等硬件加速器。鉴于现在市场上已经存在很多可用的深度学习硬件加速器,所以“辩论家”的会话AI功能肯定会在未来的几年内具有很大的提升空间。当然,这也可能会加剧社会不满,因为人们越来越搞不清楚他们是在和人类交谈还是和人工智能对话。
“辩论家”项目的初始提案脱胎于2011年出现的单个PPT幻灯片。由于提交内容有限,而且挑战项目的难度比较大,IBM管理层经过了大约一年的仔细考虑时间才最终批准了该项目。2012年,IBM研究院建立了一个项目团队,正式启动“辩论家”项目开发。实际上,该项目的实质性工作时在2014年展开的。
怎么训练一组深度学习模型,使它可以进行辩论呢?要知道,展开一场辩论要比进行一次简单的采访复杂多了。IBM研究院将这项训练任务划分成了三个子任务:听力理解、建模人类的争论、由数据驱动的演讲稿生成和表达。
听力理解
IBM将听力理解定义为“从一长串连续的口语中提取隐藏在其中的关键概念和声明的能力”。IBM教“辩论家”针对随机选择的主题进行辩论,但是它的前提是,所选主题必须涵盖在在系统里面多达4亿篇文章(100亿句话)中得到过充分报道的话题中,其中大部分文章来自于知名报纸和杂志。
“辩论家”实现高水平听力理解能力的一个关键要素是它的声明检测引擎。该声明检测引擎能够在一个句子中找到个别声明的确切边界(如果给定的句子里确实给出过声明的话。IBM的声明检测引擎中有三个级联的深度学习模型:
1、查找带有声明的句子;
2、在该句子中找到声明的边界;
3、确定存在声明和已经找到合适的声明边界的可信度。
建模人类的争论
IBM创建了所谓的“独特知识图表”,以帮助“辩论家”模拟人类争论和面临困境的世界。一旦给“辩论家”提供了一个辩论主题,它就会在其知识图表中展开搜索,寻找最为相关的原则论据来支持或者反对这项主题。知识图表模型使得“辩论家”可以建模出许多不同辩论之间的共性。
数据驱动的演讲稿生成和表达
“辩论家”从知识图表中找出相关论据后,将所选择的这些论点组合成一个带有说服性的完整叙述,这些论述的长短符合为其分配的发言时间。然后,它会写出一个演讲稿,并在适当的时候清晰地、针对性地(也可以加入一些幽默成分)表达出来。
IBM强调,自然语言处理中的演讲稿生成和表达是“辩论家”的显著特征。不过,我们相信,理解人类的言语才将是将AI限制在不可思议的“恐怖谷”中或者超越它的关键技术。
请注意,OpenAI的文本预测模型在某一个方面和IBM的“辩论家”执行了相似的角色,它们都写了文稿,不过它们也有一定的区别。OpenAI的所有新闻报道都是以完成为目的,“辩论家”则是支持或反驳某个观点,此外,OpenAI没有正式辩论赛的时间限制。
复杂的模型集合
IBM研究院表示,“辩论家”由数十种深度学习和机器学习模型组成,具体数量取决于对模型的分类和计算方式。他们表示,在辩论期间使用的模型总数远远低于100个。
“辩论家”的开发遇到了机器学习领域的经典挑战。由于需要把那么多基础底层的AI模型编排组合在一起,集合的复杂性增加了。每个AI模型都要经过经过自己的训练过程,许多模型使用的配置和设置方法都各自不同。一些模型使用监督式学习技术,其它模型使用无监督学习技术。IBM研究院没有谈到训练所有这些模型累计花费了多少时间。
“辩论家”项目的大部分研究和开发工作都是在IBM研究院位于以色列海法的实验室中完成的。IBM表示,为了训练“辩论家”,IBM通过其平台负载共享设施(LSF)软件协调调用了10台联想系统x3650 M5服务器。在研究的过程中,IBM研究院还在海法使用了一个GPFS集群进行数据存储。该本地存储运行在一个双节点的IBM频谱可视化(SVC)集群上,使用了IBM的SAN64B-6存储网络。
IBM还没有公开讨论他们在训练“辩论家”模型时使用的机器学习和深度学习框架。IBM曾经表示,一旦可以把这项技术商业化到可以供客户使用的程度,他们将发布更多的软件和硬件细节信息。
需要注意的是,训练“辩论家”的复杂模型集合的工作时是在四分之一个未加速的x86服务器机架上进行的,该服务器机架包含了大约200个处理器内核。这也表明,人工智能研究通常并不需要使用最新最好的硬件,技术上的创新和研发时间可以抵消大部分巨额预算。
“辩论家”的复杂性-对辩论的重新审视
“辩论家”的反驳论据是由独立的深度学习模型创建出来的,而不是在辩论中创建出这种开放性的论点。在这个完整的反驳论据集合中会用到几种模型。反驳论证系统通常是一个比创建开放性论据使用的模型集合更长的级联模型。
“辩论家”会为辩论双方都实施声明检测。这使得系统能够自动构建出两组论据,并确定辩论对手可能会使用那些论据声明。然后,系统会在辩论期间交叉性地检查对手可能使用的声明和实际使用的声明。下面是该流程的一部分说明:
确定每个声明是否反对或者支持“辩论家”当前的观点;
确定对手是否在最近的反驳中使用了任何自动检测到的声明;
寻找论据来反驳对手已经表达过的声明主张;
找到支持自己当前论点的证据;
将这些证据进一步整合成表达正确且有说服力的陈述中;
确定是否已经在辩论的早期阶段声明了某个论据。