大家好, 欢迎回到深度学习课程｡
在今天的教程中, 我们将讨论梯度下降｡
我们之前学到的是, 为了让神经网络学习, 需要发生的是反向传播｡
这是当误差､ y hat和y之间的差或平方差的和通过神经网络反向传播时,
并且相应地调整权重｡
我们已经看到了, 今天我们将学习如何调整这些权重｡
让我们来看看｡
这是我们非常简单的神经网络, 一个感知器或单层前馈神经网络｡
这里我们可以看到整个过程, 我们有一些输入值, 然后我们有一个权重,
然后应用一个激活函数｡
我们得到白色白帽, 然后我们将其与实际值进行比较｡
我们计算代价函数｡
那么我们如何最小化代价函数呢？
我们能做些什么呢？
有一种方法是蛮力法, 我们取所有不同的权重, 然后看看哪一个最有效.
我们要做的是, 比如说, 我们试着, 比如说, 1000个砝码, 然后我们试着用这个模型｡
我们得到这样的代价函数｡
这是一个图表, Y轴是成本函数, 垂直轴是成本函数｡
在横轴上你有y帽子, 因为你可以看到公式是y帽子减去y平方, 这是成本函数的样子,
类似这样｡
基本上你会发现最好的一个在这里｡
非常简单, 非常直观的方法｡
为什么不采用这种蛮力的方法呢？
为什么不尝试1000种不同的成本､ 上千种不同的参数或权重输入, 看看哪一种效果最好呢？
这样你会找到最好的｡
如果你只有一种优化方法, 这可能会奏效｡
但是当你增加权重的数量, 增加网络中突触的数量, 你就不得不面对维度的诅咒｡
那么, 维度的诅咒是什么呢？
描述或解释这一点的最好方法是看一个实际的例子｡
还记得我们讨论神经网络如何工作时的例子吗？我们在构建或运行一个神经网络来进行资产评估｡
这是它训练好后的样子｡
如果它以前没受过训练, 那它以前就受过训练了｡
我们知道哪一个权重, 实际的神经网络看起来像这样｡
对, 因为我们有所有这些不同的可能突触, 我们仍然需要训练权重｡
这里我们总共有25个权重, 所以开始时是4乘以5, 再加上从隐藏层到输出层的5个权重,
总共是25个权重｡
让我们来看看我们怎么可能蛮力25个重量｡
这是一个非常简单的神经网络, 非常简单｡
只是一个隐藏层｡
我们怎么能强行通过这么大的神经网络呢？
好吧, 让我们做一些简单的数学计算｡
我们有25个砝码｡
这意味着如果我们有1000种组合,
我们要测试每种重量, 组合的总数是1000的25次幂或1000或10的75次幂｡
现在让我们看看, 截至2016年6月, 神威如何成为世界上最快的超级计算机｡
它将如何处理这个问题呢？
好吧, 我知道了
所以某种方式联系到光, 它看起来像这样｡
对于这台超级计算机来说, 这是一个巨大的建筑｡
它还获得了吉尼斯世界纪录, 成为最快的超级计算机｡
现在它是世界上最快的超级计算机｡
而神威虎光的运算速度可以达到93 petaFLOPS｡
一个flop代表每秒的浮点运算, 所以它每秒可以进行93次幂乘以10的15次幂的浮点运算｡
相比之下, 这就是它的速度｡
现在的普通电脑, 它们的浮点运算速度只有几个千兆位｡
所以就像那些范围远小于神威暮光｡
所以神威暮光是走在科技前沿的｡
假设它可以在一次浮点运算中完成一个测试, 一个组合｡
那是不可能的｡
这是不实际的, 因为您需要多个浮点运算来测试神经网络中的单个权重｡
但就算是让我们给予开始吧｡
假设它在理想世界中也能做到｡
它可以在一次浮动操作中完成此操作｡
每一次浮动操作可进行一次测试｡
这意味着它仍然需要10的75次幂除以93次, 10到bar, 15秒, 来运行所有这些测试,
以暴力通过网络｡
所以这意味着一秒或者大约十的58次幂, 这和十的50次幂是一样的｡
这是一个巨大的数字｡
比宇宙存在的时间还长｡
而那绝对不是简单地将这个数字如此巨大｡
在我们的优化中, 它肯定不会对我们起作用｡
好了, 我们走吧｡
这是一个没有没有｡
即使是世界上最快的超级计算机神威称号也不轻｡
所以我们必须想出一个不同的方法｡
我们如何找到最佳重量？
顺便说一句, 我们的神经网络非常简单｡
如果神经网络看起来像这样呢？
或者甚至比这更大, 那么是的, 它只是不会发生在所有, 永远｡
我们要学习的方法叫做梯度下降法｡
你可能已经听说过了｡
如果没有, 我们现在就去查｡
这就是我们的成本函数, 现在我们来看看如何找到一个更快的方法｡
最好的选择｡
所以我们从某个地方开始｡
你总得有个开始｡
我们从左上角的那一点开始, 我们要做的是,
看看我们的成本函数在那一点的角度｡
所以我们基本上这就是为什么它被称为梯度, 因为你必须微分｡
我们不会去看数学方程｡
在下一节课的最后, 我们将提供一些关于额外阅读的提示｡
但基本上你只需要进行微分, 找出特定点的斜率, 然后找出斜率是正还是负｡
如果斜率是负的, 就像这个例子, 意味着你在下坡｡
所以右边是下坡, 左边是上坡｡
从那里开始你需要向右走｡
基本上, 你需要走下坡路, 这就是我们要做的｡
房间需要一步, 对不对？
球又滚了下来｡
一样的东西｡
您计算坡度｡
这一次的斜率是正的, 意思是右边是上坡,
左边是下坡, 你需要向左走, 你把球滚下来, 再一次你计算斜率, 你把球滚到右边｡
我们走吧｡
这就是你如何找到, 简单来说, 这就是你如何找到最佳权重, 最佳情况下, 最小化你的成本函数｡
当然, 它不会像一个球｡
滚动将是一种非常曲折的方式, 但更容易记住, 把它看作一个滚动的球会更有趣｡
但在现实中, 是的, 你只是要像一步一步的方法｡
所以这是一种锯齿形的方法｡
是的, 我知道
而且还有很多其他的元素｡
比如说, 为什么为什么会下降？
为什么它不喜欢越过界线？
所以它可能是向上跳出来的, 而不是向下跳之类的｡
所以它们是你可以调整的参数｡
同样, 我们将提到在哪里可以找到更多关于这方面的信息｡
另外, 我们将在实际应用中, 以最简单的直观方法来实现这一点｡
这就是正在发生的事情｡
我们通过了解我们需要走哪条路而不是通过成千上万､ 数百万､ 数十亿､
数万亿的组合来达到目的｡
我们可以只是简单地每一次看一下哪里是哪里, 它是朝哪个方向倾斜｡
就像你想象自己站在一座山上, 你会觉得哪条路是下坡路, 无论哪条路是下坡路,
你都要一直走下去.
你会想, 你朝那个方向走了50步, 然后你再评估一下, 它会朝哪个方向走？
往这边走
好的, 现在走50步或更少｡
向那边走40步, 越靠近它就越少｡
这是一个二维空间中梯度下降的例子｡
这是一个一维的例子
这里我们有一个二维空间的梯度下降｡
正如你所看到的, 它越来越接近最小值, 这也被称为梯度下降,
因为你正在下降到成本函数的最小值｡
最后, 这是应用于三维的梯度下降｡
看起来是这样的
如果你把它投影到二维上, 你可以看到它正曲折地走向最小值｡
所以你去那里｡
这是梯度下降, 我们将讨论随机梯度下降, 这是本教程的延续,
我期待着在那里见到你｡
所以下次好好享受深度学习吧｡