梯度下降算法在机器学习中的工作原理
梯度下降算法在机器学习中的工作原理
作者|NIKIL_REDDY 编译|VK 来源|Analytics Vidhya
介绍
梯度下降算法是工业中最常用的机器学习算法之一。但这让很多新人感到困惑。
如果你刚刚接触机器学习,梯度下降背后的数学并不容易。在本文中,我的目的是帮助你了解梯度下降背后的直觉。
我们将快速了解成本函数的作用,梯度下降的解释,如何选择学习参数。
什么是成本函数
它是一个函数,用于衡量模型对任何给定数据的性能。成本函数将预测值与期望值之间的误差量化,并以单个实数的形式表示出来。
在对初始参数进行假设后,我们计算了成本函数。以降低代价函数为目标,利用梯度下降算法对给定数据进行参数修正。下面是它的数学表示:
_LI.jpg)
什么是梯度下降
假设你在玩一个游戏,玩家在山顶,他们被要求到达山的最低点。此外,他们还蒙着眼睛。那么,你认为怎样才能到达湖边?
在你继续读之前,花点时间考虑一下。
最好的办法是观察地面,找出地面下降的地方。从这个位置开始,向下降方向迈出一步,重复这个过程,直到到达最低点。
梯度下降法是一种求解函数局部极小值的迭代优化算法。
要用梯度下降法求函数的局部极小值,必须选择与当前点处函数的负梯度(远离梯度)的方向。如果我们采取与梯度的正方向,我们将接近函数的局部极大值,这个过程称为梯度上升。
梯度下降最初是由柯西在1847年提出的。它也被称为最速下降。
梯度下降算法的目标是最小化给定函数(比如成本函数)。为了实现这一目标,它迭代地执行两个步骤:
-
计算梯度(斜率),函数在该点的一阶导数
-
在与梯度相反的方向上做一步(移动)
.png)
Alpha被称为学习率-优化过程中的一个调整参数。它决定了步长。
绘制梯度下降算法
当我们有一个单一的参数(θ),我们可以在y轴上绘制因变量成本,在x轴上绘制θ。如果有两个参数,我们可以进行三维绘图,其中一个轴上有成本,另两个轴上有两个参数(θ)。
它也可以通过使用等高线来可视化。这显示了一个二维的三维绘图,其中包括沿两个轴的参数和等高线的响应值。远离中心的响应值增加,并且随着环的增加而增加。
α-学习率
我们有了前进的方向,现在我们必须决定我们必须采取的步骤的大小。
必须谨慎选择,以达到局部最小值。
-
如果学习率太高,我们可能会超过最小值,而不会达到最小值
-
如果学习率太低,训练时间可能会太长
a) 学习率最优,模型收敛到最小
b) 学习速度太小,需要更多的时间,但会收敛到最小值
c) 学习率高于最优值,较慢速度的收敛(1/c<η < 2/c)
d) 学习率非常大,它会过度偏离,偏离最小值,学习性能下降
注:随着梯度减小而向局部最小值移动,步长减小。因此,学习速率(alpha)可以在优化过程中保持不变,而不需要迭代地改变。
局部最小值
成本函数可以由许多最小点组成。梯度可以落在任何一个极小值上,这取决于初始点(即初始参数θ)和学习速率。因此,在不同的起点和学习率下,优化可以收敛到不同的点。
梯度下降的Python代码实现
结尾
一旦我们调整了学习参数(alpha)并得到了最优的学习速率,我们就开始迭代,直到我们收敛到局部最小值。
欢迎关注磐创AI博客站: http://panchuang.net/
sklearn机器学习中文官方文档: http://sklearn123.com/
欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
iOS | 零代码快速集成AGC崩溃服务
前面已经介绍过Android平台集成AGC崩溃服务的操作,本次介绍下IOS的集成方法,操作基本类似。 创建项目和应用 首先你需要在AGC创建一个项目,在项目中添加一个应用,操作很简单,直接参见《IOS使用入门》中的创建项目和应用章节。 开通华为分析服务 由于崩溃服务上报崩溃事件时使用了华为分析服务的能力,集成Crash SDK前需要开通华为分析服务,直接参见开通华为分析。 集成SDK 针对Xcode开发环境,开发前可以通过Cocoapods集成方式将Crash SDK集成到Xcode开发环境中。 登录AppGallery Connect网站,点击“我的项目”。 在项目列表中找到刚刚创建的项目,在项目下的应用列表中选择需要集成的应用。 点击“项目设置”中“应用”栏下的“agconnect-services.json”下载配置文件。 将“agconnect-services.plist”文件拷贝到Xcode工程目录下。 创建Podfile文件。 打开命令行窗口,导航至Xcode项目所在的位置,创建Podfile文件。如果已经存在,可跳过本步骤。 cd project-directory p...
- 下一篇
JVM Metaspace内存溢出排查与总结
一. 现象 前段时间公司线上环境的一个Java应用因为OOM的异常报警,导致整个服务不可用被拉出集群,本地模拟重现的现象如下: 当时的解决方案是增加metaspace的容量:-XX:MaxMetaspaceSize=500m,从原来默认的256m改为500m,虽然没有再出现oom,但这个只是临时解决方案,通过公司的监控系统观察metaspace的使用情况还是在上升,而且后面随着业务访问量越来越大还是有可能达到阈值。 二. 分析 Metaspace元空间主要是存储类的元数据信息,我们的应用里加载的各种类描述信息,比如类名、属性、方法、访问限制等,按照一定的结构存储在Metaspace里。 由此可知metaspace空间增长是由于反射类加载,动态代理生成的类加载等导致的,也就是说Metaspace的大小和加载类的数据有关系,加载的类越多metaspace占用的内存也就越大。 因为了解当时的业务场景是因为有个邮件服务访问订单详情接口的访问量突然上升,以及查看log的eroor日志发现大部分都是订单详情接口先报出的这个问题:java.lang.OutOfMemoryError: Metaspa...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度