GD(gradient descent):梯度下降法(BGD,SGD,mini-batch GD)

  梯度下降法(GD,gradient descent)是一种优化方法,比如对某个损失函数进行最小化的优化。
其共有三种:

  1. BGD,batch gradient descent:批量梯度下降
  2. SGD,stochastic gradient descent:随机梯度下降
  3. mini-batch GD,mini-batch gradient descent:小批量梯度下降

BGD

  假设有损失函数:
f ( α 0 , α 1 , . . . , α n , ) = 1 m m j = 0 ( y ^ y ) 2 f(\alpha_{0},\alpha_{1},...,\alpha_{n},)=\frac{1}{m}\sum_{m}^{j=0}(\hat{y}-y)^{2}
   y ^ \hat{y} 是预测值, y y 是真实值,共有 m m 个预测值。
  若要最小化损失函数,需要对每个参数 α 0 , α 1 , . . . , α n \alpha_{0},\alpha_{1},...,\alpha_{n} 求梯度,但是对BGD通常是取所有训练样本损失函数的平均作为损失函数,假设有 β \beta 个样本,则
F ( α 0 , α 1 , . . . , α n ) = 1 β β i = 0 f i ( α 0 , α 1 , . . . , α n ) F(\alpha_{0},\alpha_{1},...,\alpha_{n})=\frac{1}{\beta}\sum_{\beta}^{i=0}f_{i}(\alpha_{0},\alpha_{1},...,\alpha_{n})
  所以有梯度更新:
α i = α i l F ( α 0 , α 1 , . . . , α n ) α i \alpha_{i}=\alpha_{i}-l\cdot\frac{\partial F(\alpha_{0},\alpha_{1},...,\alpha_{n})}{\partial \alpha_{i}}
   F ( α 0 , α 1 , . . . , α n ) α i \frac{\partial F(\alpha_{0},\alpha_{1},...,\alpha_{n})}{\partial \alpha_{i}} 是损失函数对参数 α i \alpha_{i} 的偏导数, l l 为学习率,即步长,是一个经验值,过大容易找不到相对最优解,过小会使得优化速度过慢,见到一个这样的形容:学习率如人走路,步伐小要急死,步伐大容易扯着蛋hahaha

SGD

  如果使用BGD会有一个问题,就是每次迭代过程中都要对几个样本进行求梯度,所以开销非常大,随机梯度下降的思想就是随机采样一个样本来更新参数,注意只是一个样本,大大的降低了计算开销。

mini-batch GD

  SGD虽然提高了计算效率,降低了计算开销,但由于每次迭代只随机选择一个样本,因此随机性比较大,所以下降过程中非常曲折,效率也相应降低,所以mini-batch GD采取了一个折中的方法,每次选取一定数目(mini-batch)的样本组成一个小批量样本,然后用这个小批量来更新梯度,这样不仅可以减少计算成本,还可以提高算法稳定性。

  对这三者的关系进行一个比喻就是:
          

个人网站链接

发布了5 篇原创文章 · 获赞 5 · 访问量 5838

猜你喜欢

转载自blog.csdn.net/ethan_sui/article/details/104730651
今日推荐