您的位置 首页 > 德语阅读

吸引注意力德语?深度学习中的Attention注意力模型

这篇文章给大家聊聊关于吸引注意力德语,以及深度学习中的Attention注意力模型对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

现实中,当人在看一样东西的时候,总有他非常关注的地方,并且,每个人注意的点是不同的,随着目光的移动,注意力也在转移。所以,当视野定于某个场景时,人眼及大脑在该场景内每一处空间位置上的注意力分布是不一样的:对于图片,特别显眼的场景会率先吸引注意力,也就是吸引眼球,因为大脑中对这类东西很敏感;对于文本,人们更是带目的性的去读,每个人的理解也是不一样的。注意力模型应该与具体的目的相结合。

吸引注意力德语?深度学习中的Attention注意力模型

从Attention的作用角度出发,我们就可以从两个角度来分类Attention种类:SpatialAttention空间注意力TemporalAttention时间注意力。更具实际的应用,也可以将Attention分为SoftAttentionHardAttention。SoftAttention是所有的数据都会注意,都会计算出相应的注意力权值,不会设置筛选条件。HardAttention会在生成注意力权重后筛选掉一部分不符合条件的注意力,让它的注意力权值为0,即可以理解为不再注意这些不符合条件的部分。

目前绝大多数文献中出现的AM模型是附着在Encoder-Decoder框架下的,当然,其实AM模型可以看作一种通用的思想,本身并不依赖于Encoder-Decoder模型,这点需要注意。Encoder-Decoder框架可以看作是一种文本处理领域的研究模式,应用场景异常广泛,本身就值得细谈。

Encoder-Decoder框架可以这么直观地去理解:可以把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。对于句子对<X,Y>。我们的目标是给定输入句子X,期待通过Encoder-Decoder框架来生成目标句子Y。X和Y可以是同一种语言,也可以是两种不同的语言。而X和Y分别由各自的单词序列构成:

Encoder顾名思义就是对输入句子X进行编码,将输入句子通过非线性变换转化为中间语义表示C:

对于解码器Decoder来说,其任务是根据句子X的中间语义表示C和之前已经生成的历史信息y1,y2….yi-1来生成i时刻要生成的单词yi:

每个yi都依次这么产生,那么看起来就是整个系统根据输入句子X生成了目标句子Y。Encoder-Decoder是一个序列到序列的模型seq2seq,这个模型是对顺序有依赖的。

Encoder-Decoder是个非常通用的计算框架,至于Encoder和Decoder可选模型比较多,常见的比如CNN/RNN/BiRNN/GRU/LSTM/DeepLSTM等。例如英语翻译,单词、句子、文章是原始数据输入,相当于X;我们在大脑里加工这些数据,相当于Encoder模型,我的脑子里有很多加工后的数据,相当于C;现在翻译一个英语句子,加工过的数据C去翻译这个句子,相当于Decoder。

Encoder-Decoder模型并不是“注意力模型”的,可把它看作是注意力不集中的“分心模型”。为什么?请下边Y中每个单词的生成过程如下:

其中f是decoder的非线性变换函数

y1、y2、y3也好,使用的句子X的语义编码C都是一样的

语义编码C是由句子X的所有单词经过Encoder编码产生的

所以,不论是生成哪个单词,y1,y2还是y3,其实句子X中任意单词对生成某个目标单词yi来说影响力都是相同的,没有任何区别

引入AM模型,以翻译一个英语句子举例:输入X:TomchaseJerry。理想输出:汤姆追逐杰瑞。

在翻译“杰瑞”的时候,应该体现出英文单词对于翻译当前中文单词不同的影响程度,比如给出类似下面一个概率分布值:

(Tom,0.3)(Chase,0.2)(Jerry,0.5)

在翻译“杰瑞”这个中文单词的时候,分心模型里面的每个英文单词对于翻译目标单词“杰瑞”贡献是相同的,很明显这里不太合理,显然“Jerry”对于翻译成“杰瑞”更重要,但是分心模型是无法体现这一点的,这就是为何说它没有引入注意力的原因。

没有引入注意力模型时,句子比较短的时候问题不大,但是如果输入句子比较长,此时所有语义完全通过一个中间语义向量来表示,单词自身的信息已经消失,可想而知会丢失很多细节信息,这也是为何要引入注意力模型的重要原因。

在生成每个单词Yi的时候,原先都是相同的C会替换成根据当前生成单词而不断变化的Ci即由固定的中间语义表示C换成了根据当前输出单词来调整成加入注意力模型的变化的Ci。

图2引入AM模型的Encoder-Decoder框架

即生成目标句子单词的过程成了下面的形式:

每个Ci可能对应着不同原句子单词的注意力分配的概率分布,比如对于上面的英汉翻译来说,其对应的信息可能如下:

其中,f2函数代表Encoder对输入英文单词的某种变换函数,例如,如果Encoder是用的RNN模型的话,这个f2函数的结果往往是某个时刻输入xi后隐层节点的状态值;g代表Encoder根据单词的中间表示合成整个句子中间语义表示的变换函数,一般的做法中,g函数就是对构成元素加权求和,也就是下列公式:

假设Ci中那个i就是上面的“汤姆”,那么Tx就是3,代表输入句子的长度,h1=f(“Tom”),h2=f(“Chase”),h3=f(“Jerry”),对应的注意力模型权值分别是0.6,0.2,0.2,所以g函数就是个加权求和函数。如果形象表示的话,翻译中文单词“汤姆”的时候,数学公式对应的中间语义表示Ci的形成过程类似下图:

这里还有一个问题:生成目标句子某个单词,比如“汤姆”的时候,你怎么知道AM模型所需要的输入句子单词注意力分配概率分布值呢?就是说“汤姆”对应的概率分布:

(Tom,0.3)(Chase,0.2)(Jerry,0.5)是如何得到的呢?

为了便于说明,我们假设对图1的非AM模型的Encoder-Decoder框架进行细化,Encoder采用RNN模型,Decoder也采用RNN模型,这是比较常见的一种模型配置,则图1转换为下图:

图4RNN作为具体模型的Encoder-Decoder框架

注意力分配概率分布值的通用计算过程:

对于采用RNN的Decoder来说,如果要生成yi单词,在时刻i,我们是可以知道在生成Yi之前的隐层节点i时刻的输出值Hi的,而我们的目的是要计算生成Yi时的输入句子单词“Tom”、“Chase”、“Jerry”对Yi来说的注意力分配概率分布,那么可以用i时刻的隐层节点状态Hi去一一和输入句子中每个单词对应的RNN隐层节点状态hj进行对比,即通过函数F(hj,Hi)来获得目标单词Yi和每个输入单词对应的对齐可能性。

这个F函数在不同论文里可能会采取不同的方法,然后函数F的输出经过Softmax进行归一化就得到了符合概率分布取值区间的注意力分配概率分布数值(这就得到了注意力权重)。图5显示的是当输出单词为“汤姆”时刻对应的输入句子单词的对齐概率。绝大多数AM模型都是采取上述的计算框架来计算注意力分配概率分布信息区别只是在F的定义上可能有所不同

上述内容就是论文里面常常提到的SoftAttentionModel大多数AM模型基本就是这个模型,区别很可能只是把这个模型用于不同的应用场景。那么怎么理解AM模型的物理含义呢?一般文献里会把AM模型看作是单词对齐模型,这是非常有道理的。目标句子生成的每个单词对应输入句子单词的概率分布可以理解为输入句子单词和这个目标生成单词的对齐概率,这在机器翻译语境下是非常直观的:传统的统计机器翻译一般在做的过程中会专门有一个短语对齐的步骤而注意力模型其实起的是相同的作用。在其他应用里面把AM模型理解成输入句子和目标句子单词之间的对齐概率也是很顺畅的想法。

当然,从概念上理解的话,把AM模型理解成影响力模型也是合理的,就是说生成目标单词的时候,输入句子每个单词对于生成这个单词有多大的影响程度。这种想法也是比较好理解AM模型物理意义的一种思维方式。

图7可视化地展示了在英语-德语翻译系统中加入Attention机制后,Source和Target两个句子每个单词对应的注意力分配概率分布。

图7英语-德语翻译的注意力概率分布

好了,文章到此结束,希望可以帮助到大家。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023