第一章 使用神经网络识别手写数字

Posted jlom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一章 使用神经网络识别手写数字相关的知识,希望对你有一定的参考价值。

原文:http://neuralnetworksanddeeplearning.com/chap1.html

 

人类视觉系统是世界上的一大奇迹。看以下这串手写体数字:

    技术图片

大多数人毫不费力便能识别出这是504192。但这种‘毫不费劲’是骗人的,在我们大脑的两个半球中,有着一个主要的视觉皮层,被称作V1,它包含1.4亿个神经元、以及它们之间数百亿的连接,并且人类不仅仅只有V1,而是一个包含一系列视觉皮层的整体——V2,V3,V4和V5。它们做着一层比一层复杂的图像处理。大自然在我们脑壳里面放了一部超级计算机,经过了数亿年的进化和调整,使得它十分适合理解这个世界的模样。手写数字的识别一点儿也不容易,我们人类出乎意料地擅长理解眼睛展示给我们的事物,所有的工作都在不知不觉中完成,因此我们并没有认识到视觉系统处理的问题有多困难。

  如果你尝试写一个程序去识别像上面那样的手写数字,视觉模式识别的难点便显露出来了,这些看似稀松平常的活儿马上变得万分困难。关于我们如何辨别形状的简单直觉——“9的顶部是一个圆圈,右边加上一条竖线直到底部”,事实证明,用算法来表达这种直觉并没有那么简单,当你尝试为它制定精准规则的时候,你将迅速迷失在大量例外、注意事项和特殊情况的泥潭中,深感绝望。

  而神经网络另辟蹊径,它收集大量的手写体数字,称作训练样本,然后开发一个可以从样本中学习规则的系统。还句话说,神经网络通过样本自动推断手写数字的识别规则,并且通过样本数量的增加,该网络还能学到更多手写相关的东西,从而提高它的准确性。所以,尽管我只展示100张手写数字图片,也许我们应该构建一个可以通过使用成千上万甚至数百亿样本来训练的更好的手写识别器。

  通过本章,我们将编写一个计算机程序来实现一个能够学会识别手写数字的神经网络,这个程序只有74行代码,而且没有使用任何神经网络的专用库。尽管如此,这个简短的程序不加干涉依然能以96%的准确率识别手写数字。在后面的章节中,我们还将提出一些可以将准确率提高到99%的方法,目前最好的商用神经网络性能之优,足以用来银行处理支票,邮局识别地址。

  我们将重点放在手写识别上,因为它是一个学习神经网络的出色的原型问题。作为一个原型它的优点是——充满挑战——识别手写数字绝非易事——但还不至于难到需要一个及其复杂的解决方案,或者是巨大的算力。而且,通过它,还能发展出更先进的技术,比如深度学习。因此,贯穿整本书,我们会时不时地回到手写识别的问题上。稍后的地方,我们还会讨论这些点子如何应用到计算机视觉其他问题上,以及语音、自然语言处理等其他领域的问题。

  当然,假如本章的关键只是如何编写一个识别手写数字的程序,那么本章的内容将会简短很多!但是,一路上我们还会研究许多神经网络的关键想法,包括两种重要的人工神经元类型(感知器[Perceptron]和乙状神经元[sigmoid neuron]),还有神经网络标准算法——随机梯度下降算法。至始至终,我专注于解释为什么事情会这样子发生,并建立你的神经网络直观感觉。这比我仅仅介绍发生了什么需要更多的讨论,但为了你能达到更深层次的理解,这是值得的。作为回报,在本章结束时我们将能够理解什么是深度学习,以及它为什么重要。

 

感知器

未完待续……

 

翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 谷歌翻译(国内)

以上是关于第一章 使用神经网络识别手写数字的主要内容,如果未能解决你的问题,请参考以下文章

第一周:mnist手写数字识别 | 365天深度学习训练营

第一周:mnist手写数字识别 | 365天深度学习训练营

使用卷积网络做手写数字识别

pytorch学习实战第五篇:卷积神经网络实现MNIST手写数字识别

深度学习--TensorFlow(项目)识别自己的手写数字(基于CNN卷积神经网络)

使用循环神经网络做手写数字识别