随机梯度下降算法是什么?
随机梯度下降算法是基于梯度下降法中最原始的方法——批量梯度下降法(BGD)的缺点而演变出的改良 。在训练过程中常见的损失函数为:批量梯度下降法(Batch Gradient Descent,简称BGD)的方法是先求偏导,再用每个θ各自的梯度负方向依次更新每个θ:它的效果如图:可以看出是一种思路简单、易于实现的算法,并且在较少迭代次数的情况下就可以得到全局最优解,但是每次迭代都要调用全部数据,如果样本数量(上面式子中的m)较大,将会导致计算极其慢 。
基于这一缺点,随机梯度下降法(Stochastic Gradient Descent,简称SGD)被提出 。它不再每次迭代都用上所有样本,而是每次迭代仅仅对一个样本进行更新,从而达到对于数量庞大的样本只需使用其中的相对少量就把θ最优化的目的 。它的方法是在改写损失函数之后,θ的更新是基于每个样本对theta求偏导后所得梯度:相比BGD算法SGD算法速度大幅提升,几十万条样本基本只需要用上万或者只要上千条样本就饿可以得到结果 。
但是SGD伴随更多噪音、最优化方向准确度下降的问题 。效果如下图,可以看出相比于BGD,SGD迭代次数显著增加,并且并不是每一次迭代都是向着最优化方向 。同时,SGD算法在实现难度上不如BGD算法简单 。虽然理论上BGD比SGD得到全局最优,但是在生产场景中,并不是每一个最优化问题中的目标函数都是单峰的,反而是sgd更容易跳出局部最优 。
在深度学习中如何通俗理解梯度下降法?
Ayoosh Kathuria发表在Paperspace的这篇文章介绍了最经典的深度学习优化方法——梯度下降 。作者通过长长的博文,解释了梯度下降的概念、优势以及两大挑战 。文中还配有大量生动形象的三维图像,感兴趣的亲了解一下吧 。从很大程度上来说,深度学习实际上是在解决大量烦人的优化问题 。神经网络仅仅是一个非常复杂的函数,包含数百万个参数,这些参数代表的是一个问题的数学解答 。
以图像分类为例,AlexNet 就是一个数学函数,它以代表图像 RGB 值的数组为输入,生成一组分类得分的输出 。实质上,通过训练神经网络,我们是在最小化一个损失函数 。这个损失函数的值衡量了我们网络的性能在给定数据集上离完美还差多少 。损失函数简单起见,假设我们的网络只有两个参数 。实际上,这个数量是在十亿左右,但是我们在这篇文章中会坚持使用两个参数的例子,以便我们在做一些可视化的尝试时不会把自己逼疯 。
一个很棒的损失函数的轮廓可能是这样的 。损失函数的轮廓为何我说这是一个很棒的损失函数?因为拥有这种轮廓的损失函数就像圣诞老人一样,是不存在的 。然而,它仍然是一个不错的教学工具,有助于全面了解关于梯度下降的一些最重要的想法 。那么,我们从这里开始吧 。x 轴和 y 轴分别代表两个权值,z 轴代表在给定两个特定权值的情况下损失函数的值 。
我们的目标就是找到损失最小的特定权值,这个点被称作损失函数的最小值点 。你一开始就随机初始化了权值,所以你的神经网络可能会表现得像喝醉了的你一样,把猫的图片归类为人 。这样的情况对应的是损失函数轮廓中的 A 点,此处的网络性能十分差,因此损失也很高 。我们需要寻找一种能够导航到「谷底」B 点处的方法,这里的损失函数值最小 。
那么我们要怎么做呢?梯度下降初始化权值的时候,我们处于损失函数图形中的 A 点 。首先要做的就是查看 x-y 平面中所有可能的方向,看看哪个方向是损失函数的值下降最陡峭的方向 。这个就是我们必须移动的方向,它恰恰与梯度的方向相反 。梯度是高维导数的另一种说法,它给出了最陡峭的上升方向 。要想理解这个概念,请看下图 。
推荐阅读
- 论语十二章哪些是学习态度,《论语十二章》
- 如何组织教师学习感恩母亲,《感恩母亲》主题班会
- 手机的耳机优化开不了
- 有哪些实用的学习类,实用软件
- Proe/Creo学习心得,proe
- 符号学习,符号学是什么
- 良好的学习习惯要素有哪些,养成良好的学习习惯要素.ppt
- 学习幼儿园教师如何听评课讲座心得,一起来做听评课高手
- 厂规交流体会如何写,学习厂规厂纪心得体会
- 如何看待物流金融存在的风险,物流行业深度研究报告