700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 机器学习中的梯度下降( Gradient Descent)算法

机器学习中的梯度下降( Gradient Descent)算法

时间:2019-04-19 13:32:35

相关推荐

机器学习中的梯度下降( Gradient Descent)算法

前言

梯度下降(Gradient Descent,GD)算法主要分为三种:批量梯度下降(Batch Gradient Descent,BGD)算法、随机梯度下降(Stochastic Gradient Descent,SGD)算法、和小批量梯度下降(Mini Batch Gradient Descent,MBGD)算法。

(理解梯度下降算法之前先弄懂方向导数、偏导数、偏导函数、全导数、梯度)

参考链接:/m0_37957160/article/details/113678344?spm=1001..3001.5501

1、什么是梯度?

梯度是一个向量,其方向是函数在点P变化最快的方向,其大小是函数在点p处的最大增长率。

2、梯度下降(Gradient Descent,GD)

从四个方面一步步的去展开GD算法,1线性回归、2损失函数、3梯度、4梯度下降算法。

1线性回归

线性回归之前的博客已经讲过,此处简单略过,比如下边是一个城市人口和商场利润的散点图:

我们想要求的就是图中的红线,红线代表的就是他的一个趋势,如果我们知道了这个红线并且已知了人口,就能预测该商场的利润。所以我们就要用梯度下降的算法来求这个线性回归。

2、损失函数

首先求线性回归,我们需要去了解损失函数(通俗来形容就是所有点的误差和加在一起就是损失函数)

3、梯度

用下边这个三维的图来形容梯度:

假设把Z轴想象成我们损失函数的结果,也就是这个Z轴越大,损失越大。

假如我们随机给出一个在山坡上的位置,他在这个位置以什么样的方式才能够找到自己下山最快的一个方向呢?下到山的谷底也就是损失最小。在这一步就需要我们使用学的微积分的知识,去求函数中的两个未知数和的偏导,把这两个偏导数打包起来就是我们的梯度值。在下山的过程中每一个点的梯度是不一样的,因为他的斜面是不规则的,你每一个点对应的下去的方向他的最佳的那个方向就是用梯度去找,一点一点的去找也就是一步步的去找,直到下降到山底,就是损失最小的一个结果,我们这个算法就结束。

求偏导的算式:(求偏导是根据刚才的损失函数得出的偏导,为什么这么说呢?因为我们的z是根据损失函数得出的结果,所以我们求偏导也是求损失函数的偏导)

有几个变量就要求几个的偏导,这里是两个变量。

4、梯度下降算法

梯度下降算法的一个伪代码:

while循环

梯度=gradient()

梯度x学习率(这里的学习率理解为步伐的大小,这个学习率是需要在学习的过程中不断去调试的,如果步子太大一下子迈过了最低点,太小的话走得太慢)(式子中减去梯度乘以学习率才是下坡的;如果是加号那你是上坡的,因为梯度是带方向的)

其中while循环结束的话,可以使用损失函数去计算,(如果说上一次的损失减去这一次的损失小于0.000001,也就是说损失已经是没有办法再往下边降了,这时候while循环就可以结束了)

下面是一个真实的code小demo,根据人口和利润的一个简单code:

import numpy

结果如下:

3、三种梯度下降算法

先看一个图片带着我图中的问号去往下理解三种GD算法,其实很简单的:

图中问号的解答:第三个MBGD是使用小批量的数据梯度平均值优化参数,所以除以小批量数据的规模n,第一个BGD使用整个数据集(所有的样本数据)的平均梯度优化参数,所以除以m,第二个SGD是利用每组数据(也就是单个样本)梯度优化参数,除不除以m都可以。

3.1、批量梯度下降(Batch Gradient Descent,BGD)算法:

是运用了所有的数据集中的样本来进行计算了这样的一个梯度。相当于我在每一个epoch当中,我们计算梯度的时候我们用的这个data是所有的这样一个data,

3.2、随机梯度下降(Stochastic Gradient Descent,SGD)算法:

使用的是对每个训练样本进行参数更新,BGD是使用的是整个数据集,现在是从数据集中选取某一个训练样本来进行参数更新。

为什么方差会很大,目标函数剧烈波动?

因为实际上将每一个训练样本,当成了整个训练数据集D,(使用一个来更新所有),所以方差会很大,使得目标函数剧烈的抖动。

3.3、小批量梯度下降(Mini Batch Gradient Descent,MBGD)算法:

MBGD是衡量了整个的数据集D与单个数据集,所以实际上我们可以选择两者中间的某一个数,不是全部的数据集,也不是单一的数据,而是说我在每次更新模型的时候我使用的样本量他实际上是由n个,即我在整个的数据集样本D中选择n个。把这n个作为一个batch,作为一个小批量,作为一个Mini-batch来进行跟新。

4、三种方法对比

一般使用的是MBGD。

所以会从这三个参数来主要进行网络的优化。具体优化(翻阅课件)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。