深度学习笔记10/30-人工智能白皮书的答疑-语言大模型(1)

Transformer架构

        一."编码层主要是将输入词序列映射到连续值向量空间进行编码,每个词编码由词嵌入和位置编码组成,由二者加和得到."如何映射?词序列和位置如何编码?

        词嵌入:通过预训练的嵌入矩阵来得到一个固定长度的向量(在预训练中就定好了语义信息对应的向量,比如"你"可能就对应着唯一的向量V_1=[0.1,0.2,0.3...]).

        位置编码:因为输入的序列仅包含语义,没有每个词的相对位置,所以需要将其位置信息也嵌入到向量中.那么如何将位置信息转化为编码形式呢?

        首先声明三个变量i,j,d.  i代表该语义的位置,d代表嵌入向量的维度,j代表这个向量中的第j个元素.

        然后根据公式\left\{\begin{matrix} Vj=sin(\frac{i}{10000^\frac{j}{d}}),j=2,4,6...\\ Vj=cos(\frac{i}{10000^\frac{j}{d}})j=1,3,5... \end{matrix}\right.来进行编码

        最后与词嵌入得到的向量进行加和,得到完整的词序列编码.

        二.自注意力机制

        自注意力机制(Self-Attention Mechanism)是Transformer架构中的核心部分,它允许模型在处理一个序列时,为序列中的每个元素分配不同的注意力权重。这意味着,当模型处理序列中的一个元素时,它可以集中注意力于序列中的其他元素

公式:

        分别定义三个矩阵:查询矩阵Q,键矩阵K,值矩阵V,其特征矩阵分别为X_q,X_{kv},则三个矩阵分别为

\left\{\begin{matrix} Q=X_qW_q\\ K=X_kvW \\V= X_kvW_v \end{matrix}\right.

        权重W由查询向量和键矩阵的点积决定

        softmax函数:

softmax(x)=\frac{e^{-\frac{1}{2}x^2}}{\sum_{j=1}^{n}e^{-\frac{1}{2}x^2}}

        其中x为注意力分数,在自注意力机制中:
                                                                      x=\frac{QK^T}{\sqrt{d_k}}V

        这种x的计算方法被叫做缩放点积模型,d_k代表特征维度(为了消除梯度消失的问题),类似的还有

原理:

        注意力机制

        在预测中,为了更好地整体地把握将预测的值与样本值之间的关系,引入三个变量,分别是q(预测时给出的变量),k(样本的参数),v(样本的结果). 我们的思路是在给出q时,对与q最接近的一些参数k_i给予更多的权重(也就是注意力),对其他的参数k_j给予稍少的权重.从而能够让输出值v_q既能把握局部的特性,也能把握整体上的规律. 

        那么怎么做到这一点呢?

        首先考虑以一维情况,在q值作为一个一维数据被输入后,一般的想法就是在样本里找到一个大于q的值k_1和一个小于q的值k_2从而对其结果v_1,v_2进行加权平均得到q的预测结果. 但是这样做会导致没有用到其他key值和value值的信息.

        于是我们需要对特定的q与每一个k_i通过某种运算\alpha(q,k_i)来得到一个权重,再乘以k_i对应的v_i,然后再相加得到最终的预测结果. 这样就能保证利用了样本全部的信息:

f(q,k)=\alpha(q,k_1)v1+\alpha(q,k_2)v2+\alpha(q,k_3)v3...=\sum _{i=1}^{n}\alpha(q,v_i)

        这种利用给出的q与每一个k_i得出权重值的运算\alpha(q,k_i)可以是任意刻画相关性的函数.transformer中主要运用softmax函数:

softmax(x)=\frac{e^{-\frac{1}{2}x^2}}{\sum_{j=1}^{n}e^{-\frac{1}{2}x^2}}

        这样我们就可以做到完整地利用每一部分的信息来保证预测结果的精确性.

        对于多维情况依然相同,查询矩阵Q与键矩阵K^T做点积后除以特征维度\sqrt{d_k}(一般是矩阵的维度)得到注意力分数.

        再与softmax函数进行运算得到每一个对应V_i值对应的权重W_i,然后与对应value值相乘进行加和得到最终预测结果:

f(Q,K)=softmax(\frac{QK^T}{\sqrt{d_k}})V=\frac{e^{-\frac{1}{2}(\frac{QK^T}{\sqrt{d_k}})^2}}{\sum_{j=1}^{n}e^{-\frac{1}{2}(\frac{QK^T}{\sqrt{d_k}})^2}}Vj

        

        自注意力机制

        在自注意力机制中,我们将矩阵Q=K=V,也就是说三个矩阵全部相同,此时命名这个矩阵为X.那么softmax函数可表示为:


f(Q,K)=softmax(\frac{XX^T}{\sqrt{d_k}})X

        但是在实际应用中,我们会将Q,K,V三个矩阵分别经过不同的线性变换

\left\{\begin{matrix} Q=XW_q\\ K=XW \\V= XW_v \end{matrix}\right.

        从而继续进行预测:

f(Q,K)=softmax(\frac{QK^T}{\sqrt{d_k}})V=\frac{e^{-\frac{1}{2}(\frac{QK^T}{\sqrt{d_k}})^2}}{\sum_{j=1}^{n}e^{-\frac{1}{2}(\frac{QK^T}{\sqrt{d_k}})^2}}Vj

        权重矩阵

        通过反向传播和优化进行学习来得到. 获得的步骤如下:

        1.随机初始化: 得到权重矩阵W_Q,W_K,W_V的初始形式,一般都是三个随机矩阵.

        2.前向传播:输入词嵌入表示的序列,然后运用随机的权重矩阵W_Q,W_K,W_V来进行注意力训练(也就是运用softmax函数和QKV矩阵来预测).

        与逻辑回归不同,权重矩阵的行代表嵌入词的维度,列代表转化后的QKV矩阵的维度,每一个元素代表一个参数.

        整体上来说,词嵌入向量与权重矩阵的乘积代表着该向量在不同的空间(如Query空间)中的形式,而其形式不同就代表了最终的权重不同

        (个人理解:假如在一维中,可以用长度表示权重的不同,如今线性变换只是利用权重矩阵在更高维度上进行权重的比较,从而得出不同的向量偏好)

        3.计算损失

        4.反向传播

        5.权重更新

        然后不停地迭代更新,得到最适合的权重矩阵W_Q,W_K,W_V

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zack Wesson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值