c语言梯度下降法步长参数,梯度下降法怎么求最佳步长

在梯度下降法(求最小值)里, x迭代的方向是梯度的反方向, 但是我们要选择一个步长使得函数值的确是下降的, 假设函数形式如下:

\[

f(\textbf{x})= \textbf{x}^T\textbf{A}\textbf{x} + 2\textbf{b}^T + c

\]

其中\(\textbf{x}\)为向量.

设\(\textbf{d}\)是负梯度方向, 那么, 我们的目标是解:

\[

min_{\alpha>=0}f(\textbf{x}+\alpha \textbf{d})

\]

中的\(\alpha\).

解:

令 \(h(\alpha)=f(x+\alpha d)\)

函数最小值肯定是在导数为0时取得. 即:

\[

{\partial h(\alpha) \over \partial \alpha} = \textbf{0}

\]

1, 先求梯度:

\[

\nabla f(x)=2A\textbf{x} + a \textbf{b}

\]

2, 求偏导

根据链式法则有:

\[

\begin{align}

{\partial h \over \partial \alpha} &= d^T[\nabla f(x + \alpha d)] \\

&= d^T [2A(x+\alpha d) + 2b] \\

&= d^T[2Ax+2b] + 2 \alpha d^T A d \\

&= d^T \nabla f(x) + 2 \alpha d^T A d

\end{align}

\]

3, 由于导数为0, 所以有:

\[

d^T \nabla f(x) + 2 \alpha d^T A d = 0 \\

\alpha = - {\ {d^T \nabla f(x)} \over {2 d^T A d}\ }

\]

这是机器学习数学基础课程作业.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值