[论文]读 Transformers as Soft Reasoners over Language Harold Finch

在开始学习之前推荐大家可以多在  FlyAI竞赛服务平台 多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

 

[论文]读 Transformers as Soft Reasoners over Language

今天想来讲一篇我之前看过很久,一直觉得很有趣的文章。 Transformers as Soft Reasoners over Language[1]。 Allen 研究院做的。这篇文章做得很不错,还提供了一个在线的可交互demo : https://allenai.org/data/ruletaker

在最开始,想先用一个例子来描述下本篇文章做的任务是什么。

图1 推理任务样本样例

当我们尝试解决这里的Q1的时候, 正常的思考和推理步骤如下。

(1) [F4]Bob is big. [R1] Big people are rough. —> [F11]Bob is rough.

(2) [F11] Bob is rough. [R4] All rough people are green. —> [F12] Bob is green. Q1 = T

这里从Facts和Rules 到解决,是走了一个两步的推理过程的,或者更接近文章描述语言来说,这个样本的推理深度为2。

现在作者在实验中发现的现象是, 有一些Transformer-based 模型在这个任务中表现出了很强的泛化性能。 当训练样本全部是由推理深度小于等于三的样本构成的时候,在测试的过程中可以以极高的准确率完成四步甚至五步推理。直觉的来想,好像神经网络获得了举一反三的能力,或者说真正的学会了这种推理任务的做法。

图2 模型在不同深度训练数据下的测试集结果

这个结果的重点在于, 自然语言的推理对于人类来说是相对简单的。 如果让机器来做这种多步推理,需要转化成机器熟悉的模式,比如说一阶形式逻辑形式。但是这个工作,在使用自然语言的同时,把这个任务完成了。 这一点可能确实打破了一些对于神经网络的认知。 就笔者自己来说,我对于这个领域了解不多,之前一直对于神经网络为什么能work的理解,更多的集中于把神经网络当做函数拟合器和特征提取组合器,认为神经网络在完成任务的过程中不断的寻找底层的特征,然后根据他们的组合模式来判定当前的结果。 这个结果让我生出了两个问题。

  1. 在推理这种我们一直认为相对高级的认知任务中,是否仍然有很多模式的存在?
  2. 这些神经网络,是不是真的获取到了推理的这种高级功能,如果是,它是怎么做到的?是通过记忆?一些序列存储操作行为?还是一些暂时不理解的机制完成的?

也是从这几个问题,我今天想来和大家分享一下这篇文章和我对于这篇文章的一些思考和想法。

这篇文章主要分三个部分,上面一段算是任务的介绍和写本文的动机;接下来一大段是介绍文章中是如何做的实验; 最后的部分我会试着提出一些我自己的假设和相应的实验设计。


文章内容。

数据集的生成。

每一个需要进行推理的样本包含 事实和 规则两部分。

对于事实,主要有两种形式。

  1. 描述物体的属性。 如 is(Alan, Big)
  2. 描述物体之间的关系。 如 eats(Dog, Rabbit)

对于规则,则主要是 条件1 [^ 条件2]* → 结论 形式。

如 is(?X, Young) ^ is(?X, Round) -? is(?X, Kind)

// If someone is young and round then they are kind.

在这些基本的形式之外,还允许在事实和规则之中加入否定。

下面的图片是另一个稍微复杂一点的例子,在事实和规则中都出现了否定的形式。

图3 带否定的推理样本样例

主要的数据集是通过程序自动来生成的,总共生成了100k的样本。 至于推理深度这件事情,文章原话是我们做了详尽的推理(we perform exhaustive forward inference to find all its implications),理解理解,毕竟都是有限的,就算遍历也不麻烦。

实验部分:

使用的模型主要是 RoBERTa-large, 额外在RACE数据集上做了微调。

模型是做一个二分类任务,输出 True/False。 模型的输入形式是 [CLS] 事实+规则 [SEP] 问题 [SEP]

结果部分:

图4 模型在不同深度训练数据下的测试集结果

模型能完成任务吗?

  1. 其实从这个表来看,模型任务完成的很不错,对于见过的类型(测试推理深度小于等于训练推理深度),任务完成的很好。
  2. 同时也能看得到的是,如果在训练的时候就没有教他推理怎么做,他是真的没学会这个任务。 在Mod0 一列,Train的数据中不需要推理,答案都在题干里。 这一列在后面的准确率都是很低的,可以认为模型没学会这个任务。 至于为什么深度越高,准确率越低,这个也希望能和各位朋友在评论区讨论下。
  3. 模型体现出了泛化能力,在Mod3, 训练过程中推理深度最大为3时,在推理深度为4和5的任务中也做的很好。

接下来文章中做了一个实验,在问的问题是,模型做的不错,不过是不是因为学到了一些 模式而不是真的学会了推理这个任务呢?

所以尝试去除了一些facts中的句子,然后看一下模型给出的结果是否会翻转(True变False,False变True)。 然后发现 当是一个关键句子(推理过程中用到的句子)被去除的时候,98%的情况下发生了翻转,而当一个非关键句子去除之后,97%的情况下没有翻转。 这个说明其实模型还是真正的有一些学会了这个任务的。

除了以上这些,作者还尝试在一些非 Transformer-based的模型上做了一些实验,发现一些LSTM-based的模型也可以做到类似的任务。 这里效果比较好的是 ESIM[4],一个专门用于做 自然语言推断的模型,针对任务做了很多优化。 但是效果不如 Bert这类的。

图5 不同网络的实验结果

一些个人向总结:

我自己还是很喜欢这篇文章的,结构清晰,结论有趣,有很多值得我学习的点。稍微夸下这篇文章。

优点:

  1. 问题定义的很清楚,最开始就是逐渐的把问题缩小再缩小,有效的避免了很多意外和无关情况,在一个新的领域这样做事的风格还是很值得学习的。
  2. 图表做的很用心,各种表示形式,包括不限于红框,使用颜色深浅来侧面表示数值,都更容易让读者有一个更直观的认识同时抓住重点。
  3. 结构和逻辑都很清晰。提出问题,设计实验,分析结果,都很赞。

个人向的思考

Transformer 能具备推理能力或者说神经网络能具备推理能力是我非常意外的一件事情,但是这篇文章的结果就是说明了这样一件事情。 然后我就不由得开始思考Why和How。

在CNN中,层级结构一般是说感受野变大,然后对特征进行了整合和组合,在更大的地方能看到更复杂的结构。 但在语言中呢? 层级结构代表了什么? 是单纯的感受野变大?从原来看3个词现在能看5个词了,亦或是说, 它也总结了一些高级的特征。 学到更复杂的语法模式。

还有一个关键问题在于, 推理能力,是如何获得的?假设说模型并不是靠模式识别来获得的这种能力, 那么他做到的是 从 一种语言结构并且能够应用这种语言结构。 我们的问题是, 这种语言结构是如何被Transformer的哪一种机制获得的?我有几个假设(坐等后续实验打脸)

第一是自指的结构, 指向自身的结构。直觉上想人类在做推理的时候,是有一个记忆和缓冲区在的,不断去写一些中间结果并把这些中间结果和原始的 事实放在一起进行后续的推理,所以会觉得这里应该有一个类似的序列化和指向自身的结构来完成这个过程。 self-attention和RNN模型可以做到这一点。 但CNN会相对困难,如果想证明或者是否定这一点,可以用纯CNN的NLP模型来做一个对照试验。

第二个是multi-head结构, 如果说感受野和特征的整合是在二维这个层面, 通过卷积操作或者是矩阵运算来做到的。 那特征重复的操作可能是通过 concat这个操作来完成的,一点直觉。 在Transformer原文中也有提到,当把attention head 从最终的16调整为4和1的时候,BLEU从26.4分别降到了25.5和24.9。 在NLP领域当然是不可接受的,但在推理任务中,如果假设正确,这可能就是 50% 随机猜测 和 80%的区别。

图6 Transformer 不同网络结构参数带来的性能变化[3]

第三是 N的数量,其实也有一个直觉是, 推理深度应该受限于 叠加的self-attention层数, 其实某种程度上这也算是一个判断是不是模式识别的一个方向吧。 我的假设是 当N = n的时候,推理程度应该不大于 n - 1. 因为至少要考虑一层做正常的运算和语言学处理。

第四点是 预训练在这其中起到了什么作用?当我们在聊推理的时候,很多时候是绕不开原始对于语言的理解的,预训练中是不是有一些作用? 一个小小的佐证是 在对比其他模型的时候,ESIM是没有经过预训练的,他和BERT的准确率差别是 16%左右。

在第四点上,后续的一篇论文 Are Pretrained Language Models Symbolic Reasoners Over Knowledge?[2] 部分的回答了这个问题, 他给出的答案是,从0开始训练的BERT模型可以完成一些相对简单的推理任务,但是没法做到 Composition Reasoning 任务。 我自己可能认为这篇文章的实验方式有一点点小问题,但也从侧面证明了预训练在这类任务中的效果。

图7 Compsition Reasoning 任务样例


和假说对应的实验设计

从模型角度来看,主要会用两类NLP模型,一类是CNN系列的模型,一类是Transformer模型(可能选择一个小一点的BERT模型来做)

  1. Transformer模型, 主要验证的是上面的第二,三,四点假设。 二三主要是对网络的结构上的调整。 对于四预训练这个问题,其实有一点复杂,因为有了预训练权重之后,可能很难对网络结构进行调整。 所以这里想到的一个办法是,只使用预训练好的bert模型的 Embedding层权重,并把这些权重固定好,假设这里面代表着。。真正语言分布中的词与词的关系。。条件简陋,只能如此。。
  2. CNN模型,这部分没有太多好说的,保证总体参数量近似上面 Transformer模型就好了。 不过估计性能会很差。
  3. 如果有余力,可能会接着再试试 ESIM或者纯LSTM模型。

一些后记:

其实想写这文章已经很久了,除了这一篇完整版外,草稿箱里还放着一篇配合本篇阅读的 Transformer 解读文章,还有另外一份大概1000字的草稿是针对[2]的解读和思考,都不知道还有没有机会发出来了。 当年畅想的总是很好,但最近自己的主业也很忙,可能后续的实验工作会拖到五一假期或者更久甚至就神秘失踪了hhhh。 不过想说的是,都还好,我自己在读文章,写文章的过程中也收获了很多东西,如果通过我把他们写出来,再对屏幕前的读者再有点用的话,就再好不过了。

祝大家调参顺利。

 

Harold Finch

2021.4.10

 

参考文献:

[1] Clark P, Tafjord O, Richardson K. Transformers as Soft Reasoners over Language[J].

[2] Kassner N, Krojer B, Schütze H. Are Pretrained Language Models Symbolic Reasoners over Knowledge?[C]//Proceedings of the 24th Conference on Computational Natural Language Learning. 2020: 552-564.

[3] Vaswani A, Shazeer N, Parmar N, et al. Attention is All you Need[C]//NIPS. 2017.

[4] Qian Chen, Xiao-Dan Zhu, Zhen-Hua Ling, SiWei, Hui Jiang, and Diana Inkpen. Enhanced lstm for natural language inference. In ACL, 2017.

拓展阅读:

  1. 讲Transformer不错的一篇文章。 https://jalammar.github.io/illustrated-transformer/
  2. 李宏毅教授 Transformer 视频 https://www.youtube.com/watch?v=n9TlOhRjYoc
  3. 使用图网络来进行多跳推理 Qiu L, Xiao Y, Qu Y, et al. Dynamically fused graph network for multi-hop reasoning[C]//Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics. 2019: 6140-6150.

文章来源:知乎

原文链接:https://zhuanlan.zhihu.com/p/363842052

更多精彩内容请访问FlyAI-AI竞赛服务平台;为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台;每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

挑战者,都在FlyAI!!!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值