想到探索人工智能是否可以创作比喻,是之前有一位实习生跟我说:“老师您知道吗?在网上有一种说法,不管是什么话,后面加一个“爱情也是这样的”,都是成立的。”她给我举了个例子:“人有两条腿,爱情也是这样的。”我的同事A便说:“你的意思是说:爱情总会走的吗?”这时候同事B便说:“为什么不是爱情总会来的呢?”再结合他们的背景,一个有男朋友,一个没有男朋友,我就觉得这个对话很有趣。当时我就发现:在做比喻的时候,人无非是找到了一个本体,一个喻体,然后同时找到了一个自圆其说的解释。这个解释未必要非常有逻辑,只要有点联系、能自圆其说就可以。就像她们的对话中,可以说是“来”,也可以说是“走”。后来我们发表了一篇论文《"Love Is as Complex as Math": Metaphor Generation System for Social Chatbot》(CLSW 2019 Outstanding Paper Award)。在用AI创作比喻时,我们并没有采用生成模型,而是想了一个新的模式。首先,我们确定本体(“爱情”)和喻体(“中国足球”),然后用一个很普通的Word Embedding(词嵌入)把它们投在二维平面上。大家可以看到,在爱情旁边有非常多相关的词语,如“长久”、“忠贞”、“婚姻”等,而中国足球旁边也有非常多相关的词语,比如“开场”之类的词。但这些词都不适合用作“爱情”与“中国足球”之间的连接词,因为它们跟其中一个词太接近,却跟另外一个词特别远。最后,我们发现,最管用的是中间这些词,比如“未来”。我们可以说:“爱情像中国足球一样没有未来”。如果能输出这样的比喻,那就非常妙。然后我们就进行了一些尝试,发现效果还不错。比如说,在下面这张表里,爱情可以跟数学相比,两者都非常复杂;爱情可以跟股票比,都会贬值,等等。后来我们真的生成了这样一句比喻:爱情就像葡萄酒一样,对程序员来说都是奢侈品。除此之外,我们还有很多很好的例子。比如说,爱情就像脂肪,是点点滴滴的积累;孤独像是空无一人的车站。当然,也有很多不好的例子,比如恋人像是可靠的报表,或者金钱就像垃圾,使人腐败。我们发现,在对话中,人们也很喜欢这样的比喻,并通过两段式来询问,比如说:爱情就像脂肪,你知道为什么吗?这会引起人们的兴趣,经过一个解释,人们的Follow-Up Rate会比陈述句涨一倍。
大家都知道,现在预训练模型很火。我想与大家交流的第一个问题是:预训练模型学到了什么、没学到什么? BERT模型不是用于语言生成,而是用于编码与语言理解。有些论文介绍到,现在的预训练模型能够较好地编码一些词性、实体信息、句子里词语之间的修饰关系。此外,预训练模型在语言填空上做得也不错。但是,在处理否定词、频度副词、句子中存在误导性token等语言时,预训练模型的表现就不是很好。比如既说Birds can fly,又说Birds cannot fly。或者加一些误导性的词,比如“Talk?”时,模型的回答是“Birds can talk.”但这个回答明显是不符合事实的。再看看BERT对数字的处理。BERT对于数字的处理只能基于数字,而非真正地理解语言本身所表达的含义。如下图所示,每句话的语义是差不多的,只是句式不大一样。当要求预训练模型在Mask空上填写“older”或“younger”时,我们可以看到,第一句话的准确率高达96%,但最后一句话的准确率只有12%。这说明,BERT并没有真正理解这个句子所表达的意思。再看看GPT-3的表现。GPT-3在问答(Q&A)与常识知识方面的表现很不错。如下图所示,如果你问一些类似的问题,它能给出很好的答案。如下图右边的标绿文字所示,当询问“为什么动物不是拥有三条腿”时,它能回答出来:“因为如果是三条腿的话它们会摔倒。”而蓝色部分的问题,其实比较少人讨论谁比谁重,而关于这类问题,GPT-3的答案准确率能达到80%左右。GPT-3会做一些常识推理的任务,但还会“胡扯”。如下图所示,当询问GPT-3说长颈鹿有几只眼睛时,它会回答“两只眼睛”。但问脚、蜘蛛、太阳等有几只眼睛时,它还是“一本正经”地回答,答案不对,但还蛮有意思的。然后右边的答案也都是不对的,因为美国直到1776年才成立,在此之前并没有美国这个概念。此外,GPT-3关于未来的预测,也顶多是预测,不能确定对错。所以容易看到,GPT-3其实不知道什么该说不知道。至于语言生成,下图左边是论文“The Curious Case of Neural Text Degeneration”里面的结果,右边是我们论文里的结果,即用GPT-2生成故事。故事生成涉及到常识,即给定第一句话,希望去生成后面的内容。你会发现,如果用预训练的GPT-2,就相当于是zero shot,不在数据上微调的话,会生成很多重复的内容,同时逻辑也不是很对。而如果在任务数据上做一些微调,结果依然会重复。我们把这个叫作“重复的陷阱”。现在大家都在讨论AI的bias(偏见)、fairness(公平)与security(安全)。如下图所示,GPT3所生成的结果中,也会包括种族歧视、性别歧视等内容。如果要让一个GPT的模型或一个BERT模型生成更好的话,我们要怎么做呢?有几种可能的途径:途径一:想办法让模型拥有更多的知识。比如在预训练模型上,我们可以更大概率去Mask实体而不是一般词,再让模型预测出来。途径二:在做预训练任务时,想办法让实体align(对齐)到知识库上。然后将BERT的表示与知识库实体的表示对齐,让它们互相预测。比如刘知远老师团队的工作基本上就是这个思路:一方面是增加实体的Mask的概率,另一方面则是实现实体和文字的描述对齐,然后用这种对齐信息去做预测。途径三:设计领域相关的预训练任务。我们今年发表在EMNLP的一个工作:“Sentiment-Aware Language Representation Learning with Linguistic Knowledge”。比如说,“It's not a good movie.”那么我用一些无监督的方法就能大概预测出“good”是一个积极的词。然后,在做预训练任务时,我对这种信息进行编码。在预测的时候,不仅要让它把“good”这个词恢复,还要让它判断是形容词还是动词,是一个positive的词还是一个negative的词。通过这种方式,我们能够改善它的情感分类性能,让它有更强的情感表达能力。如下图所示,我们在sentence-level与aspect-level的情感分析上都显著地提高了结果,应该是目前的一个SOTA。我们用的第二个技巧是knowledge-enhanced post training(知识增强后训练),当运行的预训练模型的知识不够时,把知识库里的知识用一些模式(可能是人写)将其变为自然语言的描述。比如说,Bus is a car(公交车是一种车),然后说:cross street (穿过街道)会 causes accident(引发事故),类似的词变成上述相似的句子之后,重新训练GPT的模型,再看它的表现。上述的例子可以证明知识增强后训练可以显著改进文本生成的性能。我们今年发表在TACL的论文就是讨论如何用知识库的信息重新训练预训练模型,让模型在故事生成上的表现更好。那么,如果是要生成带常识的信息时,应该怎么做呢?比如给出四句话,希望生成一个故事的结局,但结局的生成其实没有那么容易,因为结局要符合事件发展的因果关系。或者是给一个statement(陈述),陈述的内容是:The school was open for summer,希望生成这个陈述的解释。无论是生成解释,还是讲述一个故事(即给一个开头,要去续写这个故事),都要与认识世界中的常识图谱对齐。如果要在GPT的基础上做一个更符合知识和常识的生成,那么一定要有更强的控制。为了施加更强的控制,我们可以把文本 align到一个特定的图谱上,然后在图谱上动态地做多步推理(Multi-Hop Reasoning);推理完成后,再在每一个解码步骤上选择这个词应该来自图谱,还是来自一个正常的词表。这就是一个结合图神经网络去进行推理的过程。我们做了几个任务,包括解释生成、归因自然语言生成(abductive NLG)、故事结尾生成等。归因自然语言生成指的就是:给出开头与结尾,希望模型能够生成中间的情节。在做这些任务中,我们可以看到一些比较有趣的case,比如一个人去电影院买玉米和刀,但我们知道,刀肯定是不会在电影院卖的,所以我们会生成“Knives are not sold at the cinema.” 通过注意力机制,我们可以看到模型是怎么推理的,怎么一步一步地在图上选择节点来做归因生成。那么,在自然语言生成上,我们面临着什么样的问题呢?首先是重复,这也是现在的GPT模型面临的一个重要问题;其次是信息量少,不够多样性与具体性;此外,数据的生成要忠实于输入的数据;最后,在对话的过程中,我们要怎么样去控制长文本生成的一致性,让文本生成更加有连贯性、保持一致。这都是一些比较基本的问题。我们希望能够更好地使用 low-frequency knowledge (低频知识)。现在的预训练语言模型对高频知识的掌握都非常好,比如你问奥巴马是哪一届的总统,或哪一届的总统是谁,它都能很快答出来。但这些模型处理低频知识就不是很好。 此外,我们想要对生成施加更明确的控制,即按照自己的方式去生成。比如现在GPT去做故事生成,很难改变它的逻辑。另外,我们希望能够引入 Planning 机制。事实上,当一个人在写长篇小说或写诗时,其实是分阶段的,先有情节A,再有情节B、情节C等等,是一个分层级规划的过程。最后,我们希望是Grounding(落地)的,即生成的信息能够对应到一个真实世界的场景上。比如生成的文本信息是说:我今天摔了一跤,摔了一跤可能意味着你流血了、要去医院,等等,都是能够联系到认知的现实世界场景上的。