Neural Networks and Deep Learning之中文翻译-第一章 用神经网络识别手写数字

本章原文地址:http://neuralnetworksanddeeplearning.com/chap1.html
人类的视觉系统是这世界上一大奇迹,看一下下面的一串手写数字:

手写数字

大部分人能毫不费力的识别出来是504192,事实上实现这个并不是表面上看起来得那么容易。在我们大脑任何一个半球都有一个基础视觉皮层,这个也被称为V1,它包含了1亿4千个神经元,它们之间有上百亿的连接。然而与人类视觉相关的还不仅仅只有V1区,还包括一系列视觉皮层区——V2,V3,V4和V5,它们逐步进行更复杂的图像处理。我们把我们的大脑比喻成一个超级计算机,经过数亿年的演化调整从而能很好的理解视觉世界。识别手写数字不容易,但是我们却能惊人地理解展现在我们眼前的东西。但是几乎所有的工作都是在无意识下完成的,以致我们通常无法体会我们视觉系统处理一个问题是多么的复杂困难。如果你尝试写一段计算机程序去识别上面的数字,视觉模式识别的困难就显现出来了。一件看起来容易的事,当我们自己来做的时候突然就变得极其困难了。我们识别形状的简单直觉是数字9在顶上有一个圈右下方是一条直线,但是要在算法上把这个表现出来就不那么容易了。当我们试着把识别规则描述的更精准时,会很快陷⼊各种混乱的异常或者特殊情形的困境中,令人绝望。
神经网络用一种不同的方式来解决这一问题,这种方法是采用大量手写数字作为训练样本。
这里写图片描述

然后开发一套系统来学习这些训练样本。也就是说神经网络从训练样本自动推导出识别这些手写数字的规则。并且通过增加训练样本的数量,网络可以学到更多,识别准确度也会提高。所以我在上面只展示了100个训练数字,如果使用数千甚至数百万、数十亿的训练样本我们可以建立个更好的手写数字识别器。在这一章我们会写一个电脑程序运用神经网络去学习识别手写数字。程序只有74行的长度,没有使用任何神经网络库,但是这个简短的程序在无人工干预下识别数字准确度可超过96%。而且在之后的章节我们会学到一方法可以使它识别精确度达到99%。事实上一些好的商业神经网络是如此优秀以至于被银行用来处理支票,邮局用它来识别地址。
我们集中注意力在手写识别上,因为它是一个极好的学习神经⽹络的原型问题,作为一个原型问题关键的一点是:挑战性-识别手写数字并不是一件简单的事-但也不会难到需要超级复杂的解决方法或超大规模的计算资源。并且它也是切入到更先进技术如深度学习一种很好的方式。所以在本书中会不断回到手写识别这个问题上来。之后我们会讨论如何将这一技术应用解决其它计算机视觉问题,当然也包括语音,自然语言处理等领域。
当然如本章只是写一个电脑程序去识别手写数字,那么这章节将会短得多!但是我们将以此引出许多有关神经网络的核心思想,包括两个两类重要的人造神经元(感知器与S型神经元)和被称作随机梯度下降的标准神经网络学习算法。我会集中讲解之所以这么做的原因以帮助你建立对神经网络的直观感觉。相比只单单介绍基本原理,这里会展开更长的讨论。但这都是值得的,这会让你理解得更深。到本章的最后我们会明白什么是深度学习以及为什么它那么重要。

感知机

什么是神经网络?作为开始,我会介绍一种被称为感知机的人造神经元。感知机是在20世纪五六十年代由科学家Frank Rosenblatt提出的,其灵感来自于Warren McCullochWalter Pitts的早期作品,今天普遍使用的是其他的神经元模型-在本书和许多有关现代神经网络著作中主要的使用神经元模型是一种叫S型神经元的模型。我们很快会讲到S型神经元,但是为了理解S型神经元为什么被这样定义,很值得先花些时间去了解感知机。
感知机是如何工作的呢?一个感知机接收多个二进制值x1,x2,…作为输入,然后产生一个二进制值输出:

这里写图片描述

在上面的例子中展示了一个感知机有三个输入:x1,x2,x3,通常它可以有更多或更少的输入。 Rosenblatt 提出了一个很简单的规则来计算输出,他引进了实数的权重值w1,w2,…用来代表各输入对于输出的重要性,输出0或1取决于各分配权重之和 jωjxj 是大于还是小于某个阈值。跟权重值一样,阈值是一个实数,也是神经元的一个参数。用更精确的代数形式来表示:
output={ 0,1,if jωjxjthreshould if jωjxj>threshould

这就是感知机工作的方式。
这就是基本的数学模型。你可以这样理解,感知机是一种通过权衡各种依据来做判断的机器。举个例子,这个例子可能并不实际但是很容易去理解,之后我也会举一些更现实的例子。假设快到周末了,你得知在你所在的城市将会举办一个奶酪节,你很喜欢奶酪于是决定是否去参加这个节日。你可能需要权衡三个因素来做决定:
1、天气是否好?
2、你男朋友或女朋友是否会陪你去?
3、是否靠近公共交通站点?(假设你没有车)
我们可以用3个二进制变量 x1 , x2 x3 来表示这三个因素,比如我们用 x1 =1来表示天气好, x1 =0来表示天气不好。与此类似 x2 =1 表示你男朋友或女朋友会陪你去, x2 =0 表示不会。同样 x3 来代表公共交通情况。
现在假设你极其喜欢奶酪,所以即使你的男朋友或女朋友没有兴趣参加或者交通不方便的情况下你还是愿意去参加这个节日,但是你非常讨厌坏天气,如果天气不好你绝对不会去。你可以用感知机去模拟这种决策。一种方法是选好一个 w1 =6作为天气的权重, w2 =2、 w3 =2分别作为另外两个的因素的权重。 w1 有更大的值表示天气是否好相比你男朋友和女朋友的陪伴或交通是否便利对你来说更重要。最后假设选择5作为感知机的阈值。有了这些选择,感知机实现了想要的决策模型。当天气好的时候总是输出1,而当天气不好的时候总是输出0。至于你男朋友或女朋友是否想去或公共交通是否便利对输出不会产生什么影响。
通过采用不同的权重值和阈值,我们可以得到不同的决策模型。例如,假如我们把阈值换成3,那么这个感知机做出去奶酪节的决策条件是天气很好( jωjxj 必定大于6)或者在你男朋友或女朋友可以陪你去并且交通也比较便利的情况下( jωjxj 必定大于4),换句话说这就是一个与之前的模型不同的决策模型。降低阈值表示你更愿意去参加这个节日。
显然上面的感知机并不是一个完整的人类决策模型!但是这例子展示了一个感知机是如何通过权衡各种因素来做决定。那么可以相信一个由感知机组成的更复杂的网络可以做出更精细的决定。
这里写图片描述

在这个网络中,第一列的感知机,我们又称之为第一层感知机通过权衡输入做出3个简单决策。那么第二层的感知机是怎样的呢?这一层的感知机通过权衡第一层的决策结果来做决策,那么这一层的感知机相比第一层的感知机,可以在更复杂更抽象的层面作出决策。那么第三层的感知机可以做出更加复杂的决策。通过这种方式一个多层感知机网络可以用于做复杂精细的决策。
附带说一下,在我定义感知机的时候说过一个感知机只会有一个输出,但是在上面的网络图中一个感知机似乎有多个输出。事实上,它仍然还是只有一个输出。多个表示输出的箭头只是为了更方便表示一个感知机的输出会被用作其它多个感知机的输入。相比画一根分叉的线这样显得更讨巧一些。
我们再简化一下对感知机的描述。条件 jwjxj>threshold 有点累赘,我们可以用两个数学记号变化来简化它,第一变化是把 jwjxj 表示为一个点积形式, wxj
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值