【译】神经网络与深度学习 Ch1-Section0

用神经网络识别手写数字

人类的视觉系统是是大自然的奇迹。考虑下面手写数字序列:
大多数人能够轻易地是识别出是504192。在我们大脑的每个半球都有一个基础的皮质,这就是我们熟知的V1区,它包含了14亿个神经元,并有着数十亿级的神经元连接。然而人类地视觉不仅包含V1区,同时还有一系列地视觉皮质——V2,V3,V4,V5——它们进行着复杂地图像处理。我们头脑携带着一个超级计算机,经过数百万年的进化,能够很好地适应视觉的世界。识别手写数字并不容易。但是,我们人类惊人地擅长将我们所见之物转化成脑中有意义地东西。当然这些工作都是在无意识地情况下完成的。因此,通常我们不会感受到我们地视觉系统在处理着怎样的难题。

当你尝试写程序去解决上述手写数字识别时,你就会发现这个问题有多难。我们大脑轻易在瞬间完成地事情变得相当困难了。一个简单地例子能描述我们识别形状为何变得不容易用算法表达——“一个9上面时一个环形,下面是一个钩”。当你想表达更加精细时,你会很快陷入特例的沼泽。这个问题看起来相当令人绝望。

神经网络用另一种方式来解决这个问题。思想就是利用大量的手写数字,即我们熟知的训练数据,然后能通过学习这些训练数据来发展一个系统。

![c1s0-2](http://zhaohuaipeng.com/images/nn-and-dl/c1s0-2.png)
换句话说,神经网络能够利用这些例子自动地学习识别手写数字地内在规则。另外,如果增大训练样本,那么神经网络能够学到更多手写数字的信息,因此能够提高它的准确率。尽管我们上面地图只有100个训练样本,但是在实际中可能会用到数以亿计的训练样本。

在这章我将写一个程序来实现一个神经网络能够学习识别这些手写数字。这段代码只有仅仅74行,没有用到任何神经网络的库。但是这段代码在没有人工的干预下达到超过96%的准确率。另外,在稍后地章节我们会用其他的一些想法来把我们的准确率提高到99%以上。实际上,最好的商用神经网络能够很好地用于银行识别支票,邮局识别地址等等。

我们关注手写数字识别是因为它是个很好的一个原型能够帮助我们学习神经网络地通用原理。作为一个模型,它有两点好处:首先它是个有挑战性的项目-识别手写数字是个不小地壮举-但是它也不是需要一个及其复杂地模型或者强大的计算能力。另外,它也能帮助我们学习更高级的技术,例如深度学习,打下良好的基础。因此,在这本书我一直会贯穿手写数字识别问题。在这本书的稍后章节,我将会讨论如何将这些思想应用到计算机视觉,语音识别,自然语言处理等领域。

当然,如果这章地内容仅仅关于如何写一段程序识别手写数字,那么篇幅会大大缩短!但我们将会学习神经网络地一些关键思想,包括两个重要的人工神经元(分类器和sigmoid神经元),神经网络地标准学习算法即我们熟知的梯度下降法(stochastic gradient descent)。我将会关注为何它们能起到这样的作用,用来建立你对神经网络地一些直觉。我不仅会给出基本数学原理,还会花费更长的篇幅来讨论,但我觉得如果你能收获更深层次的理解,这也是值得的。我们将会在本章的最后理解什么是深度学习以及为什么它们如此重要。

(译者注:欢迎大家访问我的小站:http://zhaohuaipeng.com/ 文章会同步更新)

posted on 2016-03-22 15:50  白日焰火  阅读(291)  评论(0编辑  收藏  举报

导航