专栏名称: 程序媛的日常
Hello world! 做第一个专注于程序媛的公众号!两位小小程序媛带你领略程序媛的日常,有专业知识也有生存技能。//其实我们的生活也可以过得很精彩!
目录
相关文章推荐
中国能建  ·  “向阳花”绽放第十届中国企业新媒体年会 ·  14 小时前  
中国保利  ·  首届技能大赛,冠军是他们! ·  5 天前  
中国能建  ·  倪真拜会吉林省省长胡玉亭 ·  5 天前  
中国能建  ·  宋海良与青岛市委副书记、市长赵豪志会谈 ·  1 周前  
51好读  ›  专栏  ›  程序媛的日常

ACL 2017 | 别再对抗了,通过对话合作找出共同的好朋友吧!

程序媛的日常  · 公众号  ·  · 2017-06-01 08:14

正文

之前一直写 GAN,生成对抗网络,但其实一直也关注着对抗的对立面——合作。而现在很火的一个任务,对话生成,就是很好的合作场景。在 ACL 2017 上也有一篇探索这个方向的论文,《Learning Symmetric Collaborative Dialogue Agents with Dynamic Knowledge Graph Embeddings》——来自我一直特别喜欢的 Percy Liang 教授组的工作。


我们可以假设一种比较愉悦的对话场景,那就是两个不太熟悉的人,通过不断地探索,找到了双方的共同点。共同点可以是共同的过去经历,共同的兴趣爱好,共同的好友……这篇文章就落脚在了共同好友上。简单说他们完成的是这样一个任务,Symmetric Collaborative Dialogue

两个 agent,A 和 B,每个人都有一堆自己的“知识”,这些知识在沟通或者对话之前是对方不知道的。但是 A 和 B 也有一些共同的“知识”,在这个场景下就是拥有一些共同的好友。双方要通过沟通对话,来一起找出共同的那部分。因为双方的目标一致,且任何一方不配合都无法完成任务,所以可以认为这样的任务是一个合作任务。在这篇论文的设定下,原始“知识”是通过知识库(Knowledge Base, KB)存储的。而在后续加工过程中,作者又把“知识”转换到了知识图谱(Knowledge Graph,KG)上去表达和计算。最后,当 A 和 B 都选出了共同的好友,这个任务就认为是完成了。这个任务虽然乍一看有些初级,但是其实可以作为后续很多任务的“增长基石”,还是很有想象空间的。作者认为,这个简化版的任务设定,可以看做是两个拥有互补专业知识的 agent 之间的沟通合作。


在上面这样一种设定下,可以看到。整个对话中既含有 structured data(KB 和语言中本身就有的一些限定词语等),又含有 unstructured data(比如 dialogue history 这种自然语言文本)。作者希望能用一种表达方式同时捕捉这两种信息,并且能随着对话的进行,迭代更新这种表达。最后再根据最新的表达,来生成当前 agent 需要说的“话”。所以整个过程被作者建模为了三步:1)Dynamic KG 用于表达 agent 的原始“知识”和历史对话记录;2)Graph  embedding 用于表达 KG 上的结点;3)最后的对话生成器 Generator。也对应了上面右边的图的从左到右三个模块。


1)从 Dynamic KG 说起,很自然地,就是随着对话的进行,两个 agent 的“知识”不断地被引入到对话中来。Dynamic KG 就把这些“知识”从知识库的形式转换到 KG 的形式。

2)有了已经生成的初始 KG,作者希望进一步获得 KG 中每个结点的表达(vector representation for each node),也就是 Graph embedding。这些结点的表达不仅要涵盖 KB 本身的知识,还最好能涵盖非结构化的历史对话信息。这些信息在建立 KG 的过程中被丢失了不少,现在要找回来。最后还要注意的是,因为每当新的对话信息被加入,就需要更新这个对话信息中涉及到的相关结点的表达。比如上图中,当出现了“anyone went to Columbia”的时候,首先相关的结点肯定是 columbia。但和 columbia 相关的别的结点,jessica 和 josh 也应该被更新。

3)Generation 就很简单了,在 node representation 和 utterance representation 的基础之上,加上 attention 和 copy-mechanism:


在实验上,他们自己制作了初步的 KB,并众包得到了 11K 的符合设定的对话数据。在这个数据上,他们对比了三种模型,第一种就是 full model,也就是这个基于动态图表示的方法,叫做 DynoNet。第二种是 StanoNet,也就是 KG 不会随着对话的进行而更新,历史对话信息只存在于最后的生成器 LSTM 中。第三种是基于规则的,Rule。并且给出了很多种评测指标和方法:

比如其中的 Partner eval 就是盲测,在用户不知道到底是与自己正在对话的到底是人还是三种模型的情况下,给出几种指标的评价。可以看到 DynoNet 在 Partner eval 里表现得都很好。但是很有趣的一点是,在 Third-party eval 里,结果却几乎是完全反着的。作者也对此给了一些分析和猜想。最后看一些 case study:


最后说点题外话。虽然对抗网络这两年已经火到整个地球,而合作问题也仍然在被人关注着。Percy Liang 组一直对合作解决语言相关问题很感兴趣,比如去年的 ACL 2016,他们有《Learning Language Games Through Interactions》这篇十佳论文(点我传送)。这个思想我个人认为后来也被 DeepMind 大力推广,在 ICLR 2017 上大放光彩。有了后续的几篇 Learning To Communicate And Language Emerge 的论文们(继续点我传送)。而在 NIPS 2016 上也有一些 collaborative AI 的工作。


四月的时候,微软也组织了一个 Collaborative AI 的比赛,Malmo Collaborative AI Challenge 来推动这个方向的发展。这个比赛与 ViZDoom 几乎完全相反。VizDoom 以 Doom 这个对抗生存游戏为平台,而这个比赛则以游戏 MineCraft 为平台,主要要求 AI agent 通过合作的方式一起完成任务,达成目标。比赛已经进行了一个多月,6月5日就会出最终的排名了。到时候我也会再跟进一下~


推荐文章
中国保利  ·  首届技能大赛,冠军是他们!
5 天前
中国能建  ·  倪真拜会吉林省省长胡玉亭
5 天前
十点读书  ·  脾气差,是一种自私的表现
7 年前
气质女人  ·  热发型
7 年前