算法笔记(四)梯度消失 梯度爆炸

前言

梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。

w1
w2
省略号
w4
X
a1
a2
an-1
an

前向传播:
z1=w1X+b1,a1=σ(z1)z2=w2a1+b2,a2=σ(z2)...zn=wnan−1+bn,an=σ(zn) \begin{aligned} z_1&=w_1X+b_1,a_1=\sigma (z_1)\\ z_2&=w_2a_1+b_2,a_2=\sigma(z_2)\\ ...\\ z_n&=w_na_{n-1+b_n},a_n=\sigma(z_n)\\ \end{aligned} z1z2...zn=w1X+b1,a1=σ(z1)=w2a1+b2,a2=σ(z2)=wnan1+bn,an=σ(zn)
则反向传播:
αlossαw1=αlossαanαanαznαznαan−1αan−1αzn−1αzn−1αan−2αan−2αzn−2...αa1αz1αz1αw1=αlosssαan⋅σ′(zn)wn⋅σ′(zn−1)wn−1⋅...⋅σ′(z1)X \begin{aligned} \frac{\alpha loss}{\alpha w_1} &=\frac{\alpha loss}{\alpha a_n}\frac{\alpha a_n}{\alpha z_n}\frac{\alpha z_n}{\alpha a_{n-1}}\frac{\alpha a_{n-1}}{\alpha z_{n-1}}\frac{\alpha z_{n-1}}{\alpha a_{n-2}}\frac{\alpha a_{n-2}}{\alpha z_{n-2}}...\frac{\alpha a_1}{\alpha z_1}\frac{\alpha z_1}{\alpha w_1}\\ &=\frac{\alpha losss}{\alpha a_n}·\sigma'(z_n)w_n·\sigma'(z_{n-1})w_{n-1}·...·\sigma'(z_1)X \end{aligned} αw1αloss=αanαlossαznαanαan1αznαzn1αan1αan2αzn1αzn2αan2...αz1αa1αw1αz1=αanαlosssσ(zn)wnσ(zn1)wn1...σ(z1)X

  • 梯度消失:与激活函数的导数σ′(x)\sigma^{'}(x)σ(x)有关。
    假如σ\sigmaσ为sigmoid激活函数,而sigmoid的导数范围是[0,0.25],"链式法则"的累乘会导致梯度趋于0.

  • 梯度爆炸:与权重有关,即∣σ′(z)w∣>1|\sigma'(z) w|>1σ(z)w>1
    链式法则还与∣σ′(z)w∣|\sigma'(z) w|σ(z)w有关,如果该值>1,"链式法则"累乘后会导致梯度趋于非常大的值.

梯度消失

与梯度太小有关。表现为只在后层学习,浅层不学习,浅层梯度基本无,权重改变量小,收敛慢,训练速度慢。

原因:

  1. 采用了不适合的激活函数,导致链式法则累乘时被0影响。
  2. 模型在训练的过程中,会不断调整数据分布,有可能接近激活函数饱和区,此时的导数很小,难以调整权重。

解决办法:

  1. 使用BN,将数据分布归一化。
  2. 预训练,微调。
  3. 使用relu等激活函数。
  4. 使用残差结构。
  5. LSTM。
  6. 正则化。

梯度爆炸

与链式法则中的权重有关。可能导致权重NAN。
原因:

  1. 若初始化权重太大,累乘后会爆炸。
  2. 梯度>1。

解决办法:

  1. 注意权重初始化。
  2. 梯度剪裁。
  3. BN。
  4. 预训练,微调。

RNN为何会梯度消失/爆炸?

首先看RNN计算流程,简设3个timestep:
在这里插入图片描述

前向传播:
S1=WxX1+WsS0+b1S_1=W_xX_1+W_sS_0+b1S1=WxX1+WsS0+b1O1=WoS1+b2O_1=W_oS_1+b2O1=WoS1+b2
S2=WxX2+WsS1+b1S_2=W_xX_2+W_sS_1+b1S2=WxX2+WsS1+b1O2=WoS2+b2O_2=W_oS_2+b2O2=WoS2+b2
S3=WxX3+WsS2+b1S_3=W_xX_3+W_sS_2+b1S3=WxX3+WsS2+b1O3=WoS3+b2O_3=W_oS_3+b2O3=WoS3+b2

此刻的损失函数:loss3=12(Y3−O3)2loss_3=\frac{1}{2}(Y_3-O_3)^2loss3=21(Y3O3)2

反向传播:

需要对WoW_oWoWsW_sWsWxW_xWx求导,其中对WsW_sWsWxW_xWx求导是同理的。

(1) δloss3δWo=δloss3δO3δO3δWo\frac{\delta loss_3}{\delta W_o}=\frac{\delta loss_3}{\delta O_3}\frac{\delta O_3}{\delta W_o}δWoδloss3=δO3δloss3δWoδO3

可以看出网络加深对于WoW_oWo无影响。

(2) δloss3δWs=δloss3δO3δO3δS3δS3δWs+δloss3δO3δO3δS3δS3δS2δS2δWs+δloss3δO3δO3δS3δS3δS2δS2δS1δS1δWs\frac{\delta loss_3}{\delta W_s}=\frac{\delta loss_3}{\delta O_3}\frac{\delta O_3}{\delta S_3}\frac{\delta S_3}{\delta W_s}+\frac{\delta loss_3}{\delta O_3}\frac{\delta O_3}{\delta S_3}\frac{\delta S_3}{\delta S_2}\frac{\delta S_2}{\delta W_s}+\frac{\delta loss_3}{\delta O_3}\frac{\delta O_3}{\delta S_3}\frac{\delta S_3}{\delta S_2}\frac{\delta S_2}{\delta S_1}\frac{\delta S_1}{\delta W_s}δWsδloss3=δO3δloss3δS3δO3δWsδS3+δO3δloss3δS3δO3δS2δS3δWsδS2+δO3δloss3δS3δO3δS2δS3δS1δS2δWsδS1

可以简写为:

δlosstδWs=∑k=0tδlosstδOtδOtδSt∏j=k+1t(δSjδSj−1)δSkδWx\frac{\delta loss_t}{\delta W_s}=\sum_{k=0}^t\frac{\delta loss_t}{\delta O_t}\frac{\delta O_t}{\delta S_t}\prod_{j=k+1}^t(\frac{\delta S_j}{\delta S_{j-1}})\frac{\delta S_k}{\delta W_x}δWsδlosst=k=0tδOtδlosstδStδOtj=k+1t(δSj1δSj)δWxδSk

其中连乘的∏j=k+1t(δSjδSj−1)\prod_{j=k+1}^t(\frac{\delta S_j}{\delta S_{j-1}})j=k+1t(δSj1δSj)是导致梯度爆炸和消失的问题所在

RNN梯度与其他网络梯度的区别

  1. MLP/CNN 中不同的层有不同的参数,各是各的梯度;而 RNN 中同样的权重在各个时间步共享,最终的梯度= 各个时间步的梯度的和。
  2. RNN 中总的梯度是不会消失的。即便梯度越传越弱,那也只是远距离的梯度消失,由于近距离的梯度不会消失,所有梯度之和便不会消失。RNN 所谓梯度消失的真正含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系

LSTM如何缓解梯度消失/爆炸?

LSTM介绍

在这里插入图片描述

  1. 遗忘门
    • 可求得:ft=σ(Wf⋅[ht−1,xt]+bf)f_t=\sigma (W_f·[h_{t-1},x_t]+b_f)ft=σ(Wf[ht1,xt]+bf).在这里插入图片描述
  2. 输入门
    可求得:
    • it=σ(Wi⋅[ht−1,xt]+bi)i_t=\sigma (W_i·[h_{t-1},x_t]+b_i)it=σ(Wi[ht1,xt]+bi).
    • C^t=tanh(WC⋅[ht−1,xt]+bC)\hat C_t=tanh (W_C·[h_{t-1},x_t]+b_C)C^t=tanh(WC[ht1,xt]+bC).在这里插入图片描述
    • Ct=ft⋅Ct−1+it⋅C^tC_t=f_t·C_{t-1}+i_t·\hat C_tCt=ftCt1+itC^t
      在这里插入图片描述
  3. 输出门
    可求得:
    • Ot=σ(Wo⋅[ht−1,xt]+bo)O_t=\sigma (W_o·[h_{t-1},x_t]+b_o)Ot=σ(Wo[ht1,xt]+bo).在这里插入图片描述
    • ht=Ot⋅tanh(Ct)h_t=O_t·tanh(C_t)ht=Ottanh(Ct).在这里插入图片描述

LSTM可以解决梯度消失,缓解梯度爆炸

整理可得公式:

  • ft=σ(Wf⋅[ht−1,xt]+bf)f_t=\sigma (W_f·[h_{t-1},x_t]+b_f)ft=σ(Wf[ht1,xt]+bf).
  • it=σ(Wi⋅[ht−1,xt]+bi)i_t=\sigma (W_i·[h_{t-1},x_t]+b_i)it=σ(Wi[ht1,xt]+bi).
  • C^t=tanh(Wc⋅[ht−1,xt]+bc)\hat C_t=tanh (W_c·[h_{t-1},x_t]+b_c)C^t=tanh(Wc[ht1,xt]+bc).
  • Ct=ft⋅Ct−1+it⋅C^tC_t=f_t·C_{t-1}+i_t·\hat C_tCt=ftCt1+itC^t
  • Ot=σ(Wo⋅[ht−1,xt]+bo)O_t=\sigma (W_o·[h_{t-1},x_t]+b_o)Ot=σ(Wo[ht1,xt]+bo).
  • ht=Ot⋅tanh(Ct)h_t=O_t·tanh(C_t)ht=Ottanh(Ct).
  1. LSTM 中梯度的传播有很多条路径,Ct−1→Ct=ft⋅ct−1+it⋅c^tC_{t-1} \rightarrow C_t=f_t·c_{t-1}+i_t·\hat c_tCt1Ct=ftct1+itc^t这条路径上只有逐元素相乘和相加的操作,梯度流最稳定;但是其他路径(例如Ct−1→ht−1→it→ctC_{t-1} \rightarrow h_{t-1} \rightarrow i_t \rightarrow c_tCt1ht1itct)上梯度流与普通 RNN 类似,照样会发生相同的权重矩阵反复连乘。根据上式可以看出CtC_tCt公式与hth_tht, iti_tit, C^t\hat C_tC^t, Ct−1C_{t-1}Ct1有关,则可以得出:
    δC(k)δC(k−1)=δC(k)δf(k)δf(k)δh(k−1)δh(k−1)δC(k−1)[ht公式]+δC(k)δi(k)δi(k)δh(k−1)δh(k−1)δC(k−1)[it公式]+δC(k)δC^(k)δC^(k)δh(k−1)δh(k−1)δC(k−1)[C^t公式]+δC(k)δC(k−1)[Ct公式]=Ct−1(σ′⋅Wf)(ot⋅tanh′)+C^t(σ′⋅Wi)(ot⋅tanh′)+it(tanh′⋅Wc)(ot⋅tanh′)+ft\begin{aligned} \frac{\delta C^{(k)}}{\delta C^{(k-1)}} &=\frac{\delta C^{(k)}}{\delta f^{(k)}}\frac{\delta f^{(k)}}{\delta h^{(k-1)}}\frac{\delta h^{(k-1)}}{\delta C^{(k-1)}}[h_t公式]\\ &+\frac{\delta C^{(k)}}{\delta i^{(k)}}\frac{\delta i^{(k)}}{\delta h^{(k-1)}}\frac{\delta h^{(k-1)}}{\delta C^{(k-1)}}[i_t公式]\\ &+\frac{\delta C^{(k)}}{\delta \hat C^{(k)}}\frac{\delta \hat C^{(k)}}{\delta h^{(k-1)}}\frac{\delta h^{(k-1)}}{\delta C^{(k-1)}}[\hat C_t公式]\\ &+\frac{\delta C^{(k)}}{\delta C^{(k-1)}} [C_t公式]\\ &=C^{t-1}(\sigma'·W_f)(o^t·tanh')\\ &+\hat C^{t}(\sigma'·W_i)(o^t·tanh')\\ &+i^{t}(tanh'·W_c)(o^t·tanh')\\ &+f_t \end{aligned} δC(k1)δC(k)=δf(k)δC(k)δh(k1)δf(k)δC(k1)δh(k1)[ht]+δi(k)δC(k)δh(k1)δi(k)δC(k1)δh(k1)[it]+δC^(k)δC(k)δh(k1)δC^(k)δC(k1)δh(k1)[C^t]+δC(k1)δC(k)[Ct]=Ct1(σWf)(ottanh)+C^t(σWi)(ottanh)+it(tanhWc)(ottanh)+ft
    因此RNN的问题∏j=kt\prod_{j=k}^tj=kt在LSTM中等价于(fk⋅fk+1⋅f2⋅...⋅ft)+other(f^{k}·f^{k+1}·f^{2}·...·f^{t})+other(fkfk+1f2...ft)+other

  2. 正常梯度 + 消失梯度 = 正常梯度,总的远距离梯度就不会消失,因此 LSTM 可以解决梯度消失。

    • 可自主选择[0,1]之间,当遗忘门接近 1时(例如模型初始化时会把 forget bias 设置成较大的正数,让遗忘门饱和),这时候远距离梯度不消失;
    • 当遗忘门接近 0时,但这时模型是故意阻断梯度流的(例如情感分析任务中有一条样本 “A,但是 B”,模型读到“但是”后选择把遗忘门设置成 0,遗忘掉内容 A,这是合理的)。
  3. 正常梯度 + 爆炸梯度 = 爆炸梯度,因此 LSTM 仍然有可能发生梯度爆炸。不过,由于 LSTM 和普通 RNN 相比多经过了很多次激活函数(导数都小于 1),因此 LSTM 发生梯度爆炸的频率要低得多。

参考

https://zhuanlan.zhihu.com/p/25631496
https://www.cnblogs.com/bonelee/p/10475453.html
https://www.zhihu.com/question/34878706/answer/665429718

<think>我们正在推导BPTT(BackpropagationThroughTime)算法中的梯度计算,特别是链式法则的应用。BPTT是循环神经网络(RNN)中用于计算梯度算法,因为RNN在处理序列数据时,参数在时间步之间共享,所以梯度计算需要考虑所有时间步。根据引用[2]和[3],我们有一个RNN的基本结构。设时间步t的输入为$x_t$,隐藏状态为$h_t$,输出为$\hat{y}_t$。隐藏状态的计算公式为:$$h_t=\tanh(Uh_{t-1}+Wx_t)$$其中$U$是隐藏状态到隐藏状态的权重矩阵,$W$是输入到隐藏状态的权重矩阵。输出层计算为:$$z_t=Vh_t$$$$\hat{y}_t=\text{softmax}(z_t)$$损失函数通常为交叉熵损失。对于整个序列,总损失是各时间步损失之和:$$E=\sum_{t=1}^TE_t,\quadE_t=-y_t^T\log(\hat{y}_t)$$我们的目标是计算总损失$E$关于参数$U,W,V$的梯度。由于参数在时间步之间共享,我们需要将每个时间步的梯度累加起来。在BPTT中,我们从最后一个时间步$T$开始反向计算梯度。关键在于,由于$h_t$依赖于$h_{t-1}$,因此$h_t$的梯度不仅来自当前时间步的损失,还来自下一个时间步(即$t+1$)的梯度。这就是链式法则的应用。定义$t$时刻隐藏状态的梯度为:$$\delta_t=\frac{\partialE}{\partialh_t}$$注意,这里$E$是总损失,所以$\delta_t$包含了从$t$时刻开始到序列结束的所有损失对$h_t$的梯度。根据链式法则,$\delta_t$由两部分组成:1.来自当前时间步$t$的输出层(即$Vh_t$)的梯度2.来自下一个时间步$t+1$的隐藏状态$h_{t+1}$的梯度,因为$h_t$是$h_{t+1}$的输入(通过$U$)。因此,我们可以写出:$$\delta_t=\frac{\partialE_t}{\partialh_t}+\frac{\partialE_{t+1:T}}{\partialh_t}$$其中$E_{t+1:T}$表示从$t+1$时刻到$T$时刻的总损失。具体分解:1.当前时间步$t$:损失$E_t$通过$z_t$(即$Vh_t$)对$h_t$的梯度:$\frac{\partialE_t}{\partialh_t}=V^T\frac{\partialE_t}{\partialz_t}$。2.下一时间步$t+1$:由于$h_{t+1}=\tanh(Uh_t+Wx_{t+1})$,所以$h_t$会影响到$h_{t+1}$,进而影响到$E_{t+1:T}$。因此,这部分梯度为:$\frac{\partialh_{t+1}}{\partialh_t}\cdot\frac{\partialE_{t+1:T}}{\partialh_{t+1}}=\frac{\partialh_{t+1}}{\partialh_t}\delta_{t+1}$。所以,$\delta_t$的递推公式为:$$\delta_t=V^T\frac{\partialE_t}{\partialz_t}+\left(\frac{\partialh_{t+1}}{\partialh_t}\right)^T\delta_{t+1}$$注意:这里我们假设时间步$t+1$存在,对于最后一个时间步$T$,没有来自$T+1$的梯度,所以$\delta_T=V^T\frac{\partialE_T}{\partialz_T}$。现在,我们需要计算$\frac{\partialh_{t+1}}{\partialh_t}$。由$h_{t+1}=\tanh(s_{t+1})$,其中$s_{t+1}=Uh_t+Wx_{t+1}$,所以:$$\frac{\partialh_{t+1}}{\partialh_t}=\text{diag}(\tanh&#39;(s_{t+1}))\cdotU$$其中$\tanh&#39;$是$\tanh$函数的导数,$\text{diag}$表示对角矩阵(因为对向量的每个元素导)。因此,递推公式变为:$$\delta_t=V^T\frac{\partialE_t}{\partialz_t}+U^T\left(\text{diag}(\tanh&#39;(s_{t+1}))\delta_{t+1}\right)$$有了$\delta_t$,我们就可以计算参数梯度:1.对于$V$:由于$V$只通过$z_t$影响当前时间步的损失$E_t$,所以梯度为:$$\frac{\partialE}{\partialV}=\sum_{t=1}^T\frac{\partialE_t}{\partialV}=\sum_{t=1}^T\frac{\partialE_t}{\partialz_t}h_t^T$$2.对于$U$:$U$出现在每个时间步的$s_t$中,而$s_t$影响$h_t$,进而影响后续所有时间步。因此,我们需要从$t=1$到$T$累加梯度:$$\frac{\partialE}{\partialU}=\sum_{t=1}^T\frac{\partialE}{\partials_t}\frac{\partials_t}{\partialU}=\sum_{t=1}^T\text{diag}(\tanh&#39;(s_t))\delta_t\cdoth_{t-1}^T$$其中,$\frac{\partials_t}{\partialU}=h_{t-1}^T$(注意这里涉及到矩阵导,实际是外积形式)。3.对于$W$:类似$U$,$W$也出现在每个时间步的$s_t$中:$$\frac{\partialE}{\partialW}=\sum_{t=1}^T\frac{\partialE}{\partials_t}\frac{\partials_t}{\partialW}=\sum_{t=1}^T\text{diag}(\tanh&#39;(s_t))\delta_t\cdotx_t^T$$注意:在计算$U$和$W$的梯度时,我们使用了$\frac{\partialE}{\partials_t}$,而$\frac{\partialE}{\partials_t}=\text{diag}(\tanh&#39;(s_t))\delta_t$,这是因为$h_t=\tanh(s_t)$,所以由链式法则:$$\frac{\partialE}{\partials_t}=\frac{\partialE}{\partialh_t}\frac{\partialh_t}{\partials_t}=\delta_t\cdot\text{diag}(\tanh&#39;(s_t))$$以上推导中,我们使用了链式法则沿着时间轴反向传播,因此称为BPTT。总结BPTT中链式法则的应用:1.定义隐藏状态的梯度$\delta_t$,它从未来($t+1$到$T$)和当前($t$)两个方向传递梯度2.通过递推关系计算$\delta_t$,从而避免重复计算。3.参数梯度通过累加所有时间步的贡献得到。注意:由于RNN存在梯度消失爆炸问题,实际中可能会使用截断BPTT(TruncatedBPTT)或更复杂的结构(如LSTM、GRU)来缓解。参考文献:[^1]:RNNBPTT算法推导[^2]:RNNBPTT算法详细推导[^3]:随时间反向传播算法(BPTT)笔记[^4]:循环神经网络(RNN)原理及BPTT算法</think>### BPTT算法梯度计算中的链式法则推导 在循环神经网络(RNN)的反向传播随时间算法(BPTT)中,链式法则是梯度计算的核心。以下是关键推导步骤(以隐藏状态梯度 $\delta_t$ 为例): #### 1. **定义基本结构** RNN 的前向计算为: $$ \begin{aligned} s_t &= U h_{t-1} + W x_t \\ h_t &= \tanh(s_t) \\ z_t &= V h_t \\ \hat{y}_t &= \text{softmax}(z_t) \end{aligned} $$ 总损失 $E = \sum_{t=1}^T E_t$,其中 $E_t = -y_t^T \log(\hat{y}_t)$[^3][^4]。 #### 2. **隐藏状态梯度 $\delta_t$ 的链式法则** 定义 $t$ 时刻隐藏状态的梯度: $$\delta_t = \frac{\partial E}{\partial h_t}$$ 该梯度受两部分影响: - **当前时刻输出损失**:$E_t$ 通过 $z_t$ 影响 $h_t$ - **下一时刻隐藏状态**:$h_t$ 通过 $s_{t+1}$ 影响后续损失 $E_{t+1:T}$ 因此链式法则展开为: $$\delta_t = \underbrace{\frac{\partial E_t}{\partial h_t}}_{\text{当前输出梯度}} + \underbrace{\frac{\partial E_{t+1:T}}{\partial h_t}}_{\text{未来时间步梯度}}$$ #### 3. **分量分解** **a) 当前输出梯度分量**: $$\frac{\partial E_t}{\partial h_t} = \frac{\partial E_t}{\partial z_t} \frac{\partial z_t}{\partial h_t} = V^T \cdot \frac{\partial E_t}{\partial z_t}$$ 其中 $\frac{\partial E_t}{\partial z_t}$ 是输出层 softmax 的梯度[^3]。 **b) 未来时间步梯度分量**: $$\frac{\partial E_{t+1:T}}{\partial h_t} = \frac{\partial s_{t+1}}{\partial h_t} \frac{\partial h_{t+1}}{\partial s_{t+1}} \frac{\partial E_{t+1:T}}{\partial h_{t+1}} = U^T \cdot \text{diag}(\tanh&#39;(s_{t+1})) \cdot \delta_{t+1}$$ 此处应用三重链式法则: 1. $h_t \to s_{t+1}$:$\partial s_{t+1}/\partial h_t = U$ 2. $s_{t+1} \to h_{t+1}$:$\partial h_{t+1}/\partial s_{t+1} = \tanh&#39;(s_{t+1})$ 3. $h_{t+1} \to E$:$\partial E/\partial h_{t+1} = \delta_{t+1}$[^2][^3] #### 4. **完整梯度递推式** 合并分量得到: $$\delta_t = V^T \frac{\partial E_t}{\partial z_t} + U^T \left( \text{diag}(\tanh&#39;(s_{t+1})) \delta_{t+1} \right)$$ 边界条件:$\delta_T = V^T \frac{\partial E_T}{\partial z_T}$(无未来时间步)[^2][^3]。 #### 5. **参数梯度计算** 通过 $\delta_t$ 计算参数梯度: - **$V$ 的梯度**(无时间依赖): $$\frac{\partial E}{\partial V} = \sum_{t=1}^T \frac{\partial E_t}{\partial z_t} h_t^T$$ - **$U$ 和 $W$ 的梯度**(需沿时间传播): $$\frac{\partial E}{\partial U} = \sum_{t=1}^T \text{diag}(\tanh&#39;(s_t)) \delta_t \cdot h_{t-1}^T$$ $$\frac{\partial E}{\partial W} = \sum_{t=1}^T \text{diag}(\tanh&#39;(s_t)) \delta_t \cdot x_t^T$$ 此处 $\delta_t$ 已包含所有未来时间步的梯度贡献[^2][^4]。 --- ### 关键总结 1. **时间依赖处理**:$\delta_t$ 同时依赖当前输出 ($\partial E_t/\partial z_t$) 和未来状态 ($\delta_{t+1}$) 2. **梯度传播路径**:通过 $\frac{\partial h_{t+1}}{\partial h_t} = U^T \tanh&#39;(s_{t+1})$ 实现时间反向传播 3. **链式法则嵌套**:参数梯度计算需沿 $E \to h_t \to s_t \to \{U, W\}$ 路径展开 此推导解释了RNN中梯度如何通过时间反向传播并累积参数更新量[^1][^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

nooobme

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

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

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

打赏作者

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

抵扣说明:

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

余额充值