三种梯度下降方法与代码实现

Posted 辰chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三种梯度下降方法与代码实现相关的知识,希望对你有一定的参考价值。

目录

前言

本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有 N u m P y NumPy NumPy P a n d a s Pandas Pandas M a t p l o t l i b Matplotlib Matplotlib 的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解),本文是梯度下降的第二部分,学之前需先修:梯度下降【无约束最优化问题】,后续还会有:梯度下降优化梯度下降优化进阶 (暂未更新)

1.梯度下降方法

1.1 三种梯度下降不同

🚩梯度下降分三类:批量梯度下降 B G D BGD BGDBatch Gradient Descent)、小批量梯度下降 M B G D MBGD MBGDMini-Batch Gradient Descent)、随机梯度下降 S G D SGD SGDStochastic Gradient Descent)。


三种梯度下降有什么不同呢?我们从梯度下降步骤开始讲起,梯度下降步骤分以下四步:

  • 1、随机赋值, R a n d o m Random Random 随机数生成 θ \\theta θ,随机一组数值 w 0 、 w 1 … … w n w_0、w_1……w_n w0w1wn

  • 2、求梯度 g g g ,梯度代表曲线某点上的切线的斜率,沿着切线往下就相当于沿着坡度最陡峭的方向下降

  • 3、 i f if if g < 0 g < 0 g<0, θ \\theta θ 变大, i f if if g > 0 g > 0 g>0, θ \\theta θ 变小

  • 4、判断是否收敛 c o n v e r g e n c e convergence convergence,如果收敛跳出迭代,如果没有达到收敛,回第 2 2 2 步再次执行 2 2 2 ~ 4 4 4

    收敛的判断标准是:随着迭代进行损失函数 L o s s Loss Loss,变化非常微小甚至不再改变,即认为达到收敛

三种梯度下降不同,体现在第二步中:

  • B G D BGD BGD 是指在每次迭代使用所有样本来进行梯度的更新

  • M B G D MBGD MBGD 是指在每次迭代使用一部分样本(所有样本 500 500 500 个,使用其中 32 32 32 个样本)来进行梯度的更新

  • S G D SGD SGD 是指每次迭代随机选择一个样本来进行梯度更新

1.2 线性回归梯度更新公式

🚩回顾上一讲公式!

最小二乘法公式如下:

J ( θ ) = 1 2 ∑ i = 1 n ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\\theta) = \\frac12\\sum\\limits_i = 1^n(h_\\theta(x^(i)) - y^(i))^2 J(θ)=21i=1n(hθ(x(i))y(i))2

矩阵写法:

J ( θ ) = 1 2 ( X θ − y ) T ( X θ − y ) J(\\theta) = \\frac12(X\\theta - y)^T(X\\theta - y) J(θ)=21(Xθy)T(Xθy)

接着我们来讲解如何求解上面梯度下降的第 2 2 2 步,即我们要推导出损失函数的导函数来。

  • θ j n + 1 = θ j n − η ∗ ∂ J ( θ ) ∂ θ j \\theta_j^n + 1 = \\theta_j^n - \\eta * \\frac\\partial J(\\theta)\\partial \\theta_j θjn+1=θjnηθjJ(θ) 其中 j j j 表示第 j j j 个系数

  • ∂ J ( θ ) ∂ θ j = ∂ ∂ θ j 1 2 ( h θ ( x ) − y ) 2 \\frac\\partial J(\\theta)\\partial \\theta_j = \\frac\\partial\\partial \\theta_j\\frac12(h_\\theta(x) - y)^2 θjJ(θ)=θj21(hθ(x)y)2

= 1 2 ∗ 2 ( h θ ( x ) − y ) ∂ ∂ θ j ( h θ ( x ) − y ) = \\frac12*2(h_\\theta(x) - y)\\frac\\partial\\partial \\theta_j(h_\\theta(x) - y) =212(hθ(x)y)θj(hθ(x)y) ( 1 ) (1) (1)

= ( h θ ( x ) − y ) ∂ ∂ θ j ( ∑ i = 0 n θ i x i − y ) = (h_\\theta(x) - y)\\frac\\partial\\partial \\theta_j(\\sum\\limits_i = 0^n\\theta_ix_i - y) =(hθ(x)y)θj(i=0nθix梯度下降

梯度下降法Gradient Descent

机器学习梯度下降与正规方程(附例题代码)

梯度下降入门

梯度下降的直觉

线性回归和梯度下降