人类的视觉系统是世界上值得惊讶的事情之一。观察下面的一组手写数字:
手写数字图片
大多数人都毫不费力的识别了这些数字为504192。这种轻易识别是有欺骗性的,在我们大脑的每个半球,都拥有主视觉皮层,其被称为V1,包含了1.4亿个神经元,它们之间拥有者数以百亿记得联系。然而人类视觉不仅仅涉及到V1,而且包含了V2,V3,V4,V5等一些列视觉皮层,逐步进行着更为复杂的图像处理工作。我们大脑中就像拥有一台超级计算机,经过数亿年的进化和调试,非常适合和了解这个视觉世界。识别手写数字十分不容易,相反我们人类是惊人地非常善于理解眼睛向我们展示的东西。并且我们常常不会意识到我们的视觉系统解决了多么复杂的问题。
当你试图编写计算机程序识别上述数字时,视觉模式识别明显变得十分困难。我们做起来如此容易地事情突然就变得如此困难。关于我们识别形状的简单直觉-“数字9在顶部拥有一个圆圈,并且有一个垂直的直线在右下角。”-其实不是难么简单,难以用算法进行表示。当你试图精确地制定这样的规则时,你很快就会迷失在例外和警告的特殊情况的泥沼中。这让人看起来是让人绝望的。
神经网络通过一个不同的方法来解决这个问题。这个方法是通过获取大量手写数字图片,作为训练集,如下图所示。
大量手写数字图片
本章开发一个可以从自动训练集学习的系统。换句话说,神经网络使用这些例子来自动推断识别手写数字的规则。此外,通过增加训练的图片数目,神经网络可以从图片上识别更多手写规则,从而提高其精确性。所以,虽然我们上面仅仅展示了100个数字,但也许我们可以使用上千甚至数百万或者数十亿训练样例获取更好的手写数字识别器。
在本章中,我们编写一个计算机程序,实现一个神经网络去学习识别手写数字。这个程序仅仅只有74行,并且没有使用特殊的神经网络库。但是这个短小的程序无需人工干预可以识别数字精度达到96%以上。此外,在稍后的章节中我们会改进研究思想使精度提高到99%以上。实际上,现在商用神经网络表现非常好以至于银行处理支票,邮局用于处理地址和邮编。
我们专注于手写识别,因为他是一个非常好的学习通用神经网络原型问题。作为一个原型问题,它取得了非常好的平衡:它具有挑战性-识别手写数字不是一件容易地事情-但是它又不是十分困难需要一个复杂的解决方案或者大量的计算能力。而且,这是开发如深度学习的一个途径。这本书晚些时候,我们会讨论如何将这些思想应用在机器视觉,语音识别,自然语言处理等其他领域。
当然,如果这一章仅仅是编写一个计算机程序去识别手写数字,那样本章就会非常短。因此在这个过程中,我们会描述神经网络的许多关键思想,包括两种重要的神经元(perceptron 和 sigmoid 函数),和标准的神经网络学习方法-随机梯度下降法。整章中我专注于解释为什么事情会按照此方式完成,并且建立你的神经网络直觉。这需要比介绍基本机制更长的篇幅。但这是值得的,这样你会获得更深的理解。作为收获,在本章结束时,我们将能理解深度学习是什么,为什么它很重要。
请多多点赞和评论,谢谢~