当前位置: 首页 > news >正文

大模型算法面试笔记——注意力Transformer流程/面试题篇

学习资料来源于字母站大学

1 Transformer架构

  • 基于编码器-解码器的架构来处理序列对。
  • 跟使用注意力的seq2seq不同,Transformer是基于纯注意力。

2 注意力

2.1 自注意力机制

使用注意力:需要根据整个序列进行预测,对于同一input,不同的上下文输出不同,序列长度也不同,无法用固定窗口。

Self-attention架构示意图

首先要得到一个能表示输入向量本身及其与序列其他向量的关联性( α \alpha α)的向量, α \alpha α即注意力分数。

请添加图片描述
根据 α \alpha α可以得知,哪些向量和 a a a关联性最高,就可以根据 α \alpha α抽取信息
请添加图片描述
将所有的 a a a q q q拼起来成矩阵,就一次性计算得到了所有的 q q q,同理, k k k v v v也通过矩阵运算一次性得到。
请添加图片描述
注意力分数的计算同样将 q q q k k k的点乘过程拼接成矩阵,然后对每一列做softmax

请添加图片描述
请添加图片描述
总过程:
请添加图片描述

2.2 多头注意力

由于所谓的“相关性”不是一个固定的定义,可以有多种表现形式,所以在用 q q q寻找不同的 k k k时,需要不同的 q q q负责得到不同种类的相关性,同时,由于有多个 q q q,所以也有多个 k k k和多个 v v v,相同类别的 q q q k k k v v v一起计算
请添加图片描述

3 Add&LayerNorm

Transformer在自注意力块的输出部分又加上了输入,然后一起输入Norm层。
Transformer的LayerNorm计算公式:
y = x − E ( x ) V a r ( x ) + ϵ ∗ α + β y=\frac{x-E(x)}{\sqrt{Var(x)+\epsilon}}*\alpha+\beta y=Var(x)+ϵ xE(x)α+β
其中 α \alpha α β \beta β是可学习参数,用来防止输出数据落在后续的激活函数近似线性的范围内,失去激活函数非线性特性。 ϵ \epsilon ϵ用来防止分母为0。
LayerNorm用来稳定神经网络的训练,将输入归一化到均值为0方差为1的分布中,避免训练中产生梯度消失或梯度爆炸。LayerNorm是在最后一个特征维度做归一化(一个单词内部),可以保证稳定性。

4 解码器——交叉注意力

对于Transformer架构解码器中间部分,有来自Encoder的输入,也有来自Decoder的输入,这部分架构叫做交叉注意力。总的来说,交叉注意力的 q q q来自于Decoder, k k k v v v来自于Encoder,也就是用Decoder的 q q q来抽取Encoder信息作为下一步的输入。
交叉注意力计算示意图

面试题篇

1 Transformer/RNN/CNN对比

各个模型对于NLP任务需要抽取的特征的性能:

  • 上下文语义(方向、长度):Transformer > RNN > CNN
  • 序列特征:RNN > Transformer > CNN
  • 速度:CNN > Transformer > RNN

Transformer擅长抽取上下文语义特征的原因:RNN只能对句子进行单向的编码,CNN只能对短句进行编码,而transformer既可以同时编码双向的语义,又可以抽取长距离特征,在NLP特征抽取方面能力更强。

CNN其实是self-attention的特例。单向RNN未考虑右边序列的input且顺序执行,self-attention是并行的。

2 Transformer为什么将特征维度拆分成多个头
  • 从不同角度捕捉信息,防止每个输入对自身注意力分数过高,增强模型表达能力
  • 实现并行计算,提高计算效率
  • 缓解梯度消失:当维度 d d d很大时,点积结果的方差也会很大,做softmax后会变成近似one-hot编码,导致梯度消失。
3 为什么使用乘性注意力而不用加性注意力

在GPU场景下,矩阵乘法的计算效率更高

4 A t t e n t i o n ( Q , K , V ) = s o f t m a x Q K T d k V \mathrm{Attention}(Q,K,V)=\mathrm{softmax}\frac{QK^T}{\sqrt{d_k}}V Attention(Q,K,V)=softmaxdk QKTV为什么要除以 d k \sqrt{d_k} dk

如果两个矩阵都是服从正态分布的,矩阵相乘后由于元素是相乘再相加,那么结果就变成均值为0,方差为 d d d的分布了,方差如果很大,和问题1的原因相同,可能会产生很分散的数值,使得softmax后导致梯度消失,所以要除以标准差恢复到正态分布。
梯度消失举例:对于 z = [ 1000 , 1 , − 1000 ] z=[1000,1,-1000] z=[1000,1,1000],计算softmax:
s o f t m a x ( z ) = [ d 1000 e 1000 + e 1 + e − 1000 , e 1 e 1000 + e 1 + e − 1000 , e − 1000 e 1000 + e 1 + e − 1000 ] ≈ [ 1 , 0 , 0 ] \mathrm{softmax}(z)=[\frac{d^{1000}}{e^{1000}+e^1+e^{-1000}},\frac{e^1}{e^{1000}+e^1+e^{-1000}},\frac{e^{-1000}}{e^{1000}+e^1+e^{-1000}}]\approx[1,0,0] softmax(z)=[e1000+e1+e1000d1000,e1000+e1+e1000e1,e1000+e1+e1000e1000][1,0,0]
对softmax求梯度
s o f t m a x ( z i ) = e z i ∑ k = 1 C e z k , i ∈ { 1 , 2 , . . . , C } \mathrm{softmax}(z_i)=\frac{e^{z_i}}{\sum_{k=1}^{C}e^{z_k}},i\in \{1,2,...,C\} softmax(zi)=k=1Cezkezi,i{1,2,...,C}
∂ s o f t m a x ( z i ) ∂ z j = { s o f t m a x ( z i ) , i f i = j − s o f t m a x ( z i ) ⋅ s o f t m a x ( z j ) , i f i ≠ j \frac{\partial \mathrm{softmax}(z_i)}{\partial z_j}=\begin{cases} \mathrm{softmax}(z_i),\mathrm{if}\ i=j \\-\mathrm{softmax}(z_i)·\mathrm{softmax}(z_j),\mathrm{if}\ i\neq j \end{cases} zjsoftmax(zi)={softmax(zi),if i=jsoftmax(zi)softmax(zj),if i=j
带入数值,对于 s o f t m a x ( z i ) ≈ 1 \mathrm{softmax}(z_i)\approx 1 softmax(zi)1,梯度为0,对于其他位置 j j j s o f t m a x ( z i ) ≈ 0 \mathrm{softmax}(z_i)\approx 0 softmax(zi)0,梯度同样为0,导致梯度消失。

5 为什么源码实现中mask被丢弃的token值置为-10000而不是置0

如果被丢弃的token值为0,做softmax时分子为1而不是趋近于0的值,也能得到概率值,无法满足正常token的概率和为1。

相关文章:

  • Linux命令与脚本:高效系统管理的双刃剑
  • 网络调试的艺术:利用浏览器Network工具优化你的网站
  • 忆联 Docker+MySQL 流控方案:打造安全高效存储底座,释放 AI 极致性能
  • html 照片环 - 图片的动态3D环绕
  • 零样本提示(Zero-shot)与少样本提示(Few-shot):LLM高效调优的核心技术
  • publishOn and subscribeOn operators
  • 算法第48天|单调栈:42. 接雨水、84.柱状图中最大的矩形
  • Java——Spring 非注解开发:IoC/DI 与 Bean 管理实战(含第三方组件整合)
  • 【机器学习深度学习】交互式线性回归 demo
  • day48-硬件学习之GPT定时器、UART及I2C
  • 【开源工具】Windows一键配置防火墙阻止策略(禁止应用联网)| 附完整Python源码
  • 事件循环(Event Loop)机制对比:Node.js vs 浏览器​
  • ethers.js express vue2 定时任务每天凌晨2点监听合约地址数据同步到Mysql整理
  • 【CMake基础入门教程】第六课:构建静态库 / 动态库 与安装规则(install)
  • MySQL至KES迁移最佳实践
  • 用 Spark 优化亿级用户画像计算:Delta Lake 增量更新策略详解
  • vue3 json 转 实体
  • 2.1、STM32 CAN外设简介
  • Vue3 中 Axios 深度整合指南:从基础到高级实践引言总结
  • MR30分布式IO:产线改造省时 70%