收藏 分销(赏)

神经网络与深度学习.pdf

上传人:曲**** 文档编号:13310001 上传时间:2026-02-26 格式:PDF 页数:242 大小:18.24MB 下载积分:15 金币
下载 相关 举报
神经网络与深度学习.pdf_第1页
第1页 / 共242页
神经网络与深度学习.pdf_第2页
第2页 / 共242页


点击查看更多>>
资源描述
神经网络与深度学习Neural Networks and Deep Learning 旗权 2目录 ii关于作者 iv关于本书翻译 vi成言 vi这本书是关于什么的?viii关于练习和问题 111使用申经网终四物手教竽11.1 感知器.21.2 型神经元.61.3 神经解络的架构.91.4 T简单的分类手写数字的弼蛤.111.5 使用梯度下降算法期存习.141.6 实现我们白碰各来分类数字.201.7 迈向深度学习.302反向传播算法如何坐342.1 热身:神经褥各中使需阵快速计算输出的后去.342.2 关于代价函数的两个假设.362.3 Hadamard 乘积,sQt.372.4 反向传播的四个基本月注.372.5 四个基本律购证明(可选).412.6 反向传播算法.422.7 代码.432.8 在哪种层面上,反S向传播是快速的算法?.452.9 反向传播:全局观.463改进神经褥各的学习蹄 503.1 交叉为商代价函数.503.1.1 引)友叉燧代价函数.543.1.2 使松叉幅来对州际数字进命类.603.1.3 交叉幅的含义?源自那里?.613.1.4 柔性最大值.623.2 过度拟合和规范化.673.2.1 规范化.713.2.2 为何规范化可以帮助减轻过度拟合.753.2.3 规范化的其他技术.783.3 权重初始化.853.4 再看拳与识别问题:代码.883.5 如何选择神纳络的超参数.963.6 其它技术.1053.6.1 随机梯度下降的变化形式.1053.6.2 XX郭经元的其他模型.1083.6.3 有关神纳明各的故事.1104神经配各可以计算任何函数的可视化证明34.1 两个预先声明.1154.2 f输丽f输出的普遍性.1154.3 多个变量.1254.4 S型神经元的延伸.1334.5 修补阶跃函数.1354.6 结论.1385深度神经配各为何很难训练395.1 消失的梯度问题.1425.2 什么导致了消失的梯度问题?深度神纳修各中的梯度不稳定性.1475.3 在更加复杂褥各中的不稳定梯度.1505.4 其它深度学习的障碍.1516深度学习526.1 介绍卷积配各.1536.2 卷积神纳修各在实际中的应用.1606.3 卷积邮各的代码.1696.4 图像识别领域中的近期进展.1796.5 其他的深度学习模型.1846.6 神经解络的未来.186A是否有关于智能的T简单的算法?190B修订历史9索引 196Ill关于作者Michael Nielsen患T立量钝理学家、科学作家、计算机编程研究你可以在其主 michaelnielsen.org/了解更多信息。iv关于本书翻译开放源码项目这本书最初是我学习 Neural Networks and Deep Learning时做的中潼记,因为原书中有很多数学公式,勿以我用 latex 来编写和排版,并将所有 Latex 源码放置在 GitHub。其中部分内容取自 Xiaohu Zhu已经完成的翻译来 避免重复的工蚱。第三、第四章的部分内容和原文略有不同。原妞这两章的部分图形提供了交互式的形式,耐这本中文M中则全部换成了静态 图形。你可以在原文网口上试试调节对应图像的可操作的参数加深理解,过代阊读中文扳本也不会有任何摩得。如果你对此中译本有任何建议和意口,欢迎以issue的方式提交到GitHub项或 1-Freeman Zhang翻译团队本书由以下人员翻译及整理:Xiaohu Zhu;翻译第二 三、五、六章、附录内容。Freeman Zhang;(正在)翻译其余章节、补充缺失内容、校对、整理及排版。其他贡献者神纳修各和深度学习是内免费的在线书。本书会教会你:vi泓经网较 T中美妙的受翔学启发的编程范尤 可以让计算机从观测数据中进黄习深度学习,T强有加勺用?神经网终学习的众多技忒的集合神经牌各和深度学习前给出了在图像识别、语音识别和举 语言处理领域中很多问题的最 好解决欣。本书将会教你在神经球各和深度学习背后的众多核叱祗念。想了解本书选择的观点的更多细节,请看这至或者直接跳到第T开始你们的旅程。vii这本书是关于什么的?神经褥各是有史以来发明的最优美的编程范式之一。在传统的编程方法中,我们告诉计算机做 什么,把大问题分成许多八的、精确定义的任务,计算机可以很容易地执行。相上眨下,在神经网 络中,我们不告诉计算机如何解决我们的问题。相反,它从观测数据中学习,能生它自己勺解决 问题的自去。从数据中自动学习,听上去很有前途。然而,直到 2006年,赊JWT特殊的问题,我们仍然不知道如何训练神经解各去超越传统的方法。2006 年,被称为 深度神经琛笞 的学习技术的发现引起了变电 这些技术现在被称为深度学习。它们已被进T发展,今天深度神经涵络和深度学习在计算机视觉、I旗识别、自 然语言处理等许多重要问题上都取得了显著的性能。他们正被釐、微软、Facebook 等公司大规模部署。这本分的印勺是帮助你掌握神经网络的筋I:概念,包括现代技术的深度学习。在完成这本书的 学习之后,你将使加经樨各和深度学习来解决复杂模式识别问题。你将为使加经脚各和深度 学习打下基础,来攻坚你里设计中碰到的问题。f以原理为导向的方法本书Y坚定的信念,是让读者更好地去深刻理解神经屣各和深度学习,而不是像一张万口 的洗衣单一样模糊地列出谒段甚。如果你很好理解了核/灌念,你就可以很快地理解其他新的 推论。用编程语言砒匕把茗理解为蒙曙科新将言的核心海冷 库和数据结构。你可能仍然只是 知道,整个编程I信弟分一许多编程语器巨珅标准库一 但新的库和数据结构可以很快且容易被理解。这就意味着这本书的重点不是作为i如耐使比T特定神纳修各库的教程。如果你主要想围 绕着某个程序库的方式去淳习,那不要读这本书!找到你想学习的程序库,并通过教程不攸起来 完成。注意这点。虽然这也许能很快解决你的问题,但是,如果你想理解神经解络中究竟发号 什么,如果你想要了解今后彼卷不会过时的原理,那么只是学习些热口的程序库是不够的。你 需要领悟让神纳林各W的原理。技术来来去去,但原理是永恒的。T动手实践的方去我们将通过攻克f 具悔的问题:教会计算机识另库数字的问题,来学习神纳略和深度 viii学习的核I?里论。这个问题幅规的蹄来编程解决盟情涵难的。然而 正海我们所看到的,它 可以很好地利帝个简单的神纳略来解决,火怒计目弋,,没有特别的库。更多的是,我们会 通过多次迭代来改进程序,逐步融出经寐各和深度学习的核源想。这一动钠后莅意味看你需要T编程经验来阅读这本书。但你不必是f 专业的程序员。我 用Python 9写了代码,即使你不是用PyMon编程,努订T也应该很容易理解。通ix过这本书,我们将开发甘酒经解各库,它可以煤实验和建酒解。而有的代码都可以在这里下载。卡你完成了这本打或者你读它,徐可以建残呦学会T功能更加完善的神经网终序用P生产。类似地,对读者数学知识的需求是适度的。左大多数章节引名得T数学,但它 通常只是初等代数和函数图,我期望将数读者都能看懂。我偶尔会,偿亮级的数学,但已经 组织了材料,这样即使你理解不了有些数学细节,你还是可以跟上。使曦学较多的是第导,其中需要T多元做积分和线性代数。如果你不熟悉它们,我在第五开始讨论了如何通览本书 睡U的数学。如果忸发现它真的很难,你可以直接跳到那T的主要结果的总结。无论如何,不要T始就担心退:点。难得有f书能兼顾理论和动手实践。但是我相信,如果我们建近神经褥各 的基本思路,你会学到最好的。我们将开发实际能物代码,而不仅仅是抽象的理论,这些代码你可以探索和 扩展。这样你就可以理解其基础,不论是理论还是实践,并且扩展和提翻你的知识血viii关于练习和问题对科技类书籍来说,作者嘱咐读者必需做些练习和问题的情况并不少口。当我读到这样的警 告时,我总觉得有点奇怪。如果我不做这些练习和问题,会不会有什么不好的事情发生1当找不 是。我会获得T时间,但抵消了理解的深度。有时,这是值得的。有时不。所以这本书值得做什么?我的建议是你真的应该尝田郎6世练习,你也可以不去做承无 的问题。你应该做增好的练习,因为它们对你是否理解这些材料做了基木的检查。如果你不能很容 易地解决T练习,你可能错过了东西。当然,如果你偶尔被困在T练习上,继续 往前,你可能只是对你看到的部分有些八峋误解,也许我的措辞有差。但是如果你需要挣扎于大 多数练习,那么病可谶雳要重读T早期的材料。问题是另一喔利昭欣练习更难,你很可能会努淀解决T问题。这会有些恼 但是,当然,面初/种援忍耐是真正理解和内化问题的磔Tt径。这说,我不建议完成所有的问题。更好的是找到旧蜗项久也部例渊申凌网终来分类 你的音乐收藏。或预测股票价格。或是别的。坦妙f 你关心勺硝然后你就可以忽略这次 书中的问题,或者把它们简单地应够烬串的项目七坐。完成再多数量的词图 也不如为一 然关心的顼目含脸得多。投;M青感是精通技艺的关键。当然,你可能不会有这样一个项目,至少在当前。那很好。完成这些问题,会激发你继续努 力。书甬这本书中的素材来帮助你寻找个人创新项雷创意。IX1莫使用申经网络次利多数字校视觉系统是世界上众多奇迹之一。看看下面勺手写数字序列:50H/彳以大多数人毫不麴僦能够认出这些数字为504192。这么容易反而让人觉着迷惑了。在核的每个脑半球中,有着丁初级视觉咫层,常称为 VI,包含亿4千万个神经元及数百亿条神经元间的连接。但是枝视觉不是就只有VI,还包括整个视觉皮层72、73、V4秘V5 他们逐步地迷禳加复杂的图像处理。核怛头脑就是一台超级计算机,通过数十亿年的进化不 断地演变,最终能够极好地适应理解视觉世界的任务。识另I用导数字也不是T件简单的事。尽管 心在理解我7版磨的社1来的信息上斗障擅口,坦n乎所有的过程松律次幽。所以,我们通 常并不能体会建视觉系统解决问题的困难。如果你尝试写出计算机程序来识别诸如上面的数字,就例显感受到视觉模式识别的困难。看起来校T孑漱疑亮成的任务变得特别困难。关于我们识别形状“9微有f 圈,右/方则是 f 竖线”这样的简单直觉实际上算法上就很难轻易表达出来了。布在舜试着让这些识别规则越发精准时,就会很快陷监 种混乱的异常或者特殊情形的困境中。看起来毫程望。神经网络以另T中方式看待这乃电 其主要思想是获取熠蚂拿数字,常称作训练样 本,日闰mqq周国 12,;O/O3 国国夕团切切口囱团 田叫回国守OE凶团 引么zm引屈豆四刃制 川田切切笈国E,囱M切切团画同画画 3 8口7?6 2 4/引血四习四刃然后开发出 f 可以从这些训练样本中国舁习的系统。换二,神经网络发用厚衣来自动搀 断出识别聿数字的规则。另外,通过增加训练样本的数量,秤各可以学到更多关于拿数11.1.感知器字的知识,这箱威潴修起力自S的准确性。所以,上面列子中我四次上展出了 100个训练数字样本,也过使就奸或者罚百万或者数士亿的训练样本我们也许能够得到更好的手 写数字识别器。本章我们将实现T可以识另再与数字也襁纳修各。这个程序仅仅74行,不使用特别的神 经樨各库。然而,这个麴的网络不需要A类帮助便可以超过96%的准确率识别数字。而目,在后面勺章茬 我们会发展出将准确率提升到99。/。的技术。实际上,最优的商业神经琛各已经定湖唠被银柳邮局分另模账单核查和识别地址上了。手导识别常常被当成学习神纳修各的原型问题,因此我们聚焦在这个问题上。作为f原型,它具备一个关键点:挑战性识别手与数字井不轻松一但也不会难到需要超级复杂的解决后法,或者越大规模的计算资源。另外,这其实也是T8发展 出诸如深度学习更力幅级的技术的自去。所以,整本书我们都会持续地讨论手与数字识别问题。本/后藕B分,我们会讨论这些想法如何施其炮计算机视觉的问题或者语音、电语言处理和 其他T领城九当然,如果仅仅为了编写f 计算机程序来识别笔数字,本章的内容可以点愆演多/但前 进的道路上,我们将扩展出很多关于神经滕各的关键的思想,其中包括两个重要的大不经元(感 矢口器和s型神经元),以及标准的神经解各学习算法,即随机梯度下降算法。留台至终,我专注于解释事情 的原委,并构筑你对神经涵络的直观感受。这需要T漫口的讨论,而不是仅仅介绍些基本的技巧,但这对于更深沏理界是值得的。作为收益,在本章的最后,我们会准备好了解什么是深度学 习,以及它为什么很重要。感知器什么是神经回络?f 购,我将解旃和被称为“核初等”33申经元 感知器在 20世纪五、六十年代由科学家Frank Rosenblatt发明,其受到Warren McCulloch祕Walter Pitts早期的 工作的影响。今天,使耨经元模型更为普遍-在这本书中,以及更多现代的神鲫Q作中,主要使用勺是T中叫做 s型神经元的神经元模型。我们很快会讲到 s 型神经元。但是要理解为什么 s型神经元被定义为那样的方式,值得花点时间先来理解下感知器。减初播是身何工作的呢?-T感知器接受几个二制励入XLX2,并产生个口制输出:X321.1.感知器示例中的感知器有三个缺xX2,X3。通常可以有更多或更少输入Rosenblatt提议T 简单的规则来计算输出。他引郑重,口明,茄患应输入对于输出重要性的实数。神经元的输出,。或者1,则由分配权重后的总禾吟状内于或者灯T砌底决定。和权样,阈值实数,一个神经元的参数。睡精确的代数 形式:0 ifw jxj thresholdoutput=(1)这就是一个感知器所要做的所有事情!这是基本的数学模型。你可以将感知器看作依据权重 来作出决定的设备。让我举个例子。这不思禽真实的例子,但是容易理解,而目很快我会 有根多实际的例子。朝设这个周末就要来了,你听说你所在的城市有个奶酪节。你喜欢奶酪,正试着决定是否去参加。你也许会通过给三个因素设置权重来作出决定:1.天气氐吗?2.你的男朋友或者勺鸵友会不会甩你去23.这个节日举办的地点是否靠近交通站点?(你没有口)你可以把这三个因素对应地用二进制变量X%X2和X3来表示 例如,如果天气好,我们把X 二 1,如果不好,X1=0。类似地,如果你的男朋友或城友同去,X2=1,否则X2=0。X3 也类似地表会通噫R。现在,假设你是个嗜好奶酪的吃货,以野即使你的男朋友或访月友不感兴趣,也不管路有 多屣程口参点去。但是也许你确实厌恶糟糕的天气而且如果天气太糟你也没法出,你可以使 用感知器来经这冲决策造擞学模型。T中方式是经天气权重遂信为WL 6,其它条件为状2=2 和 W3=2o W1被赋予更附值,布天气对你很重要,比尔的男朋友或女朋友陪你,或者最近的交通站重要的 多。最后,假设你将感知器的阈值设为5。这样,感知器实现了期望的决策模型,只要就输出 1,天气所则为0。对于你的男朋友或姬友是否想去,或者附近是否有公共交通站,具输出则没有差别。随着权重和阈值的变化,你可以得到不同的决策模型。例如,假设我们把阈值改为3。那么感知器会按照天气拆,或者结合交通情况和你男朋友或姬友同曲意愿,来得出给 果。换句话说,官变成了另T不同的决策模型。降低阈值则表就更感意去。很明显,减初思不是人故出决策使用勺全部模型。但是这个例子说组了T感知器如何能权 衡不同的依据来决策。这看上去也可以加解矛i感封曲蛤能够做出微妙的决定:31.1.感知器output在这烟蛤中,第司感知器我们称其为第一层感知器一通过权衡输雉据做出三个簿简单的决定。那第二层的感知器呢?每一个都在权衡第一层的决 策结果并做出决定。以这种方式,f 第二层中的感知器可以比度一层中的做出更复杂和抽象的 决策。在第三层中的感知器甚鬟进梗复杂的决策。以这种方式,f 多层的感知器解各可以 从事复杂巧妙的决策。嫄窟堤二5,当我定义感知器时我说的是感知器只有f 输出。左上面勺 磁各中感知器看上去像是有多个输出。实际上,他们仍然是单输出的。多个感知器输出箭头仅仅 鹿干说组一个感知器的初固耐其它感知器的藏人 它松把i单个输出线条分叉相比 显得讨巧 止匕 O让我们简化感知器的数学描述。条件着与去有丝勿口,我们可以包建两个符号的变三E动来简化。第Y变动是把为状闷 改写成点乘,WX jWjXj,这里”和X对应权重和输刖悯量。第=变动是把阈值移到不等式的另一边,方用感知器的偏置b 三-threshold 代替。用(扁置而F是砌倒 那么感知器的规则可以重写为:0 ii w-x+b 0output 二(2)我们可以把偏置看作T?表示让感知器输出11或者牍I勿学的次序 即激活感知器)有多容易的估算。对于其尸个斗障天扁置的感知器来 说,输出是很容易的。但是如果偏差是f 遇A蜩负数,输出则很困难。很明显,引入能只是我们描述感知器的f 很八帆变动,但走就数后能看到它引 导更进f 的防片简化。因此,在这本书的后续部分,我们不再再阈值,而底上使用扁置。我已经描述过感知器是T罩双氟依据来做出决策的后法。感知器被采用勺另T中方式,是计算 基本的逻辑功能,即我们通常认为的运算基础,例如“与 或初与非例如,假设我们有 个两个扬邦勺感知器,每个权重为-2,整体的偏置为3。这是我们的感知器:41.1.感知器这样我们得到:输入00产生输出1,即(-2)*0+(-2)*0+3=3 是正数。双题丹行号来显式您而乘法。但是输入11产生输出0,解(-2)*1+(-2)*1+3=-是负数。如此我们的感知器实现了T与穴!夕口的例子显定我们可以需知嘲来计算简单的逻辑功能。实际上,我四宅全能睡知器 胴蛤来计算任何逻辑功能。原因是与3短是通陵宴,那用 我们能在多个与3短之上构建出任何 运算。例如,我们能需3J构建f 电路,它把两个二进制数XI和X2相力口。这需要计算按位求和,X1X2,同时当X和X2都为 时进位设为1,即进位位正好是按位乘积kX2:为了得到相等的感知器叫各,我们把所有与手口替换为感知器,其具有两个输入每个权重设为-2,整体偏置为3。结果我们得到这样白饰蛤。注意我已经把右下的与虹移动了T、,只是为了作留豆方面E 箭头:这个感知器渊络中有f 部分值得注意,最左边的感知器的输出被两次作为底部感知器的输 入 当以定义感知器模型时,我没有说过是否允许这种双输出到同一个愉方。实际上这不重要。如果我们不想允许这种形式,那可以简单把两条线合并为到T极重为-4的连接,而F是两个权重为-2的连接。(如果你还没明白,应该停下来证明这是相等的。)随着这-秋交 原先领明各看起来 辞7m苗绘的,所有未标记的权重等于-2,所有偏置等于3,标记的单个权重为-4:51.1.感知器前为it我把像X1和X2这样的输腿成感嚅樨各左边浮动的变量。实际上,可以画一层额外的感知器输入层 来月漫对输入编码:这种对有f输出但没有输沏感郑磊的标记法,是T0标准。它并不实际表示Y感知器没草输入 为了看清它,假设我们确实有f 没草输即感知器。那么加权才哨讥的会总是为零,并且感知器在b0时输出1,当bwO时输出0。那样,感知器会简单输出 f 宜定值,而不是期望值(上例中的X1)。倒不加不把输A感知器看作感知器,而是简单定义为输出期望值的特殊单元,XLXA61.2.S型神经元这个加法器的例中演示n感戈的解各如何蓊模拟包含很多与猿的电路。因为与孤 在计算机运算中的通用生,由此可以得出感知器也同秸适用勺密治。感知器运算的通雌旦是余手舞的,又是令人失望的。金是因为它告诉我们感知器联各 能和其它计算设备一样强丸 但是它也令人失望,因为它去夕不过是t中新的与痛。这简直 不算个痴闻!然而,实际情况比这一观点认为的更好。其结果是我们可以设计学习算法,危将自动谡整a工 神经元的权重和偏置。这种调整可以响应外部的刺激,而不需要T程序员的直接王预。这些学 习算法是我们能够以T心根本区孜于传统逻辑1 3式使用AJ神经元。有别于显式地设计与3咳 其它,我们的神经期各能简单地学会解决问题,这些问题有时候直接周专统的电路设计是很难 解决的。L2S型神经元学习算法听上去3翳棒。胆是我们怎样给 f 襁纳修各设计这样的算法呢?假设我们有f 感 知器阳各,想炳E来解决T问题。例如,磁各的输旃以是T匾率锹字怛扫描图像。我们想 要樨各能学习权重和偏置,这样解各的输出能正确分类这些数字。为了看清学习是怎样R作的 假设我们把配各中的权重(或者偏置)做些微峋改动。就像我们口上会看到的,这TS性会让 学习变得可能。这里简要滞我们想要的(很明显这的踣对于手导识别还是太简单了!):任何权重(或偏置)中的微d改变如果对权重(或者偏置)的微蜩改动真的能够仅仅引起输出的微变化,那我们可以利用这 T实来修改权重和偏置,让我们版蛤能够表现得像我们想要的那样。例如,假设礴各错误地 把f 9”的图像分类为飞,我们能够计算出怎么对权重和偏置做些八峋改动,这样配各能够接 近于把图像分类为。然后我们要重复这个X蚱,反复改动权重和偏置来产整好怛输出。这 时年各就在学习。问题在于当我们的隈各包含感知器时这不会发生实际上,礴各中单个感知器上 f 权重或隔 置的微敝动有时候会引起那个感知器的输出完全翻转,如2变到1。那样的翻转可能接下来引起其余涵络的行为以极其复杂的方式完全改变。因此,虽然你的“9”可能被正确分类,樨各在其它图像上的行为很可能以T很难控制的方式微完含应变。这使得逐 步修改权重和偏置来让屣各接近期望后为变得困难。也许有其它聪明的方式来解决这个问题。但 溟这不是囱碣口地能让感知需N路去学习。71.2.S型神经元我们可以引入用标为、型神经元的新的内赛经元来克服这个问题。S型神经元和感知器类似,但是被修改为权重和偏置的微敝动只引起输出的微变化。这对于让 神经元屣各学习起来是很关键的。好了,让我来描述下S型神经元。我们霞绘感知器的相同方式来箍绘、型神经元:X3正知T感知器,S 型神经元有多个输入XL但是这些输旃以取 0 和 1 中的任意值,而发便是0 或1。例如,0.638.是 f S型神经元的有效输入 同居S 型神经元对每个输相极重,WLW2,和T总的偏置,bo但是输出不是 0 或1。相反,它现在是。”x+b,这里。被称为S型函数,定义为:n|:)=-!)I+L*把7片力;Z成在一起来更清楚地说双 f 具有输入XX2,权重VJ1/J2,,和偏置b的S 型神经元的输出是:(4)1+exp(,ujij-6)初看上去,s型神经元和感知器有很附蓄A。如果你不熟悉s 型函数的代数形式,它看上去晦涩难懂湍实际上,感知器和s 型神经元之间有很多相似的地方,髓过理解上的障碍,型函数的代数形式具有很多技术细节。为了理解和感知器模型的相似性,假发z三wx+b患T很大的正数。那么C0而。a1。即,当z二 x+b很处且为正,、型神经元的输出近似为1/正好和感知器一样。相反地,假度z=wx+b患1K很大勺或教。那么e/T8,。a0。所以当z=w-x+b於一T很大勺负数,S垄铎经元财以Z必障近似 T 感知器。只有在讥、x+b取中间值时,和感知器模型有VC较珈隔离。a的代数形式戏代么?我们怎样去理解它呢?实际上,a的精确形式不重要一 重要的是这个函数绘制的形状。是这样:1顺便提r,。有时被称为逻辑函数,而这种新的神经元类型被称为逻辑神经元。既然这些术语被很多从事于神 凌元网终的人吏用 记住它是有地。然而,我们将继续使用s型这个术语。81.2.S型神经元Z这个形状是阶跃函数平滑后的版本:step function 1.0 n-0.8 0.6-0.4-0.2-0.0 1 1 1 1 1 1 1 1 1-4-3-2-1 0 1 2 3 4Z如果o实际是个阶跃函数,既然输出会依赖于w x+b是正数还是负皴,那么S 型神经元会成一盛靡。利用次颁的。函数,我47寿到f,就榛上面说明的,平滑的感知器。的确,。函数的平滑特性,正是关键因素,而不是其细部形式。a 的平滑意味着权重和偏置的微、变化,即叼 和Nb,会从神经元产生+微八蜘输出变化 output,实际上,微积分告诉我们Noug点可以很好地近似表示为:Vd output d output Air,+f AfiOw Oboutput(5)9_12 S型神经元其中求和是在所有权重上期吊勺,而d output/5w;和d output/5b符号表示output分别对于 W和b的偏导数。如果你对偏导数感到不自在,不用原慌。上油至都用扁导数的表达式看上去很复杂,实际上它的意思3寓简单(这可是个好消息):Aoutput上一个反映权重和偏置英波一即Rw和 b的线性函数。这一线性使得选择权重和偏置的微变化来达到输出的微变化的运算变得容易。所以当心型神经元有更多和感知器相同的本质的行为时,计算如何变化权重和偏置来使输出变化会更加容 易。如果对。来说星要的是形扰而不是精确的形式,那为什么要在公式(3)中给 a使用特定的形式呢?实际上,在这本书的后骨们会碰巧考虑到为其它激活函数/()输出为/(w-x+b)的神经元。当我四使用个不同的激活函数,最大的变化是公式(5)中牌隔导数的特定值的改变。事实证明当我们后面计算这些偏导数,用。会简化数学计算,这是因为指数在求导时有些可爱的属性。无论如何,。凌用经网纺的工作中被普遍使用 并且是苕衣方声我位豪常便用勺激活函数。我们应该如何解释S型神经元的输出呢?很明显,感知器和S出朝经元之间一个很大勺不同是S型神经元不仅仅输出0盛1。它可以输出0和1 之间的任何实数,所以诸如QVJ3和。689的值是合理的输出。这是3障有用勺,例如,当我们想要输出来表示Y襁经建各的图像像素输入 的平均强度。但有时候这会是乃就烦。假设我们希望跟各的输出表示输入图像是f 9”或“输入图像不是T 9”。很明显,如果输出是。或1是最简单的,就辞用感知器。但是在英僦或,我们可以设定 f 约定来解决这个问题,例如,约 定任何至少为85的输出为表示合这点。但是你知道怎么做。2实际上,当wx+b二0,感知器输出0,祎时阶跃函数输出。所以严格地说,我们需要修改阶跃函数来符101.3.神经淤络的架构,这是T 9,稹它于0.5的输出为表示,不是T9。当我们正在使再这样的约定时,我总会清楚地提出来,这样就不会引起混淆。练习 S型神经元模拟感知器,第司分膜设我们把一个感知器神各中的所有权重和偏置乘以T 正的常数,00。证明稗各的后为并没有改变。s 型神经元模拟感知器,m分展设我们有上题中相同的设置一T感知器网络。同样假设所有输N初选中。我们不需要实际的输入值,仅仅需要固定这”孙蟠设对于樨各中任何特定感知器的输入x,权重和偏置遵循w x+b 3 0。现在用 型神经元替换所有各中的感知器,并且把权重和偏置乘以T正的常量c 0。证明在 C T8的极限情况下,S型神经元随各的行为和感知器涵络的完全f。当 T 感知器的 w-x+b=0时又为什么会不同?1.3神经部络的架构在下一节我会介绍f 神州蛤,我四可以用它来很好地分类手写数字。:隹备进送一节时,解陈与以让我们命名樨各中不同部分的术语是很有帮助的。假设我们有这样颛明备output成面是过,这馆络中最左边的称为输入层,其中的神经元称为输爆经元。最右边的,即输 出层包含有输出神经元,在本例中,输出层只有f 襁经元。中间层,既然这层中的神经元既不 患Q也不是筋则被称为隐藏层。“隐藏”这一术语也许听上去有些神秘我第T欠听到这个祝 以为它必然有T澡层的哲学或数学涵意一但它实际上仅仅意味着“既非输兄心限输出”。上面的凶蛤仅隐藏层,但有些配各有多个隐藏 层。例如,广西勺四层堂各有两个隐藏层:1.3.神经涵络的架构11Q困惑的是,由于历史的原因,尽管是由、出朝经元而是感知器构成,这种多层解络有时被称为多层感知器或者MLP。在这本书中我不会使再这个术语,因为我认为这会引起混淆,但这里想提醒你它的存在。设计礴各的输入输出层通常是次较直接的。例如,假设我们尝试确定一弓序例字怛图像上 是否写的是灰地,我们可以将图林臻蝴喂我进行编码作为输爆经元来设册蛤。如 果图像是一64乂64的灰度图像,刃口么我彳门会需要4096=64义64个输彼经元,每个强度取 金和之间合适的值。输出层只需要包含Y神经元,当输出值)法0.5 时表示C输入图像不是1V 9”,大于0.5的值表示C像是1V 9”。相际襁纳蛤中输入输出层的直观设计,隐藏层的设计则堪称一艺术。特别是,施过T 简单的经验法则来总结隐藏层的设计流程是不可曲。相反,襁经涵络的研究人员已经为隐藏层 开发了许多设计最优法则,这有助于懿各怖为能符合期望的那样。例如,这些法则可以再 于帮助权衡隐藏层数量和训练屣各所需的时间开销。在本书后藏们会碰至而这样的设计最优 法贝限目前为止 我们讨论的神纳蛤,都是以上一层的输出作为下一层的输入 这种礴各被称为前 馈神纳修各。这意味加络中是没有回路的-信息总是向前传播,从不反向回馈。如果确实有回路,我们最终会有这样的情况:。函数的输N依赖于输出。这将难于理解,所以我们不允许这样的环路。然而,也有T灯申凌网终的模型 其中反馈环路是可信。这些模型被称为递归神经网络。这种模型的设计思想,是具有休眠前会在际的时间内保持激活状态的神经元。这种激 活状态可以刺激其它神经元,使其随后被激活并同样保持书宿限时间。这样会导致更多的神 经元被激活,随着时间的推移,我们得到 f 级联的神经元激活系统。因为 f 禊经元的输出只 左T殳时向后而不是即刻影响它的触人 在这个模型中回路并不会引起问题。121.4.T/W的分类手写数字的网络递归神纳蛤蟠馈洲络影响力得多,部分原因是递州建各的学习算法 作少雨为止)不够 强大 但是递JJ球格仍然很有吸引以 它们原理上皿馈配各更接近我们大脑的实际坐。并且逮 WW第解决T重要的词题这些问题如果仅仅函馈渊络来解决,则更加困难。然而为了篇幅,本书将专注于使腱L乏的前馈解各。1.4 一个篦毕花分类有数字的网络定义神经褥各后,让我们回至格识别上来。我们可以把识别拿数字怛问题分成两件问题。酰,我们希望有个方式把包含许多数字的图像分成f 列单独的图像,每个包含单个数字。例如,我们想要把图像分成六个单独的图像,方同77国区我们心可段很密易解、决这个分割的问题,但是对于计算机程序来说却是个挑战。T图像 被分割,那么程序需要把每个单独的数字分类。例如,我们想要我们的程序能识别上前的窝一 个数字S是5。我们将专注于编程解决第K问题,分类单独的数字。这样是因为,卡你有分类学及数竽 的有效与法,分割问题是不难解决的。有很多途径可以解决分割的问题。T0方法是尝试不同的 分割方式,腰攵字分类器对室T切分片段打分。如果数字分类器对室T片段的置信度都上限高,超这个分筋力式就能得到超可勺分数;如果数字分类器在F多个用殳中出现词寥 那么这 种分割方式就会停到较低的分数。这再方去的思想是,如果分类器有词丝 那么很可能是由于图 像分割出错导致的。这种思想以及它的变化形式能够比较好地解决分割问题。因此,与其关心R 割问题,我们不如把精曲阵设卜合襁经涵络来解决更有趣、更困难的问题,即手写数字的我们将使用个三层神经称各来识别单个数字:131.4.T/W的分手写数字的网络hidden layer(n=15 neurons)飕各的输入层包含给输入豫装的值进行编码的神经元。就像下一节会讨论的,我们给周蛤的训 练数据会有很多扫描得到的28x28的拿数字也图像组成,所有输入层包含有784=28x28 个神经元。为了简化,上图中我已经忽略了 784中捶。分的物友申经元。扬人(象素是灰度级油 值为 0.0 装和色 值为 1.0 而案色中间数值标逐渐暗淡的灰色邻络的第二层是一隐藏层。我们用n来表融经元的数量,我们将给n实验不同的数值。示例中用一分八、的隐藏层来说明,仅仅包含n=15个神经元。邻络的输出层包含有 10 个神经元。如果第Y根经元激活,即输出x1,那么表明襁各认为数字是T 0。如果第=神经元激活,就表明襁各认为数字是T1。依此类推。更确切地说,我们把输出神经元的输出赋予编号 0 到9,并计算出那个神经元有最解流活值。上依口,如果编号为 6的神经元激活,那么我们白饰蛤会猜到输沏数字是6。其它神经元相同。你可能会好奇为什么我们再10个输出神经元。毕竟我们的任务是能让神纳蛤告诉我们哪 个数字912一9)能和输入图直匹甄。T看起来更颦的方式就是使用4个输出神经元,小每T当做一个二迸勃。结果取决于它的输出更靠近0还是1 o四个神经元雄编码这个问题了,因为2 164 1。种可能的输入 为什么我们反点展用10个神经元呢?这样做难道效率不低吗?最终的判断是基于经验主义的:我们可以实验两种不同 蹄蛤设计,结果证明对于这个特定的问题儡,10个输出神经元的神经回络比4141.4.T/W的分类手写数字的网络个的识别效果更好。但是令我们好奇的是为什么使同10个输出神经元的神经浦络更有效呢。有没有什么启发性的月芸鸵提前告诉我们用0 个输出编码也用4个输出编码更有好呢?为了理解为什么我们这么做,我们需要从根本原理上理解神经褥各究竟在做些什么。靛考 虑有10个神经元的情况。我们陵考虑第T输出神经元,它告诉我们T数字是不是0。它能那么做是因为可以权衡从隐藏层来的信息。隐藏层的神经元在做什么呢?假设隐藏层的 第T神经元只是好检测如下的图像是否存在:为了达到这个聿,它通过对此图像对应部分的像素赋予较大W重,对其它部分赋予较口的 权重。同理,我们可以假设隐藏层的第二 第三,第四个神经元是为检测下列图法是否存在:就像你能猜到的,这四幅图像组合在巾眄成了前面显示蝴字图像中的。:0如果所有隐藏层的这四个神经元被激活那么我们就可以推断出这个数字是 0。当然,这不是我们推断出金的限卡式我们能通过很多其他合理的方式得到0(举个例说,通过上述图像的转换,或者稍微变形)。但至在这个例被我们可以推断出 扬丸勺数字是0。假设神纳蛤以上述方爱访,我勿可以绘出T貌似合理的理由去解座为什么用10 个输出而不是4个。如果我们有4个输出,超第一个M超经元将会友力去判断数字的最高有效位是什么。把数字的最高有效位 和数字的形状联系起来并不是一分简单的问题。很难想象出有什么恰当的历史原因,T数字的 幽垓素会力T 数字的最高肓效位有什么案密度系。上藤们说的只是T信发性的方法。没福代么理由表睨这个三层的神经礴各必须按照我所 描述的方式运行,段隐藏层是睡探测数字的组成形状。可育i聪明的学习算法将会找到一些 合适的权重能让我们仅仅再 4个输出神经元就行。但是这个启发性的方去通常很有效,它会节省你鹿时间去设个好怛神 经涵络结构。练习通过在上述的三层神纳路力f额外的一层就可以实现按位茄数字。额外的一层把原 来的输出层转化为r/m制表示 如下图历示 为新的输出层寻找t合适的柳童0匾 置。假定原先的3层神经褥各在第三层得到正确输出(即原来的输出层)的激活值至是0.99,得到错误的输出的激活值多是。01。old output layer151.5.使用梯度下降算法幽存习1.5度用梯度下降算法掰亍学习现在我们有了神经臊各的设计,它怎样可以学习识别数字呢?我们需要的第一样东西是Y用 来学习的数据集称为训练数据集。我们将使再数据集,其包含有数以万计的连带着正确分类器的拿数字跑扫描图像。MNIST的名士来源干NIST 一美国国家标准与技术研究所-收集的两个数据集改进后的?集。茗是敢自MNIST 的一些图像:习区正如你看到的,这些数字其实是和本章开始提到的一样。当然,当测试我们白翎蛤时我们将 要求它识别不在训练集中的图像。好际数据分为两个部分。第司分包含60,200幅施训练数据的图像。这些图像扫描自 250人勺手写阴衣,色四声T人是美国An普查局的员工 T人是高交学生 这些图像是28义28 划的灰度图爆 第国i分是10,000幅用测试数据的图像,同样是28 X 28的灰度图像。我们将领些测试数据来评估我们的神经配各学会识别数字有多好。为了让其有好 的的测试表现,测试数据取电原始训练数据不同的另外一组253人(尽管仍然分别是美国AD普查易羽寄交学生)o这有助于确保我们的系统能识别那些没有看到 训练数据的X与曲激字。我们将新号x来表示Y训练为了方便,把每个M绦薮Ax看作T 28x28=784 维的向量。每个向量中的项曾建图像中单个像素的灰度值。我/湘 y=y(x)表示对应的期望输出,这里 y 是 f 10 维的向量。例如,勿裸背一个特定的画成 6 的训练图像,x,那么 y(x)=(0,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服