神经网络后面的层被freeze住,会影响前面的层的梯度吗?

博客探讨了神经网络后面的层被freeze住是否会影响前面层的梯度。以简单神经网络为例,分w2.requires_grad为True和False两种情况讨论,得出无论w2是否被freeze,计算w1梯度时只需w2参数值,后面层冻结不影响前面层梯度的结论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

神经网络后面的层被freeze住,会影响前面的层的梯度吗?

答案是不会。

 
 

假设一个最简单的神经网络,它只有一个输入xxx,一个隐藏层神经元hhh,和一个输出层神经元yyy,均方差损失LLL,真实标签ttt

h=w1⋅xy=w2⋅hL=12(y−t)2 \begin{gathered} h = w_1 \cdot x \\ y = w_2 \cdot h \\ L=\frac{1}{2}(y-t)^2 \end{gathered} h=w1xy=w2hL=21(yt)2

以下分w2w_2w2是否被freeze住,即w2w_2w2.requires_grad是否为True来讨论。

情况1:w2w_2w2.requires_grad为True

这种情况下,LLLw1w_1w1的梯度为:
∂L∂w1=∂L∂y⋅∂y∂h⋅∂h∂w1 \frac{\partial L}{\partial w 1}=\frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial h} \cdot \frac{\partial h}{\partial w 1} w1L=yLhyw1h

∂L∂y=∂∂y(12(y−t)2)=y−t \frac{\partial L}{\partial y}=\frac{\partial}{\partial y}\left(\frac{1}{2}(y-t)^2\right)=y-t yL=y(21(yt)2)=yt

∂y∂h=∂∂h(w2⋅h)=w2 \frac{\partial y}{\partial h}=\frac{\partial}{\partial h}\left(w_2 \cdot h\right)=w_2 hy=h(w2h)=w2

∂h∂w1=∂∂w1(w1⋅x)=x \frac{\partial h}{\partial w_1}=\frac{\partial}{\partial w_1}\left(w_1 \cdot x\right)=x w1h=w1(w1x)=x

因此:
∂L∂w1=∂L∂y⋅∂y∂h⋅∂h∂w1=(y−t)⋅w2⋅x \frac{\partial L}{\partial w 1}=\frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial h} \cdot \frac{\partial h}{\partial w 1} = (y-t) \cdot w_2 \cdot x w1L=yLhyw1h=(yt)w2x

情况2:w2w_2w2.requires_grad为False

这种情况下,w2w_2w2被视为一个常数,此时LLLw1w_1w1的梯度仍然为:
∂L∂w1=∂L∂y⋅∂y∂h⋅∂h∂w1=(y−t)⋅w2⋅x \frac{\partial L}{\partial w 1}=\frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial h} \cdot \frac{\partial h}{\partial w 1} = (y-t) \cdot w_2 \cdot x w1L=yLhyw1h=(yt)w2x

因为无论w2w_2w2是否被freeze住,∂y∂h=∂∂h(w2⋅h)=w2\frac{\partial y}{\partial h}=\frac{\partial}{\partial h}\left(w_2 \cdot h\right)=w_2hy=h(w2h)=w2这一点是不会变的。

在计算w1w_1w1的梯度时,我们并不需要w2w_2w2的梯度,而是只需要w2w_2w2这个参数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值