【重磅】批量梯度下降、随机梯度下降、小批量梯度下降
梯度下降有三种
1. 批量梯度下降(Batch Gradient Descent,BGD)
2. 随机梯度下降(Gradient Descent,SGD)
3. 小批量梯度下降(Mini-Batch Gradient Descent,MBGD)
不同点在于损失函数使用的样本量的不同,其根本流程是一毛一样的啊!
各有优缺点。
方法 | 说明 | 优点 | 缺点 | 适用实例 |
---|---|---|---|---|
批量梯度下降 BGD | 最原始方法,每次跟新参数时,使用所有样本,即损失函数由所有样本构成。 |
1. 全局最优解; 2. 易于并行实现。 |
1. 样本多时,训练时间慢 | 样本量比较小 |
随机梯度下降 SGD | 损失函数使用一个样本,噪声比BGD要多 | 1. 训练速度快 |
1. 准确度降低,经常非全局最优 2. 不易于并行实现 |
样本量比较大,或者在线学习算法 |
小批量梯度下降 MBGD | 损失函数使用一部分样本 | 综合BGD、SGD | 综合BGD、SGD | 一般情况 |
传统普通梯度下降
或: 批量梯度下降(Batch Gradient Descent,BGD)
根据李航《统计学习方法》改编
梯度下降为最优化算法,顾名思义,优化,需要迭代才能找出最优值。
这里未知,所以梯度下降整个过程 其实就是求 !! 求出来还是个估计值!
输入:损失函数, 为向量,,n个特征
输出:的最优值,用表示,
设 损失函数为
说明:一般为平方损失、log对数损失等 能求导的 损失函数,0-1损失等不能求导则不能用梯度下降
(图片)
说明:
1. k=0,是为了方便,有需要可以输出迭代次数,这样可以比较不同优化算法中的速率。
2. 也是自己为了方便设置的,当然也可以设别的初值,或者设置不同初值重复多次试验,对比最优值结果。不同初值可能会得出不同的优化结果,这是由于进入的局部最优值的情况,但是!如果损失函数为凸函数,那么最优值只有一个!只有一个!可以放心设置初值,只是时间不同而已,多迭代几次便是了。
3. 是一个大于0,但非常接近0的一个数,比如0.000001,用来做最后的参考,比如两个函数值的差值小于,那么就可以判定两个函数值相等,那么基本收敛了,数学分析的收敛知识点就这玩意儿。当然根据实际需求,,也是可以的。
4. 在第(1)步 求梯度中,需要注意的是,这里需要求n个方程,因为有n个参数(或者说系数),目前我的理解是 先对n个求偏导数,然后在睇(4)步迭代时,同时对n个参数进行更新。(如果我的理解不对请和我联系,我将虚心改正。)
5. 第(3)步,求步长,可以理解为遍历所有正数,在一定的方向(梯度即方向),求出 使得损失函数下降最多时 的。
6. 也有人不求,直接自己设置,比如等等,李航大佬求出来也是蛮6的,这得求多久。或者其实大部分都是自己设置然后看效果罢了。反正就是整出个 步长(也称学习率)。
7. 梯度下降中,损失函数不同,梯度(导数)就不同。
随机梯度下降
在传统的普通梯度下降中,我们可以从
参考:
李航《统计学习方法》