[ML] 梯度下降算法

求解的问题: 无约束最优化问题.
基本方式: 迭代.

f(x) f ( x ) Rn R n 上有一阶连续偏导数, 则要求解的最优化问题可以表示为: minxRnf(x) min x ∈ R n f ( x )

(1) 取初值 x(0)Rn x ( 0 ) ∈ R n , 置k=0

(2) 算出 f(x(k)) f ( x ( k ) )

(3) 算出 f(x) f ( x ) x(k) x ( k ) 这个点处的梯度 gk g k , 如果 gk g k 小于某个之前给定的阈值, 则停止迭代, 令 f(x) f ( x ) 的极小点 x=x(k) x ∗ = x ( k ) , 否则令 pk=gk p k = − g k , 求迭代步长 λk λ k 使得 f(x(k)+λkpk)=minλ0f(x(k)+λpk) f ( x ( k ) + λ k p k ) = min λ ≥ 0 f ( x ( k ) + λ p k ) .

(4) 更新x的值: x(k+1)=x(k)+λkpk x ( k + 1 ) = x ( k ) + λ k p k , 计算 f(x(k+1)) f ( x ( k + 1 ) ) .
如果 ||f(x(k+1))f(x(k))|| | | f ( x ( k + 1 ) ) − f ( x ( k ) ) | | ||x(k+1)x(k)|| | | x ( k + 1 ) − x ( k ) | | 小于之前给定的阈值, 则停止迭代, x=x(k) x ∗ = x ( k ) .

(5) 否则, k=k+1, 返回(3)

备注: (1) 只有f(x)是凸函数时, 用梯度下降法得出的结果才是全局最优解. (2) 一般情况下, 梯度下降法的收敛速度未必是最快的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值