基本数学原理
由线性回归算法我们可得:
目标函数J(θ)即为:J(θ)=21∑i=1m(y(i)−θTx(i))2
在目标函数J(θ)得到后,我们并不一定能够直接进行求解,而应用梯度下降算法可以对J(θ)进行求解。
- 梯度:对J(θ)求偏导得到的斜率,方向为上升
- 梯度下降即为方向向下的梯度,可以应用于求最小值
- 梯度下降算法即为通过一次一次的迭代优化,不断调整我们的梯度下降方向,直至求出一个近似最优解。
优化步骤
- 找到当前合适的优化方向
- 进行一次小幅迭代
- 按照迭代的方向和步伐对参数进行更新权重参数
梯度下降的类型
目标函数:
J(θ)=2m1∑i=1m(yi−hθ(xi))2
批量梯度下降(GD)
此方式最容易得到最优解,但由于每次综合考虑所有样本,速度很慢
∂θj∂J(θ)=−m1∑i=1m(yi−hθ(xi))xji
θj′=θj+m1∑i=1m(yi−hθ(xi))xji
优化获得的结果形式如下:

随机梯度下降(SGD)
此方式的思路为每次找一个样本进行迭代,迭代速度很快,但不一定每次都朝着收敛的方向
θj′=θj+(yi−hθ(xi))xji
随机梯度下降由于并不一定每个变量的迭代都沿着总收敛的方向,所以求解过程中会具有较大的波动性。

小批量梯度下降
每次更新都选择一小部分数据来进行计算,相对实用
θj:=θj−α101∑k=ii+9(hθ(x(k))−y(k))xj(k)
先打乱数据顺序,在对数据进行批量迭代,之后更新θ参数。(上式中的每批的数据量即为十个:i = 1 —> i = 9)在实际应用中,我们通常选取2的倍数如32,64,128为数据的每批次量进行迭代。同时,我们也要考虑内存与效率。通常情况下,批次量越大,结果稳定程度越高。
梯度下降中的重要特征
步长(学习率)
会对结果产生巨大的影响,通常取较小的值会带来较优的结果,但会使迭代次数上升。而学习率在实际应用中也并不一定一直保持不变,可以在求解的过程中进行调整。

图为不同步长对目标函数求解的影响