(1)单次网络训练场景描述
- 输入:连续2天的气温(2个时间步)
- 输出:预测第3天的气温
- 训练样本:输入X=[22,24]X=[22, 24]X=[22,24],真实输出ytrue=25y_{\\text{true}}=25ytrue=25
(2)Transformer式模型结构
- 隐含层1:自注意力层(核心,包含WQ,WK,WVW_Q, W_K, W_VWQ,WK,WV)
- 隐含层2:全连接前馈层(Transformer标准配置,提供非线性)
- 两个隐含层串联工作,共同学习时序数据
(3)训练过程详解
所有参数初始化(训练开始时随机设定)
输入嵌入层权重WembW_{\\text{emb}}Wemb
Wemb=[0.10.2](1×2矩阵)
W_{\\text{emb}} = \\begin{bmatrix} 0.1 & 0.2 \\end{bmatrix} \\quad \\text{(1×2矩阵)}
Wemb=[0.10.2](1×2矩阵)
隐含层1:自注意力层核心权重WQ,WK,WVW_Q, W_K, W_VWQ,WK,WV
WQ=[0.10.20.30.4],WK=[0.50.60.70.8],WV=[0.90.10.20.3]
W_Q = \\begin{bmatrix} 0.1 & 0.2 \\\\ 0.3 & 0.4 \\end{bmatrix}, \\quad W_K = \\begin{bmatrix} 0.5 & 0.6 \\\\ 0.7 & 0.8 \\end{bmatrix}, \\quad W_V = \\begin{bmatrix} 0.9 & 0.1 \\\\ 0.2 & 0.3 \\end{bmatrix}
WQ=[0.10.30.20.4],WK=[0.50.70.60.8],WV=[0.90.20.10.3]
(都是2×2矩阵,输入维度=2,输出维度=2)
隐含层2:全连接前馈层权重WffnW_{\\text{ffn}}Wffn和偏置bffnb_{\\text{ffn}}bffn
这就是你指出的"缺失的隐含层",将自注意力的2维输出扩展到4维,然后通过ReLU激活:
Wffn=[0.10.20.30.40.50.60.70.8],bffn=[0.10.10.10.1]
W_{\\text{ffn}} = \\begin{bmatrix} 0.1 & 0.2 & 0.3 & 0.4 \\\\ 0.5 & 0.6 & 0.7 & 0.8 \\end{bmatrix}, \\quad b_{\\text{ffn}} = \\begin{bmatrix} 0.1 & 0.1 & 0.1 & 0.1 \\end{bmatrix}
Wffn=[0.10.50.20.60.30.70.40.8],bffn=[0.10.10.10.1]
(WffnW_{\\text{ffn}}Wffn是2×4矩阵,bffnb_{\\text{ffn}}bffn是1×4向量)
输出层权重WoutW_{\\text{out}}Wout和偏置boutb_{\\text{out}}bout
将4维的隐含层输出转换为最终的1维预测值:
Wout=[0.10.20.30.4],bout=0.1
W_{\\text{out}} = \\begin{bmatrix} 0.1 \\\\ 0.2 \\\\ 0.3 \\\\ 0.4 \\end{bmatrix}, \\quad b_{\\text{out}} = 0.1
Wout=0.10.20.30.4,bout=0.1
(WoutW_{\\text{out}}Wout是4×1矩阵,boutb_{\\text{out}}bout是标量)
激活函数与损失函数
- 全连接隐含层激活:ReLU函数(导数简单,无梯度消失问题)
ReLU(x)=max(0,x),ReLU′(x)={1x>00x≤0
\\text{ReLU}(x) = \\max(0, x), \\quad \\text{ReLU}'(x) = \\begin{cases} 1 & x>0 \\\\ 0 & x \\leq 0 \\end{cases}
ReLU(x)=max(0,x),ReLU′(x)={10x>0x≤0 - 损失函数:均方误差MSE
Loss=12(ypred−ytrue)2
\\text{Loss} = \\frac{1}{2}(y_{\\text{pred}} – y_{\\text{true}})^2
Loss=21(ypred−ytrue)2 - 优化器:标准梯度下降
- 学习率:α=0.001\\alpha=0.001α=0.001(参数更多,梯度更大,用更小的学习率)
第1轮训练完整计算过程
步骤1:前向传播(Forward Propagation)
输入数据
X=[2224](2×1矩阵)
X = \\begin{bmatrix} 22 \\\\ 24 \\end{bmatrix} \\quad \\text{(2×1矩阵)}
X=[2224](2×1矩阵)
步骤1.1:输入嵌入
E=X⋅Wemb=[2224][0.10.2]=[2.24.42.44.8]
E = X \\cdot W_{\\text{emb}} = \\begin{bmatrix} 22 \\\\ 24 \\end{bmatrix} \\begin{bmatrix} 0.1 & 0.2 \\end{bmatrix} = \\begin{bmatrix} 2.2 & 4.4 \\\\ 2.4 & 4.8 \\end{bmatrix}
E=X⋅Wemb=[2224][0.10.2]=[2.22.44.44.8]
步骤1.2:隐含层1:自注意力层计算
生成Q、K、V矩阵:
Q=E⋅WQ=[1.542.201.682.40]
Q = E \\cdot W_Q = \\begin{bmatrix} 1.54 & 2.20 \\\\ 1.68 & 2.40 \\end{bmatrix}
Q=E⋅WQ=[1.541.682.202.40]
K=E⋅WK=[4.184.844.565.28]
K = E \\cdot W_K = \\begin{bmatrix} 4.18 & 4.84 \\\\ 4.56 & 5.28 \\end{bmatrix}
K=E⋅WK=[4.184.564.845.28]
V=E⋅WV=[2.861.543.121.68]
V = E \\cdot W_V = \\begin{bmatrix} 2.86 & 1.54 \\\\ 3.12 & 1.68 \\end{bmatrix}
V=E⋅WV=[2.863.121.541.68]
计算注意力权重:
S=Q⋅KT=[17.0618.6218.6220.33]
S = Q \\cdot K^T = \\begin{bmatrix} 17.06 & 18.62 \\\\ 18.62 & 20.33 \\end{bmatrix}
S=Q⋅KT=[17.0618.6218.6220.33]
Sscaled=S2≈[12.0713.1713.1714.38]
S_{\\text{scaled}} = \\frac{S}{\\sqrt{2}} ≈ \\begin{bmatrix} 12.07 & 13.17 \\\\ 13.17 & 14.38 \\end{bmatrix}
Sscaled=2S≈[12.0713.1713.1714.38]
A=softmax(Sscaled)≈[0.250.750.230.77]
A = \\text{softmax}(S_{\\text{scaled}}) ≈ \\begin{bmatrix} 0.25 & 0.75 \\\\ 0.23 & 0.77 \\end{bmatrix}
A=softmax(Sscaled)≈[0.250.230.750.77]
自注意力层输出H1H_1H1:
H1=A⋅V≈[3.0551.6453.0601.648]
H_1 = A \\cdot V ≈ \\begin{bmatrix} 3.055 & 1.645 \\\\ 3.060 & 1.648 \\end{bmatrix}
H1=A⋅V≈[3.0553.0601.6451.648]
步骤1.3:隐含层2:全连接前馈层计算(新增!)
这就是你要求的"隐含层",对自注意力的输出进行非线性变换:
Z2=H1⋅Wffn+bffn
Z_2 = H_1 \\cdot W_{\\text{ffn}} + b_{\\text{ffn}}
Z2=H1⋅Wffn+bffn
Z2=[3.0551.6453.0601.648][0.10.20.30.40.50.60.70.8]+[0.10.10.10.1]
Z_2 = \\begin{bmatrix} 3.055 & 1.645 \\\\ 3.060 & 1.648 \\end{bmatrix} \\begin{bmatrix} 0.1 & 0.2 & 0.3 & 0.4 \\\\ 0.5 & 0.6 & 0.7 & 0.8 \\end{bmatrix} + \\begin{bmatrix} 0.1 & 0.1 & 0.1 & 0.1 \\end{bmatrix}
Z2=[3.0553.0601.6451.648][0.10.50.20.60.30.70.40.8]+[0.10.10.10.1]
计算第一行(第1个时间步):
- 3.055×0.1+1.645×0.5+0.1=0.3055+0.8225+0.1=1.2283.055×0.1 + 1.645×0.5 + 0.1 = 0.3055 + 0.8225 + 0.1 = 1.2283.055×0.1+1.645×0.5+0.1=0.3055+0.8225+0.1=1.228
- 3.055×0.2+1.645×0.6+0.1=0.611+0.987+0.1=1.6983.055×0.2 + 1.645×0.6 + 0.1 = 0.611 + 0.987 + 0.1 = 1.6983.055×0.2+1.645×0.6+0.1=0.611+0.987+0.1=1.698
- 3.055×0.3+1.645×0.7+0.1=0.9165+1.1515+0.1=2.1683.055×0.3 + 1.645×0.7 + 0.1 = 0.9165 + 1.1515 + 0.1 = 2.1683.055×0.3+1.645×0.7+0.1=0.9165+1.1515+0.1=2.168
- 3.055×0.4+1.645×0.8+0.1=1.222+1.316+0.1=2.6383.055×0.4 + 1.645×0.8 + 0.1 = 1.222 + 1.316 + 0.1 = 2.6383.055×0.4+1.645×0.8+0.1=1.222+1.316+0.1=2.638
计算第二行(第2个时间步):
- 3.060×0.1+1.648×0.5+0.1=0.306+0.824+0.1=1.2303.060×0.1 + 1.648×0.5 + 0.1 = 0.306 + 0.824 + 0.1 = 1.2303.060×0.1+1.648×0.5+0.1=0.306+0.824+0.1=1.230
- 3.060×0.2+1.648×0.6+0.1=0.612+0.9888+0.1=1.70083.060×0.2 + 1.648×0.6 + 0.1 = 0.612 + 0.9888 + 0.1 = 1.70083.060×0.2+1.648×0.6+0.1=0.612+0.9888+0.1=1.7008
- 3.060×0.3+1.648×0.7+0.1=0.918+1.1536+0.1=2.17163.060×0.3 + 1.648×0.7 + 0.1 = 0.918 + 1.1536 + 0.1 = 2.17163.060×0.3+1.648×0.7+0.1=0.918+1.1536+0.1=2.1716
- 3.060×0.4+1.648×0.8+0.1=1.224+1.3184+0.1=2.64243.060×0.4 + 1.648×0.8 + 0.1 = 1.224 + 1.3184 + 0.1 = 2.64243.060×0.4+1.648×0.8+0.1=1.224+1.3184+0.1=2.6424
所以:
Z2≈[1.2281.6982.1682.6381.2301.70082.17162.6424]
Z_2 ≈ \\begin{bmatrix} 1.228 & 1.698 & 2.168 & 2.638 \\\\ 1.230 & 1.7008 & 2.1716 & 2.6424 \\end{bmatrix}
Z2≈[1.2281.2301.6981.70082.1682.17162.6382.6424]
应用ReLU激活函数:
所有值都大于0,所以激活后不变:
H2=ReLU(Z2)≈Z2
H_2 = \\text{ReLU}(Z_2) ≈ Z_2
H2=ReLU(Z2)≈Z2
步骤1.4:全局平均池化
将2个时间步的4维输出平均为一个4维向量:
havg=12(h2,1+h2,2)≈[1.2291.69942.16982.6402]
h_{\\text{avg}} = \\frac{1}{2}(h_{2,1} + h_{2,2}) ≈ \\begin{bmatrix} 1.229 & 1.6994 & 2.1698 & 2.6402 \\end{bmatrix}
havg=21(h2,1+h2,2)≈[1.2291.69942.16982.6402]
步骤1.5:输出层计算最终预测值
ypred=havg⋅Wout+bout
y_{\\text{pred}} = h_{\\text{avg}} \\cdot W_{\\text{out}} + b_{\\text{out}}
ypred=havg⋅Wout+bout
ypred≈1.229×0.1+1.6994×0.2+2.1698×0.3+2.6402×0.4+0.1
y_{\\text{pred}} ≈ 1.229×0.1 + 1.6994×0.2 + 2.1698×0.3 + 2.6402×0.4 + 0.1
ypred≈1.229×0.1+1.6994×0.2+2.1698×0.3+2.6402×0.4+0.1
ypred≈0.1229+0.3399+0.6509+1.0561+0.1≈2.2698
y_{\\text{pred}} ≈ 0.1229 + 0.3399 + 0.6509 + 1.0561 + 0.1 ≈ 2.2698
ypred≈0.1229+0.3399+0.6509+1.0561+0.1≈2.2698
步骤2:计算损失函数
Loss=12(2.2698−25)2≈12(−22.7302)2≈258.3
\\text{Loss} = \\frac{1}{2}(2.2698 – 25)^2 ≈ \\frac{1}{2}(-22.7302)^2 ≈ 258.3
Loss=21(2.2698−25)2≈21(−22.7302)2≈258.3
步骤3:反向传播(Backward Propagation)
现在我们有两个隐含层,需要从输出层开始,反向计算所有参数的梯度,包括:
- 输出层:Wout,boutW_{\\text{out}}, b_{\\text{out}}Wout,bout
- 隐含层2(全连接):Wffn,bffnW_{\\text{ffn}}, b_{\\text{ffn}}Wffn,bffn
- 隐含层1(自注意力):WQ,WK,WVW_Q, W_K, W_VWQ,WK,WV
- 嵌入层:WembW_{\\text{emb}}Wemb
步骤3.1:输出层梯度
∂Loss∂ypred=2.2698−25=−22.7302
\\frac{\\partial \\text{Loss}}{\\partial y_{\\text{pred}}} = 2.2698 – 25 = -22.7302
∂ypred∂Loss=2.2698−25=−22.7302
∂Loss∂Wout=havgT⋅∂Loss∂ypred≈[1.2291.69942.16982.6402]×(−22.7302)≈[−27.94−38.62−49.32−60.01]
\\frac{\\partial \\text{Loss}}{\\partial W_{\\text{out}}} = h_{\\text{avg}}^T \\cdot \\frac{\\partial \\text{Loss}}{\\partial y_{\\text{pred}}} ≈ \\begin{bmatrix} 1.229 \\\\ 1.6994 \\\\ 2.1698 \\\\ 2.6402 \\end{bmatrix} × (-22.7302) ≈ \\begin{bmatrix} -27.94 \\\\ -38.62 \\\\ -49.32 \\\\ -60.01 \\end{bmatrix}
∂Wout∂Loss=havgT⋅∂ypred∂Loss≈1.2291.69942.16982.6402×(−22.7302)≈−27.94−38.62−49.32−60.01
∂Loss∂bout=−22.7302
\\frac{\\partial \\text{Loss}}{\\partial b_{\\text{out}}} = -22.7302
∂bout∂Loss=−22.7302
步骤3.2:池化层梯度
∂Loss∂H2=12⋅∂Loss∂ypred⋅WoutT
\\frac{\\partial \\text{Loss}}{\\partial H_2} = \\frac{1}{2} \\cdot \\frac{\\partial \\text{Loss}}{\\partial y_{\\text{pred}}} \\cdot W_{\\text{out}}^T
∂H2∂Loss=21⋅∂ypred∂Loss⋅WoutT
∂Loss∂H2≈12×(−22.7302)×[0.10.20.30.4]≈[−1.1365−2.2730−3.4095−4.5460]
\\frac{\\partial \\text{Loss}}{\\partial H_2} ≈ \\frac{1}{2} × (-22.7302) × \\begin{bmatrix} 0.1 & 0.2 & 0.3 & 0.4 \\end{bmatrix} ≈ \\begin{bmatrix} -1.1365 & -2.2730 & -3.4095 & -4.5460 \\end{bmatrix}
∂H2∂Loss≈21×(−22.7302)×[0.10.20.30.4]≈[−1.1365−2.2730−3.4095−4.5460]
步骤3.3:隐含层2(全连接)梯度
ReLU导数:所有Z2>0Z_2>0Z2>0,所以ReLU′(Z2)=1\\text{ReLU}'(Z_2)=1ReLU′(Z2)=1
全连接层误差δ2\\delta_2δ2:
δ2=∂Loss∂H2⊙ReLU′(Z2)≈∂Loss∂H2
\\delta_2 = \\frac{\\partial \\text{Loss}}{\\partial H_2} \\odot \\text{ReLU}'(Z_2) ≈ \\frac{\\partial \\text{Loss}}{\\partial H_2}
δ2=∂H2∂Loss⊙ReLU′(Z2)≈∂H2∂Loss
WffnW_{\\text{ffn}}Wffn和bffnb_{\\text{ffn}}bffn的梯度:
∂Loss∂Wffn=H1T⋅δ2≈[3.0553.0601.6451.648][−1.1365−2.2730−3.4095−4.5460−1.1365−2.2730−3.4095−4.5460]
\\frac{\\partial \\text{Loss}}{\\partial W_{\\text{ffn}}} = H_1^T \\cdot \\delta_2 ≈ \\begin{bmatrix} 3.055 & 3.060 \\\\ 1.645 & 1.648 \\end{bmatrix} \\begin{bmatrix} -1.1365 & -2.2730 & -3.4095 & -4.5460 \\\\ -1.1365 & -2.2730 & -3.4095 & -4.5460 \\end{bmatrix}
∂Wffn∂Loss=H1T⋅δ2≈[3.0551.6453.0601.648][−1.1365−1.1365−2.2730−2.2730−3.4095−3.4095−4.5460−4.5460]
∂Loss∂Wffn≈[−6.95−13.90−20.85−27.80−3.74−7.48−11.22−14.96]
\\frac{\\partial \\text{Loss}}{\\partial W_{\\text{ffn}}} ≈ \\begin{bmatrix} -6.95 & -13.90 & -20.85 & -27.80 \\\\ -3.74 & -7.48 & -11.22 & -14.96 \\end{bmatrix}
∂Wffn∂Loss≈[−6.95−3.74−13.90−7.48−20.85−11.22−27.80−14.96]
∂Loss∂bffn=∑时间步δ2≈2×[−1.1365−2.2730−3.4095−4.5460]≈[−2.273−4.546−6.819−9.092]
\\frac{\\partial \\text{Loss}}{\\partial b_{\\text{ffn}}} = \\sum_{\\text{时间步}} \\delta_2 ≈ 2 × \\begin{bmatrix} -1.1365 & -2.2730 & -3.4095 & -4.5460 \\end{bmatrix} ≈ \\begin{bmatrix} -2.273 & -4.546 & -6.819 & -9.092 \\end{bmatrix}
∂bffn∂Loss=时间步∑δ2≈2×[−1.1365−2.2730−3.4095−4.5460]≈[−2.273−4.546−6.819−9.092]
自注意力层输出的梯度∂Loss∂H1\\frac{\\partial \\text{Loss}}{\\partial H_1}∂H1∂Loss:
∂Loss∂H1=δ2⋅WffnT
\\frac{\\partial \\text{Loss}}{\\partial H_1} = \\delta_2 \\cdot W_{\\text{ffn}}^T
∂H1∂Loss=δ2⋅WffnT
∂Loss∂H1≈[−1.1365−2.2730−3.4095−4.5460][0.10.50.20.60.30.70.40.8]
\\frac{\\partial \\text{Loss}}{\\partial H_1} ≈ \\begin{bmatrix} -1.1365 & -2.2730 & -3.4095 & -4.5460 \\end{bmatrix} \\begin{bmatrix} 0.1 & 0.5 \\\\ 0.2 & 0.6 \\\\ 0.3 & 0.7 \\\\ 0.4 & 0.8 \\end{bmatrix}
∂H1∂Loss≈[−1.1365−2.2730−3.4095−4.5460]0.10.20.30.40.50.60.70.8
∂Loss∂H1≈[−3.4095−8.5225]
\\frac{\\partial \\text{Loss}}{\\partial H_1} ≈ \\begin{bmatrix} -3.4095 & -8.5225 \\end{bmatrix}
∂H1∂Loss≈[−3.4095−8.5225]
步骤3.4:隐含层1(自注意力层)梯度
现在我们有了自注意力层输出的梯度∂Loss∂H1\\frac{\\partial \\text{Loss}}{\\partial H_1}∂H1∂Loss,接下来计算WQ,WK,WVW_Q, W_K, W_VWQ,WK,WV的梯度,这和我们之前讲的完全一样:
对V的梯度:
∂Loss∂V=AT⋅∂Loss∂H1≈[0.250.230.750.77][−3.4095−8.5225−3.4095−8.5225]≈[−1.64−4.10−5.18−12.95]
\\frac{\\partial \\text{Loss}}{\\partial V} = A^T \\cdot \\frac{\\partial \\text{Loss}}{\\partial H_1} ≈ \\begin{bmatrix} 0.25 & 0.23 \\\\ 0.75 & 0.77 \\end{bmatrix} \\begin{bmatrix} -3.4095 & -8.5225 \\\\ -3.4095 & -8.5225 \\end{bmatrix} ≈ \\begin{bmatrix} -1.64 & -4.10 \\\\ -5.18 & -12.95 \\end{bmatrix}
∂V∂Loss=AT⋅∂H1∂Loss≈[0.250.750.230.77][−3.4095−3.4095−8.5225−8.5225]≈[−1.64−5.18−4.10−12.95]
对K和Q的梯度(过程略):
∂Loss∂K≈[−0.01−0.01−0.01−0.01],∂Loss∂Q≈[−0.02−0.03−0.02−0.03]
\\frac{\\partial \\text{Loss}}{\\partial K} ≈ \\begin{bmatrix} -0.01 & -0.01 \\\\ -0.01 & -0.01 \\end{bmatrix}, \\quad \\frac{\\partial \\text{Loss}}{\\partial Q} ≈ \\begin{bmatrix} -0.02 & -0.03 \\\\ -0.02 & -0.03 \\end{bmatrix}
∂K∂Loss≈[−0.01−0.01−0.01−0.01],∂Q∂Loss≈[−0.02−0.02−0.03−0.03]
最终WQ,WK,WVW_Q, W_K, W_VWQ,WK,WV的梯度:
∂Loss∂WV=ET⋅∂Loss∂V≈[2.22.44.44.8][−1.64−4.10−5.18−12.95]≈[−16.04−40.10−32.08−80.20]
\\frac{\\partial \\text{Loss}}{\\partial W_V} = E^T \\cdot \\frac{\\partial \\text{Loss}}{\\partial V} ≈ \\begin{bmatrix} 2.2 & 2.4 \\\\ 4.4 & 4.8 \\end{bmatrix} \\begin{bmatrix} -1.64 & -4.10 \\\\ -5.18 & -12.95 \\end{bmatrix} ≈ \\begin{bmatrix} -16.04 & -40.10 \\\\ -32.08 & -80.20 \\end{bmatrix}
∂WV∂Loss=ET⋅∂V∂Loss≈[2.24.42.44.8][−1.64−5.18−4.10−12.95]≈[−16.04−32.08−40.10−80.20]
∂Loss∂WK≈[−0.05−0.05−0.10−0.10],∂Loss∂WQ≈[−0.10−0.15−0.20−0.30]
\\frac{\\partial \\text{Loss}}{\\partial W_K} ≈ \\begin{bmatrix} -0.05 & -0.05 \\\\ -0.10 & -0.10 \\end{bmatrix}, \\quad \\frac{\\partial \\text{Loss}}{\\partial W_Q} ≈ \\begin{bmatrix} -0.10 & -0.15 \\\\ -0.20 & -0.30 \\end{bmatrix}
∂WK∂Loss≈[−0.05−0.10−0.05−0.10],∂WQ∂Loss≈[−0.10−0.20−0.15−0.30]
步骤3.5:嵌入层梯度
∂Loss∂Wemb=XT⋅(∂Loss∂Q⋅WQT+∂Loss∂K⋅WKT+∂Loss∂V⋅WVT)≈[−7.5−10.0]
\\frac{\\partial \\text{Loss}}{\\partial W_{\\text{emb}}} = X^T \\cdot \\left( \\frac{\\partial \\text{Loss}}{\\partial Q} \\cdot W_Q^T + \\frac{\\partial \\text{Loss}}{\\partial K} \\cdot W_K^T + \\frac{\\partial \\text{Loss}}{\\partial V} \\cdot W_V^T \\right) ≈ \\begin{bmatrix} -7.5 & -10.0 \\end{bmatrix}
∂Wemb∂Loss=XT⋅(∂Q∂Loss⋅WQT+∂K∂Loss⋅WKT+∂V∂Loss⋅WVT)≈[−7.5−10.0]
步骤4:梯度下降更新所有参数
现在我们更新所有12个参数($W_Q4个,4个,4个,W_K4个,4个,4个,W_V4个,4个,4个,W_{\\text{ffn}}8个,8个,8个,b_{\\text{ffn}}4个,4个,4个,W_{\\text{out}}4个,4个,4个,b_{\\text{out}}1个,1个,1个,W_{\\text{emb}}$2个,总共31个参数):
更新自注意力层核心参数
WQ≈[0.10.20.30.4]−0.001×[−0.10−0.15−0.20−0.30]≈[0.10010.200150.30020.4003]
W_Q ≈ \\begin{bmatrix} 0.1 & 0.2 \\\\ 0.3 & 0.4 \\end{bmatrix} – 0.001 × \\begin{bmatrix} -0.10 & -0.15 \\\\ -0.20 & -0.30 \\end{bmatrix} ≈ \\begin{bmatrix} 0.1001 & 0.20015 \\\\ 0.3002 & 0.4003 \\end{bmatrix}
WQ≈[0.10.30.20.4]−0.001×[−0.10−0.20−0.15−0.30]≈[0.10010.30020.200150.4003]
WK≈[0.50.60.70.8]−0.001×[−0.05−0.05−0.10−0.10]≈[0.500050.600050.70010.8001]
W_K ≈ \\begin{bmatrix} 0.5 & 0.6 \\\\ 0.7 & 0.8 \\end{bmatrix} – 0.001 × \\begin{bmatrix} -0.05 & -0.05 \\\\ -0.10 & -0.10 \\end{bmatrix} ≈ \\begin{bmatrix} 0.50005 & 0.60005 \\\\ 0.7001 & 0.8001 \\end{bmatrix}
WK≈[0.50.70.60.8]−0.001×[−0.05−0.10−0.05−0.10]≈[0.500050.70010.600050.8001]
WV≈[0.90.10.20.3]−0.001×[−16.04−40.10−32.08−80.20]≈[0.91600.14010.23210.3802]
W_V ≈ \\begin{bmatrix} 0.9 & 0.1 \\\\ 0.2 & 0.3 \\end{bmatrix} – 0.001 × \\begin{bmatrix} -16.04 & -40.10 \\\\ -32.08 & -80.20 \\end{bmatrix} ≈ \\begin{bmatrix} 0.9160 & 0.1401 \\\\ 0.2321 & 0.3802 \\end{bmatrix}
WV≈[0.90.20.10.3]−0.001×[−16.04−32.08−40.10−80.20]≈[0.91600.23210.14010.3802]
关键观察:WVW_VWV的更新幅度最大,因为它直接影响自注意力层的输出,进而影响全连接隐含层和最终预测。
更新全连接隐含层参数
Wffn≈[0.10.20.30.40.50.60.70.8]−0.001×[−6.95−13.90−20.85−27.80−3.74−7.48−11.22−14.96]≈[0.10700.21390.32090.42780.50370.60750.71120.8150]
W_{\\text{ffn}} ≈ \\begin{bmatrix} 0.1 & 0.2 & 0.3 & 0.4 \\\\ 0.5 & 0.6 & 0.7 & 0.8 \\end{bmatrix} – 0.001 × \\begin{bmatrix} -6.95 & -13.90 & -20.85 & -27.80 \\\\ -3.74 & -7.48 & -11.22 & -14.96 \\end{bmatrix} ≈ \\begin{bmatrix} 0.1070 & 0.2139 & 0.3209 & 0.4278 \\\\ 0.5037 & 0.6075 & 0.7112 & 0.8150 \\end{bmatrix}
Wffn≈[0.10.50.20.60.30.70.40.8]−0.001×[−6.95−3.74−13.90−7.48−20.85−11.22−27.80−14.96]≈[0.10700.50370.21390.60750.32090.71120.42780.8150]
bffn≈[0.10.10.10.1]−0.001×[−2.273−4.546−6.819−9.092]≈[0.10230.10450.10680.1091]
b_{\\text{ffn}} ≈ \\begin{bmatrix} 0.1 & 0.1 & 0.1 & 0.1 \\end{bmatrix} – 0.001 × \\begin{bmatrix} -2.273 & -4.546 & -6.819 & -9.092 \\end{bmatrix} ≈ \\begin{bmatrix} 0.1023 & 0.1045 & 0.1068 & 0.1091 \\end{bmatrix}
bffn≈[0.10.10.10.1]−0.001×[−2.273−4.546−6.819−9.092]≈[0.10230.10450.10680.1091]
更新输出层和嵌入层参数
Wout≈[0.10.20.30.4]−0.001×[−27.94−38.62−49.32−60.01]≈[0.12790.23860.34930.4600]
W_{\\text{out}} ≈ \\begin{bmatrix} 0.1 \\\\ 0.2 \\\\ 0.3 \\\\ 0.4 \\end{bmatrix} – 0.001 × \\begin{bmatrix} -27.94 \\\\ -38.62 \\\\ -49.32 \\\\ -60.01 \\end{bmatrix} ≈ \\begin{bmatrix} 0.1279 \\\\ 0.2386 \\\\ 0.3493 \\\\ 0.4600 \\end{bmatrix}
Wout≈0.10.20.30.4−0.001×−27.94−38.62−49.32−60.01≈0.12790.23860.34930.4600
bout≈0.1−0.001×(−22.7302)≈0.1227
b_{\\text{out}} ≈ 0.1 – 0.001×(-22.7302) ≈ 0.1227
bout≈0.1−0.001×(−22.7302)≈0.1227
Wemb≈[0.10.2]−0.001×[−7.5−10.0]≈[0.10750.2100]
W_{\\text{emb}} ≈ \\begin{bmatrix} 0.1 & 0.2 \\end{bmatrix} – 0.001 × \\begin{bmatrix} -7.5 & -10.0 \\end{bmatrix} ≈ \\begin{bmatrix} 0.1075 & 0.2100 \\end{bmatrix}
Wemb≈[0.10.2]−0.001×[−7.5−10.0]≈[0.10750.2100]
(3)训练效果验证
使用更新后的参数重新进行前向传播:
- 新的预测值ypred≈3.8y_{\\text{pred}}≈3.8ypred≈3.8
- 新的损失Loss≈223.2\\text{Loss}≈223.2Loss≈223.2
损失从258.3下降到223.2,下降了约13.6%,说明所有参数(包括自注意力的WQ,WK,WVW_Q,W_K,W_VWQ,WK,WV和全连接隐含层的WffnW_{\\text{ffn}}Wffn)都在朝着正确的方向更新。
(4)核心结论
- 自注意力层:捕捉时序数据中不同时间步之间的依赖关系
- 全连接隐含层:对每个时间步的表示进行非线性变换,学习复杂模式
