梯度下降法(GD,gradient descent)是一种优化方法,比如对某个损失函数进行最小化的优化。
其共有三种:
1.BGD,batch gradient descent:批量梯度下降
2.SGD,stochastic gradient descent:随机梯度下降
3.mini-batch BGD,mini-batch gradient descent:小批量梯度下降
BGD
假设有损失函数:
f
(
α
0
,
α
1
,
.
.
.
,
α
n
)
=
1
m
∑
j
=
0
m
(
y
^
−
y
)
2
f(\alpha_{0},\alpha_{1},...,\alpha_{n})=\frac{1}{m}\sum_{j=0}^m(\hat y-y)^2
f(α0,α1,...,αn)=m1j=0∑m(y^−y)2
yˆ 是预测值,y是真实值,共有m个预测值。
若要最小化损失函数,需要对每个参数α0,α1,…,αn求梯度,但是对BGD通常是取所有训练样本损失函数的平均作为损失函数,假设有β个样本,则
F
(
α
0
,
α
1
,
.
.
.
,
α
n
)
=
1
β
∑
i
=
0
β
f
(
α
0
,
α
1
,
.
.
.
,
α
n
)
F(\alpha_{0},\alpha_{1},...,\alpha_{n})=\frac{1}{\beta}\sum_{i=0}^\beta f(\alpha_{0},\alpha_{1},...,\alpha_{n})
F(α0,α1,...,αn)=β1i=0∑βf(α0,α1,...,αn)
所以有梯度更新:
SGD
如果使用BGD会有一个问题,就是每次迭代过程中都要对几个样本进行求梯度,所以开销非常大,随机梯度下降的思想就是随机采样一个样本来更新参数,注意只是一个样本,大大的降低了计算开销。
mini-batch GD
SGD虽然提高了计算效率,降低了计算开销,但由于每次迭代只随机选择一个样本,因此随机性比较大,所以下降过程中非常曲折,效率也相应降低,所以mini-batch GD采取了一个折中的方法,每次选取一定数目(mini-batch)的样本组成一个小批量样本,然后用这个小批量来更新梯度,这样不仅可以减少计算成本,还可以提高算法稳定性。
bgd:每一个数据都要算
sgd:数据的算(随机抽取数据)
minibatch sgd:一组数据一组数据的算