【吴恩达deeplearning.ai】Course 5 - 3.7 注意力模型直观理解

注意力模型直观理解 (Attention Model Intuition)

在本周大部分时间中,你都在使用这个编码解码的构架(a Encoder-Decoder architecture)来完成机器翻译。当你使用RNN读一个句子,于是另一个会输出一个句子。我们要对其做一些改变,称为注意力模型(the Attention Model),并且这会使它工作得更好。注意力模型或者说注意力这种思想(The attention algorithm, the attention idea)已经是深度学习中最重要的思想之一,我们看看它是怎么运作的。
在这里插入图片描述
像这样给定一个很长的法语句子,在你的神经网络中,这个绿色的编码器要做的就是读整个句子,然后记忆整个句子,再在感知机中传递(to read in the whole sentence and then memorize the whole sentences and store it in the activations conveyed her)。而对于这个紫色的神经网络,即解码网络(the decoder network)将生成英文翻译,Jane去年九月去了非洲,非常享受非洲文化,遇到了很多奇妙的人,她回来就嚷嚷道,她经历了一个多棒的旅行,并邀请我也一起去。人工翻译并不会通过读整个法语句子,再记忆里面的东西,然后从零开始,机械式地翻译成一个英语句子。而人工翻译,首先会做的可能是先翻译出句子的部分,再看下一部分,并翻译这一部分。看一部分,翻译一部分,一直这样下去。你会通过句子,一点一点地翻译,因为记忆整个的像这样的的句子是非常困难的。你在下面这个编码解码结构中,会看到它对于短句子效果非常好,于是它会有一个相对高的Bleu分(Bleu score),但是对于长句子而言,比如说大于30或者40词的句子,它的表现就会变差。Bleu评分看起来就会像是这样,随着单词数量变化,短的句子会难以翻译,因为很难得到所有词。对于长的句子,效果也不好,因为在神经网络中,记忆非常长句子是非常困难的。在这个和下个视频中,你会见识到注意力模型,它翻译得很像人类,一次翻译句子的一部分。而且有了注意力模型,机器翻译系统的表现会像这个一样,因为翻译只会翻译句子的一部分,你不会看到这个有一个巨大的下倾(huge dip),这个下倾实际上衡量了神经网络记忆一个长句子的能力,这是我们不希望神经网络去做的事情。在这个视频中,我想要给你们注意力机制运行的一些直观的东西。然后在下个视频中,完善细节。
在这里插入图片描述
注意力模型源于Dimitri, Bahdanau, Camcrun Cho, Yoshe Bengio。(Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science,2014.)虽然这个模型源于机器翻译,但它也推广到了其他应用领域。我认为在深度学习领域,这个是个非常有影响力的,非常具有开创性的论文。

让我们用一个短句举例说明一下,即使这些思想可能是应用于更长的句子。但是用短句来举例说明,讲解这些思想会更简单。我们有一个很平常的句子:(法语)Jane visite l’Afrique en Septembre。假定我们使用RNN,在这个情况中,我们将使用一个双向的RNN(a bidirectional RNN),为了计算每个输入单词的的特征集(set of features),你必须要理解输出 y ^ < 1 > \hat y^{<1>} y^<1> y ^ < 3 > \hat y^{<3>} y^<3>一直到 y ^ < 5 > \hat y^{<5>} y^<5>的双向RNN。但是我们并不是只翻译一个单词,让我们先去掉上面的 Y Y Y,就用双向的RNN。我们要对单词做的就是,对于句子里的每五个单词,计算一个句子中单词的特征集,也有可能是周围的词,让我们试试,生成英文翻译。我们将使用另一个RNN生成英文翻译,这是我平时用的RNN记号。我不用 A A A来表示感知机(the activation),这是为了避免和这里的感知机(the activations)混淆。我会用另一个不同的记号,我会用 S S S来表示RNN的隐藏状态(the hidden state in this RNN),不用 A < 1 > A^{<1>} A<1>,而是用 S < 1 > S^{<1>} S<1>。我们希望在这个模型里第一个生成的单词将会是Jane,为了生成Jane visits Africa in September。于是等式就是,当你尝试生成第一个词,即输出,那么我们应该看输入的法语句子的哪个部分?似乎你应该先看第一个单词,或者它附近的词。但是你别看太远了,比如说看到句尾去了。所以注意力模型就会计算注意力权重(a set of attention weights),我们将用 a < 1 , 1 > a^{<1,1>} a<1,1>来表示当你生成第一个词时你应该放多少注意力在这个第一块信息处。然后我们算第二个,这个叫注意力权重, a < 1 , 2 > a^{<1,2>} a<1,2>它告诉我们当你尝试去计算第一个词Jane时,我们应该花多少注意力在输入的第二个词上面。同理这里是 a < 1 , 3 > a^{<1,3>} a<1,3>,接下去也同理。这些将会告诉我们,我们应该花多少注意力在记号为 C C C的内容上。这就是RNN的一个单元,如何尝试生成第一个词的,这是RNN的其中一步,我们将会在下个视频中讲解细节。对于RNN的第二步,我们将有一个新的隐藏状态 S < 2 > S^{<2>} S<2>,我们也会用一个新的注意力权值集(a new set of the attention weights),我们将用 a < 2 , 1 > a^{<2,1>} a<2,1>来告诉我们什么时候生成第二个词, 那么visits就会是第二个标签了(the ground trip label)。我们应该花多少注意力在输入的第一个法语词上。然后同理 a < 2 , 2 > a^{<2,2>} a<2,2>,接下去也同理,我们应该花多少注意力在visite词上,我们应该花多少注意在词l’Afique上面。当然我们第一个生成的词Jane也会输入到这里,于是我们就有了需要花注意力的上下文。第二步,这也是个输入,然后会一起生成第二个词,这会让我们来到第三步 S < 3 > S^{<3>} S<3>,这是输入,我们再有上下文C,它取决于在不同的时间集(time sets),上面的 a < 3 > a^{<3>} a<3>。这个告诉了我们我们要花注意力在不同的法语的输入词上面。 然后同理。有些事情我还没说清楚,但是在下个视频中,我会讲解一些细节,比如如何准确定义上下文,还有第三个词的上下文,是否真的需要去注意句子中的周围的词。这里要用到的公式以及如何计算这些注意力权重(these attention weights),将会在下个视频中讲解到。在下个视频中你会看到 a < 3 , t > a^{<3,t>} a<3,t>,即当你尝试去生成第三个词,应该是l’Afique,就得到了右边这个输出,这个RNN步骤应该要花注意力在 t t t时的法语词上,这取决于在 t t t时的双向RNN的激活值。那么它应该是取决于第四个激活值,它会取决于上一步的状态,它会取决于 S < 2 > S^{<2>} S<2>。然后这些一起影响你应该花多少注意在输入的法语句子的某个词上面。我们会在下个视频中讲解这些细节。但是直观来想就是RNN向前进一次生成一个词,在每一步直到最终生成可能是****。这些是注意力权重,即 a < t , t > a^{<t,t>} a<t,t>告诉你,当你尝试生成第 t t t个英文词,它应该花多少注意力在第 t t t个法语词上面。当生成一个特定的英文词时,这允许它在每个时间步去看周围词距内的法语词要花多少注意力。

我希望这个视频传递了关于注意力模型的一些直观的东西。我们现在可能对算法的运行有了大概的感觉,让我们进入到下个视频中,看看具体的细节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值