1. \textbf{1. } 1. 注意力机制
1️⃣生物学中的注意力提示
类型 含义 基础 非自主提示( Bottom-up \text{Bottom-up} Bottom-up) 自然而然地注意到环境中显眼的物体 物体的突出性 自主性提示( Top-down \text{Top-down} Top-down) 由自我意识主关推动的对于某事物的注意 自主性提示 2️⃣注意力机制的要素
Query/Key/Value \text{Query/Key/Value} Query/Key/Value架构
Item \textbf{Item} Item 相当于 含义 Value \text{Value} Value 感官输入 实际输入的信息(感官) Key \text{Key} Key 非自主提示 每个输入感官都有的非自住性提示 ( Value ↔ 一一对应 Key ) (\text{Value}\xleftrightarrow{一一对应}\text{Key}) (Value一一对应 Key) Query \text{Query} Query 自主性提示 引导注意力机制聚焦于最相关的感官输入 注意力汇聚函数: f ( x ) = ∑ i = 1 n α ( x , x i ) × y i \displaystyle{}f(x)\text{=}\sum_{i=1}^n \alpha(x,x_i) \text{×} y_i f(x)=i=1∑nα(x,xi)×yi
汇聚示例 输出 注意力评分函数 平均汇聚 f ( x ) = ∑ i = 1 n 1 n y i f(x)\text{=}\displaystyle{} \sum_{i=1}^n \cfrac{1}{n}y_i f(x)=i=1∑nn1yi N/A \text{N/A} N/A 非参数汇聚 f ( x ) = ∑ i = 1 n Softmax ( − 1 2 ( x − x i ) 2 ) y i f(x)\text{=}\displaystyle{}\sum_{i=1}^n \text{Softmax}\left(-\cfrac{1}{2}\left(x-x_i\right)^2 \right) y_i f(x)=i=1∑nSoftmax(−21(x−xi)2)yi − 1 2 ( x − x i ) 2 -\cfrac{1}{2}\left(x-x_i\right)^2 −21(x−xi)2 参数汇聚 f ( x ) = ∑ i = 1 n Softmax ( − 1 2 ( ( x − x i ) w ) 2 ) y i f(x)\text{=}\displaystyle{}\sum_{i=1}^n \text{Softmax}\left(-\cfrac{1}{2}\left(\left(x-x_i\right) w\right)^2\right) y_i f(x)=i=1∑nSoftmax(−21((x−xi)w)2)yi − 1 2 ( ( x − x i ) w ) 2 -\cfrac{1}{2}\left(\left(x-x_i\right) w\right)^2 −21((x−xi)w)2
- x / k i x/k_i x/ki接近 →Softmax \text{→}\text{Softmax} →Softmax(权)值变大 → v i \text{→}v_i →vi对结果贡献变大(获得更多注意力)
3️⃣注意力评分函数:对于 q ∈ R q / k i ∈ R k / v i ∈ R v \mathbf{q} \text{∈} \mathbb{R}^q/\mathbf{k}_i \text{∈} \mathbb{R}^k/\mathbf{v}_i \text{∈} \mathbb{R}^v q∈Rq/ki∈Rk/vi∈Rv有
- 数学模型:
- 评分函数: a ( q , k i ) ∈ R a(\mathbf{q}, \mathbf{k}_i)\text{∈} \mathbb{R} a(q,ki)∈R
- 权值函数: α ( q , k i ) = Softmax ( a ( q , k i ) ) = e a ( q , k i ) ∑ j = 1 n e a ( q , k i ) ∈ R \displaystyle{}\alpha\left(\mathbf{q}, \mathbf{k}_i\right)\text{=}\operatorname{Softmax}\left(a\left(\mathbf{q}, \mathbf{k}_i\right)\right)\text{=}\cfrac{e^{a(\mathbf{q}, \mathbf{k}_i)}}{\displaystyle{}\sum_{j\text{=}1}^n e^{a(\mathbf{q}, \mathbf{k}_i)}} \text{∈} \mathbb{R} α(q,ki)=Softmax(a(q,ki))=j=1∑nea(q,ki)ea(q,ki)∈R,其中 ∑ i = 1 n α ( q , k i ) = 1 \displaystyle{}\sum_{i=1}^{n}\alpha\left(\mathbf{q}, \mathbf{k}_i\right)\text{=}1 i=1∑nα(q,ki)=1
- 汇聚函数: f ( q , ( k 1 , v 1 ) , … , ( k n , v n ) ) = ∑ i = 1 n α ( q , k i ) v i ∈ R v \displaystyle{}f\left(\mathbf{q},\left(\mathbf{k}_1, \mathbf{v}_1\right), \ldots,\left(\mathbf{k}_n, \mathbf{v}_n\right)\right)\text{=}\sum_{i\text{=}1}^n \alpha\left(\mathbf{q}, \mathbf{k}_i\right) \mathbf{v}_i \text{∈} \mathbb{R}^v f(q,(k1,v1),…,(kn,vn))=i=1∑nα(q,ki)vi∈Rv
- 关于 Softmax \text{Softmax} Softmax:
- 本质:本质上得到的是概率分布 → 与 v i 相乘 v i \xrightarrow{与\textbf{v}_i相乘}\textbf{v}_i 与vi相乘 vi的加权平均
- 掩码:由于 Softmax(-∞)=0 \text{Softmax(-∞)=0} Softmax(-∞)=0,故可 Softmax ( A ) → A → 部分位设为-∞ 忽略不必要元素 ( 如无用词元 ) A ′ Softmax ( A ′ ) \text{Softmax}(\textbf{A})\xrightarrow{\large\textbf{A}\xrightarrow[部分位设为\text{-∞}]{忽略不必要元素(如无用词元)}\textbf{A}^{\prime}}\text{Softmax}(\textbf{A}^{\prime}) Softmax(A)A忽略不必要元素(如无用词元) 部分位设为-∞A′ Softmax(A′)
- 缩放点积:可高效计算的评分函数
- 单查询:对 q ∈ R d \mathbf{q}\text{∈}\mathbb{R}^d q∈Rd和 k ∈ R d \mathbf{k}\text{∈}\mathbb{R}^d k∈Rd(注意二者维度要相同),有 a ( q , k ) = q ⊤ k d ∈ R a(\mathbf{q}, \mathbf{k})\text{=}\cfrac{\mathbf{q}^{\top} \mathbf{k} }{\sqrt{d}}\text{∈} \mathbb{R} a(q,k)=d q⊤k∈R
- 批查询:对 n n n个查询 Q ∈ R n × d \mathbf{Q}\text{∈}\mathbb{R}^{n\text{×}d} Q∈Rn×d和 m m m个键值对 { K ∈ R m × d V ∈ R m × v → \begin{cases}\mathbf{K}\text{∈}\mathbb{R}^{m\text{×}d}\\\\\mathbf{V}\text{∈}\mathbb{R}^{m\text{×}v}\end{cases}\text{→} ⎩ ⎨ ⎧K∈Rm×dV∈Rm×v→有 Softmax ( Q K ⊤ d ) V ∈ R n × v \text{Softmax}\left(\cfrac{\mathbf{Q K}^{\top}}{\sqrt{d}}\right) \mathbf{V} \text{∈} \mathbb{R}^{n \text{×} v} Softmax(d QK⊤)V∈Rn×v
2. Transformer \textbf{2. Transformer} 2. Transformer注意力: 编码 → 输入 \xrightarrow{输入} 输入 自注意力 → 组合 \xrightarrow{组合} 组合 多头
1️⃣位置编码
- 流程:对含 n n n个词元的 d d d维嵌入 X ∈ R n × d → 位置嵌入矩阵 P ∈ R n × d X + P \textbf{X}\text{∈}\mathbb{R}^{n\text{×}d}\xrightarrow[位置嵌入矩阵]{\textbf{P}\text{∈}\mathbb{R}^{n\text{×}d}}\textbf{X}\text{+}\textbf{P} X∈Rn×dP∈Rn×d 位置嵌入矩阵X+P,且 { p i , 2 j = sin ( i 1000 0 2 j / d ) p i , 2 j + 1 = cos ( i 1000 0 2 j / d ) \begin{cases}p_{i, 2 j}\text{=}\sin \left(\cfrac{i}{10000^{2 j / d}}\right)\\\\p_{i, 2 j+1}\text{=}\cos \left(\cfrac{i}{10000^{2 j / d}}\right)\end{cases} ⎩ ⎨ ⎧pi,2j=sin(100002j/di)pi,2j+1=cos(100002j/di)
- 意义:捕获绝对位置信息 + \text{+} +学习相对位置信息
2️⃣自注意力机制
自注意力结构: QKV \textbf{QKV} QKV皆由词嵌入得到
- 词嵌入:输入序列 X ∈ R n × d x → ( 位置 ) 嵌入 A ∈ R n × d a \textbf{X}\text{∈}\mathbb{R}^{n\text{×}d_x}\xrightarrow{(位置)嵌入}\textbf{A}\text{∈}\mathbb{R}^{n\text{×}d_a} X∈Rn×dx(位置)嵌入 A∈Rn×da
- 线性变换: [ Q ∈ R n × d q K ∈ R n × d k V ∈ R n × d v ] = [ A W q A W k A W v ] 其中 { W q ∈ R d a × d q W k ∈ R d a × d k W v ∈ R d a × d v →皆为可学习参数 \begin{bmatrix} \textbf{Q}\text{∈}\mathbb{R}^{n\text{×}d_q}\\\textbf{K}\text{∈}\mathbb{R}^{n\text{×}d_k}\\\textbf{V}\text{∈}\mathbb{R}^{n\text{×}d_v} \end{bmatrix}\text{=}\begin{bmatrix} \textbf{A}\textbf{W}^{q}\\\textbf{A}\textbf{W}^{k}\\\textbf{A}\textbf{W}^{v} \end{bmatrix}其中\begin{cases}\textbf{W}^{q}\text{∈}\mathbb{R}^{d_a\text{×}d_q}\\\textbf{W}^{k}\text{∈}\mathbb{R}^{d_a\text{×}d_k}\\\textbf{W}^{v}\text{∈}\mathbb{R}^{d_a\text{×}d_v}\end{cases}\text{→}皆为可学习参数 Q∈Rn×dqK∈Rn×dkV∈Rn×dv = AWqAWkAWv 其中⎩ ⎨ ⎧Wq∈Rda×dqWk∈Rda×dkWv∈Rda×dv→皆为可学习参数
- 计算注意力:注意力分布 A =Softmax ( Q K ⊤ d k ) ∈ R n × n → 加权求和 与 V 线性变换 \mathcal{A}\text{=}\text{Softmax}\left(\cfrac{\mathbf{Q K}^{\top}}{\sqrt{d_k}}\right)\text{∈} \mathbb{R}^{n \text{×} n}\xrightarrow[加权求和]{与\textbf{V}线性变换} A=Softmax(dk QK⊤)∈Rn×n与V线性变换 加权求和输出 A ^ = A V ∈ R n × d v \hat{\mathcal{A}}\text{=}\mathcal{A}\mathbf{V} \text{∈} \mathbb{R}^{n \text{×} d_v} A^=AV∈Rn×dv
比较: CNN/RNN/ \text{CNN/RNN/} CNN/RNN/自注意力机制
模型 结构 备注 CNN \text{CNN} CNN 一次只能感知到一个卷积核大小范围(此处为 3 \text{3} 3) RNN \text{RNN} RNN 对于输入序列是顺序重复(串行)处理,无法并行 自注意力 每个词可感知到其它任何词 → \text{→} →可并行处理 3️⃣多头注意力机制
- 结构:多个注意力头连结然后线性变换
- 头汇聚:输出 ← 全连接层 W o [ h 1 ⋮ h h ] ← 线性变换 ( 连结 ) 可学习参数 W o ∈ R p o h i = f ( W i ( q ) q , W i ( k ) k , W i ( v ) v ) ∈ R p v \xleftarrow{全连接层}\mathbf{W}_o\left[\begin{array}{c} \mathbf{h}_1 \\ \vdots \\ \mathbf{h}_h \end{array}\right]\xleftarrow[线性变换(连结)]{可学习参数\mathbf{W}_o\text{∈}\mathbb{R}^{p_o}}\mathbf{h}_i\text{=}f\left(\mathbf{W}_i^{(q)} \mathbf{q}, \mathbf{W}_i^{(k)} \mathbf{k}, \mathbf{W}_i^{(v)} \mathbf{v}\right)\text{∈}\mathbb{R}^{p_v} 全连接层 Wo h1⋮hh 可学习参数Wo∈Rpo 线性变换(连结)hi=f(Wi(q)q,Wi(k)k,Wi(v)v)∈Rpv
- 注意头: h i = f ( W i ( q ) q , W i ( k ) k , W i ( v ) v ) ∈ R p v ← 汇聚函数 f { W i ( q ) q ← 全连接层 可学习参数 W i ( q ) ∈ R p q × d q q W i ( k ) k ← 全连接层 可学习参数 W i ( k ) ∈ R p k × d k k W i ( v ) v ← 全连接层 可学习参数 W i ( v ) ∈ R p v × d v v \mathbf{h}_i\text{=}f\left(\mathbf{W}_i^{(q)} \mathbf{q}, \mathbf{W}_i^{(k)} \mathbf{k}, \mathbf{W}_i^{(v)} \mathbf{v}\right)\text{∈}\mathbb{R}^{p_v}\xleftarrow{汇聚函数f}\begin{cases} \mathbf{W}_i^{(q)}\mathbf{q}\xleftarrow[全连接层]{可学习参数\mathbf{W}_i^{(q)}\text{∈}\mathbb{R}^{p_q\text{×}d_q}}\mathbf{q}\\\\ \mathbf{W}_i^{(k)}\mathbf{k}\xleftarrow[全连接层]{可学习参数\mathbf{W}_i^{(k)}\text{∈}\mathbb{R}^{p_k\text{×}d_k}}\mathbf{k}\\\\ \mathbf{W}_i^{(v)}\mathbf{v}\xleftarrow[全连接层]{可学习参数\mathbf{W}_i^{(v)}\text{∈}\mathbb{R}^{p_v\text{×}d_v}}\mathbf{v} \end{cases} hi=f(Wi(q)q,Wi(k)k,Wi(v)v)∈Rpv汇聚函数f ⎩ ⎨ ⎧Wi(q)q可学习参数Wi(q)∈Rpq×dq 全连接层qWi(k)k可学习参数Wi(k)∈Rpk×dk 全连接层kWi(v)v可学习参数Wi(v)∈Rpv×dv 全连接层v
- 意义:每个头关注输入的不同部分 → \text{→} →表示比简单加权平均值更复杂的函数
3. Transformer \textbf{3. }\textbf{Transformer} 3. Transformer架构
标签:mathbb,Transformer,right,mathbf,text,textbf,概述,Softmax,注意力 From: https://blog.csdn.net/qq_64091900/article/details/1440357501️⃣编码器与解码器
- 编码器:
- 层结构: n × n\text{×} n×(多头自注意力层 + \text{+} +前馈网络层)
- 残差连接: Multihead( X ) / Forward( X ) + X → \text{Multihead(}\textbf{X})/\text{Forward(}\textbf{X})\text{+}\textbf{X}\text{→} Multihead(X)/Forward(X)+X→输入 Add-Norm \text{Add-Norm} Add-Norm,目的在于防止梯度消失
- 解码器:
- 层结构: n × n\text{×} n×(多头自注意力层 + \text{+} +编码解码注意力中间层 + \text{+} +前馈网络层)
- 中间层: Q \textbf{Q} Q来自解码层, KV \textbf{KV} KV来自编码层
- 掩码:使得解码器只能考虑所在位置之前的位置,从而实现了自回归
2️⃣其它结构
- 基于位置的前馈网络:就是一个两层的 MLP \text{MLP} MLP,将词元位置的隐藏表示 → 转化 \xrightarrow{转化} 转化 同维度新向量
- 加法和规范化组件:完成残差连接与层归一化(均值 =0 \text{=0} =0/方差 =1 \text{=1} =1)