从Seq2seq到Attention模型到Self Attention(一)

——作者:Bgg——

近一两年,注意力模型(Attention Model)是深度学习领域最受瞩目的新星,用来处理与序列相关的数据,特别是2017年Google提出后,模型成效、复杂度又取得了更大的进展。以金融业为例,客户的行为代表一连串的序列,但要从串行化的客户历程数据去萃取信息是非常困难的,如果能够将self-attention的概念应用在客户历程并拆解分析,就能探索客户潜在行为背后无限的商机。然而,笔者从Attention model读到self attention时,遇到不少障碍,其中很大部分是后者在论文提出的概念,鲜少有文章解释如何和前者做关联,笔者希望藉由这系列文,解释在机器翻译的领域中,是如何从Seq2seq演进至Attention model再至self attention,使读者在理解Attention机制不再这么困难。

为此,系列文分为两篇,第一篇着重在解释Seq2seq、Attention模型,第二篇重点摆在self attention,希望大家看完后能有所收获。

前言

你可能很常听到Seq2seq这词,却不明白是什么意思。Seq2seq全名是Sequence-to-sequence,也就是从序列到序列的过程,是近年当红的模型之一。Seq2seq被广泛应用在机器翻译、聊天机器人甚至是图像生成文字等情境。如下图:

其中,Seq2seq常见情境为机器翻译,因此接下来的内容都会以情境进行说明。

图(3)是个典型的Seq2seq模型,包含了编码器(Encoder)和解码器(Decoder).只要输入句子至Encoder,即可从Decoder获得目标句。

举例来说,如果我们将“Are you very big”作为输入句(source sentence),即可得到目标句(target sentence)“你很大?”。机器翻译就是这么简单,然而,如果想了解它如何组成,会发现其中充斥着各种难以咀嚼的RNN/LSTM等概念。

接下来,让我们快速回味一下RNN/LSTM,方便后续模型理解。

RNN/LSTM

RNN是DNN模型的变种,不同之处在于它可以储存过去的行为记忆,进行更准确的预测,然而,就像人脑一样,一旦所需记忆量太大,就会比较健忘。我们可以把隐藏状态(hidden state)h_{t}认为是记忆单元,h_{t}可通过前一步的hidden state和当前时刻的输入(input)得到,因为是记忆单元,h_{t}可以捕捉到之前所有时刻产生的信息,而输出(output)o_{t}仅依赖于t时刻的记忆,也就是h_{t}。

RNN在反向训练误差时,都会乘上参数,参数乘上误差的结果,大则出现梯度爆炸;小则梯度消失,导致模型成效不佳,如图4。

为了解决健忘、训练误差的问题,LSTM有了像是遗忘/输入/输出门(forget/input/output gate),隐藏状态(hidden state),记忆单元(cell memory)等概念,带来了更好的结果。在2014年,论文Learning Phrase Representations除了提出Seq2seq的概念,更提出了LSTM的简化版GRU,此后,LSTM和GRU便取代RNN成为深度学习当中的主流。

下图是LSTM的各种应用,在此不深入描述。

Seq2seq

回到正题,所以Seq2seq是怎么组成的?我们可以看到Seq2seq包含两部分:Encoder和Decoder。一旦将句子输入至Encoder,即可从Decoder获得目标句。本篇文章着墨在Decoder生成过程,Encoder就是个单纯的RNN/ LSTM,读者若有兴趣可再自行研究,此外RNN/LSTM可以互相代替,以下仅以RNN作为解释。

现在我们具备RNN/LSTM的知识,可以发现Seq2seq中,Decoder的公式和RNN根本就是同一个模子出来的,差别在于Decoder多了一个C — 图(6),这个C是指context vector/thought vector。context vector可以想成是一个含有所有输入句信息的向量,也就是Encoder当中,最后一个hidden state。简单来说,Encoder将输入句压缩成固定长度的context vector,context vector即可完整表达输入句,再透过Decoder将context vector内的信息产生输出句,如图7。

但是,在Seq2seq模型中,Encoder将输入句压缩成固定长度的context vector真的好吗?如果句子今天很长,固定长度的context vector效果就会不好。怎么办呢?

在2015年,有个救星诞生了,叫作注意力模型(attention model)。

Attention model

为什么要用attention model?

The attention model用来帮助解决机器翻译在句子过长时效果不佳的问题。

这种新的构架替输入句的每个文字都创造一个context vector,而非仅仅替输入句创造一个从最终的hidden state得来的context vector,举例来说,如果一个输入句有N个文字,就会产生N个context vector,好处是,每个context vector能够被更有效的译码。

在Attention model中,Encoder和Seq2seq概念一样,一样是从输入句<X1,X2,X3…Xm>产生<h1,h2,h….hm>的hidden state,再计算目标句<y1…yn>。换言之,就是将输入句作为input而目标句作为output,所以差别就在于context vector c_{i}是怎么计算?

Context vector c_{i}是透过attention scoreα乘上input的序列加权求和.Attention/Alignment score是attention model中提出一个很重要的概念,可以用来衡量输入句中的每个文字对目标句中的每个文字所带来重要性的程度。由公式可知,attention score藉由score e_{ij}所计算得到,所以先来看看score e_{ij}是什么。

在计算score中,a代表Alignment model会根据输入字位置j和输出字位置i这两者的关联程度,计算出一个score e_{ij}。换言之,e_{i,j}是衡量RNN decoder中的hidden state s_{i-1}和输入句中的第j个文字hidden state h_{j}的关系所计算出的权重 — 如方程式3,那权重怎么算呢?

Neural Machine Translation发表之后,接续的论文Effective approaches of the NMT、Show,Attend and Tell提出了global/local attention和soft/hard attention的概念,而score e_{ij}的计算方式类似global和soft attention。细节在此不多说,图11可以看到3种计算权重的方式,我们把刚才的公式做些改变,将score e_{ij}改写成score(h_{t},\bar {h_{s}}),h_{t}代表s_{i-1}而\bar {h_{s}}代表h_{j},为了计算方便,我们采用内积(dot)计算权重。

有了score e_{ij},即可透过softmax算出attention score,context vector也可得到,在attention model中,context vector又称为attention vector。我们可以将attention score列为矩阵,透过此矩阵可看到输入端文字和输出端文字间的对应关系,也就是论文当中提出align的概念。

我们知道如何计算context vector后,回头看encoder。

attention model中的encoder用的是改良版RNN:双向RNN(Bi-directional RNN),以往单向RNN的问题在于t时刻时,只能透过之前的信息进行预测,但事实上,模型有时候可能也需要利用未来时刻的信息进行预测,其运作模式为,一个hidden layer用来由左到右,另一个由右到左,透过双向RNN,我们可以对词语进行更好的预测。

举例来说,”我喜欢苹果,因为它很好吃”?和”我喜欢苹果,因为他比安卓稳定”这两个句子当中,如果只看”我喜欢苹果”,你可能不知道苹果指的是水果还是手机,但如果可以根据后面那句得到信息,答案就很显而易见,这就是双向RNN运作的方式。

Attention model虽然解决了输入句仅有一个context vector的缺点,但依旧存在不少问题。1.context vector计算的是输入句、目标句间的关联,却忽略了输入句中文字间的关联,和目标句中文字间的关联性,2.不管是Seq2seq或是Attention model,其中使用的都是RNN,RNN的缺点就是无法平行化处理,导致模型训练的时间很长,有些论文尝试用CNN去解决这样的问题,像是Facebook提出的Convolutional Seq2seq learning,但CNN实际上是透过大量的layer去解决局部信息的问题,在2017年,Google提出了一种叫做”The transformer”的模型,透过self attention、multi-head的概念去解决上述缺点,完全舍弃了RNN、CNN的构架。

让我们复习一下Seq2seq、Attention model,差别在于计算context vector的方式。

总结

透过上述内容,我们快速的了解Seq2seq、Attention model运作、计算方式,我强烈建议有兴趣的读者可以参考图1中的论文,会有很多收获。

系列二将着重在Google于论文“Attention is all you need“所提出的self attention、multi-head等概念。

参考

[1] Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translationr. arXiv:1406.1078v3 (2014).

[2] Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215v3 (2014).

[3] Neural machine translation by joint learning to align and translate. arXiv:1409.0473v7 (2016).

[4] Effective Approaches to Attention-based Neural Machine Translation. arXiv:1508.0402v5 (2015).

[5] Convolutional Sequence to Sequence learning. arXiv:1705.03122v3(2017).

[6] Attention Is All You Need. arXiv:1706.03762v5 (2017).

[7] ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation. arXiv:1711.06632v2 (2017).

[8] Key-Value Memory Networks for Directly Reading Documents. arXiv:1606.03126v2 (2016).

[9] Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).

[10] Deep Residual Learning for Image Recognition. arXiv:1512.03385v1 (2015).

[11] Layer Normalization. arXiv:1607.06450v1 (2016).

来源:

https://medium.com/@bgg/seq2seq-pay-attention-to-self-attention-part-1-d332e85e9aad

原文发布于微信公众号 - 量化投资与机器学习(Lhtz_Jqxx)

原文发表时间:2018-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

机器学习预备知识之概率论(上)

随着Hadoop等处理大数据技术的出现和发展,机器学习也越来越走进人们的视线。其实早在Hadoop之前,机器学习和数据挖掘早已经作为单独的学科而存在,那为什么在...

3636
来自专栏算法channel

机器学习|K-Means算法

01 — K-Means算法 在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,主要通过不断地取离种子点最近均值的算法。 如下...

3296
来自专栏AI研习社

从聚合-转移框架浅谈卷积神经网络的架构设计

本次Paper Reading我们并没有关注某些特定的paper,而是用一个视角对现有的代表性的卷积神经网络设计进行总结。

1372
来自专栏Python小屋

详解Python使用模拟退火算法求解列表“最大值”

之前发过一个使用爬山算法的文章,请参考:Python使用爬山算法寻找序列“最大值” 模拟退火算法可以看作是爬山算法的一种改进,如果前方有更优解就前进,如果没有...

4536
来自专栏人工智能头条

深度学习和自然语言处理中的Attention和Memory机制

4185
来自专栏AI科技评论

ACL论文 | 深度学习大神新作,神经网络的自然语言翻译应用

在 8月7日在德国柏林召开的2016 计算语言学(ACL)大会上,学者Thang Luong、Kyunghyun Cho 和 Christopher D. Ma...

3655
来自专栏AI科技评论

学界 | AAAI 2018 Oral论文首次提出利用深度增强学习自动解数学题

AI 科技评论按:增强学习和人类学习的机制非常相近,DeepMind 已经将增强学习应用于 AlphaGo 以及 Atari 游戏等场景当中。作为智能教育领域的...

4468
来自专栏人工智能

概念学习:“Find-S 算法”,机器学习的敲门砖

在之前的博客中,我们讲到了一台机器通过机器学习所能完成的壮举,以及深入学习机器学习之前必备的数学知识。那么,在理解了机器学习的先决条件之后,就让我们迈着小而高效...

5789
来自专栏AI科技评论

科普|机器学习中决策树的原理与算法

AI科技评论按:本文作者栗向滨,中科院自动化所复杂系统国家重点实验室研究生毕业,机器学习与计算机视觉方向算法工程师。雷锋网首发文章。 我们知道,在机器学习中有两...

3776
来自专栏移动开发面面观

Softmax

1493

扫码关注云+社区

领取腾讯云代金券