深度学习入门教程 第一讲

人类视觉系统是世界上众多奇迹之一。看看下面的手写数字序列:

大多数人毫不费力就能够认出这些数字为 504192。这么容易反而让人觉着迷惑了。在人类的 每个脑半球中,有着一个初级视觉皮层,常称为 V1,包含 1 亿 4 千万个神经元及数百亿条神经 元间的连接。但是人类视觉不是就只有 V1,还包括整个视觉皮层 —— V2、V3、V4 和 V5 —— 他们逐步地进行更加复杂的图像处理。人类的头脑就是一台超级计算机,通过数十亿年的进化 不断地演变,最终能够极好地适应理解视觉世界的任务。识别手写数字也不是一件简单的事。尽 管人类在理解我们眼睛展示出来的信息上非常擅⻓,但几乎所有的过程都是无意识地。所以,我 们通常并不能体会自身视觉系统解决问题的困难。

如果你尝试写出计算机程序来识别诸如上面的数字,就会明显感受到视觉模式识别的困难。 看起来人类一下子就能完成的任务变得特别困难。关于我们识别形状 —— “9 顶上有一个圈, 右下方则是一条竖线”这样的简单直觉 —— 实际上算法上就很难轻易表达出来了。而在你试着 让这些识别规则越发精准时,就会很快陷入各种混乱的异常或者特殊情形的困境中。看起来毫无希望。

神经网络以另一种方式看待这个问题。其主要思想是获取大量的手写数字,常称作训练样本,

然后开发出一个可以从这些训练样本中进行学习的系统。换言之,神经网络使用样本来自动 推断出识别手写数字的规则。另外,通过增加训练样本的数量,网络可以学到更多关于手写数字的知识,这样就能够提升自身的准确性。所以,上面例子中我们只是展出了 100 个训练数字 样本,而通过使用数千或者数百万或者数十亿的训练样本我们也许能够得到更好的手写数字识别器。

本章我们将实现一个可以识别手写数字的神经网络。这个程序仅仅 74 行,不使用特别的神 经网络库。然而,这个短小的网络不需要人类帮助便可以超过 96% 的准确率识别数字。而且, 在后面的章节,我们会发展出将准确率提升到 99% 的技术。实际上,最优的商业神经网络已经 足够好到被银行和邮局分别用在账单核查和识别地址上了。

手写识别常常被当成学习神经网络的原型问题,因此我们聚焦在这个问题上。作为一个原型, 它具备一个关键点:挑战性 —— 识别手写数字并不轻松 —— 但也不会难到需要超级复杂的解决 方法,或者超大规模的计算资源。另外,这其实也是一种发展出诸如深度学习更加高级的技术 的方法。所以,整个教程我们都会持续地讨论手写数字识别问题。本教程后面部分,我们会讨论这些想法如何用在其他计算机视觉的问题或者语音、自然语言处理和其他一些领域中。

当然,如果仅仅为了编写一个计算机程序来识别手写数字,本章的内容可以简短很多!但前 进的道路上,我们将扩展出很多关于神经网络的关键的思想,其中包括两个重要的人工神经元 (感知机和 S 型神经元),以及标准的神经网络学习算法,即随机梯度下降算法。自始至终,我专 注于解释事情的原委,并构筑你对神经网络的直观感受。这需要一个漫⻓的讨论,而不是仅仅 介绍些基本的技巧,但这对于更深入的理解是值得的。作为收益,在本章的最后,我们会准备好了解什么是深度学习,以及它为什么很重要。

1.1 感知机

什么是神经网络?一开始,我将解释一种被称为感知机的人工神经元。感知机在 20 世纪五、 六十年代由科学家 Frank Rosenblatt 发明,其受到 Warren McCulloch 和 Walter Pitts 早期著作的影响。今天,使用其它人工神经元模型更为普遍 —— 在这本书中,以及更多现代的神经网 络著作中,主要使用的是一种叫做 S 型 Sigmoid 神经元的神经元模型。我们很快会讲到 S 型神经元。但是要理解为什么 S 型神经元被定义为那样的方式,值得花点时间先来理解下感知机。

感知机是如何工作的呢?一个感知机接受几个二进制输入,x1, x2, . . .,并产生一个二进制输出:

示例中的感知机有三个输入,x1, x2, x3。通常可以有更多或更少输入。Rosenblatt 提议一个简单的规则来计算输出。他引入权重,w1, w2, . . .,表示相应输入对于输出重要性的实数。神经元的输出,0 或者 1,则由分配权重后的总和

小于或者大于一些阈值决定。和权重一样,阈值是一个实数,一个神经元的参数。用更精确的代数形式:

这就是一个感知机所要做的所有事情!

这是基本的数学模型。你可以将感知机看作依据权重来作出决定的设备。让我举个例子。这 不是非常真实的例子,但是容易理解,而且很快我们会有根多实际的例子。假设这个周末就要 来了,你听说你所在的城市有个奶酪节。你喜欢奶酪,正试着决定是否去参加。你也许会通过给 三个因素设置权重来作出决定:

1. 天气好吗? 2. 你的男朋友或者女朋友会不会陪你去? 3. 这个节日举办的地点是否靠近交通站点?(你没有⻋)

你可以把这三个因素对应地用二进制变量 x1, x2 和 x3 来表示。例如,如果天气好,我们把x1 = 1,如果不好,x1 = 0。类似地,如果你的男朋友或女朋友同去,x2 = 1,否则 x2 = 0。x3也类似地表示交通情况。

现在,假设你是个嗜好奶酪的吃货,以至于即使你的男朋友或女朋友不感兴趣,也不管路有 多难走都乐意去。但是也许你确实厌恶糟糕的天气,而且如果天气太糟你也没法出⻔。你可以 使用感知机来给这种决策建立数学模型。一种方式是给天气权重选择为 w1 = 6 ,其它条件为w2 = 2 和 w3 = 2。w1 被赋予更大的值,表示天气对你很重要,比你的男朋友或女朋友陪你,或 者最近的交通站重要的多。最后,假设你将感知机的阈值设为 5。这样,感知机实现了期望的决 策模型,只要天气好就输出 1,天气不好则为 0。对于你的男朋友或女朋友是否想去,或者附近 是否有公共交通站,其输出则没有差别。

随着权重和阈值的变化,你可以得到不同的决策模型。例如,假设我们把阈值改为 3 。那 么感知机会按照天气好坏,或者结合交通情况和你男朋友或女朋友同行的意愿,来得出结果。换句话说,它变成了另一个不同的决策模型。降低阈值则表示你更愿意去。

很明显,感知机不是人做出决策使用的全部模型。但是这个例子说明了一个感知机如何能权衡不同的依据来决策。这看上去也可以大致解释一个感知机网络能够做出微妙的决定:

在这个网络中,第一列感知机 —— 我们称其为第一层感知机 —— 通过权衡输入依据做出三 个非常简单的决定。那第二层的感知机呢?每一个都在权衡第一层的决策结果并做出决定。以这 种方式,一个第二层中的感知机可以比第一层中的做出更复杂和抽象的决策。在第三层中的感 知机甚至能进行更复杂的决策。以这种方式,一个多层的感知机网络可以从事复杂巧妙的决策。

顺便提一下,当我定义感知机时我说的是感知机只有一个输出。在上面的网络中感知机看上 去像是有多个输出。实际上,他们仍然是单输出的。多个感知机输出箭头仅仅便于说明一个感 知机的输出被用于其它感知机的输入。它和把单个输出线条分叉相比,显得讨巧些。

让我们简化感知机的数学描述。条件

看上去有些冗⻓,我们可以创建两个符号的变动来简化。第一个变动是把

改写成点乘,

这里 w 和 x 对应权重和输入的向量。第二个变动是把阈值移到不等式的另一边,并用感知机的偏置 b ≡ −threshold 代替。用偏置而不是阈值,那么感知机的规则可以重写为:

我们可以把偏置看作一种表示让感知机输出 1(或者用生物学的术语,即激活感知机)有多 容易的估算。对于具有一个非常大偏置的感知机来说,输出 1 是很容易的。但是如果偏置是一 个非常小的负数,输出 1 则很困难。很明显,引入偏置只是我们描述感知机的一个很小的变动, 但是我们后面会看到它引导更进一步的符号简化。因此,在这本书的后续部分,我们不再用阈值,而总是使用偏置。

我已经描述过感知机是一种权衡依据来做出决策的方法。感知机被采用的另一种方式,是计算基本的逻辑功能,即我们通常认为的运算基础,例如“与”,“或”和“与非”。例如,假设我 们有个两个输入的感知器,每个权重为 −2,整体的偏置为 3。这是我们的 感知机:

这样我们得到:输入 00 产生输出 1,即 (−2)∗0+(−2)∗0+3 = 3 是正数。这里我用 ∗ 符 号来显式地表示乘法。但是输入 11 产生输出 0,即 (−2) ∗ 1 + (−2) ∗ 1 + 3 = −1 是负数。如此 我们的感知机实现了一个与非⻔!

与非⻔的例子显示了我们可以用感知机来计算简单的逻辑功能。实际上,我们完全能用感知 器网络来计算任何逻辑功能。原因是与非⻔是通用运算,那样,我们能在多个与非⻔之上构建出 任何运算。例如,我们能用与非⻔构建一个电路,它把两个二进制数 x1 和 x2 相加。这需要计 算按位求和,x1 ⊕ x2,同时当 x1 和 x2 都为 1 时进位设为 1,即进位位正好是按位乘积 x1x2:

为了得到相等的感知机网络,我们把所有与非⻔替换为感知机,其具有两个输入、每个权重 设为 −2,整体偏置为 3。结果我们得到这样的网络。注意我已经把右下的与非⻔移动了一点, 只是为了在图上更方便画箭头:

这个感知机网络中有一个部分值得注意,最左边的感知机的输出被两次作为底部感知机的输 入。当我定义感知机模型时,我没有说过是否允许这种双输出到同一个地方。实际上这不重要。 如果我们不想允许这种形式,那可以简单把两条线合并为到一个权重为 −4 的连接,而不是两 个权重为 −2 的连接。(如果你还没明白,应该停下来证明这是相等的。)随着这一改变,原先的 网络看起来像下面描绘的,所有未标记的权重等于 −2,所有偏置等于 3,标记的单个权重为 −4:

目前为止我把像 x1 和 x2 这样的输入画成感知机网络左边浮动的变量。实际上,可以画一层额外的感知机 —— 输入层 —— 来方便对输入编码:

这种对有一个输出但没有输入的感知机的标记法,

是一种标准。它并不实际表示一个感知机没有输入。为了看清它,假设我们确实有一个没有输入的感知机。那么加权和

会总是为零,并且感知机在 b > 0 时输出 1,当 b ≤ 0 时输出 0。那样,感知机会简单输出一个固定值,而不是期望值(上例中的 x1)。倒不如完全不把输 入感知机看作感知机,而是简单定义为输出期望值的特殊单元,x1, x2, . . 。

通过这个加法器例子,我们演示了一个感知机网络如何用于模拟包含很多与非⻔的电路。因 为与非⻔在计算机运算中的通用性,由此可以得出感知机也同样适用的结论。

感知机运算的通用性既是令人鼓舞的,又是令人失望的。令人鼓舞是因为它告诉我们感知机 网络能和其它计算设备一样强大。但是它也令人失望,因为它看上去只不过是一种新的与非⻔。 这简直不算个大新闻!

然而,实际情况比这一观点认为的更好。其结果是我们可以设计学习算法 ,能够自动调整人工神经元的权重和偏置。这种调整可以自动响应外部的刺激,而不需要一个程序员的直接干预。 这些学习算法是我们能够以一种根本区别于传统逻辑⻔的方式使用人工神经元。有别于显式地 设计与非或其它⻔,我们的神经网络能简单地学会解决问题,这些问题有时候直接用传统的电 路设计是很难解决的。


原文发布于微信公众号 - UAI人工智能(UniversityAI)

原文发表时间:2017-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

重磅 | 苹果发布最新论文: 揭秘Siri新声音背后的技术(文末福利)

翻译 | AI科技大本营(rgznai100) 2011 年 10 月,在 iPhone 4S 的发布会,Siri 作为首款语音助手,惊艳亮相,然而 6 年过后...

2668
来自专栏cloudskyme

算法——贝叶斯

简介 学过概率理论的人都知道条件概率的公式:P(AB)=P(A)P(B|A)=P(B)P(A|B);即事件A和事件B同时发生的概率等于在发生A的条件下B发生的概...

33910
来自专栏小小挖掘机

推荐系统遇上深度学习(十一)--神经协同过滤NCF原理及实战

好久没更新该系列了,最近看到了一篇关于神经协同过滤的论文,感觉还不错,跟大家分享下。

1413
来自专栏奇点大数据

游戏AI小试牛刀(2)

上次我们说到用深度学习来做斗地主游戏AI的一个实验项目,这次我们来说说技术实现层面的一些问题。 对于这样一个应用场景来说,我们是可以把它当做类似于图片分类的场...

3315
来自专栏CDA数据分析师

MIT公开课-机器学习导论(附视频中字)

MIT6.0002课程《计算机科学与用Python编程》(Computer Science and Programming in Python)针对没有或有少量...

19210
来自专栏人工智能头条

如何入门Python与机器学习 | 赠书

1262
来自专栏新智元

【重磅】谷歌发布图像超分辨率 RAISR:时间提高 100 倍,可实时在移动端运行

【新智元导读】谷歌博客今天便忙不迭地更新,介绍他们最新的图像高清生成技术 RAISR。据悉,RAISR 生成图像的质量比当前超分辨率技术更好、时间最高快 100...

3446
来自专栏机器之心

从技术到产品,苹果Siri深度学习语音合成技术揭秘

选自苹果 机器之心编译 参与:蒋思源、李亚洲、路雪 Siri 是一个使用语音合成技术与人类进行交流的个人助手。从 iOS 10 开始,苹果已经在 Siri 的语...

2707
来自专栏机器之心

入门 | 我们常听说的置信区间与置信度到底是什么?

选自TowardsDataScienceR 作者:Dima Shulga 机器之心编译 参与:程耀彤、思源 机器学习本质上是对条件概率或概率分布的估计,而这样的...

2665
来自专栏量子位

大神Hinton的Capsule论文终于公开,神经网络迎来新探索

夏乙 问耕 编译整理 量子位 出品 | 公众号 QbitAI ? “我的观点是把它全部抛掉,重头再来。” 今年9月的一次大会上,大神Geoffrey Hinto...

3285

扫码关注云+社区