线性回归与神经网络中的后向传播计算
线性回归与神经网络中的后向传播计算
本文主要参考花书, 中文翻译deeplearningbook-chinese
线性回归的求导
线性回归的定义
线性回归是将向量
x
∈
R
n
x \in \Bbb{R}^n
x∈Rn 作为输入,预测标量
y
∈
R
y \in \Bbb{R}
y∈R 作为输出的线性函数,表示为:
y
^
=
w
⊤
x
\hat{y}=w^{\top}x
y^=w⊤x
y
^
=
∑
i
=
1
n
w
i
x
i
\hat{y}=\sum_{i=1}^nw_ix_i
y^=i=1∑nwixi
其中
y
^
\hat{y}
y^为模型预测的
y
y
y,
w
∈
R
w \in \Bbb{R}
w∈R是参数向量,可以把
w
w
w理解为
x
x
x中各元素对
y
^
\hat{y}
y^影响的占比,也称权重。
线性回归的优化方法
大多数深度学习算法都涉及某种形式的优化。优化指的是改变
x
x
x 以最小化或最
大化某个函数
f
(
x
)
f(x)
f(x) 的任务。我们通常以最小化
f
(
x
)
f(x)
f(x) 指代大多数最优化问题。最大
化可经由最小化算法最小化
−
f
(
x
)
−f(x)
−f(x) 来实现。
我们把要最小化或最大化的函数称为 目标函数(objective function)或 准则
(criterion)。当我们对其进行最小化时,我们也把它称为 代价函数(cost function)、
损失函数(loss function)或 误差函数(error function)。
假设我们有一个函数
y
=
f
(
x
)
y = f(x)
y=f(x),其中
x
x
x 和
y
y
y 是实数。这个函数的 导数(derivative)记为
f
′
(
x
)
f'(x)
f′(x) 或
d
y
d
x
\frac {dy}{dx}
dxdy。导数
f
′
(
x
)
f'(x)
f′(x) 代表
f
(
x
)
f(x)
f(x) 在点
x
x
x 处的斜率。换句话说,它表明如何缩放输入的小变化才能在输出获得相应的变化:
f
(
x
+
ϵ
)
≈
f
(
x
)
+
ϵ
f
′
(
x
)
f(x + ϵ) \approx f(x) + \epsilon f'(x)
f(x+ϵ)≈f(x)+ϵf′(x)。
因此导数对于最小化一个函数很有用,因为它告诉我们如何更改
x
x
x 来略微地改善
y
y
y。例如,我们知道对于足够小的
ϵ
\epsilon
ϵ 来说,
f
(
x
−
ϵ
s
i
g
n
(
f
′
(
x
)
)
)
f(x − \epsilon sign(f'(x)))
f(x−ϵsign(f′(x))) 是比
f
(
x
)
f(x)
f(x) 小的。因此我们可以将
x
x
x 往导数的反方向移动一小步来减小
f
(
x
)
f(x)
f(x)。这种技术被称为 梯度下降(gradient descent)(Cauchy, 1847)。
需要注意的是,在这里的
f
(
x
)
f(x)
f(x) 和
x
x
x 分别是指的损失函数和损失函数的输入项
y
^
\hat{y}
y^ ,而使用链式求导求解线性回归时,最终要得到的是损失函数对权重
w
w
w 的偏导。
线性回归的求导
有了梯度下降法后线性回归的优化就变的简单了,只需要求解目标函数
f
(
x
)
f(x)
f(x) 对
x
x
x 的偏导
∇
x
f
(
x
)
\nabla xf(x)
∇xf(x)并使
x
x
x 减去
ϵ
∇
x
f
(
x
)
\epsilon \nabla xf(x)
ϵ∇xf(x) 即可,以常见的损失函数MSE为例:
f
(
x
)
=
(
A
x
−
b
)
2
f(x)=(Ax-b)^2
f(x)=(Ax−b)2
∇
x
f
(
x
)
=
A
⊤
(
A
x
−
b
)
=
A
⊤
A
x
−
A
⊤
b
\nabla xf(x) = A^\top (Ax − b) = A^\top Ax − A^\top b
∇xf(x)=A⊤(Ax−b)=A⊤Ax−A⊤b
x
←
x
−
ϵ
∇
x
f
(
x
)
x\leftarrow x - \epsilon \nabla xf(x)
x←x−ϵ∇xf(x)
神经网络中的后向传播计算
微积分中的链式法则
链式法则是用于求一个复合函数的导数, 对于一个普通函数
y
=
f
(
x
)
=
W
y=f(x)=W
y=f(x)=W, 求导过程
TODO