自注意力机制理解

当理解自注意力机制时,可以想象一个句子级别的文本输入作为示例。假设我们有以下句子:“The cat is eating fish”。现在我们将这个句子转换成词嵌入向量序列:

(给定有值的只是示例,方便理解,以下都是这样)

X = {x_1, x_2, x_3, x_4, x_5}

X=\begin{bmatrix} 2.1 &1.5 &0.7 \\ -0.3 &0.9 &1.6 \\ 1.8 & 0.4 &-1.1 \\ 0.5 &-0.2 &1.3 \\ -0.6 &0.8 &0.2 \end{bmatrix}

其中:

  • x_1表示“The” 对应词向量为[2.1,1.5,0.7]
  • x_2表示“cat” 对应词向量为[-0.3,0.9,1.6]
  • x_3表示“is” 对应词向量为[1.8,0.4,-1.1]
  • x_4表示“eating” 对应词向量为[0.5,-0.2,1.3]
  • x_5表示“fish”对应词向量为[-0.6,0.8,0.2]
  • 每个x_i都是一个词嵌入向量。

接下来,我们将使用自注意力机制来为每个词生成上下文表示。首先,我们需要计算每个词的查询向量(Query)、键向量(Key)和数值向量(Value)

对于每个x_i

q_i = x_iW^Q

k_i = x_iW^K

v_i = x_iW^V

W^Q = \begin{bmatrix} 0.4 & 0.1 \\ -0.2 & 0.3 \\ 1.0 & -0.5 \\ \end{bmatrix}       W^K = \begin{bmatrix} 0.7 & 0.2 \\ -0.1 & 0.8 \\ 0.9 & -0.4 \\ \end{bmatrix}       W^V = \begin{bmatrix} -0.3 & 0.6 \\ 0.5 & 0.1 \\ -0.7 & 0.9 \\ \end{bmatrix}

然后,我们计算注意力分数(Attention Scores),这个分数表示第i个词向量和其他词向量间的相关性的分数:

\text{Attention Score}(q, k_i) = softmax(\frac{q \cdot k_i}{\sqrt{d}})

求解示例如下,比如求"The"的注意力分数

q = X \cdot W^Q \\= \begin{bmatrix} 2.1 & 1.5 & 0.7 \\ -0.3 & 0.9 & 1.6 \\ 1.8 & 0.4 & -1.1 \\ 0.5 & -0.2 & 1.3 \\ -0.6 & 0.8 & 0.2 \\ \end{bmatrix} \cdot \begin{bmatrix} 0.4 & 0.1 \\ -0.2 & 0.3 \\1.0 & -0.5 \end{bmatrix} = \begin{bmatrix} 1.24 & 0.31 \\ 1.3 &-0.56\\ -0.46&0.85\\ 1.54&-0.66\\ -0.2&0.08 \end{bmatrix}

k_1 = X[1] \cdot W^K = \begin{bmatrix} 2.1 & 1.5 & 0.7 \end{bmatrix} \cdot \begin{bmatrix} 0.7 & 0.2 \\ -0.1 & 0.8 \\ 0.9 & -0.4 \end{bmatrix} = \begin{bmatrix} 1.95 & 1.34 \end{bmatrix}

v_1 = X[1] \cdot W^V = \begin{bmatrix} 2.1 & 1.5 & 0.7 \end{bmatrix} \cdot \begin{bmatrix} -0.3 & 0.6 \\0.5 & 0.1 \\ -0.7 & 0.9 \end{bmatrix} = \begin{bmatrix} -0.37& 2.04 \end{bmatrix}

同样的方式计算其他词的Q,K,V,

v_2 =[-0.58,1.35],v_3=[0.43,0.13]\\v_4=[-1.16,1.45],v_5=[0.44,-0.1]

接着计算注意力分数(Attention Scores)

[\alpha_{11}, \alpha_{12}, \alpha_{13}, \alpha_{14}, \alpha_{15}]\\ =\text{softmax}\left(\frac{q \cdot k_1}{\sqrt{2}}\right) \\ = \text{softmax}([2.8334,1.4198,0.6324,1.7298,-0.2604]) \\ = [0.4652,0.1712,0.0981,0.2131,0.0521]

利用这些注意力权重来对数值向量(v_j)进行加权求和,从而得到输出表示y_i

y_i = \sum_{j=1}^{n} \alpha_{ij}v_j

y_1 = \sum_{j=1}^{5} \alpha_{1j}v_j = \alpha_{11}\cdot v_1 + \alpha_{12} \cdot v_2 + \ldots + \alpha_{15} \cdot v_5 \\ = 0.4652\cdot{v_1}+0.1712\cdot{v_2}+0.0981\cdot{v_3}+0.2131\cdot{v_4}+0.0521\cdot{v_5}\\ =[-0.4536,1.4969]

这样,我们就可以通过自注意力机制动态地为每个词生成其上下文表示,使得模型能够更好地理解整个句子的语义结构。这种方法允许模型同时关注句子中不同位置的词,并根据它们之间的关系来计算每个词的表示,从而更好地捕捉句子的语义信息。

这里就是把"The"的原始词向量[2.1,1.5,0.7],通过自注意力机制结合其他词向量和QKV转换成结合了上下文信息的向量表示[-0.5228,1.5181]

最后附图:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值