[深度学习]什么叫梯度学习

目录

1.梯度下降的定义

2.梯度下降学习的原理

2.1 微分

2.2梯度

3.批量随机下降

4.随机批量下降


1.梯度下降的定义

梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解无约束优化问题,如机器学习算法的模型参数,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。

如下面的二次函数,如何求得它的最值?

[深度学习]什么叫梯度学习_第1张图片

 

通常的做法是先求导,然后令,求得x=0,于是在x=0就是原函数的最小值(即最优解)。但是计算机不是人,在没有给它具体规则时,它就是一台冷冰冰的机器,什么都不懂。

 的图像:

[深度学习]什么叫梯度学习_第2张图片

 

我们知道:导数为非负时,原函数是递增的;导数为非时原函数是递减的。

现在,我们看下计算机是怎么工作的呢?

 

1、随机一个变量x,假如加入x=10, ,原函数递增且f(10)=100

2、取一个比x小的数x1=x-1,,原函数递增且f(9)=81

3、取一个比x1小的数x2=x1-1, ,原函数递增且f(8)=64

         ……

n、取xn=0,,原函数递增且f(0)=0

n+1、取xn+1 =-1;,原函数递减且f(-1)=1

 

在每一次计算中,同时比较f(x)和上一次的值,如果小于上一个值,继续往下计算,如果大于上一个值,证明已经获得局部最优值,可以停止计算。其中x每次减少的值在实际中可以通过自动学习获取得到;有两种方法可以作为计算结束的条件,指定循环周期或比较f(x)不再减少。

这就是梯度学习的简单解释,那么梯度的真正原理是什么呢?

2.梯度下降学习的原理

梯度下降要解决的问题有两个:

  1. 变量往哪个方向改变,损失函数会下降得最快?
  2. 变量改变多大,才使损失函数下降明显,最快地使目标函数达到最优值,且不会错过了最优值?

2.1 微分

微分的意义通常有两个:

1)在函数图像中,表示某点的切线斜率

2)函数的变化率

比如,单变量的微分:

[深度学习]什么叫梯度学习_第3张图片

多变量的微分,即对每个变量的微分:

[深度学习]什么叫梯度学习_第4张图片

2.2梯度

梯度就是对损失函数的各个变量进行微分后的向量,如:

损失函数:

各个变量的微分:

[深度学习]什么叫梯度学习_第5张图片

梯度表示:

  

可以看出,在单变量函数中,梯度就是函数的微分;而在多变量函数中,梯度是一个向量,这个向量各项值是各个变量的微分值。因为向量有方向,这个方向代表的就是函数在给定点上升最快的方向。同样在梯度前面加负号,就表示这个方向是函数给定点下降最快的方向。

于是,就解决了第一个问题:变量往哪个方向改变,损失函数会下降得最快?

下面看变量 的变化情况,假如表示变量所在的位置为 那么第 位置可以表示为:

即现在的位置时  ,那么函数从这个点走到最优值那个点,那么沿着梯度的反方向,走一步的步长。也就是α ,在梯度下降学习中成为学习率,它不能太大也不能太小;太大了可能错误最优值,太小了,可能计算太慢。

   于是,我就解决了第二个问题:变量改变多大,才使损失函数下降明显,最快地使目标函数达到最优值,且不会错过了最优值?

回到  的例子

微分:

假如我们设置学习率α=0.2 ,这个可以随意设置。

梯度下降的计算公式为:

那么梯度下降迭代计算的过程如下:

[深度学习]什么叫梯度学习_第6张图片

 

我们看一个多变量的例子:

假如:

[深度学习]什么叫梯度学习_第7张图片

 

3.批量随机下降

使用整个数据集(the complete dataset)去计算代价函数的梯度。即每次使用全部数据计算梯度然后更新参数,批量梯度下降法会很慢,并且很难处理不能载入内存的数据集。

计算步骤:

1)从硬盘读取全部数据到内存中;

      2)每次一次计算完求和后,就进行参数更新;

     3) 然后重复上面每一步;

4.随机批量下降

批量梯度下降法计算较慢,收敛时间长。随机梯度下降法达到更快的计算,收敛时间更短。随机梯度下降法的第一步是随机化整个数据集,在每次迭代仅选择一个训练样本去计算代价函数的梯度,然后更新参数。即使是大规模数据集,随机梯度下降法也会很快收敛。随机梯度下降法得到结果的准确性可能不会是最好的,但是计算结果的速度很快。计算步骤:

  1)随机初始化参数;

       2) 第一步:挑选第一个训练样本并更新参数;

       3. 第二步:选第二个训练样本,继续更新参数;

       4. 然后进行第三步…直到第n步;

       5. 直到达到全局最小值

 

你可能感兴趣的:(tensorflow,深度学习,人工智能)