(Attention机制原文)论文阅读:Neural Machine Translation by Jointly Learning to Align and Translate

与传统的机器翻译相比,基于神经网络的机器翻译方法能够通过统一调参最大化。Encoder-decoder被广泛用于机器翻译,它将一句话的语义信息表示为一个固定长度的向量。然而,这种固定长度的向量可能无法承载句子的全部语义信息,因此如果句子长度过长,那么采用这种方式可能取得较差的性能。

这篇论文的优势在于提出一种attention机制,将align和translate统一了起来。align是指翻译两个句子之间,语义之间的对应关系。translate即生成翻译结果。这种机制通过调参的方式,搜索相关位置,生成对应的单词。

attention机制的本质是,它不是将句子压缩成一个固定长度的向量,而是将其表示为向量序列。然后通过自适应的方法,选择向量集合,预测目标单词。

RNN encoder-decoder

编码器

对于一个encoder的输入是一个向量序列 X = ( x 1 , x 2 , . . . , x n ) X=(x_1, x_2, ..., x_n) X=(x1,x2,...,xn),最常用的方法就是RNN:
h ( t ) = f ( x t , h t − 1 ) h(t) = f(x_t, h_{t-1}) h(t)=f(xt,ht1)
and

c = q ( h 1 , . . . . , h T ) c=q({h_1, ...., h_T}) c=q(h1,....,hT)

其中 h t h_t ht是时间 t t t时的隐藏状态, c c c是基于隐藏状态序列生成的vector,代表句子的上下文。

解码器

对于一个decoder来说,其输入包括上下文向量 c c c,所有之前已经预测的单词 { y 1 , y 2 , . . . , y t − 1 } \{y_1, y_2, ..., y_{t-1}\} {y1,y2,...,yt1}。事实上,decoder就是要构建一个联合条件概率:
p ( y ) = Π p ( y t ∣ { y 1 , . . . , y t − 1 } , c ) p(y) = \Pi{p(y_t|\{y_1, ..., y_{t-1}\}, c)} p(y)=Πp(yt{y1,...,yt1},c)
对于RNN而言,对于生成的每个word,应该满足条件概率如下:
p ( y t ∣ y 1 , . . . , y t − 1 , c ) = g ( y t − 1 , s t , c ) p(y_t|{y_1, ..., y_{t-1}, c}) = g(y_{t-1}, s_t, c) p(yty1,...,yt1,c)=g(yt1,st,c)
g g g是一个非线性的,可能是多层的函数,输出概率 y t y_t yt。每次生成word都要依据上下文向量 c c c

Attention 机制

论文以encoder-decoder为例,引入attention机制。

decoder阶段

定义条件概率:
p ( y i ∣ y 1 , . . . , y i − 1 , x ) = g ( y i − 1 , s i , c i ) p(y_i|y_1, ..., y_{i-1}, x) = g(y_{i-1}, s_i, c_i) p(yiy1,...,yi1,x)=g(yi1,si,ci)
其中 s i s_i si是RNN在时刻 i i i状态下隐藏状态,由以下公式计算:
s i = f ( s i − 1 , y i − 1 , c i ) s_i = f(s_{i-1}, y_{i-1}, c_i) si=f(si1,yi1,ci)

它与传统的encoder-decoder的差别是,对于每个 y i y_i yi都对应一个上下文向量 c i c_i ci

上下文向量依赖于一系列的annotations: ( h 1 , . . . . , h T ) (h_1, ...., h_T) (h1,....,hT),对于每个annotation都包含整个句子的信息,并且主要集中在i位置的单词上。

上下文向量 c i c_i ci h h h的加权求和:
c i = ∑ α i j h j c_i = \sum{\alpha_{ij}h_j} \\ ci=αijhj

其中 α i j \alpha_{ij} αij的计算方法如下:
α i j = e x p ( e i j ) ∑ e x p ( e i k ) \alpha_{ij} = \frac{exp(e_{ij})}{\sum{exp(e_{ik})}} αij=exp(eik)exp(eij)

其中 e i j e_{ij} eij通过一个前向的神经网络计算,被称为alignment model:

e i j = a ( s i − 1 , h j ) e_{ij} = a(s_{i-1}, h_j) eij=a(si1,hj)

注意, i i i对应输出序列, j j j对应输入序列。

encoder阶段

作者采用双向RNN,前向RNN和后向RNN分别在输入 j j j的位置产生了隐藏状态向量 ( h 11 , h 12 ) (h_{11}, h_{12}) (h11,h12),作者将两个隐藏状态向量合并,作为annotation输入到alignment model中。

attention机制如下图所示:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab深度学习工具箱(Deep Learning Toolbox)是一个为机器学习、神经网络和人工智能设计的工具,它提供了一系列用于深度学习任务的函数和工具。深度学习是一种机器学习方法,通过多层神经网络模拟人脑神经元之间的连接来进行数据建模和分析,从而实现学习和认知。在深度学习中,使用的神经网络通常包括输入层、隐藏层和输出层。隐藏层可以有多个,每一层都通过学习参数来提取输入数据的高阶特征。 Matlab的深度学习工具箱提供了各种用于训练和评估神经网络的函数,包括数据预处理、网络搭建、参数初始化、训练和测试。用户可以选择不同类型的网络结构,如全连接网络、卷积神经网络(CNN)和循环神经网络(RNN),以适应不同的任务和数据类型。此外,Matlab还提供了一些预训练的网络模型,可以用于特定的图像分类、物体检测和语音识别任务。 使用Matlab进行深度学习可以帮助研究人员和工程师在各种领域中解决实际问题。例如,在计算机视觉领域,可以使用深度学习进行图像识别、目标检测和图像分割。在自然语言处理领域,可以使用深度学习进行文本分类、情感分析和机器翻译。在声音处理领域,可以使用深度学习进行语音识别和音频分类。 总之,Matlab深度学习工具箱为用户提供了方便易用的函数和工具,帮助他们设计、训练和评估各种类型的神经网络。通过深度学习,可以从复杂的数据中提取有用的特征,并进行高效准确的数据建模和分析,从而推动各个领域的研究和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值