何为梯度?
- 梯度:在数学上,梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
- 梯度是使得该函数取得最大值的方向,即梯度的方向是函数值增大的方向。
梯度下降的三种方法
那么梯度下降指的就是梯度的反方向。
- 假设目标函数为均方差损失函数
- 计算预测值和真实值之间的欧式距离。预测值和真实值越接近,两者的均方差就越小
- 均方差函数常用于线性回归(linear regression),即函数拟合(function fitting)。
公式为:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
y
(
i
)
−
h
θ
(
x
(
i
)
)
)
2
J(\theta)=\frac{1}{2m}\sum_{i=1}^m(y^{(i)}-h_\theta(x^{(i)}))^2
J(θ)=2m1i=1∑m(y(i)−hθ(x(i)))2
优
化
目
标
是
使
得
损
失
最
小
优化目标是使得损失最小
优化目标是使得损失最小
对
θ
\theta
θ求导如下:
∂
J
(
θ
)
∂
θ
i
=
−
1
m
∑
i
=
1
m
(
y
i
−
h
θ
(
x
i
)
)
x
j
i
\frac{\partial J(\theta)}{\partial\theta_i}=-\frac{1}{m}\sum^{m}_{i=1}(y^{i}-h_{\theta}(x^{i}))x^i_j
∂θi∂J(θ)=−m1i=1∑m(yi−hθ(xi))xji
批量梯度下降法
θ
j
′
=
θ
j
−
∂
J
(
θ
)
∂
θ
i
=
θ
j
+
1
m
∑
i
=
1
m
(
y
i
−
h
θ
(
x
i
)
)
x
j
i
\theta'_j=\theta_j-\frac{\partial J(\theta)}{\partial\theta_i}=\theta_j+\frac{1}{m}\sum^{m}_{i=1}(y^{i}-h_{\theta}(x^{i}))x^i_j
θj′=θj−∂θi∂J(θ)=θj+m1i=1∑m(yi−hθ(xi))xji
批量梯度下降容易得到最优解,但是由于每次都是考虑所有的样本,收敛速度很慢
小批量梯度下降法
θ
j
′
=
θ
j
+
α
1
10
∑
k
=
i
i
+
9
(
h
θ
(
(
x
k
)
−
y
k
)
)
x
j
k
\theta'_j=\theta_j+\alpha\frac{1}{10}\sum_{k=i}^{i+9}(h_{\theta}((x^k)-y^k))x^k_j
θj′=θj+α101k=i∑i+9(hθ((xk)−yk))xjk
这里的批次大小为10,一般取36,64,128,512…,最常见的为32,64
α
\alpha
α是学习率,也就是每次优化更行的步长。
每次更新选择一小部分数据计算,小批量随机梯度下降兼顾了迭代速度和收敛方向,也是最常用的。
随机梯度下降法
随机梯度下降每次只使用一个样本
θ
j
′
=
θ
j
+
(
y
i
−
h
θ
(
x
i
)
)
x
j
k
\theta'_j=\theta_j+(y^i-h_{\theta}(x^i))x^k_j
θj′=θj+(yi−hθ(xi))xjk
随机梯度下降算法每次都找一个样本,迭代速度快,但是不一定每次都朝着收敛的方向,样本中的数据可能存在一些错误点,异常点等。