1.标量导数
y | a(常数) | x n {{\rm{x}}^n} xn | exp(x) | log(x) | sin(x) |
---|---|---|---|---|---|
d y d x {{dy} \over {dx}} dxdy | 0 | n x n {{\rm{{n}}{x}}^n} nxn | exp(x) | 1 x {1 \over x} x1 | cos x \cos x cosx |
2.向量导数
y | a | x | Ax | x T {{{x}}^T} xTA | au | Au | u+v |
---|---|---|---|---|---|---|---|
∂ x ∂ y {{\partial x}\over{{\partial y}}} ∂y∂x | 0 | I | Ax | x T {{x}}^T xT | a ∂ u ∂ y a{{{{\partial u}} \over {{\partial y}}}} a∂y∂u | A ∂ u ∂ y A{{{{\partial u}} \over {{\partial y}}}} A∂y∂u | ∂ u ∂ x + ∂ v ∂ x {{\partial u} \over {\partial x}} + {{\partial v} \over {\partial x}} ∂x∂u+∂x∂v |
3.线性回归
3.1平方损失
假设y是真实值, y ^ \hat{y} y^是预估值,平方损失: ℓ ( y , y ^ ) = 1 2 ( y − y ^ ) 2 \ell(y, \hat{y})=\frac{1}{2}(y-\hat{y})^2 ℓ(y,y^)=21(y−y^)2
3.2训练数据
假设有n个样本,记 X = [ x 1 , x 2 , . . . , x n ] T X = [x_1,x_2,...,x_n]^T X=[x1,x2,...,xn]T, Y = [ y 1 , y 2 , . . . , y 3 ] T Y =[y_1,y_2,...,y_3]^T Y=[y1,y2,...,y3]T
3.3参数学习
训练损失: ℓ ( X , y , w , b ) = 1 2 n ∑ i = 1 n ( y i − < x i , w > − b ) 2 = 1 2 n ∣ ∣ y − X w − b ∣ ∣ 2 \ell(X,y,w,b)=\frac{1}{2n}\sum\limits_{i = 1}^n(y_{i}-<x_{i},w>-b) ^2 =\frac{1}{2n}{||y-Xw-b||}^2 ℓ(X,y,w,b)=2n1i=1∑n(yi−<xi,w>−b)2=2n1∣∣y−Xw−b∣∣2
最小化损失来学习参数w*,b*:
w ∗ , b ∗ = arg min w , b ℓ ( X , y , w , b ) \mathbf{w}^*, \mathbf{b}^*=\arg \min _{\mathbf{w}, b} \ell(\mathbf{X}, \mathbf{y}, \mathbf{w}, b) w∗,b∗=argw,bminℓ(X,y,w,b)
3.4显示解
将偏差加入权重
ℓ
(
X
,
y
,
w
)
=
1
2
n
∣
∣
y
−
w
X
∣
∣
2
=
∂
ℓ
(
X
,
y
,
w
)
∂
w
=
1
n
(
y
−
X
w
)
T
X
\ell(\mathbf{X},y,w) = \frac{1}{2n}||y-w\mathbf{X}||^2 = {{\partial {\ell(\mathbf{X},y,w)} \over \partial{\mathbf{w}} }= \frac{1}{n}(y-\mathbf{X}w)^TX}
ℓ(X,y,w)=2n1∣∣y−wX∣∣2=∂w∂ℓ(X,y,w)=n1(y−Xw)TX
由于是凸函数,所以最优解满足在导数等于0的点,即:
∂ ℓ ( X , y , b ) ∂ w = 0 {\partial {\ell (\mathbf{X},y,b)} \over \partial \mathbf{w}}=0 ∂w∂ℓ(X,y,b)=0
⇒ 1 n ( y − X w ) T X = 0 \Rightarrow {\frac{1}{n} (y-\mathbf{X}{w})^T X}=0 ⇒n1(y−Xw)TX=0
⇒ w ∗ = ( X T X ) − 1 X T y \Rightarrow w^* = {(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^{T}y} ⇒w∗=(XTX)−1XTy
3.5 梯度下降
挑选一个初始值
w
0
w_0
w0,重复迭代参数
t
=
1
,
2
,
3
,
.
.
.
t=1,2,3,...
t=1,2,3,...,使得w取得一个最小值:
W
t
=
W
t
−
1
−
η
∂
ℓ
∂
W
t
−
1
W_t = W_{t-1} - \eta{\partial{\ell}\over{\partial{W_{t-1}}}}
Wt=Wt−1−η∂Wt−1∂ℓ
- 沿梯度方向将增大损失函数值,因此是 − ∂ ℓ ∂ W t − 1 - {\partial{\ell}\over{\partial{W_{t-1}}}} −∂Wt−1∂ℓ
- η \eta η:学习率,超参数,控制梯度下降步长
那么对于超参数——学习率,如何恰当的选择学习率呢?
3.5.1 小批量梯度下降
在实际训练过程中,很少直接使用梯度下降,而是使用梯度下降的变体,例如:小批量随机下降,因为每一次下降,损失函数都是对整个样本求导后的平均损失。因此,求一次梯度,就需要重新算计算一次整个样本集,而在一个深度神经网络模型可能需要数分钟甚至数个小时,因此,一次梯度的计算花销是巨大的。
那么我们能不能随机采样b个样本 i 1 , i 2 , i 3 , . . . i_1,i_2,i_3,... i1,i2,i3,...来求近似损失呢?
答案是能的,这就是小批量随机梯度下降:
1
b
∑
i
∈
I
b
ℓ
(
X
i
,
y
i
,
w
)
\frac{1}{b}{\sum\limits_{i\in{I_b}}\ell({\mathbf{X}}_i,{\mathbf{y}}_i,\mathbf{w})}
b1i∈Ib∑ℓ(Xi,yi,w)
其中,
- b是批量大小,是相对于学习率,另一个重要的超参数
那么如何选择批量的大小呢?
- 不能太小:每次计算量太小,不适合GPU并行计算
- 不能太大:太大内存消耗增加或者浪费计算(当所有样本都相同时)
4.总结
- 梯度下降是通过不断沿着梯度的相反方向接近损失函数最小的点,从而不断的更新参数来求解
- 小批量随机梯度下降算法是深度学习默认的求解算法
- 两个重要的超参数是学习率 η \eta η和批量大小b