大家好, 欢迎回到深度学习课程｡
今天我们要讲的是随机梯度下降法｡
之前我们学习了梯度下降, 我们发现这是一个非常有效的方法来解决我们的优化问题,
我们试图最小化成本函数｡
我们基本上需要10到57年的时间才能在几分钟或几小时内或一天左右的时间内解决一个问题｡
这真的有助于加快速度, 因为我们可以看到哪条路是下坡路, 我们可以朝着那个方向走, 采取步骤,
更快地达到最低点｡
但是梯度下降的方法需要代价函数是凸的｡
正如你在这里看到的, 我们特别选择了一个凸代价函数｡
基本上凸的意思是这个函数看起来和我们现在看到的很相似, 它只是凸向一个方向, 它本质上有一个全局最小值,
这就是我们要找到的｡
但是如果我们的函数不是凸的呢？
如果我们的代价函数不是凸的呢？
如果它看起来像这样呢？
首先, 这怎么可能？
这是有可能的, 因为如果我们首先选择一个代价函数, 它不是y和y的平方差,
或者如果我们确实选择了代价函数, 它是这样的, 但是在多维空间中,
它实际上可以变成不是凸的｡
那么在这种情况下, 如果我们尝试使用正态梯度下降法会发生什么呢？
这种事是有可能发生的｡
我们可以找到代价函数的局部最小值而不是全局最小值｡
所以这一个是最好的, 我们找错了｡
因此我们没有正确的重量｡
我们没有一个优化的神经网络, 我们有一个低于标准的神经网络｡
那么在这种情况下我们该怎么做呢？
这里的答案是随机梯度下降｡
结果表明, 随机梯度下降法并不要求代价函数是凸的.
让我们来看看, 我们讨论过的正态梯度下降和随机梯度下降之间的两个区别｡
正常的梯度下降就是我们把所有的行, 都插入到神经网络中｡
这里我们又把神经网络复制了几次, 但是每次行都被插入到同一个神经网络中｡
所以只有一个神经网络｡
这只是为了形象化｡
一旦我们把它们插进去,
我们就可以根据右边的公式计算出成本函数, 并查看底部的图表, 然后我们调整权重｡
这就是所谓的梯度下降法, 也可以称之为批梯度下降法.
所以我们从样本中取出一整批, 我们应用它, 然后运行它｡
这里的随机梯度下降法稍有不同｡
我们一行一行地取, 所以我们取这一行, 我们运行我们的神经网络, 然后我们调整权重｡
然后我们移到第二行, 我们取第二行, 我们运行我们的神经网络, 我们查看成本函数,
然后我们再次调整权重｡
然后我们再坐另一排, 坐第三排｡
我们运行神经网络｡
我们来看看代价函数｡
我们只是重量｡
因此, 我们基本上是在每一行之后调整权重, 而不是一起执行所有操作,
然后根据不同的方法调整权重｡
现在我们来比较一下这两个｡
他们来了｡
这就是视觉记忆的方法｡
所以你有一个批量梯度下降, 在你运行完权重之后, 在你运行完神经网络中的所有行之后,
你正在调整权重｡
然后基本上你调整权重, 然后你再运行整个过程, 迭代, 迭代, 迭代｡
在随机梯度下降法中, 你一次运行一行然后调整权重, 调整权重, 调整权重,
然后你一遍又一遍地做所有的事情.
这就是所谓的这个范畴｡
用这种方法｡
主要的两个区别是随机梯度下降法帮助您避免了寻找局部极值或局部最小值而不是整体全局最小值的问题｡
简单地说, 原因是SGD或随机梯度下降法有更高的波动, 因为它可以承受｡
它一次迭代一次或者一行,
因此波动更大, 它更有可能找到全局最小值, 而不仅仅是局部最小值｡
随机梯度下降法的另一个优点是比批量梯度法更快｡
就像你的第一印象可能是因为它做的每一个单一的｡
一个一个来
它速度较慢, 但实际上速度更快, 因为它不需要将所有数据加载到内存中,
然后运行并等待所有这些数据一起滚动｡
它可以一个一个地运行它们｡
所以这是一个更简单的算法｡
从这个意义上说, 它要快得多｡
所以虽然它比批梯度下降法有更多的优点, 但在这些意义上它比批梯度下降法有更多的优点｡
批处理梯度下降法的主要优点是它是一种确定性算法, 而不是随机梯度下降法,
它是一种随机算法,
也就是说, 它是随机的,
只要神经网络的初始权重相同, 每次运行批处理梯度下降法时, 都会得到相同的迭代次数, 的结果与您的权重更新方式相同｡
首先对随机梯度下降法进行了研究｡
因为这是一种随机方法, 所以你不会得到它｡
您可能是随机选取行, 并且以随机方式更新神经网络｡
因此每次你运行随机梯度下降法时,
即使你在开始时有相同的权重, 你也会有不同的过程和不同的迭代｡
这就是随机梯度下降法的简单含义｡
还有一种介于两者之间的方法, 叫做迷你批次梯度下降法, 你可以将两者联合收割机运行,
而不是运行整个批次, 或者一次运行一个, 而是运行一批行, 可能是5到10行,
100行矿物.
你决定设置, 你运行那些行数是时间｡
然后你更新你的体重, 你更新你的体重, 等等｡
这就是所谓的小批量梯度下降法｡
如果你想了解更多关于梯度下降, 有一个伟大的文章, 你可以看看｡
它被称为神经网络和Python的13行第二部分梯度下降由安德鲁特拉斯克和下面的链接｡
这是在GitHub 2015文章写得非常好, 非常简单的条款｡
它有一些有趣的哲学思想, 或者只是有趣的想法, 关于如何应用梯度下降,
它的优点和缺点是什么, 以及在某些情况下如何做？
所以他有一些非常酷的技巧, 窍门和窍门, 非常容易阅读｡
所以一定要来看看｡
还有一个, 读起来更重一点｡
对于那些对数学感兴趣的人, 想深入了解数学的人来说, 为什么梯度下降是如此的特殊呢？
驱动渐变的公式是什么？它是如何计算的？
看看这篇文章或者这本书｡
这是一本免费的在线书籍, 叫做神经网络和深度学习, 作者是迈克尔·尼尔森2015年的书｡
只是基本上都是在线的｡
你可以去那里看看｡
再一次, 非常柔和地介绍了数学｡
但后来对于数学｡
但是当你阅读这篇文章的时候, 数学是相当沉重的｡
但与此同时, 它让你进入那种情绪｡
我认为它有一个热身的章节, 你首先用数学热身, 然后你跳进他们｡
对数学很感兴趣, 那么这就是要去的文章, 我们就去吧｡
简单地说, 这就是大下降和随机梯度下降的区别, 以及它们是如何工作的｡
在这一点上, 我们将结束今天的教程｡
我期待着在下一场比赛中见到你｡
在此之前, 请尽情享受深度学习｡