收藏 分享(赏)

神经网络和深度学习.pdf

上传人:jintaihu 文档编号:5712547 上传时间:2022-06-16 格式:PDF 页数:208 大小:3.45MB
下载 相关 举报
神经网络和深度学习.pdf_第1页
第1页 / 共208页
亲,该文档总共208页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、神经络与深度学习Neural Networks and Deep Learning(美)Michael Nielsen 著Xiaohu Zhu译Freeman ZhangAugust 8, 2016Version: 0.3版权本书英原版地址为:http:/ 。在学术著作中请引英原为:Michael A. Nielsen, “Neural Networks and Deep Learning”,Determination Press, 2015。英版及本书采 Creative Commons Attribution-NonCommercial 3.0 Unported License 许可协议。

2、这意味着你可以由地拷、分发、扩展本书内容,但不得出售。如果你对商业途感兴趣,英版请联系作者,中版请联系翻译团队。i录版权i录ii关于作者iv关于本书翻译v前vi这本书是关于什么的?vii关于练习和问题ix1使神经络识别写数字11.1感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21.2S 型神经元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3、61.3神经络的架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91.4个简单的分类写数字的络. . . . . . . . . . . . . . . . . . . . . . . . . . . . .111.5使梯度下降算法进学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141.6实现我们的络来分类数字 . . . . . . . . . . . . . . . . . . . . . .

4、. . . . . . . . . .201.7迈向深度学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302反向传播算法如何作342.1热:神经络中使矩阵快速计算输出的法 . . . . . . . . . . . . . . . . . . . .342.2关于代价函数的两个假设. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362.3Hadamard 乘积,s t . . . . . . .

5、. . . . . . . . . . . . . . . . . . . . . . . . . . . .372.4反向传播的四个基本程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372.5四个基本程的证明(可选) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412.6反向传播算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6、. . .422.7代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .432.8在哪种层上,反向传播是快速的算法? . . . . . . . . . . . . . . . . . . . . . . . .452.9反向传播:全局观 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .463改进神经络的学习法503.1交叉熵代价函数 . . . . . .

7、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50ii录3.1.1引交叉熵代价函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .543.1.2使交叉熵来对 MNIST 数字进分类 . . . . . . . . . . . . . . . . . . . . . .603.1.3交叉熵的含义?源哪? . . . . . . . . . . . . . . . . . . . . . . . . . . . .613.1.4柔性最值

8、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .623.2过度拟合和规范化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .673.2.1规范化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .713.2.2为何规范化可以帮助减轻过度拟合 . . . . . . . . . . . . .

9、 . . . . . . . . . . .753.2.3规范化的其他技术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .783.3权重初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .853.4再看写识别问题:代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .883.5如何选择神经络的超参数 . . .

10、. . . . . . . . . . . . . . . . . . . . . . . . . . . . .963.6其它技术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053.6.1随机梯度下降的变化形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053.6.2神经元的其他模型. . . . . . . . . . . . . . . . . . . . . . . . . . .

11、 . . . 1083.6.3有关神经络的故事 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104神经络可以计算任何函数的可视化证明1134.1两个预先声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.2个输和个输出的普遍性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.3多个输变量 . . . .

12、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254.4S 型神经元的延伸 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1334.5修补阶跃函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354.6结论 . . . . . . . . . . . . . . . . .

13、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385深度神经络为何很难训练1395.1消失的梯度问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1425.2什么导致了消失的梯度问题?深度神经络中的梯度不稳定性 . . . . . . . . . . . . 1475.3在更加复杂络中的不稳定梯度. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14、1505.4其它深度学习的障碍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1516深度学习1526.1介绍卷积络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536.2卷积神经络在实际中的应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1606.3卷积络的代码 . . . . . . . . . .

15、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1696.4图像识别领域中的近期进展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1796.5其他的深度学习模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846.6神经络的未来 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16、 . . . . . . . . . . 186A是否有关于智能的个简单的算法?190B致谢195C修订历史196索引197iii关于作者Michael Nielsen 是位量物理学家、科学作家、计算机编程研究员。你可以在其主 http:/michaelnielsen.org/ 了解更多信息。iv欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!关于本书翻译开放源码项这本书最初是我学习 Neural Networks and Deep Learning 时做的中笔记,因为原书中有很多数学公式,所以我 LATEX 来编写和排版,

17、并将所有 LATEX 源码放置在 GitHub。其中部分内容取 Xiaohu Zhu 已经完成的翻译来避免重复的作。第三、第四章的部分内容和原略有不同。原中这两章的部分图形提供了交互式的形式,在这本中版中则全部换成了静态图形。你可以在原上试试调节对应图像的可操作的参数加深理解,但仅阅读中版本也不会有任何障碍。如果你对此中译本有任何建议和意,欢迎以 issue 的式提交到 GitHub 项主。 Freeman Zhang翻译团队本书由以下员翻译及整理: Xiaohu Zhu:翻译第、三、五、六章、附录内容。 Freeman Zhang: (正在)翻译其余章节、补充缺失内容、校对、整理及排版。 感

18、谢以下贡献者参与校对:hariayaoqingyuanlzjqsddallenwoodsyangbenfatimqianv欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!前神经络和深度学习是本免费的在线书。本书会教会你: 神经络,种美妙的受物学启发的编程范式,可以让计算机从观测数据中进学习 深度学习,个强有的于神经络学习的众多技术的集合神经络和深度学习前给出了在图像识别、语识别和然语处理领域中很多问题的最好解决案。本书将会教你在神经络和深度学习背后的众多核概念。想了解本书选择的观点的更多细节,请看这。或者直接跳到第章开始你们

19、的旅程。vi欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!这本书是关于什么的?神经络是有史以来发明的最优美的编程范式之。在传统的编程法中,我们告诉计算机做什么,把问题分成许多的、精确定义的任务,计算机可以很容易地执。相之下,在神经络中,我们不告诉计算机如何解决我们的问题。相反,它从观测数据中学习,找出它的解决问题的法。从数据中动学习,听上去很有前途。然,直到 2006 年,除了于些特殊的问题,我们仍然不知道如何训练神经络去超越传统的法。2006 年,被称为 “深度神经络” 的学习技术的发现引起了变。这些技术现在被称为 “深

20、度学习”。它们已被进步发展,今天深度神经络和深度学习在计算机视觉、语识别、然语处理等许多重要问题上都取得了显著的性能。他们正被歌、微软、Facebook 等公司规模部署。这本书的的是帮助你掌握神经络的核概念,包括现代技术的深度学习。在完成这本书的学习之后,你将使神经络和深度学习来解决复杂模式识别问题。你将为使神经络和深度学习打下基础,来攻坚你设计中碰到的问题。个以原理为导向的法本书个坚定的信念,是让读者更好地去深刻理解神经络和深度学习,不是像张冗的洗单样模糊地列出堆想法。如果你很好理解了核理念,你就可以很快地理解其他新的推论。编程语对,把这理解为掌握种新语的核语法、库和数据结构。你可能仍然只是

21、 “知道” 整个编程语的部分许多编程语有巨的标准库但新的库和数据结构可以很快且容易被理解。这就意味着这本书的重点不是作为个如何使些特定神经络库的教程。如果你主要想围绕着某个程序库的式去学习,那不要读这本书!找到你想学习的程序库,并通过教程和档来完成。注意这点。虽然这也许能很快解决你的问题,但是,如果你想理解神经络中究竟发了什么,如果你想要了解今后年都不会过时的原理,那么只是学习些热的程序库是不够的。你需要领悟让神经络作的原理。技术来来去去,但原理是永恒的。个动实践的法我们将通过攻克个具体的问题:教会计算机识别写数字的问题,来学习神经络和深度学习的核理论。这个问题常规的法来编程解决是常困难的。然

22、,正如我们所看到的,它可以很好地利个简单的神经络来解决,只需代码,没有特别的库。更多的是,我们会通过多次迭代来改进程序,逐步融神经络和深度学习的核思想。这动的法意味着你需要些编程经验来阅读这本书。但你不必是个专业的程序员。我 Python(2.7 版)写了代码,即使你不是 Python 编程,努下也应该很容易理解。通vii欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!过这本书,我们将开发个的神经络库,它可以来实验和建理解。所有的代码都可以在这下载。旦你完成了这本书,或者你读它,你可以轻松地学会个功能更加完善的神经络库于产。

23、类似地,对读者数学知识的需求是适度的。在多数章节中都有些数学,但它通常只是初等代数和函数图,我期望多数读者都能看懂。我偶尔会使更级的数学,但已经组织了材料,这样即使你理解不了有些数学细节,你还是可以跟上。使数学较多的是第章,其中需要些多元微积分和线性代数。如果你不熟悉它们,我在第章开始讨论了如何通览本书到的数学。如果你发现它真的很难,你可以直接跳到那章的主要结果的总结。论如何,不要开始就担这点。难得有本书能兼顾理论和动实践。但是我相信,如果我们建了神经络的基本思路,你会学到最好的。我们将开发实际能的代码,不仅仅是抽象的理论,这些代码你可以探索和扩展。这样你就可以理解其基础,不论是理论还是实践,

24、并且扩展和提你的知识。viii欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!关于练习和问题对科技类书籍来说,作者嘱咐读者必需做些练习和问题的情况并不少。当我读到这样的警告时,我总觉得有点奇怪。如果我不做这些练习和问题,会不会有什么不好的事情发?当然不是。我会获得些时间,但抵消了理解的深度。有时,这是值得的。有时不。所以这本书值得做什么?我的建议是你真的应该尝试部分的练习,你也可以不去做部分的问题。你应该做部分的练习,因为它们对你是否理解这些材料做了基本的检查。如果你不能很容易地解决个练习,你可能错过了些基本的东西。当然,如

25、果你偶尔被困在个练习上,继续往前,你可能只是对你看到的部分有些的误解,也许我的措辞有差。但是如果你需要挣扎于多数练习,那么你可能需要重读些早期的材料。问题是另。他们练习更难,你很可能会努去解决些问题。这会有些恼,但是,当然,对此种奈忍耐是真正理解和内化问题的唯途径。这样说,我不建议完成所有的问题。更好的是找到的项。也许你想神经络来分类你的乐收藏。或预测股票价格。或是别的。但找到个你关的项。然后你就可以忽略这本书中的问题,或者把它们简单地应在你的项上作。完成再多数量的问题,也不如为个你关的项奋学得多。投情感是精通技艺的关键。当然,你可能不会有这样个项,少在当前。那很好。完成这些问题,会激发你继续

26、努。并这本书中的素材来帮助你寻找个创新项的创意。ix欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!第 1 章使神经络识别写数字类视觉系统是世界上众多奇迹之。看看下的写数字序列:多数毫不费就能够认出这些数字为 504192。这么容易反让觉着迷惑了。在类的每个脑半球中,有着个初级视觉层,常称为 V1,包含 1 亿 4 千万个神经元及数百亿条神经元间的连接。但是类视觉不是就只有 V1,还包括整个视觉层 V2、V3、V4 和 V5 他们逐步地进更加复杂的图像处理。类的头脑就是台超级计算机,通过数亿年的进化不断地演变,最终能够极好地

27、适应理解视觉世界的任务。识别写数字也不是件简单的事。尽管类在理解我们眼睛展出来的信息上常擅,但乎所有的过程都是意识地。所以,我们通常并不能体会视觉系统解决问题的困难。如果你尝试写出计算机程序来识别诸如上的数字,就会明显感受到视觉模式识别的困难。看起来类下就能完成的任务变得特别困难。关于我们识别形状 “9 顶上有个圈,右下则是条竖线”这样的简单直觉 实际上算法上就很难轻易表达出来了。在你试着让这些识别规则越发精准时,就会很快陷各种混乱的异常或者特殊情形的困境中。看起来毫希望。神经络以另种式看待这个问题。其主要思想是获取量的写数字,常称作训练样本,然后开发出个可以从这些训练样本中进学习的系统。换之

28、,神经络使样本来动推断出识别写数字的规则。另外,通过增加训练样本的数量,络可以学到更多关于写数1欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!1.1. 感知器字的知识,这样就能够提升的准确性。所以,上例中我们只是展出了 100 个训练数字样本,通过使数千或者数百万或者数亿的训练样本我们也许能够得到更好的写数字识别器。本章我们将实现个可以识别写数字的神经络。这个程序仅仅 74 ,不使特别的神经络库。然,这个短的络不需要类帮助便可以超过 96% 的准确率识别数字。且,在后的章节,我们会发展出将准确率提升到 99% 的技术。实际

29、上,最优的商业神经络已经够好到被银和邮局分别在账单核查和识别地址上了。写识别常常被当成学习神经络的原型问题,因此我们聚焦在这个问题上。作为个原型,它具备个关键点:挑战性 识别写数字并不轻松 但也不会难到需要超级复杂的解决法,或者超规模的计算资源。另外,这其实也是种发展出诸如深度学习更加级的技术的法。所以,整本书我们都会持续地讨论写数字识别问题。本书后部分,我们会讨论这些想法如何在其他计算机视觉的问题或者语、然语处理和其他些领域中。当然,如果仅仅为了编写个计算机程序来识别写数字,本章的内容可以简短很多!但前进的道路上,我们将扩展出很多关于神经络的关键的思想,其中包括两个重要的神经元(感知器和 S

30、 型神经元) ,以及标准的神经络学习算法,即随机梯度下降算法。始终,我专注于解释事情的原委,并构筑你对神经络的直观感受。这需要个漫的讨论,不是仅仅介绍些基本的技巧,但这对于更深的理解是值得的。作为收益,在本章的最后,我们会准备好了解什么是深度学习,以及它为什么很重要。1.1感知器什么是神经络?开始,我将解释种被称为“感知器”的神经元。感知器在 20 世纪五、六年代由科学家 Frank Rosenblatt 发明,其受到 Warren McCulloch 和 Walter Pitts 早期著作的影响。今天,使其它神经元模型更为普遍 在这本书中,以及更多现代的神经络著作中,主要使的是种叫做 S 型

31、神经元的神经元模型。我们很快会讲到 S 型神经元。但是要理解为什么 S 型神经元被定义为那样的式,值得花点时间先来理解下感知器。感知器是如何作的呢?个感知器接受个进制输,x1,x2,.,并产个进制输出:outputx1x2x3例中的感知器有三个输,x1,x2,x3。通常可以有更多或更少输。Rosenblatt 提议个简单的规则来计算输出。他引权重,w1,w2,.,表相应输对于输出重要性的实数。神经元的输出,0 或者 1,则由分配权重后的总和jwjxj于或者于些阈值决定。和权重样,阈值是个实数,个神经元的参数。更精确的代数形式:output =0ifjwjxj threshold1ifjwjxj

32、 threshold(1)这就是个感知器所要做的所有事情!2欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!1.1. 感知器这是基本的数学模型。你可以将感知器看作依据权重来作出决定的设备。让我举个例。这不是常真实的例,但是容易理解,且很快我们会有根多实际的例。假设这个周末就要来了,你听说你所在的城市有个奶酪节。你喜欢奶酪,正试着决定是否去参加。你也许会通过给三个因素设置权重来作出决定:1. 天好吗?2. 你的男朋友或者朋友会不会陪你去?3. 这个节举办的地点是否靠近交通站点? (你没有)你可以把这三个因素对应地进制变量 x1

33、,x2和 x3来表。例如,如果天好,我们把x1= 1,如果不好,x1= 0。类似地,如果你的男朋友或朋友同去,x2= 1,否则 x2= 0。x3也类似地表交通情况。现在,假设你是个嗜好奶酪的吃货,以于即使你的男朋友或朋友不感兴趣,也不管路有多难都乐意去。但是也许你确实厌恶糟糕的天,且如果天太糟你也没法出。你可以使感知器来给这种决策建数学模型。种式是给天权重选择为 w1= 6 ,其它条件为w2= 2 和 w3= 2。w1被赋予更的值,表天对你很重要,你的男朋友或朋友陪你,或者最近的交通站重要的多。最后,假设你将感知器的阈值设为 5。这样,感知器实现了期望的决策模型,只要天好就输出 1,天不好则为

34、 0。对于你的男朋友或朋友是否想去,或者附近是否有公共交通站,其输出则没有差别。随着权重和阈值的变化,你可以得到不同的决策模型。例如,假设我们把阈值改为 3 。那么感知器会按照天好坏,或者结合交通情况和你男朋友或朋友同的意愿,来得出结果。换句话说,它变成了另个不同的决策模型。降低阈值则表你更愿意去。很明显,感知器不是做出决策使的全部模型。但是这个例说明了个感知器如何能权衡不同的依据来决策。这看上去也可以致解释个感知器络能够做出微妙的决定:inputoutput在这个络中,第列感知器 我们称其为第层感知器 通过权衡输依据做出三个常简单的决定。那第层的感知器呢?每个都在权衡第层的决策结果并做出决定

35、。以这种式,个第层中的感知器可以第层中的做出更复杂和抽象的决策。在第三层中的感知器甚能进更复杂的决策。以这种式,个多层的感知器络可以从事复杂巧妙的决策。顺便提下,当我定义感知器时我说的是感知器只有个输出。在上的络中感知器看上去像是有多个输出。实际上,他们仍然是单输出的。多个感知器输出箭头仅仅便于说明个感知器的输出被于其它感知器的输。它和把单个输出线条分叉相,显得讨巧些。让我们简化感知器的数学描述。条件jwjxj看上去有些冗,我们可以创建两个符号的变动来简化。第个变动是把jwjxj改写成点乘,w x jwjxj,这 w 和 x 对应权重和输3欢迎加入Py t h o n 学习交流编程QQ群783

36、462347,群里免费提供500+本Py t h o n 书籍!1.1. 感知器的向量。第个变动是把阈值移到不等式的另边,并感知器的偏置 b threshold 代替。偏置不是阈值,那么感知器的规则可以重写为:output =0if w x + b 01if w x + b 0(2)我们可以把偏置看作种表让感知器输出 1(或者物学的术语,即激活感知器)有多容易的估算。对于具有个常偏置的感知器来说,输出 1 是很容易的。但是如果偏置是个常的负数,输出 1 则很困难。很明显,引偏置只是我们描述感知器的个很的变动,但是我们后会看到它引导更进步的符号简化。因此,在这本书的后续部分,我们不再阈值,总是使

37、偏置。我已经描述过感知器是种权衡依据来做出决策的法。感知器被采的另种式,是计算基本的逻辑功能,即我们通常认为的运算基础,例如“与” , “或”和“与” 。例如,假设我们有个两个输的感知器,每个权重为 2,整体的偏置为 3。这是我们的感知器:3x1x222这样我们得到:输 00 产输出 1,即 (2)0+(2)0+3 = 3 是正数。这我 符号来显式地表乘法。但是输 11 产输出 0,即 (2) 1 + (2) 1 + 3 = 1 是负数。如此我们的感知器实现了个与!与的例显了我们可以感知器来计算简单的逻辑功能。实际上,我们完全能感知器络来计算任何逻辑功能。原因是与是通运算,那样,我们能在多个与

38、之上构建出任何运算。例如,我们能与构建个电路,它把两个进制数 x1和 x2相加。这需要计算按位求和,x1 x2,同时当 x1和 x2都为 1 时进位设为 1,即进位位正好是按位乘积 x1x2:x1x2sum: x1 x2carry bit: x1x2为了得到相等的感知器络,我们把所有与替换为感知器,其具有两个输、每个权重设为 2,整体偏置为 3。结果我们得到这样的络。注意我已经把右下的与移动了点,只是为了在图上更便画箭头:4欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!1.1. 感知器x1x2sum: x1 x2carry

39、 bit: x1x2这个感知器络中有个部分值得注意,最左边的感知器的输出被两次作为底部感知器的输。当我定义感知器模型时,我没有说过是否允许这种双输出到同个地。实际上这不重要。如果我们不想允许这种形式,那可以简单把两条线合并为到个权重为 4 的连接,不是两个权重为 2 的连接。 (如果你还没明,应该停下来证明这是相等的。 )随着这改变,原先的络看起来像下描绘的,所有未标记的权重等于 2,所有偏置等于 3,标记的单个权重为 4:x1x2sum: x1 x2carry bit: x1x24前为我把像 x1和 x2这样的输画成感知器络左边浮动的变量。实际上,可以画层额外的感知器 输层 来便对输编码:x

40、1x2sum: x1 x2carry bit: x1x24这种对有个输出但没有输的感知器的标记法,x1是种标准。它并不实际表个感知器没有输。为了看清它,假设我们确实有个没有输的感知器。那么加权和jwjxj会总是为零,并且感知器在 b 0 时输出 1,当 b 0 时输出0。那样,感知器会简单输出个固定值,不是期望值(上例中的 x1) 。倒不如完全不把输感知器看作感知器,是简单定义为输出期望值的特殊单元,x1,x2,.。5欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!1.2. S 型神经元这个加法器的例演了个感知器络如何于模拟

41、包含很多与的电路。因为与在计算机运算中的通性,由此可以得出感知器也同样适的结论。感知器运算的通性既是令舞的,是令失望的。令舞是因为它告诉我们感知器络能和其它计算设备样强。但是它也令失望,因为它看上去只不过是种新的与。这简直不算个新闻!然,实际情况这观点认为的更好。其结果是我们可以设计学习算法,能够动调整神经元的权重和偏置。这种调整可以响应外部的刺激,不需要个程序员的直接预。这些学习算法是我们能够以种根本区别于传统逻辑的式使神经元。有别于显式地设计与或其它,我们的神经络能简单地学会解决问题,这些问题有时候直接传统的电路设计是很难解决的。1.2S 型神经元学习算法听上去常棒。但是我们怎样给个神经络

42、设计这样的算法呢?假设我们有个感知器络,想要它来解决些问题。例如,络的输可以是幅写数字的扫描图像。我们想要络能学习权重和偏置, 这样络的输出能正确分类这些数字。 为了看清学习是怎样作的,假设我们把络中的权重(或者偏置)做些微的改动。就像我们上会看到的,这属性会让学习变得可能。这简要意我们想要的(很明显这个络对于写识别还是太简单了! ) :output + outputw + w任何权重(或偏置)中的微改变引起个输出的微改变如果对权重(或者偏置)的微的改动真的能够仅仅引起输出的微变化,那我们可以利这事实来修改权重和偏置,让我们的络能够表现得像我们想要的那样。例如,假设络错误地把个“9”的图像分类

43、为“8” 。我们能够计算出怎么对权重和偏置做些的改动,这样络能够接近于把图像分类为“9” 。然后我们要重复这个作,反复改动权重和偏置来产更好的输出。这时络就在学习。问题在于当我们的络包含感知器时这不会发。实际上,络中单个感知器上个权重或偏置的微改动有时候会引起那个感知器的输出完全翻转,如 0 变到 1。那样的翻转可能接下来引起其余络的为以极其复杂的式完全改变。因此,虽然你的“9”可能被正确分类,络在其它图像上的为很可能以些很难控制的式被完全改变。这使得逐步修改权重和偏置来让络接近期望为变得困难。也许有其它聪明的式来解决这个问题。但是这不是显易地能让个感知器络去学习。我们可以引种称为 S 型神经

44、元的新的神经元来克服这个问题。S 型神经元和感知器类似,但是被修改为权重和偏置的微改动只引起输出的微变化。这对于让神经元络学习61.2. S 型神经元起来是很关键的。好了, 让我来描述下 S 型神经元。我们描绘感知器的相同式来描绘 S 型神经元:outputx1x2x3正如个感知器,S 型神经元有多个输,x1,x2,.。但是这些输可以取 0 和 1 中的任意值,不仅仅是 0 或 1。例如,0.638. 是个 S 型神经元的有效输。同样,S 型神经元对每个输有权重,w1,w2,.,和个总的偏置,b。但是输出不是 0 或 1。相反,它现在是 (wx+b),这 被称为 S 型函数1,定义为:(z)

45、11 + ez(3)把它们放在起来更清楚地说明,个具有输 x1,x2,.,权重 w1,w2,.,和偏置 b 的 S型神经元的输出是:11 + exp(jwjxj b)(4)初看上去,S 型神经元和感知器有很的差别。如果你不熟悉 S 型函数的代数形式,它看上去晦涩难懂令畏。实际上,感知器和 S 型神经元之间有很多相似的地,跨过理解上的障碍,S 型函数的代数形式具有很多技术细节。为了理解和感知器模型的相似性,假设 z w x + b 是个很的正数。那么 ez 0 (z) 1。即,当 z = w x + b 很并且为正,S 型神经元的输出近似为 1,正好和感知器样。相反地,假设 z = w x +

46、b 是个很的负数。那么 ez ,(z) 0。所以当 z = w x + b是个很的负数,S 型神经元的为也常近似个感知器。只有在 w x+b 取中间值时,和感知器模型有较的偏离。 的代数形式是什么?我们怎样去理解它呢?实际上, 的精确形式不重要 重要的是这个函数绘制的形状。是这样:4321012340.00.20.40.60.81.0Zsigmoid function1顺便提下, 有时被称为逻辑函数,这种新的神经元类型被称为逻辑神经元。既然这些术语被很多从事于神经元络的使,记住它是有的。然,我们将继续使 S 型这个术语。71.2. S 型神经元这个形状是阶跃函数平滑后的版本:432101234

47、0.00.20.40.60.81.0Zstep function如果 实际是个阶跃函数,既然输出会依赖于 w x + b 是正数还是负数2,那么 S 型神经元会成为个感知器。利实际的 函数,我们得到个,就像上说明的,平滑的感知器。的确, 函数的平滑特性,正是关键因素,不是其细部形式。 的平滑意味着权重和偏置的微变化,即 wj和 b,会从神经元产个微的输出变化 output。实际上,微积分告诉我们output 可以很好地近似表为:output j outputwjwj+ outputbb(5)其中求和是在所有权重 wj上进的, output/wj和 output/b 符号表 output 分别对

48、于 wj和 b 的偏导数。如果你对偏导数感到不在,不惊慌。上全部偏导数的表达式看上去很复杂,实际上它的意思常简单(这可是个好消息) :output 是个反映权重和偏置变化 即 wj和 b 的线性函数。这线性使得选择权重和偏置的微变化来达到输出的微变化的运算变得容易。所以当 S 型神经元有更多和感知器相同的本质的为时,计算如何变化权重和偏置来使输出变化会更加容易。如果对 来说重要的是形状不是精确的形式,那为什么要在公式 (3) 中给 使特定的形式呢?实际上,在这本书的后我们会碰巧考虑到为其它激活函数 f() 输出为 f(w x + b) 的神经元。当我们使个不同的激活函数,最的变化是公式 (5)

49、 中于偏导数的特定值的改变。事实证明当我们后计算这些偏导数, 会简化数学计算,这是因为指数在求导时有些可爱的属性。论如何, 在神经络的作中被普遍使,并且是这本书中我们最常使的激活函数。我们应该如何解释个 S 型神经元的输出呢?很明显,感知器和 S 型神经元之间个很的不同是 S 型神经元不仅仅输出 0 或 1。它可以输出 0 和 1 之间的任何实数,所以诸如 0.173. 和0.689. 的值是合理的输出。这是常有的,例如,当我们想要输出来表个神经络的图像像素输的平均强度。但有时候这会是个烦。假设我们希望络的输出表“输图像是个 9”或“输图像不是个 9” 。很明显,如果输出是 0 或 1 是最简

50、单的,就像感知器。但是在实践中,我们可以设定个约定来解决这个问题,例如,约定任何少为 0.5 的输出为表2实际上,当 w x + b = 0 ,感知器输出 0,同时阶跃函数输出 1。所以严格地说,我们需要修改阶跃函数来符合这点。但是你知道怎么做。81.3. 神经络的架构“这是个 9” ,其它于 0.5 的输出为表“不是个 9” 。当我们正在使这样的约定时,我总会清楚地提出来,这样就不会引起混淆。练习 S 型神经元模拟感知器,第部分假设我们把个感知器络中的所有权重和偏置乘以个正的常数,c 0。证明络的为并没有改变。 S 型神经元模拟感知器,第部分假设我们有上题中相同的设置 个感知器络。同样假设所

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报