Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

论文解读 | Convolutional Sequence to Sequence Learning

邓侃

卡耐基梅隆大学博士

北京大数医达科技有限公司CTO

1. PaperWeekly 论文阅读小组 

阅读论文是小众活动,阅读者分散在全球各地。PaperWeekly 论文阅读小组,把分散在全球的华人阅读者,聚合在一起。不仅互帮互助读懂论文,而且通过讨论,激发灵感。

进入 PaperWeekly 的网站,阅读者不仅可以看到本周热点论文标题,而且可以在线阅读论文正文。


640-28.jpeg

640-29.jpeg


网页左侧显示的是论文正文,阅读者可以在论文上划重点。网页右侧是讨论区,阅读者点击左侧重点语句后,就可以在右侧,针对这一句话提问和讨论。


640-30.jpeg


参与者针对同一篇论文,逐段逐句地讨论。不仅讨论的话题聚焦,而且是最细颗粒度的讨论,非常深入。

论文读起来略感艰深,但是不乏乐趣。

譬如本周大家正在讨论的一篇论文,是 Facebook AI lab 上周(2017.5.12)发表的 “Convolutional Sequence to Sequence Learning” [1]。

这篇论文很轰动,因为 Facebook 把这项技术用于机器翻译,不仅精度超过了机器翻译的业界老大,Google Translate,而且翻译速度提高了 9 倍。

先读读该论文的摘要。论文摘要开门见山第一句话,就充满戏剧冲突。

640-31.jpeg


“当前 Seq2Seq 流行的方式,是通过循环神经网络,把输入序列,转变变长的输出序列。我们提议一个新架构,完全依赖于卷积网络”。这是打擂台的语调哟。

读论文的乐趣之一,就是围观打擂。Facebook 这篇论文的主题,是卷积网络 CNN 与循环网络 RNN,在机器翻译和机器阅读领域的对决。

如果我们把镜头拉远一点,对决的不止是 CNN vs RNN。


2. 传统 NLP 对决深度学习 

 

人类阅读的时候,往往从语句提炼出关键词和语义关系。

例如,阅读这个语句 “患者自诉无诱因出现咳嗽,浓痰,无咯血,夜间及运动后加剧”。

整个语句中最重要的词汇是 “咳嗽”,其次重要的词汇是 “浓痰” 和 “加剧”,再次是 “无咯血”、“无诱因”。这是整个语句中各个词汇的重要性排行。

“夜间” 和 “运动后” 是 “加剧” 的属性。而 “加剧” “浓痰” “无咯血”,是 “咳嗽” 的属性。这是词汇之间的依存关系。

想从语句中提炼出关键词和语义关系,传统的做法是,在理解语义之前,先对语句做标注和句法解析。分析出句子的主谓宾定语状语(tagging),然后把整个语句转换成树状的结构体(parsing)。根据树状结构体,很容易判断语句中各个词汇的重要性,以及词汇之间的依存关系。

先解析语法,然后理解语义,这是传统的做法。对于这种传统做法,业界有很大争议。

2016 年人工智能领域一大突破性进展,是谷歌翻译,从研究课题成为产品级服务,正式上线服务网民。谷歌翻译的核心技术就是 Seq2Seq。 

Seq2Seq 这一技术,不仅可以用于机器翻译,而且也可以用于机器阅读,譬如让机器阅读一篇长文,然后自动生成文章摘要。

乘胜追击,深度学习学派试图把 Seq2Seq 这项技术,从机器翻译,拓展到整个自然语言处理领域。

 

3. 卷积 Convolution 对决循环 Recurrency 


Seq2Seq 先把语句转换为一组词向量,通过对词向量的剪辑,提炼出语义向量。但是对于如何剪辑,深度学习学派内部又有争议。

先前占据话语权的一派,提议使用 LSTM 等等循环模型(RNN),来实现语义剪辑。RNN 模型的剪辑手段是三重门,记忆门、遗忘门、和输出门。

沿用上例,“患者自诉无诱因出现咳嗽,浓痰,无咯血,夜间及运动后加剧”,经过三重门的剪辑,“咳嗽” 的语义向量,不仅包含 “咳嗽” 的内容,也包含着 “无诱因” 和 “浓痰” 这些上下文的内容。

RNN 模型的突出优势,是很好地解决了长距离依赖的难题。沿用上例,“加剧” 对应的语义向量,不仅包含 “加剧” 的内容,而且也包含 “咳嗽” 的内容。

Facebook 这篇论文之所以轰动,是因为他们使用了 CNN 卷积模型,来取代 RNN 循环模型。不仅精度超越循环模型,而且训练速度提高了 9 倍。

PaperWeekly 阅读组里讨论的热点有二,为什么更快?为什么更准?

CNN 比 RNN 的训练速度快,这一点容易理解,没有争议。卷积比循环的训练速度快,这是由两个因素造成的必然结果。


  • 卷积可以并行处理,而循环只能按顺序依次处理。在云计算平台上,让多个机器同时并行训练卷积模型,速度当然比串行训练循环模型来得快。

  • 可以用 GPU 芯片来加速卷积模型的训练,而暂时还没有硬件能够加速 RNN 的训练。

 

有争议之处,在于精度的高下,究竟是取决于 CNN vs RNN 模型的不同,还是取决于解码技术,尤其是解码器的关键技术 attention 的改进?

个人认为,卷积(convolution)的层层抽象,与循环(recurrency)的三重门,其实是异曲同工。虽然手段不同,但是目的都是忽略次要内容,传承重要内容。所以,在精度方面,卷积与循环不会有太大差距。

Facebook translate 与 Google translate 的精度差异,应该来自于 Facebook translate 对于 attention 的改进。   

 

4. Attention 的擂台刚刚拉开帷幕

 

Facebook 研究组,对 attention 做了改进,体现在两点。


  • Google Translate 的解码器使用的是单层的 LSTM 模型,相应地,attention 也是单层的。Facebook 的解码器使用的是 CNN 模型,是多层的。相应地,Facebook 的 attention 是多跳的(multi-hop)。越是底层的 attention,越聚焦,细节越丰富。越是高层的 attention,视野越开阔,抽象程度越高,越能抓住文章主旨。

  • Google Translate 使用的 attention,依赖于编码器生成的语义向量,而不依赖于输入的原生态的词向量。而 Facebook 的 attention,对语义向量和原生态词向量兼收并取。语义向量负责把握主旨,保证解码器的输出不偏题。原生态词向量关注措辞,保障解码器的输出用词得当。


对于 attention 的改进,个人预感近期内将会有更大的突破。无论 Google 的 attention,还是 Facebook 的版本,在计算 attention 的权重时,都以计算向量间的距离为基础。简单点说,就是寻找语句中字面意思最贴近的词汇。

这种只聚焦字面意思的 attention 的计算方式,是无法解决 “话外有话” 的暗示型的语句的。同样是英语,英国人说话比美国人委婉。单靠理解字面意思,是无法理解英国人真实的态度的。

个人猜想,将来 attention 的机制,还得融入规则。同理,只理解字面意思的 attention 的计算方式,也无法理解 “引经据典” 和 “含沙射影” 的联想型的语句。要正确理解  “引经据典” 和 “含沙射影” ,将来 attention 的机制,还得融入知识图谱。

  

5. 其他用户讨论精选


Pandabro


dis-tributional space as w= (w1,....,wm)


这个 distributional space 还有 position embedding 是事先学好的还是在 model 里面学的?因为之后要把两个 embedding 相加,需要保证 word embedding 和 position embedding 是在同一个 space 里吧?如何保证呢?

kan_deng:是预处理的。把两个 embedding 相加,是为了方便计算。譬如有个句子,“I am here”,每个词都有一个 512 维的词向量,同时三个词的序列号分别是 1、2、3。把 1、2、3 也转化成 512 维的词向量,然后两个词向量拼接在一起,形成 1024 维的向量。这样做是为了方便计算。当然,序列号的词向量,完全可以用低维度向量,但是为了方便,仍把序列号的词向量也定为与词向量同等维度。


ZhaoTIanyu


Convolutional net-works do not depend on the computations of the previoustime step and therefore allow parallelization over every ele-ment in a sequence. This contrasts with RNNs which main-tain a hidden state of the entire past that prevents parallelcomputation within a sequence


在序列处理中,CNN 比 RNN 快是因为 CNN 不需要上一步的 state 来计算当前 state,所以每一步可以并行计算。

zhangjun:CNN 在之前的文本学习中通常处理口语化、短文本效果比较好。记得之前 tong zhang 老师有篇 paper 是对比 RNN 和 CNN 在文本分类上效果的对比。

pandabro:处理短文本效果好可能只是因为 CNN 的 input coverage 不够大同时 model 不够 deep。这个问题应该可以逐步解决。

Jasonqhjia:在文本分类上,CNN 比 RNN 效果好,同时训练速度快。


zeng


Figure 1.Illustration of batching during training.


batch the attention computation across all elements of a sequence compared to RNN. 图中中间的矩阵就是 attention 矩阵,每 i 行对应输出中的第 i 个词对于输入句子所有词的 attention 的分布。 因为训练的时候,decoder 段也是直接用 cnn,不存在时间上的依赖,所以可以同时计算所有词的 attention 分布。但是文中没有说怎么 batch the various input sequence length,还请知道的解释一下,如何用 CNN 批处理变长的输入;传统的都是统一 padding 成一个长度,或者一组长度; 针对 RNN, pytorch 里面有 packedSequence,tf 也有 lengths 这个属性,但是针对 CNN 不知道是怎么处理的。

WarBean:可以在每个 softmax attention 之后乘个 mask,盖掉那些输入 padding 的位置,再 normalize 回一个概率向量作为真正的 attention。


6. 参考文献


[1] Convolutional Sequence to Sequence Learning. 

https://arxiv.org/abs/1705.03122


屏幕快照 2017-05-19 下午3.39.32.png

屏幕快照 2017-05-19 下午3.40.15.png

640-32.jpeg

点击这里」,查看全部嘉宾阵容并报名参与机器之心 GMIS 2017  ↓↓↓

640-26.jpeg


PaperWeekly
PaperWeekly

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

入门论文理论机器翻译卷积神经网络NLP
暂无评论
暂无评论~