文章

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

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

这一节在讲什么

  这一节先不急着上公式,而是讲一个核心直觉:

人在翻译长句子时,不会先把整句死记硬背下来,再一次性吐出来;人是看一部分,翻一部分。

  注意力模型就是把这个想法交给神经网络。

为什么基础 seq2seq 对长句子吃力

  基础编码器-解码器的做法是:

  1. 编码器把整句都读完
  2. 把整句信息压成一个固定长度向量
  3. 解码器再靠这个向量生成整句翻译

  短句时这样还行。 但句子一长,问题就来了:

  • 你让一个固定长度向量记住所有信息
  • 长句的细节很容易被压缩丢失
  • 所以越长的句子,翻译质量越容易掉

  课程里就强调:普通编码器-解码器在长句上 BLEU 会明显下滑。

人类怎么翻译

  人类更像这样做:

  • 先看前半句
  • 翻译前半句
  • 再看下一段
  • 再翻译下一段

  也就是:

当前要生成哪个词,就重点看输入里最相关的那一小块。

  这就是注意力的核心直觉。

课程里的短句例子

  输入法语:

\[\text{Jane visite l'Afrique en septembre}\]

  输出英语:

\[\text{Jane visits Africa in September}\]

  当模型准备生成第 1 个英文词 Jane 时,它应该主要看输入中的 Jane 附近。

  当模型准备生成 visits 时,它应该主要看 visite 附近。

  当模型准备生成 Africa 时,它应该主要看 l'Afrique

  这就不是“整个输入一起平均使用”,而是“按生成步骤动态聚焦”。

什么叫注意力权重

  课程里用下面的记号表示:

\[\alpha^{\langle t, t' \rangle}\]

  它表示:

当生成第 $t$ 个输出词时,应该把多少注意力放在第 $t’$ 个输入词上。

  例如:

  • $\alpha^{\langle 1,1 \rangle}$:生成第 1 个英文词时,对第 1 个法语词的关注程度
  • $\alpha^{\langle 2,2 \rangle}$:生成第 2 个英文词时,对第 2 个法语词的关注程度

  这些权重加起来会形成当前时刻的“关注分布”。

上下文向量 $C$ 是什么

  你可以把上下文向量 $C^{\langle t \rangle}$ 理解成:

“当前这一步生成输出时,从输入句子里读出来的重点摘要”。

  它不是固定不变的。

  生成不同输出词时,关注点不同,所以对应的上下文向量也不同。

为什么注意力更像人类

  因为它允许模型在第 $t$ 步生成输出时,只抓最相关的输入位置。

  所以:

  • 不需要把整句所有信息都死塞进一个固定向量
  • 长句时更不容易崩
  • 对齐关系也更自然

这一节最重要的直觉图景

  普通 seq2seq:

\[\text{整句输入} \rightarrow \text{一个固定向量} \rightarrow \text{整句输出}\]

  注意力模型:

\[\text{整句输入} \rightarrow \text{保留全部中间信息}\]

  然后在生成每个输出词时:

\[\text{按需查看输入中最相关的位置}\]

小白最该理解的一句话

  注意力不是“让模型更聪明一点”这么抽象。 它非常具体:

生成当前词时,不再平均看整句,而是给输入中不同位置分配不同权重。

这一节最该记住的要点

要点 1:普通编码器-解码器的瓶颈是固定长度表示

  长句的信息容易丢。

要点 2:注意力让模型按步骤看输入

  每生成一个词,都重新决定“该看哪里”。

要点 3:注意力权重描述的是关注分布

\[\alpha^{\langle t, t' \rangle}\]

  衡量第 $t$ 个输出词对第 $t’$ 个输入词的关注程度。

要点 4:上下文向量是“当前时刻读到的重点摘要”

  不同时间步的上下文向量不同。

这一节一句话总结

  注意力模型的核心直觉是:生成每个输出词时,只重点查看输入中最相关的部分,而不是要求一个固定向量记住整句全部信息,因此它尤其擅长处理更长、更复杂的序列。

本文由作者按照 CC BY 4.0 进行授权