上一个视频我展示了神经网络的结构。
我将在这里快速回顾一下,以便我们记住
它,然后我对这个视频有两个主要目标。
首先是介绍梯度下降的概念,它不仅是神经网络学习
方式的基础,也是许多其他机器学习工作方式的基础。
然后,我们将进一步深入研究这个特定网络的执
行方式,以及神经元的隐藏层最终要寻找什么。
提醒一下,我们的目标是手写数字识别的
经典示例,即神经网络的“你好世界”。
这些数字在 28x28 像素网格上呈现,每个像素都有
0 到 1 之间的某个灰度值。
这些决定了网络输入层 784 个神经元的激活。
然后,后续层中每个神经元的激活基于前一层中所
有激活的加权和,加上一些称为偏差的特殊数字。
然后你用一些其他函数来组合这个总和,比如 sigmoid
压缩或 relu,就像我在上一个视频中演示的那样。
总的来说,考虑到两个隐藏层(每个隐藏层有 16
个神经元)的任意选择,网络有大约 13,000
个我们可以调整的权重和偏差,正是这些值决定了网络到底做什么。
那么当我们说这个网络对给定数字进行分类时,我们的意思是
最后一层中 10 个神经元中最亮的神经元对应于该数字。
请记住,我们在这里想到分层结构的动机是,也许第二
层可以拾取边缘,第三层可能拾取诸如循环和线条之类
的图案,最后一层可以将这些拼凑在一起识别数字的模式。
所以在这里,我们学习网络是如何学习的。
我们想要的是一种算法,您可以向该网络显示一大堆训
练数据,这些数据以一堆不同的手写数字图像的形式出
现,以及它们应该是什么的标签,它会调整这
13,000 个权重和偏差,以提高其在训练数据上的性能。
希望这种分层结构意味着它所学到的
东西可以推广到训练数据之外的图像。
我们测试的方式是,在训练网络后,向其显示更多以前从未见过
的标记数据,然后您会看到它对这些新图像进行分类的准确性。
对我们来说幸运的是,MNIST
数据库背后的优秀人员已经收集了数以万计的手写数字图
像,每张都标有它们应该标记的数字,这使得这个例子成
为一个常见的例子。是。
尽管将机器描述为学习是一种挑衅性的说法,但一
旦你看到它是如何工作的,你就会感觉它不再像一
些疯狂的科幻小说前提,而更像是一次微积分练习。
我的意思是,基本上归结为找到某个函数的最小值。
请记住,从概念上讲,我们认为每个神经元都连接到前一层
中的所有神经元,定义其激活的加权和中的权重有点像这些
连接的强度,而偏差是该神经元是否倾向于活跃或不活跃。
首先,我们将完全随机地初始化所有这些权重和偏差。
不用说,这个网络在给定的训练示例上的表现
将非常糟糕,因为它只是做一些随机的事情。
例如,您输入 3 的图像,输出层看起来一团糟。
所以你要做的就是定义一个成本函数,一种告诉计算机的方式,
不,糟糕的计算机,输出应该具有对于大多数神经元来说是
0 的激活,但是对于这个神经元来说是
1,你给我的完全是垃圾。
从数学角度来说,您可以将每个垃圾输出激活之间的差异的平方与
您希望它们具有的值相加,这就是我们所说的单个训练示例的成本。
请注意,当网络自信地正确分类图像时,这个总和很小
,但当网络似乎不知道自己在做什么时,这个总和很大。
因此,您要做的就是考虑您可以使用的
所有数以万计的训练示例的平均成本。
这个平均成本是我们衡量网络有多糟糕
以及计算机应该感觉有多糟糕的标准。
这是一件复杂的事情。
还记得网络本身基本上是一个函数吗?
它接受 784 个数字作为输入、像素值,并输出
10 个数字作为输出,从某种意义上说,它是由所有这
些权重和偏差参数化的?
成本函数是其之上的一层复杂性。
它将大约 13,000 个权重和偏差作为输入,
并输出一个数字来描述这些权重和偏差的严重程度,
其定义方式取决于网络在数以万计的训练数据上的行为。
有很多值得思考的地方。
但仅仅告诉计算机它正在做一件多么糟糕的工作并没有多大帮助。
你想告诉它如何改变这些权重和偏差,以便它变得更好。
为了让它变得更容易,不要费力想象一个具有
13,000 个输入的函数,只需想象一个简单
的函数,其中一个数字作为输入,一个数字作为输出。
如何找到使该函数的值最小化的输入?
学微积分的学生会知道,有时您可以明确地算出最小值,但这对于
真正复杂的函数并不总是可行,对于我们疯狂复杂的神经网络成本
函数来说,在这种情况的 13,000 个输入版本中当然不行。
一种更灵活的策略是从任何输入开始,
然后找出应该采取哪个方向来降低输出。
具体来说,如果您可以计算出所在函数的斜率,则如果斜率为
正,则将输入移至左侧;如果斜率为负,则将输入移至右侧。
如果您重复执行此操作,在每个点检查新的斜率并
采取适当的步骤,您将接近函数的某些局部最小值。
您可能想到的图像是一个从山上滚下来的球。
请注意,即使对于这个真正简化的单输入函数,您也可能会遇
到许多可能的山谷,具体取决于您从哪个随机输入开始,并且
不能保证您遇到的局部最小值将是最小的可能值的成本函数。
这也将延续到我们的神经网络案例中。
我还希望您注意,如果您使步长与斜率成正比,那么当斜率趋于
最小值时,您的步数会变得越来越小,这有助于您避免过度调整。
稍微提高一下复杂性,想象一个具有两个输入和一个输出的函数。
您可能会将输入空间视为 xy 平
面,并将成本函数视为其上方的曲面。
您不必询问函数的斜率,而必须询问在该输入空间中
应该朝哪个方向迈进,以便最快地减少函数的输出。
换句话说,下坡的方向是什么?
再次,想象一个球从山上滚下来是有帮助的。
熟悉多变量微积分的人都会知道,函数的梯度为您提供了最
陡上升的方向,您应该朝哪个方向迈进以最快地增加函数。
很自然,取该梯度的负值可以为您
提供以最快的速度减小函数的方向。
更重要的是,该梯度向量的长度指示了最陡坡度的陡度。
如果您不熟悉多变量微积分并想了解更多信息,请
查看我为可汗学院所做的有关该主题的一些工作。
但老实说,现在对你我来说最重要的是,原则上存在一种计算这
个向量的方法,这个向量告诉你下坡方向是什么以及它有多陡。
如果您只知道这些并且对细节不太了解,那也没关系。
如果你能得到这个,最小化函数的算法就是计算这个梯度方
向,然后向下走一小步,然后一遍又一遍地重复这个过程。
对于具有 13,000 个输入而不是
2 个输入的函数,其基本思想相同。
想象一下将我们网络的所有 13,000
个权重和偏差组织成一个巨大的列向量。
成本函数的负梯度只是一个向量,它是这个极其
巨大的输入空间内的某个方向,它告诉您对所有
这些数字的哪些推动将导致成本函数最快速的下降。
当然,通过我们专门设计的成本函数,改变权重和偏差来减少
它意味着使网络在每条训练数据上的输出看起来不像一个由
10 个值组成的随机数组,而更像是我们想要的实际决策它使.
重要的是要记住,这个成本函数涉及所有训练数据的平均值,因此
如果将其最小化,则意味着它在所有这些样本上都有更好的性能。
有效计算梯度的算法被称为反向传播,它实际上是神经网
络学习的核心,这也是我将在下一个视频中讨论的内容。
在那里,我真的想花时间来了解给定训练数据的每
个权重和偏差到底发生了什么,试图对除了一堆相
关微积分和公式之外发生的事情给出直观的感受。
就在这里,现在,我想让你知道的最重要的事情,与实现细节无关
,是当我们谈论网络学习时,我们的意思是它只是最小化成本函数。
请注意,这样做的一个结果是,对于该成本函
数来说,具有良好的平滑输出非常重要,这样
我们就可以通过向下走一小步来找到局部最小值。
顺便说一句,这就是为什么人工神经元具有连续范围的激活
,而不是像生物神经元那样简单地以二元方式激活或不激活。
这种通过负梯度的倍数反复推动函数输入的过程称为梯度下降。
这是一种收敛到成本函数的局部最小值
的方法,基本上是该图中的一个山谷。
当然,我仍然展示具有两个输入的函数的图片,因为
13,000 维输入空间中的微移有点难以理解
,但有一种很好的非空间方式来思考这个问题。
负梯度的每个分量告诉我们两件事。
当然,符号告诉我们输入向量的相应分量是否应该向上或向下微移。
但重要的是,所有这些组成部分的相
对大小可以告诉您哪些变化更重要。
您会看到,在我们的网络中,对其中一个权重的调整
可能比对其他权重的调整对成本函数产生更大的影响。
其中一些联系对于我们的训练数据来说更重要。
因此,您可以考虑我们的令人难以置信的巨大成本函数
的梯度向量,它编码了每个权重和偏差的相对重要性,
也就是说,这些变化中的哪一个将为您带来最大的收益。
这实际上只是思考方向的另一种方式。
举一个更简单的例子,如果你有一个带有两个变量作为输
入的函数,并且你计算出它在某个特定点的梯度为
3,1,那么一方面你可以将其解释为当你'站
在该输入处,沿着这个方向移动会最快地增加函数,当您
在输入点平面上方绘制函数时,该向量就是给您直线上坡
方向的方向。
但另一种解读方式是,对第一个变量的更改的重要性
是对第二个变量的更改的 3 倍,至少在相关输入的附近,轻推
x 值会给您带来更大的影响。巴克。
让我们缩小范围并总结一下目前为止的情况。
网络本身就是一个具有 784 个输入和 10
个输出的函数,根据所有这些加权和进行定义。
成本函数是其之上的一层复杂性。
它以 13,000 个权重和偏差作为输入
,并根据训练示例输出单一的糟糕程度度量。
而成本函数的梯度又增加了一层复杂性。
它告诉我们对所有这些权重和偏差的推动会导致成本函数值
发生最快的变化,您可以将其解释为哪些权重的变化最重要。
那么,当您使用随机权重和偏差初始化网络,并根据梯度下降过
程多次调整它们时,它在以前从未见过的图像上实际表现如何?
我在这里描述的那个有两个隐藏层,每个隐藏层有 16
个神经元,主要是出于美观原因而选择的,这还不错,它
对它看到的大约 96% 的新图像进行了正确分类。
老实说,如果你看一下它搞砸的一些例
子,你就会觉得有必要稍微放松一下。
现在,如果您尝试一下隐藏层结构并进行
一些调整,您可以将其提高到 98%。
这非常好!
这不是最好的,你当然可以通过比这个普通网络更复杂来
获得更好的性能,但考虑到最初的任务是多么艰巨,我认
为任何网络在以前从未见过的图像上做得这么好都是令人
难以置信的,因为我们从未具体告诉它要寻找什么模式。
最初,我激发这种结构的方式是通过描述我们可能拥有的希望,
即第二层可能会拾取小边缘,第三层会将这些边缘拼凑在一起以
识别循环和较长的线,并且这些可能会被拼凑起来一起识别数字。
那么这就是我们的网络实际上正在做的事情吗?
好吧,至少对于这一点来说,根本不是。
还记得我们在上一个视频中如何将第一层中的所
有神经元到第二层中的给定神经元的连接权重可
视化为第二层神经元正在拾取的给定像素模式吗?
好吧,当我们实际上对与这些过渡相关的权重执行此操作时,
从第一层到下一层,而不是在这里或那里拾取孤立的小边缘,
它们看起来几乎是随机的,只是有一些非常松散的模式中间那里。
看起来,在可能的权重和偏差的深不可测的 13,000
维空间中,我们的网络发现自己有一个令人愉快的局部最小值,尽管
成功地对大多数图像进行了分类,但并没有完全拾取我们可能希望的
模式。
为了真正理解这一点,请观察输入随机图像时会发生什么。
如果系统很聪明,你可能会认为它会感到不确定,也许并没有
真正激活这 10 个输出神经元中的任何一个或均匀地激活
它们,但它却自信地给你一些无意义的答案,就好像它感觉确
定这个随机噪声是 5,就像 5 的实际图像是 5 一样。
换句话说,即使这个网络可以很好地
识别数字,它也不知道如何绘制它们。
这很大程度上是因为它的训练设置受到严格限制。
我的意思是,请站在网络的立场上思考。
从它的角度来看,整个宇宙只是由以微小网格为中
心的明确定义的不动数字组成,而它的成本函数从
来没有给它任何激励,除了对自己的决定完全有信心。
因此,以此作为第二层神经元真正在做什么的图像,您可能想
知道为什么我会出于拾取边缘和模式的动机而引入这个网络。
我的意思是,这根本不是它最终要做的事情。
嗯,这并不是我们的最终目标,而是一个起点。
坦率地说,这是旧技术,是 80 年代和 90
年代研究的那种技术,你确实需要先了解它,然后才能了解
更详细的现代变体,而且它显然能够解决一些有趣的问题,
但你越深入了解什么那些隐藏层确实在做事,但看起来却不太智能。
将焦点暂时从网络如何学习转移到你如何学习,只有当
你以某种方式积极参与这里的材料时才会发生这种情况。
我希望您做的一件非常简单的事情就是现在暂停并深入
思考一下您可以对该系统进行哪些更改以及如果您希望
它更好地识别边缘和图案等内容,它会如何感知图像。
但更好的是,为了真正理解这些材料,我强烈推
荐迈克尔·尼尔森(Michael
Nielsen)撰写的关于深度学习和神经网络的书。
在其中,您可以找到要下载和使用该示例的代码和
数据,并且本书将逐步引导您完成该代码的作用。
很棒的是,这本书是免费且公开的,所以如果您确实
从中有所收获,请考虑与我一起为尼尔森的努力捐款。
我还在描述中链接了一些我非常喜欢的其他资源,包括
Chris Ola 的精彩博客文章和 Distill
中的文章。
为了结束最后几分钟的讨论,我想跳回到我与
Leisha Lee 的采访片段。
您可能还记得上一个视频中的她,
她在深度学习方面取得了博士学位。
在这个小片段中,她谈到了最近的两篇论文,这些论文真正
深入探讨了一些更现代的图像识别网络实际上是如何学习的。
为了确定我们在对话中的位置,第一篇论文采用了一个非常擅
长图像识别的特别深层的神经网络,并且不是在正确标记的数
据集上对其进行训练,而是在训练之前对所有标签进行了洗牌。
显然,这里的测试准确性并不比随机测试更好,
因为所有内容都是随机标记的,但它仍然能够达
到与在正确标记的数据集上相同的训练准确性。
基本上,这个特定网络的数百万个权重足以让它记住随
机数据,这就提出了一个问题:最小化这个成本函数是
否实际上对应于图像中的任何类型的结构,或者只是记忆?
如果你看一下准确率曲线,如果你只是在随机数据集上进行训
练,那么该曲线几乎以线性方式缓慢下降,所以你真的很难找
到可能的局部最小值,你知道,正确的权重可以让您获得准确度。
然而,如果您实际上是在结构化数据集(具有正确标签的数据集)
上进行训练,那么一开始您会稍微调整一下,但随后您会很快下降
到达到该准确度水平,因此从某种意义上来说更容易找到局部最大
值。
因此,有趣的是,它揭示了几年前的另一篇论文,该论文对网络层进
行了更多简化,但其中一个结果是说,如果你看看优化情况,这些网
络倾向于学习的局部最小值实际上具有相同的质量,因此从某种意义
上来说,如果您的数据集是结构化的,您应该能够更容易地找到它。
我一如既往地感谢那些支持 Patreon 的人。
我之前已经说过 Patreon
是一个游戏规则的改变者,但如果没有您,这些视频
真的不可能实现。
我还要特别感谢风险投资公司 Amplify
Partners 对本系列初始视频的支持。
333
Video Language:
No content available
Content is not available for this language