您的位置:首页 > 理论基础 > 计算机网络

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

2017-06-03 15:52 555 查看
人类视觉系统是世界奇观之一。考虑以下手写数字序列:



大多数人毫不费力地将这些数字识别为504192.这很容易就是欺骗性的。在我们大脑的每个半球,人类有一个主要的视觉皮层,也被称为V1,包含1.4亿个神经元,它们之间有数千亿的连接。然而,人类视觉不仅涉及到V1,而且整个系列的视觉皮肤--V2,V3,V4和V5 - 都在逐渐进行更复杂的图像处理。我们的头脑是超级计算机,通过数亿年的发展进行调整,并且非常适合了解视觉世界。识别手写数字并不容易。相反,我们的人类是非常愚蠢的,非常有意义地说明了我们的眼睛对我们的看法。但几乎所有这些工作都是无意识地完成的。所以我们通常不会理解视觉系统解决问题的难度。

如果您尝试编写一个计算机程序以识别上述数字,则视觉模式识别的难度变得明显。当我们这样做时,似乎很容易突然变得非常困难。关于我们如何识别形状的简单直观 - “9在顶部有一个循环,右下方有一个垂直行程” - 结果表现得不算简单。当你试图使这样的规则精确时,你很快就会迷失在例外和注意事项和特殊情况之中。似乎没有希望

神经网络以不同的方式解决问题。这个想法是采取大量的手写数字,称为培训示例,



然后开发一个可以从这些培训实例中学习的系统。换句话说,神经网络使用示例来自动推断用于识别手写数字的规则。此外,通过增加训练示例的数量,网络可以更多地了解手写,从而提高其准确性。所以我上面只显示了100个训练数字,也许我们可以通过使用数千甚至数百万或数十亿的培训实例来构建一个更好的手写识别器。

在本章中,我们将编写一个实现神经网络的计算机程序,该神经网络学习识别手写数字。该程序只有74线长,不使用特殊的神经网络库。但这个简短的程序可以识别96%以上的数字,无需人为干预。此外,在后面的章节中,我们将开发可以将准确度提高到99%以上的想法。事实上,最好的商业神经网络现在很好,它们被银行用来处理支票,也可以由邮局来识别地址。

我们专注于手写识别,因为它是一个很好的原型问题,用于一般学习神经网络。作为一个原型,它是一个很棒的地方:它是具有挑战性的 - 识别手写数字并不是很小的专长 - 但是并不困难,需要一个非常复杂的解决方案,或巨大的计算能力。此外,它是开发更先进技术的好方法,如深度学习。所以在整本书中,我们将重复回到手写识别问题。在本书的后面,我们将讨论如何将这些想法应用于计算机视觉中的其他问题,以及语音,自然语言处理和其他领域中的其他问题。

当然,如果本章的内容只是写一个计算机程序来识别手写数字,那么这一章将会更短!但是,一直以来,我们将开发许多关于神经网络的关键思想,包括两种重要类型的人造神经元(感知器和S形神经元),以及称为随机梯度下降的神经网络的标准学习算法。在整个过程中,我将重点解释为什么事情按照自己的方式完成,以及建立神经网络直觉。这需要比如果我刚刚介绍发生了什么的基本机制的更多的讨论,但是值得你深入了解一下。在收益之中,在本章结尾,我们将能够明白什么深入学习,


感知

什么是神经网络?要开始,我将解释一种称为感知器的人造神经元。感知是 开发 由科学家在20世纪50年代和60年代 弗兰克·罗斯布拉特,灵感来自早期的 工作沃伦·麦卡洛克瓦尔特·皮茨。今天,使用其他人造神经元的模型更为常见
- 在本书中,在神经网络的现代工作中,使用的主要神经元模型称为S形模型 神经元。我们很快就会到Sigmoid神经​​元。但是要了解为什么Sigmoid神经​​元被定义为他们的方式,值得花时间先了解感知器。

那么感知器怎么工作?感知器需要几个二进制输入 ,并产生单个二进制输出: X1,x2,...x1,x2,…



在示例中,感知器具有三个输入,即。一般来说,它可以有更多或更少的输入。Rosenblatt提出了一个简单的规则来计算输出。他引入了权重,w1,w2,...,表示输出相应输入的重要性的实数。神经元的输出,0或1,由加权和是否确定 ΣĴ瓦特ĴXĴ大于某个小于或大于阈值。就像重量一样, 阈值是作为神经元参数的实数。以更精确的代数术语:X1,x2,x3x1,x2,x3w
^1,w2,...w1,w2,…0011ΣĴw
^ĴXĴ∑jwjxj 这一切有一个感知器是如何工作的!

产量={ 01如果 ΣĴw
^ĴXĴ≤ 阈值如果 ΣĴw
^ĴXĴ> 阈值(1)(1)output={0if ∑jwjxj≤ threshold1if ∑jwjxj> threshold

这是基本的数学模型。你可以考虑感知器的一个方法是它是通过加重证据来做出决定的一种设备。让我举个例子。这不是一个非常现实的例子,但很容易理解,我们很快就会得到更逼真的例子。假设周末来了,你们听说你城里会有一个奶酪节。你喜欢奶酪,正在试图决定是否去参加节日。你可以通过衡量三个因素来作出你的决定:

天气好吗
你的男朋友或女朋友想陪你吗?
节日在公共交通附近吗?(你没有车)

我们可以通过相应的二进制变量和x3表示这三个因子 。例如,如果天气良好,我们将x1=1,如果天气不好,则x1=0。同样,X2=1,如果你的男朋友或女朋友想走,和X2=0,如果没有。同样地,对于x3和公共交通也是如此。X1,x2x1,x2X3x3X1= 1x1=1X1= 0x1=0X2= 1x2=1X2= 0x2=0X3x3

w
^1= 6w1=6w
^2= 2w2=2w
^3= 2w3=2w
^1w1五51100

33

显然,感知器不是人类决策的完整模型!但是,这个例子说明了感知器如何衡量不同类型的证据来做出决定。似乎似乎合理的是,一个复杂的感知器网络可能会做出相当微妙的决定:



在这个网络中,感知器的第一列 - 我们称之为感知器的第一层 -
通过权衡输入证据来做出三个非常简单的决定。第二层感知器呢?这些感知器中的每一个都通过权衡第一层决策的结果来作出决定。以这种方式,第二层中的感知器可以在比第一层中的感知器更复杂和更抽象的水平上做出决定。更复杂的决定可以由感知器在第三层中做出。以这种方式,感知器的多层网络可以进行复杂的决策。

顺便说一下,当我定义感知器时,我说感知器只有一个输出。感知器上方的网络看起来像有多个输出。实际上,它们仍然是单一输出。多个输出箭头仅仅是指示感知器的输出被用作几个其他感知器的输入的有用方式。绘制单独的输出线然后分裂不那么笨重。

ΣĴw
^ĴXĴ> 阈值∑jwjxj>thresholdΣĴw
^ĴXĴ∑jwjxjw
^ ⋅ X ≡ ΣĴw
^ĴXĴw⋅x≡∑jwjxjw
^wXxb ≡ - 门槛b≡−threshold

output = { 01如果 瓦特⋅X+b≤0如果 w·x+b>0(2)(2)output={0if w⋅x+b≤01if w⋅x+b>0
111111

AND
OR
NAND
- 2−233



然后我们看到输入产生输出1,因为 (-2)*0+(-2)*0+3=3是正的。在这里,我引入了* 符号使得乘法显式。类似的计算表明,输入01和10产生输出1。但是输入 11产生输出0,因为(-2)*1+(-2)*1+3=-1为负。所以我们的感知器实现一个 门!000011(−2)∗0+(−2)∗0+3=3(−2)∗0+(−2)∗0+3=3∗∗0101101011111100(−2)∗1+(−2)∗1+3=−1(−2)∗1+(−2)∗1+3=−1
NAND


NAND
NAND
NAND
NAND
x1x1x2x2x1⊕x2x1⊕x211x1x1x2x211x1x2x1x2



为了获得一个相当的感知器网络,我们用感应器替换所有的
NAND
门,两个输入,每个输入的重量 ,总体偏差为3。这是结果网络。请注意,我已经将感知器移动到右下角 的一点,只是为了更容易在图上绘制箭头: −2−233
NAND




这个感知器网络的一个显着方面是,最左边的感知器的输出被用作最底层感知器的两倍。当我定义感知器模型时,我没有说是否允许这种双输出到同一个地方。其实这并不重要。如果我们不想允许这样的事情,那么可以简单地将两条线合并成一个单一的连接,其权重为-4而不是-2个权重的两个连接。(如果你不明白这一点,你应该停下来证明自己是等同的。)随着这种变化,网络看起来如下,所有未标记的权重等于-2,所有偏差等于3,而单重-4,标示:



到目前为止,我一直在绘制像和x2这样的输入,作为浮动到感知器网络左侧的变量。事实上,传统的是为输入输入一个额外的感知器层(输入层): x1x1x2x2



这种输入感知器的符号,其中我们有一个输出,但没有输入,



是一个速记。它并不意味着没有输入的感知器。看到这一点,假设我们确实有一个没有投入的感知器。然后加权总和将总是零,所以感知器将输出1,如果b>0,和0如果b≤0。也就是说,感知器将简单地输出固定值,而不是期望值(在上面的示例中为x1)。这是更好地认为输入感知为没有真正被感知的一切,而是特殊单位被简单地定义输出所需的价值观, X1,∑jwjxj∑jwjxj11b>0b>000b≤0b≤0x1x1x1,x2,…x1,x2,…

加法器示例演示了如何使用感知器网络来模拟包含许多
NAND
门的电路。由于
NAND
门是通用的计算,因此感知器也是通用的计算。

感知器的计算普遍性同时令人放心和令人失望。这是令人放心的,因为它告诉我们感知器网络可以像任何其他计算设备一样强大。但这也令人失望,因为它似乎似乎感知器只是一种新型的
NAND
门。这几乎不是大消息!

但是,情况比这个观点好。事实证明,我们可以设计可以自动调整人造神经元网络的权重和偏差的学习算法。这种调整发生在对外部刺激的反应中,没有程序员的直接干预。这些学习算法使我们能够以与常规逻辑门完全不同的方式使用人造神经元。
NAND
我们的神经网络不是明确地布置电路和其他门,而是可以简单地学习解决问题,有时甚至难以直接设计常规电路的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐