这里写自定义目录标题
梯度下降法到底对谁求导?
最近在用pytorch的时候,突然思考了一个问题,对于
y
=
f
(
x
)
y=f(x)
y=f(x)(例如
y
=
W
x
+
b
y=\mathbf{W}x+\mathbf{b}
y=Wx+b),是对谁求导?
仔细想一下,好像我被初中函数
f
(
x
)
=
W
x
+
b
f(x)=\mathbf{W}x+\mathbf{b}
f(x)=Wx+b给误导了。一般我们都认为函数中
x
x
x(对应神经网络的输入)是变量,所以在求斜率(梯度)的时候会对
x
x
x进行求导,但是在反向传播的时候,输入
x
x
x其实是一个定值,目标是求出更好的网络参数
W
W
W和
b
b
b,使得输出达到最佳。也就是说,应该对
W
W
W求导是没有问题的。这也是为什么pytorch中网络参数(例如nn.Linear.weight)的
r
e
q
u
i
r
e
s
_
g
r
a
d
requires\_grad
requires_grad默认为
T
r
u
e
True
True,而Tensor默认为
F
a
l
s
e
False
False了(一般用Tensor初始化输入)。
第一次写博客,想到哪写到哪,记录一下自己的问题。有错误的话希望评论指出