第一章 用神经网络识别手写数字(第一节 感知器)
来源:互联网 发布:关于编程的电影 编辑:程序博客网 时间:2024/06/06 09:37
第一章 用神经网络识别手写数字
人类的视觉系统,是个世界奇迹。
看看下面的手写数字:
大多数人毫不费力地识别这些数字为504192。以为这很容易,其实是错觉。在人类大脑半球上,有个初级视觉皮层,V1区,含有1亿4000万个神经元。在这些神经元之间有数百亿个连接。然而,人的视觉不只是V1,而是多个视觉皮层 —— V2、V3、V4和V5,做更复杂的图像处理。我们的头脑好比一台超级计算机,和谐的进化了数亿年,非常适应观看世界的需要。手写体数字的识别是不容易的。相反,眼睛给我们的视觉,是一种极强的机能。但视觉所有的工作几乎是在不知不觉中完成,所以我们通常不理解视觉系统如何解决棘手的问题。
如果你想写个计算机程序识别像上面那样的数字,会明显感到视觉模式识别的困难。看来很容易的事,自己做起来却变得极为困难。例如识别9这个数字。简单的直觉是“9的顶部有个圆环,右下有一竖直”。但是,如何具体表示这个形状,并没有简单的算法。当你试图建立精确表示的规则时,很快就会迷失在一大堆的例外之中。似乎问题无解。
神经网络方法用不同的办法来解决问题。这个办法是把大量的手写体数字,作为训练样本,
然后开发了一个可以从这些训练样本进行学习的系统。换句话说,神经网络使用这些训练样本,自动推断出手写体数字的识别规则。此外,通过增加训练样本的数量,可以通过神经网络了解更多笔迹形态,从而提高识别的准确性。这里展示的训练样本虽然只有100个,但其实可以用数千甚至数百万或数十亿的训练样本,去建立更好的手写识别器。
在这一章中,我们要写一个计算机程序,实现学习识别手写体数字的神经网络。程序只有74行,不使用特殊的神经网络库。但这个短小程序的识别准确度超过96%,且无需人的干预。此外,在后面的章节中我们将拓展思路,提高识别精度超过99%。实际上,最好的商业用神经网络现已在银行处理支票,在邮局识别邮件地址。
我们专注于手写识别,因为它是学习神经网络所需要的具有普遍性的很好的原型问题。作为一个原型,它有四两拨千斤之妙,它做出了挑战手写数字识别的壮举,但它没有使用非常复杂的解决方案,没有使用巨大的计算能力,没有遇到大的麻烦。此外,它是发展成更先进的技术,如深度学习的一个很好的途径。因此在本书中我们会多次回顾手写识别的问题。在本书的后面,我们将讨论如何将这些想法应用于计算机视觉的其他问题,以及应用在语音处理、自然语言处理等领域。
当然,如果本章只是要写一个程序来识别手写数字,本章内容会很简短。但是,开发神经网络有多种重要思路,其中包括人工神经元的两种重要类型,感知器和S形神经元,以及称作“随机梯度下降”的标准的学习算法。自始至终,我重点解释为什么事情是这样的,并且重点关注建立神经网络所需的直觉。这需要一个更为冗长的讨论,但为了得到更深的理解,这样做也是值得的。通过本章的学习,最后我们会明白深度学习是什么,以及为什么它很重要。
第一节 感知器
神经网络是什么?一开始,我先说明感知器是一种人工神经元。感知器是在1950-1960年代由科学家Frank Rosenblatt开发,而他的灵感来自Warren McCulloch 和 Walter Pitts 早期的工作。今天,本书中使用的人工神经元模型十分常见。在现代神经网络中,主要的神经元模型是S形(Sigmoid)神经元。下面会很快说到S形神经元。但要明白为什么S形神经元要如此定义,就要先花时间了解一般意义上的感知器。
感知器是怎样工作的?感知器需要几个二进制输入,
示例中的感知器网络有三个输入,
这时发现,CSDN blog 处理 markdown 的方式,使得本文的大量数学符号难以处理,只好放弃继续翻译。
打算在 Jupyter Notebook 平台上完成全书的翻译。它的 markdown 功能强大。
- 第一章 用神经网络识别手写数字(第一节 感知器)
- 第一章 用神经网络来识别手写数字(1)
- Neural Networks and Deep Learning之中文翻译-第一章 用神经网络识别手写数字
- 用BP人工神经网络识别手写数字
- 卷积神经网络(cnn) 手写数字识别
- 卷积神经网络(cnn) 手写数字识别
- 神经网络实现手写数字识别(MNIST)
- 使用神经网络识别手写数字
- 利用神经网络识别手写数字
- 初识神经网络--识别手写数字
- deeplearning4j实现多感知器的手写数字识别
- 神经网络:简单手写数字识别神经网络
- 【TensorFlow-windows】(三) 多层感知器进行手写数字识别(mnist)
- 用最简单的神经网络识别手写数字
- Neural Network(神经网络)实例--手写数字识别
- TensorFlow实战-mnist手写数字识别(卷积神经网络)
- 四、用简单神经网络识别手写数字(内含代码详解及订正)
- 神经网络用于手写数字识别更新版
- 转:典型错误:locale.Error:unsupported locale setting
- Qt17 load sqlite table data to qtableview
- 面向对象编程的原则
- QT18 how to link QListView with sqlite Database values
- 为什么Nginx的性能要比Apache高很多?
- 第一章 用神经网络识别手写数字(第一节 感知器)
- Nginx 服务器 select 和epoll的区别
- 项目坑
- 可能你不知道的TClientDataset功能
- QT19 How to link QComboBox with sqlite Database values
- java android中对list的时间进行排序
- 利用 Behavior Driven Development 技术加强软件自动化测试
- 客户端到服务器端的通信过程及原理
- QT20 database values in QLineEdit or textbox if select combobox