[神经网络这次真的搞懂了!] (3) 使用神经网络识别手写数字 - 神经网络

英文原文:http://neuralnetworksanddeeplearning.com/
对原文的表达有部分改动

神经网络的架构

在彻底的介绍和使用神经网络的架构前,让我们对于神经网络的一些名词做定义和解释。假设我们有网络:


如前所述,这个网络中最左边的一层称为输入层,层内的神经元称为输入神经元。最右边的称为输出层,层内包含输出神经元,在这种情况下,包含单个输出神经元。中间层称为隐藏层,该层中的神经元既不是输入也不是输出。 “隐藏”这个词可能听起来有点神秘,它的真正含义只不过是“不是输入或输出”的层。上面的网络只有一个隐藏层,但有些网络包含多个隐藏层。例如,下面的四层网络有两个隐藏层:


由于历史原因,这种多层网络有时被称为多层感知器或 MLPs,尽管由 sigmoid 神经元组成,而不是感知器。

网络中输入和输出层的设计通常很简单。例如,假设我们试图确定手写图像是否描绘了“9”。设计网络的一种方式是将图像像素值(通常是 0~255)编码到输入神经元中。如果图像是 64 x 64 灰度图像,那么我们将有 4096 个输入神经元,强度在 0 和 1 之间适当缩放。输出层将只包含一个神经元,输出小于 0.5 的值表示“输入图像不是 9”,大于 0.5 的值表示“输入图像是 9”。

虽然神经网络的输入和输出层的设计通常很简单,但隐藏层的设计则是一门艺术。特别是,不可能用一些简单的经验法则来总结隐藏层的设计过程。相反,神经网络研究人员为隐藏层开发了许多启发式的设计方法,帮助人们从网络中获得他们想要的行为。例如,此类启发式方法可用于帮助确定如何在隐藏层的数量与训练网络所需的时间之间进行权衡。我们将在本系列后面遇到几个这样的设计启发式方法。

到目前为止,我们一直在讨论神经网络,其中一层的输出用作下一层的输入。这种网络称为前馈神经网络(feedforward neural networks)。这意味着网络中没有环路——信息总是前馈,从不反馈。如果我们确实有循环,我们最终会遇到 σ 函数的输入取决于输出的情况。我们不允许这样的循环。

然而,还有其他的人工神经网络模型,其中反馈回路是可能的。这些模型称为循环神经网络(recurrent neural networks)。为了限制我们的范围,在本书中我们将专注于更广泛使用的前馈网络。

一个简单的手写数字分类网络

定义了神经网络后,让我们回到手写识别。我们可以将识别手写数字的问题分成两个子问题。首先,我们想要一种将包含多个数字的图像分解为一系列单独图像的方法,每个图像都包含一个数字。例如,我们想拆分图像:


拆分成一下六个图像:


我们人类很容易解决这个分割问题,但计算机程序要正确地分解图像是具有挑战性的。一旦图像被分割,程序就需要对每个单独的数字进行分类。例如,我们希望我们的程序能够识别上面的第一个数字:



它是5。

我们将专注于编写一个程序来解决第二个问题,即对单个数字进行分类。事实证明,一旦您有一种对单个数字进行分类的好方法,分割问题就不那么难解决了。因此,与其担心分割,我们将专注于开发一个神经网络,它可以解决更有趣和更困难的问题,即识别单个手写数字。

为了识别单个数字,我们将使用三层神经网络:


网络的输入层包含对输入像素值进行编码的神经元。我们的网络训练数据将由许多 28 x 28 像素的扫描手写数字图像组成,因此输入层包含 784=28×28 个神经元。为简单起见,我省略了上图中的大部分 784 个输入神经元。输入像素是灰度的,0.0 的值代表白色,1.0 的值代表黑色,中间的值代表逐渐变暗的灰色阴影。

网络的第二层是隐藏层。我们用 n 表示这个隐藏层中的神经元数量,我们将试验不同的 n 值。显示的示例说明了一个小的隐藏层,仅包含 n=15 个神经元。

网络的输出层包含 10 个神经元。如果第一个神经元触发,即output ≈1,则表示网络认为数字是 0。如果第二个神经元触发,则表明网络认为数字是 1。并且很快。更准确地说,我们将输出神经元编号为 0 到 9,并找出哪个神经元的激活值最高。如果该神经元的编号为 6,那么我们的网络将猜测输入数字是 6。对于其他输出神经元,依此类推。

您可能想知道为什么我们使用 10 个输出神经元。毕竟,网络的目标是告诉我们哪个数字 (0,1,2,…,9) 对应于输入图像。一种看似自然的方法是仅使用 4 个输出神经元,将每个神经元视为编码二进制值(0x0001,0x0010...),具体取决于神经元的输出是接近 0 还是接近 1。四个神经元足以编码答案,因为 2^4 = 16 大于输入数字的 10 个可能值。为什么我们的网络应该使用 10 个神经元?那不是导致效率低下吗?最终的理由是经验性的:我们可以尝试两种网络设计。结果证明,对于这个特定问题,具有 10 个输出神经元的网络比具有 4 个输出神经元的网络学习识别数字性能更好。但这让我们想知道为什么使用 10 个输出神经元效果更好。是否有一些启发式方法可以提前告诉我们应该使用 10个输出神经元编码而不是 4个输出神经元编码?

要理解我们为什么要这样做,从第一原则考虑神经网络正在做什么会有所帮助。首先考虑我们使用 10 个输出神经元的情况。让我们专注于第一个输出神经元,它试图确定数字是否为 0。它通过权衡来自神经元隐藏层的证据来做到这一点。那些隐藏的神经元在做什么?(以下为假设,并不是真实情况)假设为了论证,隐藏层中的第一个神经元检测是否存在如下图像:


它可以通过对与图像重叠的输入像素进行大量加权(类似 mask),并对其他输入进行少量加权来做到这一点。以类似的方式,我们假设隐藏层中的第二、第三和第四个神经元检测是否存在以下图像:


您可能已经发觉了,这四个图像一起构成了我们在前面显示的数字行中看到的图像 “0”:


因此,如果所有四个隐藏神经元都被激活,那么我们可以得出结论,数字是 0。当然,这不是我们可以用来得出图像是 0 的唯一证据,我们合法地得到 0 还有许多其他方式(例如,通过上述图像的翻转,或轻微的扭曲)。但可以肯定地说,至少在这种情况下,我们得出的结论是输入是 0。

假设神经网络以这种方式运行,我们可以给出一个合理的解释,解释为什么网络有 10 个输出而不是 4 个更好。如果我们有 4 个输出,输出的关系会让人捉摸不定,二进制最低位并不能与图像产生什么形象的联系(每一种输出都需要使用到最低位,四位是一个整体)。

现在,综上所述,这只是一种启发式方法。没有说三层神经网络必须按照我描述的方式运行,隐藏神经元检测简单的组件形状。也许一个聪明的学习算法会找到一些权重分配,让我们只使用 4 个输出神经元。但是作为一种启发式方法,我所描述的思维方式非常有效,并且可以为您节省大量时间来设计良好的神经网络架构。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容