栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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



作者:icetong_k
链接:https://www.jianshu.com/p/886a9de30f23


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/225406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号