鸣叫 分享到 分享
梯度下降程序是一种在机器学习中占有最重要地位的方法。它经常被用来最小化分类和回归问题中的误差函数。它也被用于训练神经网络和深度学习架构。
在本教程中,你将发现梯度下降程序。
完成本教程后,你将知道。
- 梯度下降法
- 梯度下降法在机器学习中的重要性
让我们开始吧。
梯度下降法的温和介绍。照片由Mehreen Saeed拍摄,保留部分权利。
教程概述
本教程分为两部分,它们是:。
- 梯度下降程序
- 梯度下降程序的解算实例
前提条件
在本教程中,假定有以下主题的前提知识。
- 几个变量的函数
- 部分导数和梯度向量
你可以通过点击上面的链接来回顾这些概念。
梯度下降程序
梯度下降过程是一种寻找函数最小值的算法。
假设我们有一个函数f(x),其中x是几个变量的元组,即x=(x_1, x_2, ...x_n)。另外,假设f(x)的梯度是由∇f(x)给出的。我们想找到变量(x_1, x_2, ...x_n)的值,使我们得到函数的最小值。在任何一个迭代t,我们用x[t]来表示元组x的值。所以x[t][1]是x_1在迭代t的值,x[t][2]是x_2在迭代t的值,等等。
符号
我们有以下变量。
- t = 迭代数
- T = 迭代总数
- n = f域中的全部变量(也称为x的维度)。
- j = 变量编号的迭代器,例如,x_j代表第j个变量
- 𝜂 = 学习率
- ∇f(x[t]) = 迭代t时f的梯度向量的值
训练方法
梯度下降算法的步骤如下。这也被称为训练方法。
- 选择一个随机的初始点x_initial,设置x[0]=x_initial
- 对于迭代t=1...T
- 更新x[t] = x[t-1] - 𝜂∇f(x[t-1])
就这么简单!
学习率𝜂是用户为梯度下降过程定义的变量。它的值在[0,1]范围内。
上述方法说,在每个迭代中,我们必须在梯度矢量的负值方向上迈出一小步来更新x的值。如果𝜂=0,那么x不会有任何变化。如果𝜂=1,那么就相当于在梯度向量的负值方向迈出了一大步。通常情况下,𝜂被设置为一个小值,如0.05或0.1。在训练过程中,它也可以是可变的。因此,你的算法可以从一个大值开始(例如0.8),然后将其减少到较小的值。
梯度下降的例子
让我们来寻找以下两个变量的函数的最小值,其图形和轮廓显示在下图中。
f(x,y) = x*_x + 2y*_y
f(x,y)=x*x+2y*y的图形和等值线
梯度向量的一般形式是由。
∇f(x,y) = 2xi + 4yj
该算法的两次迭代,T=2,𝜂=0.1,如下所示
- 初始t=0
- x[0] = (4,3) # 这只是一个随机选择的点
- 在t=1时
- x[1] = x[0] - 𝜂∇f(x[0])
- x[1] = (4,3) – 0.1*(8,12)
- x[1] = (3.2,1.8)
- 在t=2时
- x[2] = x[1] - 𝜂∇f(x[1])
- x[2] = (3.2,1.8) – 0.1*(6.4,7.2)
- x[2] = (2.56,1.08)
如果你继续运行上述迭代,该程序最终将结束在函数最小的点,即(0,0)。
在迭代t=1时,该算法如下图所示。
梯度下降程序的图解
运行多少次迭代?
通常情况下,梯度下降法一直运行到x的值没有变化或者x的变化低于某个阈值。停止标准也可以是用户定义的最大迭代次数(我们之前定义为T)。
增加动量
梯度下降会遇到这样的问题。
- 在两个或多个点之间摇摆不定
- 被困于局部最小值中
- 过度冲撞,错过最小点
为了解决上述问题,可以在梯度下降算法的更新方程中加入一个动量项,即。
x[t] = x[t-1] - 𝜂∇f(x[t-1]) + 𝛼*Δx[t-1] 。
其中Δx[t-1]代表x的变化,即。
Δx[t] = x[t] - x[t-1] 。
t=0时的初始变化是一个零向量。对于这个问题,Δx[0]=(0,0)。
关于梯度上升法
有一个相关的梯度上升程序,它可以找到一个函数的最大值。在梯度下降中,我们遵循一个函数的最大下降率的方向。它是负梯度矢量的方向。而在梯度上升过程中,我们遵循的是一个函数的最大增长率方向,也就是正梯度向量所指向的方向。我们也可以通过给f(x)加上一个负号来写一个最大化问题,即。
maximize f(x) w.r.t x is equivalent to minimize -f(x) w.r.t x
为什么梯度下降在机器学习中很重要?
梯度下降算法经常被用于机器学习问题中。在许多分类和回归任务中,均方误差函数被用来适应数据的模型。梯度下降程序被用来确定导致最小均方误差的最佳模型参数。
梯度上升法也是类似的,用于涉及函数最大化的问题。
扩展
本节列出了一些扩展教程的想法,你可能希望探索这些想法。
- Hessian矩阵
- 雅各布式
如果你对这些扩展进行了探索,我很想知道。请在下面的评论中发表你的发现。
进一步阅读
如果你想深入了解,本节提供了更多关于该主题的资源。
教程
资源
- 关于机器学习的微积分书籍的其他资源
书籍
- Thomas的微积分,第14版,2017年。(基于George B. Thomas的原作,由Joel Hass, Christopher Heil, Maurice Weir修订)
- 微积分》,第3版,2017年。(Gilbert Strang)
- 微积分》,第8版,2015年。(詹姆斯-斯图尔特)
摘要
在本教程中,你发现了梯度下降的算法。具体来说,你学到了。
- 梯度下降程序
- 如何应用梯度下降程序来寻找一个函数的最小值
- 如何将最大化问题转化为最小化问题
你有什么问题吗?
请在下面的评论中提出你的问题,我将尽力回答。
鸣叫 分享 分享
The postA Gentle Introduction To Gradient Descent Procedureappeared first onMachine Learning Mastery.