NLP 学习笔记十-simple RNN+attention(注意力机制)

NLP 学习笔记十-simple RNN+attention(注意力机制)

感兴趣的伙伴,看这个笔记,最好从头开始看哈,而且我的笔记,其实不面向零基础,最好有过一些实践经历的来看最好。
紧接上一回,我们谈到seq2seq模型解决用于机器翻译的问题。其中seq其实是采用lstm作为自己的基础记忆网络实现的,当然也可以用RNN实现实现seq2seq模型。
如下图,下图是使用simple RNN实现seq2seq模型的一个例子。和之前lstm是一个原理,比如我们要实现英文到德语的翻译,那么可以先将英语文本的字符进行onehot编码,编码成一个个的向量,然后先经过一个simple RNN模型的信息提取,也就是下图的Encoder RNN模型,之后将最终提取的信息结合要翻译的德语文本,输入下一个simple RNN模型,这个simple RNN模型也就是Decoder RNN模型。

NLP 学习笔记十-simple RNN+attention(注意力机制)_第1张图片
后来人们发现,无论是使用lstm模型还是simple RNN模型实现的seq2seq模型在输入文本变长之后,慢慢的翻译性能反而会下降:
NLP 学习笔记十-simple RNN+attention(注意力机制)_第2张图片

lstm模型要好一点,这是因为,随着文本输入的变成,seq2seq模型都开始遗忘开始输入的信息。所以人们考虑了使用注意力机制。
注意力机制的原理就是原本我们是不是将 s 0 s_0 s0作为decoder模型的输入吗,现在我们取 s = w 1 ∗ h 1 + w 2 ∗ h 2 + w 3 ∗ h 3 + w 4 ∗ h 4 + . . . . . + w n ∗ h n s=w_1*h_1+w_2*h_2+w_3*h_3+w_4*h_4+.....+w_n*h_n s=w1h1+w2h2+w3h3+w4h4+.....+wnhn作为decoder模型的输入,也就是去每次simple RNN模型的单元输出加权结构作为 s 0 s_0 s0
现在问题就在于w_1怎么求解了:
NLP 学习笔记十-simple RNN+attention(注意力机制)_第3张图片
上图的 α \alpha α也就是我们之前说的 w w w,即权重值,其实原理就是对各个 h i h_i hi进行一个权重处理,权重大的会更重要,权重小重要性会低一点,这个方法,其实应该在各个领域中都用到,因为我认为加上科学的注意力机制可能不能使实验结果变好,但是最起码应该不会变坏。

你可能感兴趣的:(自然语言处理,自然语言处理,rnn,学习)