【官方双语】深度学习之神经网络的结构 Part 1 ver 2.0
视频以手写数字识别为例,深入浅出地介绍了神经网络的层级结构、神经元功能及数学表达方式。
UP主: 3Blue1Brown · 时长: 19:13 · 🔗 B站原视频
发布: 2017-10-19 · 收录: 2024-09-04
标签: 深度学习 · 神经网络 · 3Blue1Brown · 机器学习 · 数学可视化
从“人类很容易”到“写程序很难”的手写数字识别
当你看到这个 3 的时候,你眼睛里触发的神经元,和你看到另一个写法的 3 时触发的神经元,其实很不一样。但你那套超级聪明的视觉皮层,会把它们都理解成同一个概念,同时也能把其他图像识别成不同的概念。
可如果我让你坐下来写一个程序:输入一个 28×28 像素的网格图像,输出一个 0 到 10 之间的数字,告诉你它认为这是什么数字,这个任务就会从“看起来太简单了”变成“难到离谱”。
机器学习和神经网络的重要性我就不多铺垫了。我想做的是:在不假设任何背景的前提下,让你看到神经网络到底是什么,并且帮助你把它正在做的事可视化——不是把它当成流行词,而是把它当成一段数学。
神经网络的分层结构:输入层、隐藏层、输出层
我们用一个已经训练好的网络来识别数字。
你把一张图像喂进去:输入层有 784 个神经元,对应 28×28 的每个像素,根据像素亮度“点亮”。这些激活值会在下一层产生某种特定的激活模式,再传到下一层,最终在输出层形成一个模式。
输出层有 10 个神经元,分别对应 0 到 9。输出层里最亮(激活值最大)的那个神经元,就是网络“选择”的结果:它认为这张图代表哪个数字。
在讲“训练怎么做”或“层与层之间如何影响”的数学之前,先聊聊:为什么我们有理由期待这种“分层”的结构是合理的。
为什么要分层:从边缘到形状到数字的抽象
很多智能任务天然就会分层抽象。
比如语音识别:从原始音频里分出不同的声音,再组合成音节,再组合成单词,再组成短语和更抽象的想法。
图像识别也类似:底层可能先识别边缘,再组合成更复杂的局部结构,再组合成数字这种更高层的概念。
一个具体例子:让第二层的某个神经元检测一块区域里的“边缘”
现在想象你在设计:一层的激活值到底如何决定下一层的激活值?你希望它能把“像素”组合成“边缘”,把“边缘”组合成“形状”,最后组合成“数字”。
聚焦到一个例子:假设第二层里有一个特定神经元,你希望它能判断图像在某个区域里有没有一条“彩色边缘”。问题是:网络需要哪些“旋钮”可以调,才能表达足够丰富的模式?不只是这个边缘,还包括任何像素模式、多个边缘组成的圈等等。
权重:每条连接都有一个数字
做法是:给这个神经元与第一层每个像素神经元之间的连接都分配一个权重(weight)。这些权重就是数字。
你可以把正权重想成“加分”,负权重想成“减分”。如果我们让几乎所有像素的权重都为 0,只让关心的那块区域有正权重,那么对所有像素做加权求和,基本就等价于把那块区域的像素值加起来。
如果你想检测“边缘”,还可以给周围像素一些负权重,这样当中间亮、周围暗时,加权和会最大。
Sigmoid:把加权和压到 0 到 1 之间
加权求和会得到任意实数,但我们希望神经元的激活值是 0 到 1 之间的数。所以常见做法是把加权和塞进一个“挤压函数”,把实数轴压缩到 0 到 1。
一个常见的函数叫 sigmoid(也叫 logistic 曲线):输入很负时输出接近 0,输入很正时输出接近 1,在 0 附近平滑上升。
偏置:控制“要多大才算激活”
除了权重,还会在加权和里额外加一个数,叫偏置(bias)。
权重决定这个神经元在“找什么像素模式”;偏置决定加权和要高到什么程度,这个神经元才会开始明显激活。
这只是一个神经元而已。第二层里的每个神经元都会连接到 784 个输入像素,每条连接都有自己的权重;每个神经元也都有自己的偏置。这一下就有很多参数要考虑。
这个网络到底是什么:一整个大函数(有 13,000 个参数)
我说这些神经元只是“装数字的东西”。更准确地说,每个神经元都是一个函数:它吃进上一层所有神经元的输出,吐出一个 0 到 1 的数。
整个网络就是一个函数:输入 784 个数,输出 10 个数。
这当然是个极其复杂的函数:有大约 13,000 个参数(权重和偏置),并且涉及很多矩阵向量乘法以及 sigmoid 的挤压。但它终究只是一个函数。
某种意义上,这种“看起来很复杂”反而让人安心:如果它更简单,我们凭什么指望它能胜任识别数字这种任务?
下一步:网络如何从数据中学到权重和偏置
它怎么只通过看数据,就学到合适的权重和偏置?
这就是下一集要讲的内容。我也会更深入展示:我们眼前这个具体网络到底在做什么。
片尾:关于订阅、Patreon,以及嘉宾 Leisha Lee
现在我大概该说“订阅以获得更新提醒”了,但说实话,大多数人也收不到 YouTube 的通知。
更现实的说法是:订阅让 YouTube 推荐算法背后的神经网络更倾向于把这个频道推荐给你。
也感谢在 Patreon 上支持这些视频的人。我这个夏天在概率论系列的进度有点慢,但做完这个项目我会回去继续更新。
最后我请到 Leisha Lee,她在深度学习理论方向做过博士研究,目前在一家叫 Amplify Partners 的风投公司工作,他们也为这个视频提供了一部分资金支持。
对话:Sigmoid 现在很少用,ReLU 更容易训练
旁白:有个点我们可以快速提一下,就是 sigmoid 函数。按我的理解,早期网络用它把相关的加权和挤压到 0 到 1 的区间,有点来自生物类比:神经元要么不活跃,要么活跃。
Leisha Lee:没错。
旁白:但现在很少有现代网络还在用 sigmoid 了。
Leisha Lee:对,这算比较 old school 了。现在 ReLU 通常更容易训练。
旁白:ReLU 是 Rectified Linear Unit?
Leisha Lee:是的。它就是取 max(0, A),这里的 A 就是你视频里讲的那种加权和加偏置。
Leisha Lee:它的动机部分也来自生物类比:如果超过某个阈值,就按线性增长(相当于恒等函数);如果没超过,就不激活,输出 0。