随着深度学习的火热,梯度下降法也经常被人所提起。做为一种最常见的求解无约束问题最优化方法,它在ML和DL模型求解的过程中扮演着相当重要的角色,在接触和学习机器学习的过程中,看了很多教程,书籍,都有和梯度下降相关的内容,但看了那么多,始终不如自己动手试一试来的印象深刻,在此记录一下。
梯度下降法(gradient descent),是在求解无约束最优化问题过程中的一种最常用的方法。假设 f(x)是Rn上具有一阶连续偏导的函数,要求解的无约束最优化问题是:
无约束最优化问题 梯度下降法梯度下降算法思想非常简单,导数的负方向就是函数值下降的方向。对于一个一元二次函数来说,当某一点导数为正数时候,曲线是上升的,其反方向就是函数值下降的方向。当某一点导数为负数时候,曲线是下降的,其正方向就是函数值下降的方向。稍微难以理解的是第三步,第三步中λ就是我们平常说的学习率,既求一个合适的λ使得函数值下降最大。其他的都非常易懂,接下来就用梯度下降法解决一个非常简单的问题,求解一个一元二次方程的最小值。
求解一元二次函数最小值代码实现
1. 首先导入库
2. 生成数据并绘制
生成数据并绘制3. 定义函数求解f(x)及其导数g(x)
f(x)及g(x)4. 定义学习率,epsilon,最大迭代次数
学习率,epsilon,最大迭代次数5. 梯度下降代码,初始化一个x0 = 5, 使用列表learn_x 记录每次学习到的x。
梯度下降6. 绘制学习过程
学习过程以上就是关于使用梯度下降法解决一个非常入门非常简单的例子,对于没有了解过梯度下降法的朋友,算是能有个大概了解,但实际用到的梯度下降法,通常情况梯度是一个向量,而且求偏导的计算远比求一元二次函数的导数要复杂的多。附上 ipynb链接:链接: https://pan.baidu.com/s/1Kvl0QG6IW8AuxJiTEju4kw 提取码: dn3k。
网友评论