[机器学习]—梯度下降法

机器学习中往往需要刻画模型与真实值之间的误差,即损失函数,通过最小化损失函数来获得最优模型。这个最优化过程常使用梯度下降法完成。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。

1. 梯度

解释梯度之前需要解释导数与偏导数。导数与偏导数的公式如下:

导数与偏导数都是自变量趋于0时,函数值的变化量与自变量的变化量的比值,反应了函数f(x)在某一点沿着某一方向的变化率。导数中该方向指的是x轴正方向,偏导数中指的是向量x所在空间中一组单位正交基()中某一个基方向的变化率。因为x的坐标已知,所以这组正交基唯一,也就是表示x的坐标轴,而偏导数就是因变量与自变量在x的坐标轴正方向的变化量之比。

上面叙述的变化率都是函数在某一点上函数沿特定方向的变化率,如导数中指x轴正方向,偏导数中指自变量x所在空间中一组正交基的某一个方向。那么如何表示因变量变化量在某一点沿任意方向上与自变量变化量的比值呢?这里就需要使用方向导数,方向导数定义如下。

偏导数是函数某一点沿着任意方向上因变量与自变量的变化率的比值,是一个向量,有大小也有方向,那么既然偏导数既有大小也有方向,则肯定存在一个偏导数,其模值(即大小)最大。这个最大的模值就是梯度的模值,模值最大的偏导数的方向就是梯度的方向。梯度的定义如下:

2. 梯度下降

前面说到梯度方向是函数最大偏导数的方向,因此沿着与该方向相反的方向,必然可以达到函数的一个极小值点。以一元函数为例,其导数方向就是梯度方向,因此为了求取如下图所示的函数的极小值,只需要沿着导数相反的反向向下递归即可。如图所示,计算起点在一个较高的点,计算当前点梯度,沿着与梯度相反的方向一步步向下进行,最终会达到函数的极小值点。

然后图中的情况比较特殊,因为图中函数只有一个极值点,这个极值点也就是函数的最小值点,因此梯度下降法递归到极值点后,也就得到了函数的最小值。但是如果函数存在多个极小值点(非凸函数),使用梯度下降法可能使算法陷入局部最小值点,从而得不到全局最优解。

3. 梯度下降法推导

梯度下降法一般用于机器学习算法中,用于最小化损失函数,得到最优的预测模型,这个预测模型就是假设函数,对于线性回归来说,一般为以下形式:

写成矩阵形式:

其中

线性回归中损失函数常使用模型预测值与真实值差值的平方刻画,如下:


写成矩阵形式有

其中是一个mxn矩阵,矩阵每一行都是一个输入向量,机器学习中每一行即为一个输入样本的特征,每个点即为输入样本对应的标签。

为了使用梯度下降法计算的最小值,需要先计算损失函数关于的的偏导数,根据矩阵的求导公式,有下式成立:

因为,则:

所以:

于是对于,有:

对于则有:

根据式(2)式(3)及链式法则,可得:

上式即为损失函数对于参数的导数,根据梯度下降法,设算法学习率为,则参数的更新策略为:

4. 几种常见的梯度下降法

式(1)为模型的损失函数,矩阵形式的损失函数中,为mxn大小的矩阵,从代数形式的损失函数定义中,可知m为梯度下降法一次输入的样本个数,n为样本特征向量的个数,几种梯度下降法就是以m的个数来区分的,分别为:、

1) 批量梯度下降法。这种情况下m为所有训练样本的大小,即一次将所有样本特征向量模型中,并根据模型结果,计算损失函数,更新参数,直到达到设定的最优解条件。优点是可以利用所有样本的数据,计算全局梯度,,从而减小算法了陷入局部极小值情况的出现。而且由于批量梯度下降法使用了所有样本的信息,算法进行梯度下降时,计算的方向与实际样本空间中梯度方向相近,使得算法能较快收敛;缺点是计算量大,计算速度慢,对于海量数据集,可能出现内存不足的情况。

2) 随机梯度下降法。批量梯度下降法中一次性用矩阵乘法将所有样本的特征向量代入模型中计算,而随机梯度下降法与之相反,每次只取一个样本代入模型计算更新参数,即m=1,这个样本通过随机的方式从输入样本中选择。这种方法优点是计算速度快;缺点是一次只使用一个样本进行计算梯度,则每次迭代的过程中,算法梯度下降的方向受当前样本影响极大(梯度下降时并不能总沿着真实梯度方向进行,而是四处乱撞,因为每个样本对应的梯度可能会有很大的差别,如前一个样本计算梯度方向0°,算法沿着0°的方向运行,然后当前样本计算得到梯度方向为150°,则算法又会往刚才几乎相反的方向运行,产生震荡),会造成震荡,使算法收敛速度减慢,还有可能使算法陷入局部极小值,得不到最优解。

3) 小批量梯度下降法。前两种梯度下降法都较为极端,实际运用中常从样本空间中选取一部分样本(一个batch)作为输入,计算一次后再选择一部分样本输入,计算更新参数,直到满足梯度条件。这种算法兼顾了批量梯度下降法和随机梯度下降法的优点,实际应用中常使用这种方法。

?

参考:

1.梯度下降(Gradient Descent)小结:https://www.cnblogs.com/pinard/p/5970503.html

2. ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent): https://blog.csdn.net/walilk/article/details/50978864

3. 梯度下降百度百科: https://baike.baidu.com/item/梯度下降/4864937?fr=aladdin

4. 梯度百度百科: https://baike.baidu.com/item/梯度/13014729?fr=aladdin

5. 张凯院:《矩阵论》

原文地址:https://www.cnblogs.com/br170525/p/9033942.html

时间: 2024-11-04 21:17:31

[机器学习]—梯度下降法的相关文章

机器学习中常见问题_几种梯度下降法

一.梯度下降法 在机器学习算法中,对于很多监督学习模型,需要对原始的模型构建损失函数,接下来便是通过优化算法对损失函数进行优化,以便寻找到最优的参数.在求解机器学习参数的优化算法中,使用较多的是基于梯度下降的优化算法(Gradient Descent, GD). 梯度下降法有很多优点,其中,在梯度下降法的求解过程中,只需求解损失函数的一阶导数,计算的代价比较小,这使得梯度下降法能在很多大规模数据集上得到应用.梯度下降法的含义是通过当前点的梯度方向寻找到新的迭代点. 基本思想可以这样理解:我们从山

机器学习之梯度下降法

在吴恩达的机器学习课程中,讲了一个模型,如何求得一个参数令错误函数值的最小,这里运用梯度下降法来求得参数. 首先任意选取一个θ 令这个θ变化,怎么变化呢,怎么让函数值变化的快,变化的小怎么变化,那么函数值怎么才能变小变得快呢,求偏导,刚开始不太清楚,就是要求每一个θ,看看错误函数在哪一个方向上变化得快,所有θ的分量集合起来,就能让J(θ)变化变小的最快.

机器学习初学心得——梯度下降法

回归与梯度下降: 回归在数学上来说是给定一个点集,能够用一条曲线去拟合之,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如locally weighted回归,logistic回归,等等,这个将在后面去讲. 用一个很简单的例子来说明回归,这个例子来自很多的地方,也在很多的open source的软件中看到,比如说weka.大概就是,做一个房屋价值的评估系统,一个房屋的价值来自很多地方,比如说面积.房间的数量(几室几厅).地段.朝向等等,

Stanford机器学习课程笔记——单变量线性回归和梯度下降法

Stanford机器学习课程笔记--单变量线性回归和梯度下降法 1. 问题引入 单变量线性回归就是我们通常说的线性模型,而且其中只有一个自变量x,一个因变量y的那种最简单直接的模型.模型的数学表达式为y=ax+b那种,形式上比较简单.Stanford的机器学习课程引入这个问题也想让我们亲近一下machine learning这个领域吧~吴恩达大神通过一个房屋交易的问题背景,带领我们理解Linear regression with one variable.如下: 不要看这个问题简答,大神就是大神

Hulu机器学习问题与解答系列 | 二十四:随机梯度下降法

Hulu优秀的作者们每天和公式抗争,只为提升你们的技能,感动的话就把文章看完,然后哭一个吧. 今天的内容是 [随机梯度下降法] 场景描述 深度学习得以在近几年迅速占领工业界和学术界的高地,重要原因之一是数据量的爆炸式增长.如下图所示,随着数据量的增长,传统机器学习算法的性能会进入平台期,而深度学习算法因其强大的表示能力,性能得以持续增长,甚至在一些任务上超越人类.因此有人戏称,"得数据者得天下". 经典的优化方法,例如梯度下降法,每次迭代更新需要用到所有的训练数据,这给求解大数据.大规

谷歌机器学习速成课程---3降低损失 (Reducing Loss):梯度下降法

迭代方法图(图 1)包含一个标题为"计算参数更新"的华而不实的绿框.现在,我们将用更实质的方法代替这种华而不实的算法. 假设我们有时间和计算资源来计算 w1 的所有可能值的损失.对于我们一直在研究的回归问题,所产生的损失与 w1 的图形始终是凸形.换言之,图形始终是碗状图,如下所示: 图 2. 回归问题产生的损失与权重图为凸形. 凸形问题只有一个最低点:即只存在一个斜率正好为 0 的位置.这个最小值就是损失函数收敛之处. 通过计算整个数据集中 w1 每个可能值的损失函数来找到收敛点这种

机器学习:梯度下降法(调试、其它思考)

一.梯度下降法的调试 1)疑问 / 难点 如何确定梯度下降法的准确性? 损失函数的变量 theta 在某一点上对应的梯度是什么? 在更负责的模型中,求解梯度更加不易: 有时候,推导出公式后,并将其运用到程序中,但当程序运行时,有时对梯度的计算可能会出现错误,怎么才能发现这种错误? 2)梯度下降法的调试思路 关于导数的理解,参考:高数:关于导数: 调试思路: 如果机器学习的算法涉及到求解梯度,先使调试方式求出梯度,提前得到此机器学习算法的正确结果: 用数学推导方式(根据算法模型推导出的求解梯度的公

机器学习入门之单变量线性回归(上)——梯度下降法

在统计学中,线性回归(英语:linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合.只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归(multivariate linear regression).——————维基百科 一直以来,这部分内容都是ML的敲门砖,吴恩达教授在他的课程中也以此为第一个例子,同时,本篇也参考了许多吴教授的内容. 在这里,我简单把

【机器学习】机器学习入门05 - 梯度下降法

1. 梯度下降法介绍 1.1 梯度 在多元函数微分学中,我们都接触过梯度(Gradient)的概念. 回顾一下,什么是梯度? 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模). 这是百度百科给出的解释. 事实上,梯度的定义,就是多元函数的偏导数组成的向量.以二元函数 f(x,y) 为例.fx, fy 分别表示 f  对x,y的偏导数.则 f 在(x, y)处的梯度grad f = ( f