欢迎光临
我们一直在努力

Transformer 时序预测完整训练过程:W_Q、W_K、W_V 手动计算全流程

(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>0x0
    • 损失函数:均方误差MSE
      Loss=12(ypred−ytrue)2
      \\text{Loss} = \\frac{1}{2}(y_{\\text{pred}} – y_{\\text{true}})^2
      Loss=21(ypredytrue)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=XWemb=[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=EWQ=[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=EWK=[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=EWV=[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=QKT=[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=AV[3.0553.0601.6451.648]

    步骤1.3:隐含层2:全连接前馈层计算(新增!)

    这就是你要求的"隐含层",对自注意力的输出进行非线性变换:
    Z2=H1⋅Wffn+bffn
    Z_2 = H_1 \\cdot W_{\\text{ffn}} + b_{\\text{ffn}}
    Z2=H1Wffn+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=havgWout+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
    ypred1.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
    ypred0.1229+0.3399+0.6509+1.0561+0.12.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.269825)221(22.7302)2258.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
    ypredLoss=2.269825=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}
    WoutLoss=havgTypredLoss1.2291.69942.16982.6402×(22.7302)27.9438.6249.3260.01

    ∂Loss∂bout=−22.7302
    \\frac{\\partial \\text{Loss}}{\\partial b_{\\text{out}}} = -22.7302
    boutLoss=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
    H2Loss=21ypredLossWoutT

    ∂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}
    H2Loss21×(22.7302)×[0.10.20.30.4][1.13652.27303.40954.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=H2LossReLU(Z2)H2Loss

    WffnW_{\\text{ffn}}Wffnbffnb_{\\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}
    WffnLoss=H1Tδ2[3.0551.6453.0601.648][1.13651.13652.27302.27303.40953.40954.54604.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}
    WffnLoss[6.953.7413.907.4820.8511.2227.8014.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}
    bffnLoss=时间步δ22×[1.13652.27303.40954.5460][2.2734.5466.8199.092]

    自注意力层输出的梯度∂Loss∂H1\\frac{\\partial \\text{Loss}}{\\partial H_1}H1Loss
    ∂Loss∂H1=δ2⋅WffnT
    \\frac{\\partial \\text{Loss}}{\\partial H_1} = \\delta_2 \\cdot W_{\\text{ffn}}^T
    H1Loss=δ2WffnT

    ∂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}
    H1Loss[1.13652.27303.40954.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}
    H1Loss[3.40958.5225]

    步骤3.4:隐含层1(自注意力层)梯度

    现在我们有了自注意力层输出的梯度∂Loss∂H1\\frac{\\partial \\text{Loss}}{\\partial H_1}H1Loss,接下来计算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}
    VLoss=ATH1Loss[0.250.750.230.77][3.40953.40958.52258.5225][1.645.184.1012.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}
    KLoss[0.010.010.010.01],QLoss[0.020.020.030.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}
    WVLoss=ETVLoss[2.24.42.44.8][1.645.184.1012.95][16.0432.0840.1080.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}
    WKLoss[0.050.100.050.10],WQLoss[0.100.200.150.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}
    WembLoss=XT(QLossWQT+KLossWKT+VLossWVT)[7.510.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.100.200.150.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.050.100.050.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.0432.0840.1080.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.953.7413.907.4820.8511.2227.8014.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.2734.5466.8199.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}
    Wout0.10.20.30.40.001×27.9438.6249.3260.010.12790.23860.34930.4600

    bout≈0.1−0.001×(−22.7302)≈0.1227
    b_{\\text{out}} ≈ 0.1 – 0.001×(-22.7302) ≈ 0.1227
    bout0.10.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.510.0][0.10750.2100]

    (3)训练效果验证

    使用更新后的参数重新进行前向传播:

    • 新的预测值ypred≈3.8y_{\\text{pred}}≈3.8ypred3.8
    • 新的损失Loss≈223.2\\text{Loss}≈223.2Loss223.2

    损失从258.3下降到223.2,下降了约13.6%,说明所有参数(包括自注意力的WQ,WK,WVW_Q,W_K,W_VWQ,WK,WV和全连接隐含层的WffnW_{\\text{ffn}}Wffn)都在朝着正确的方向更新。

    (4)核心结论

  • 标准Transformer结构:自注意力层 + 全连接前馈层,两者缺一不可
  • 分工明确:
    • 自注意力层:捕捉时序数据中不同时间步之间的依赖关系
    • 全连接隐含层:对每个时间步的表示进行非线性变换,学习复杂模式
  • 训练本质:所有参数(WQ,WK,WV,Wffn,WoutW_Q,W_K,W_V,W_{\\text{ffn}},W_{\\text{out}}WQ,WK,WV,Wffn,Wout等)一起通过反向传播更新,共同最小化损失函数
  • 梯度流动:损失的梯度从输出层流向全连接隐含层,再流向自注意力层,最后流向嵌入层
  • 赞(0)
    未经允许不得转载:171主机测评 » Transformer 时序预测完整训练过程:W_Q、W_K、W_V 手动计算全流程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址