美文网首页Pythoner集中营程序员机器学习
初识梯度下降法及小试牛刀

初识梯度下降法及小试牛刀

作者: icetong_k | 来源:发表于2018-10-16 21:42 被阅读22次

            随着深度学习的火热,梯度下降法也经常被人所提起。做为一种最常见的求解无约束问题最优化方法,它在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。

    相关文章

      网友评论

        本文标题:初识梯度下降法及小试牛刀

        本文链接:https://www.haomeiwen.com/subject/hfahzftx.html