打字猴:1.700539005e+09
1700539005 百面机器学习:算法工程师带你去面试 [:1700532232]
1700539006 百面机器学习:算法工程师带你去面试 06 注意力机制
1700539007
1700539008
1700539009
1700539010 场景描述
1700539011
1700539012 无论机器学习、深度学习还是人工智能,我们似乎都在寻找一种可以模拟人脑的机制,注意力机制(Attention Mechanism)实际上也是源于类似的思路。研究发现,人脑在工作时是有一定注意力的。比如当我们欣赏一幅艺术作品时,可以看到其全貌。而当我们深入关注画作的细节时,其实眼睛只聚焦在了画幅上很小的一部分,而忽略了其他位置的诸如背景等信息,这说明大脑在处理信号时是有一定权重划分的,而注意力机制的提出正是模仿了大脑的这种核心特性。
1700539013
1700539014 知识点
1700539015
1700539016 注意力机制,Seq2Seq,循环神经网络
1700539017
1700539018 问题 Seq2Seq模型引入注意力机制是为了解决什么问题?为什么选用了双向的循环神经网络模型?
1700539019
1700539020 难度:★★★★☆
1700539021
1700539022 分析与解答
1700539023
1700539024 在实际任务(例如机器翻译)中,使用Seq2Seq模型,通常会先使用一个循环神经网络作为编码器,将输入序列(源语言句子的词向量序列)编码成为一个向量表示;然后再使用一个循环神经网络模型作为解码器,从编码器得到的向量表示里解码得到输出序列(目标语言句子的词序列)。
1700539025
1700539026 在Seq2Seq模型中(见图10.6),当前隐状态以及上一个输出词决定了当前输出词,即
1700539027
1700539028
1700539029
1700539030
1700539031 (10.20)
1700539032
1700539033
1700539034
1700539035
1700539036 (10.21)
1700539037
1700539038 其中f和g是非线性变换,通常是多层神经网络;yi是输出序列中的一个词,si是对应的隐状态。
1700539039
1700539040
1700539041
1700539042
1700539043 图10.6 序列到序列模型结构示意图
1700539044
1700539045 在实际使用中,会发现随着输入序列的增长,模型的性能发生了显著下降。这是因为编码时输入序列的全部信息压缩到了一个向量表示中。随着序列增长,句子越前面的词的信息丢失就越严重。试想翻译一个有100个词的句子,需要将整个句子全部词的语义信息编码在一个向量中。而在解码时,目标语言的第一个词大概率是和源语言的第一个词相对应的,这就意味着第一步的解码就需要考虑100步之前的信息。建模时的一个小技巧是将源语言句子逆序输入,或者重复输入两遍来训练模型,以得到一定的性能提升。使用长短期记忆模型能够在一定程度上缓解这个问题,但在实践中对于过长的序列仍然难以有很好的表现。同时,Seq2Seq模型的输出序列中,常常会损失部分输入序列的信息,这是因为在解码时,当前词及对应的源语言词的上下文信息和位置信息在编解码过程中丢失了。
1700539046
1700539047 Seq2Seq模型中引入注意力机制就是为了解决上述的问题。在注意力机制中,仍然可以用普通的循环神经网络对输入序列进行编码,得到隐状态h1,h2…hT。但是在解码时,每一个输出词都依赖于前一个隐状态以及输入序列每一个对应的隐状态
1700539048
1700539049
1700539050
1700539051
1700539052 (10.22)
1700539053
1700539054
[ 上一页 ]  [ :1.700539005e+09 ]  [ 下一页 ]