*请注意,这一系列文章的骨架来源于Neural Networks and Deep Learning ,本人阅读后对原文进行提炼和加工,重构了整个文笔以让中文的初学者更容易阅读和理解,并首发于博客上,转载请先联系本人微信986597353,否则一经发现,视为侵权,必将追究法律责任
第一章 面向幼儿园的人工智能
第一篇: 开篇-机器学习
第二篇: 感知器
第三篇: sigmoid神经元
第四篇: 神经网络的结构
第五篇: 一个简单的分类手写数字神经网络第二章 面向小学生的机器学习
在接下来的学习之前,我们需要了解一下神经网络的结构,下图是一个小型的神经网络
在这个网络中的最左层被称为输入层,并且和神经元一起被称为输入神经元。最右层或者是输出层可能包含输出神经元群,或者就像这个例子,一个单一的输出神经元。中间层则被称为隐蔽层(hidden layer),因为神经元在这个层中既不输入也不输出。术语隐蔽‘hidden’听起来也许有一点神秘-在第一次听到的时候也许你会认为它应该有一些深层次的哲学或者数学上的意义 - 但实际上它只是表明了 “没有一个输入也没有一个输出”。上面的这个神经网络仅仅有一个隐蔽层,但实际上一些神经网络可以有多个隐蔽层。
请注意,因为一些历史的原因,多个隐蔽层的sigmoid 网络有时候被称为多层感知器(multilayer perceptrons) 或者 MLPs,即使这出自sigmoid 网络而不是感知器。
我们对于神经网络中的输入和输出层的设计往往是直来直往的。直来直往的意思是,假设我们尝试决定一个手写的图片描绘的是不是9,一个通常的方法是把图片像素的强度编码化到输入神经元。如果这个图片是一个64×64的灰阶图片,那么我们会有4096个包含适当的,位于0和1之间的强度规模的输入神经元。输出神经层将会仅仅包含一个单一的神经元,并且输出值小于0.5的时候表示这个图片不是9,反之则为9。
但是设计隐蔽层却可以相当有艺术性。特别是,当我们想借助一些简单的经验规则来设计隐蔽层是不太行的。然而,幸运的是,发展了这么多年,神经网络研究的先行者已经为隐蔽层发展了许多设计启发式,来帮助人们从他们的网络中得到他们想要的行为,所以,大部分时间我们只需要站在巨人的肩膀上就可以了,这样的启发式可以被用于帮助如何通过训练神经网络所需要的时间去改变隐蔽层的数量。
到现在,我们已经讨论从一层输出被当作下一层输入的神经网络。这样的网络被称为前馈神经网络(feedforward neural networks)。这表示神经网络中没有循环,信息总是被向前反馈,从不向后反馈。如果我们确实有循环,我们将会发现在σ函数的输入会取决于它的输出。那么变得有意义会变得困难,所以我们并不允许这样的循环。
然而,有许多其他关于人工神经元网络的模型让向后反馈循环变得可能。这些模型被称为递归神经网络(recurrent neural networks)。这些模型的想法是让神经元在休眠之前的有限时间内被激发这种激发可以刺激其他会在接下来一小段时间内激发的神经元。这会造成更多的神经元发射,然后一段时间后我们会得到一连串的神经元发射。循环在这样的模型中不会造成问题,因为一个神经元的输出只会在接下来的一段时间内影响它的输入,而不是持续性的。
递归神经元网络的影响力比前馈网络要小,部分原因是递归神经元网络的学习算法(至少在时间上)比较低效。但是递归神经网络仍然是十分有趣的,他们相比于前馈网络在精神上更接近我们大脑的工作过程。同时递归神经元网络也可以解决一些只有非常复杂的前馈网络才可以解决的重要的问题。
下一篇 一个简单的分类手写数字神经网络