一元最值问题
[例] 求解x为多少时,目标函数y = sinx + 5x² + 2
可取得最小值?
接下来分析一下这道题,它是求最值问题,我们按照高中的思路,容易想到求导,然后让导数值为0,求得的x即为极值点,接着通过相关计算求出答案。
那我们就来试试看,首先求导得y' = cosx +10x
,然而我们不知道如何求得x使得导数值为0……
这时我们就需要使用到梯度下降算法,因为我们求的是最小值,所以设置学习率为-0.1。
[解] 首先随机初始化x,假设x= 0。梯度为▽y= cosx + 10x
循环 | x | 梯度 | 更新x |
---|---|---|---|
1 | 0 | cos0 + 10 * 0 = 1 | 0 - 0.1 * 1 = -0.1 |
2 | -0.1 | cos0.1 + 10 * 0.1 = -0.0050 | -0.1 + 0.1 * 0.0050 = -0.0995 |
3 | -0.0995 | cos(-0.0995) - 10 * 0.0995 = -0.00005 ≈ 0 | 无更新 |
梯度为-0.00005时,已经接近为0了,也就意味着偏导数为0,意味着此时