梯度下降法是一种求函数最小值的算法。在机器学习中,预测值和实际值之间的差称为误差。将所有数据点上的所有误差加在一起时称为成本。

当然,我们希望最小化代表此成本的函数 - 成本函数。

在机器学习中梯度下降是什么意思呢?

通过使用称为反向传播的技术来训练神经网络。梯度下降是反向传播的一个非常重要的部分。

梯度下降法是一种非常流行的方法来调整机器学习模型的参数,以达到最小的误差状态。

机器学习算法是告诉机器学习数据的行为。鉴于机器只能理解0和1,有必要通过数学模型表示数据。任何数学模型都会有一些参数,例如直线有两个参数 - 斜率和截距:y = m * x + b。

正如线性回归中所解释的那样,我们的目的是为我们的数据拟合一条直线。这本质上意味着调整参数m和b,使之符合线表示数据的方式。

上 :直线模型的参数 下:神经网络的参数

其他的数学模型也包含参数,例如神经网络中所有隐含层的权重都是该网络的参数。权重是一层神经元和另一层神经元之间连接的强度。每一个权重都成为一个需要调整的参数,以便我们的模型能够最好地表示数据并在未来给出准确的预测。

注意m和b是如何变化的。

Gradient Descent如何运作?

好了,现在我们知道梯度下降用于找到机器学习模型的最小误差(最低成本)状态,让我们看看它是如何工作的。

想象一个迷路的徒步旅行者。他在山顶附近迷路了,不知道要走哪条路。他需要从他可以走的地方找到通往山谷的路。

实质上,梯度下降也是如此。

  1. 随机选择我们的旅行者的起点。
  2. 我们测量了他站的那个点的山的坡度
  3. 我们往下走了一步
  4. 步长与该点的斜率绝对值成正比。这意味着斜率越陡步长越大。

迷路的徒步旅行者

现在让我们试着把这个类比和我们的实际问题等同起来。

  • 山=成本函数
  • 旅行者的地面位置=参数
  • 山的斜率=成本函数的导数
  • Step =改变参数
  • 如果cost函数包含2个参数,那么这座山就是三维的,看起来就像这两个参数中的一个:

数学

要了解Gradient Descent,我们需要了解以下内容

  • 参数
  • 成本函数
  • 梯度=成本函数的导数
  • 学习率
  • 更新规则

1)参数

假设我们有n + 1个参数表示

2)成本函数

成本函数基本上是用不同的方法来总结误差——预测的b/w和实际的b/w之差。我们不讨论成本函数是怎样的,我们用字母J来表示它,因为J是所有参数的函数,我们把它写成

对于1个变量情况,我们只有θ0和J(θ0)

3)梯度=斜率

为了计算斜率,我们计算该点处的损失函数的导数。下面的符号表示损失函数,即对theta_j的偏导数。

这是正斜率。如果那个徒步旅行者在左边的山峰上,他会得到一个-ve

4)学习率

学习率由字符α表示。Alpha控制我们在下降期间采取的步长有多大。由于我们的步长由上面所示的导数确定,因此alpha乘以该导数以控制步长。

如果α太小,徒步旅行者将花费太长时间来到山谷,即梯度下降将花费太长时间来收敛

非常小的alpha导致极小的步骤,导致收敛慢

如果阿尔法太大,徒步旅行者将移动得非常快,错过山谷。

大alpha不会让梯度下降收敛

5)更新规则

最后,梯度下降只不过是更新规则。更新规则同时更新所有参数。通过步长值减去参数的当前值。其公式来自于上述所有项的组合。

更新规则

注意:如果斜率为负,第二项将变为正(由于负号),这将导致参数值增加。所以当斜率为-ve时,则向右移动了一点。如果斜率是+ve,徒步旅行者向左移动一点。当斜率为0时,第二项为0,则值不变。

综上所述

  • 对所有thetas /参数进行初步猜测
  • 应用更新规则,直到成本函数达到稳定的最小值

要注意的事情

  • 梯度下降的第一步总是随机初始化。现在我们可能很幸运,将我们的theta初始化为最低限度,但这很少见。更有可能的是,我们最终可能从一个点开始它永远不会到达全局最小值。它可能会陷入局部极小值。例如,如果徒步旅行者从山顶的右侧出发,他会被困在局部的最小值中。

局部最小值问题

  • 步长:坡度越大,我们所采取的步长就越大。这是因为更陡的斜率会导致更大的导数值,θ就会使变化更大。所以越高,徒步旅行者移动得越快,当我们接近最小值时,我们就会慢下来。
  • 收敛:如果alpha太小,我们可能永远不会收敛,如果它太大,我们可能会 overshoot。下面你可以看到alpha = 0.03太慢,alpha = 0.4恰好,而alpha = 1.02太大。
  • 算法的灵活性:由于梯度下降与数学模型无关,并且仅依赖于成本函数,因此它适用于各种机器学习算法 - 线性回归,逻辑回归,神经网络等。
  • 动量:还记得局部的最小问题吗?有时人们使用动量的概念来防止GD卡住。动量项确保系统只在全局最小值上稳定。

上:Momentum让系统达到全局最小化。下:陷入局部极小值

机器学习中为什么需要梯度下降_梯度下降直觉 - 机器是如何学习的相关推荐

  1. 3. 机器学习中为什么需要梯度下降_梯度提升(Gradient Boosting)算法

    本文首发于我的微信公众号里,地址:梯度提升(Gradient Boosting)算法 本文禁止任何形式的转载. 我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI ...

  2. 梯度下降法_梯度下降

    梯度下降法 介绍 (Introduction) Gradient Descent is a first order iterative optimization algorithm where opt ...

  3. 批梯度下降 随机梯度下降_梯度下降及其变体快速指南

    批梯度下降 随机梯度下降 In this article, I am going to discuss the Gradient Descent algorithm. The next article ...

  4. 中计算散度的函数_梯度、散度、旋度

    一.麦克斯韦基于四元数观点导出散度与旋度 已知的最早的关于散度和旋度的描述都来自麦克斯韦1873年的<A Treatise on Electricity and Magnetism>(电磁 ...

  5. 梯度消失和梯度爆炸_梯度消失、爆炸的原因及解决办法

    一.引入:梯度更新规则 目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,更新优化深度网络的权值.这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来 ...

  6. 梯度下降算法_梯度下降算法的工作原理

    ↑ 点击蓝字 关注极市平台作者丨 磐怼怼来源丨深度学习与计算机视觉编辑丨极市平台 极市导读 梯度下降算法是工业中最常用的机器学习算法之一,但也是很多新手难以理解的算法之一.如果你刚刚接触机器学习,那么 ...

  7. 梯度下降算法_梯度下降算法详解

    原创 | CDA数据分析研究院,转载需授权 介绍 如果说在机器学习领域有哪个优化算法最广为认知,用途最广,非梯度下降算法莫属.梯度下降算法是一种非常经典的求极小值的算法,比如在线性回归里我们可以用最小 ...

  8. 梯度下降算法_梯度下降算法(Gradient Descent)的原理和实现步骤

    大部分的机器学习模型里有直接或者间接地使用了梯度下降的算法.虽然不同的梯度下降算法在具体的实现细节上会稍有不同,但是主要的思想是大致一样的.梯度下降并不会涉及到太多太复杂的数学知识,只要稍微了解过微积 ...

  9. 梯度消失和梯度爆炸_梯度消失梯度爆炸-Gradient Clip

    梯度爆炸与梯度消失 实际现象: 当我们使用sigmoid function作为激活函数时,随着神经网络的隐藏层数增加,训练误差反而增大,造成了深度网络的不稳定. 梯度弥散: 靠近输出层的hidden ...

最新文章

  1. 第二十八课.AlphaGo实例分析
  2. GitHub从入门到精通
  3. 什么是REST?以及RESTful的实现之二
  4. golang runes 字符串 互转
  5. [MySql] - Windows MySql 8.x 手动zip包安装与外网访问登录权限设定
  6. 用sk-learn的pipline的时候,现:TypeError: ‘Pipeline‘ object is not subscriptable
  7. RDIFramework.NET ━ 9.5 组织机构管理 ━ Web部分
  8. 百老汇原版音乐剧《摇滚学校》2月开启中国巡演
  9. python 输入文件名查找_python 查找文件名包含指定字符串的方法
  10. jdbc mysql 存储过程执行失败_JDBC连接执行MySQL存储过程报空指针或权限错误
  11. linux 中文编码环境,linux中文编码问题总结
  12. 【React教学】通用型DataTable组件——400行内
  13. 京东:妥善处理个别显卡售后的问题 不存在“金融化”情况
  14. 使用全备+binlog日志恢复数据库
  15. 解决无法从Git官网下载Git安装包的具体方法
  16. 【学习笔记之MYSQL篇】实体联系图
  17. Windows7系统怎么给文件夹加密?
  18. egg.js中Class constructor BaseContextClass cannot be invoked without ‘new‘解决方法
  19. css消除点击或长按后的蓝色背景框
  20. Android第三方开发包值高德地图SDK使用介绍,android面试基础

热门文章

  1. 用代码查看SAP Spartacus购物车内的行项目
  2. 什么是TypeScript的字符串索引签名
  3. 如何用ant将JSP项目打成war包
  4. SAP Hybris安装包里自带的apache ant
  5. SAP CRM WebClient UI检查当前页面是否支持Delta handling的代码
  6. how is view embedded via component usage being initialized
  7. SAP CRM One Order object type in line item - when it is filled
  8. 一个短小精悍的在线jshint工具
  9. include element into ABAP word document
  10. Extension field添加到CDS view上的技术实现