神经网络第一章1.2 Sigmoid neurons

Sigmoid神经元,也翻译成Sigmoid激活函数。

       学习算法听起来很棒。但是我们怎样才能为神经网络设计出这样的算法呢?假设我们有一个感知器网络,我们想用它来学习解决一些问题。例如,到网络的输入可以是来自数字的扫描的手写图像的原始像素数据。我们希望网络学习权值和偏差,这样网络的输出就能正确地对数字进行分类。为了了解学习是如何工作的,假设我们对网络中的一些权重(或偏差)做了一个小的改变。我们想要的是,重量的微小变化只会引起网络输出的微小相应变化。稍后我们将看到,这个属性将使学习成为可能。示意图上,这是我们想要的(显然这个网络太简单了,无法进行手写识别!):

 

     如果一个权重(或偏差)的微小变化只会导致输出的微小变化,那么我们可以使用这个事实来修改权重和偏差,使我们的网络以我们想要的方式表现得更为出色。例如,假设网络错误地将图像分类为“8”,而图像应该是“9”。我们可以找出如何在权重和偏差上做一个小的改变,这样网络就可以更接近于将图像分类为“9”。然后我们重复一遍,一遍又一遍地改变权重和偏差,以产生更好更好的输出。网络将在学习。

问题是,当我们的网络包含感知器时,这并不是这样。事实上,网络中任何一个感知器的权重或偏差的微小变化有时会导致该感知器的输出完全翻转,例如从0到1。这样的翻转可能会导致网络其余部分的行为以非常复杂的方式完全改变。所以,虽然你的“9”现在可能被正确分类,但是网络在所有其他图像上的行为很可能已经完全改变了,在一些难以控制的方式。这使得我们很难看到如何逐步修改权重和偏差,以便网络更接近所需的行为。也许有一些巧妙的方法来解决这个问题。但是,我们如何才能让感知者网络学习还不清楚。

我们可以通过引入一种新型的人工神经元,称为Sigmod神经元来克服这个问题。Sigmod神经元与感知器相似,但经过修饰后,其权重和偏差的微小变化只会导致输出的微小变化。这是一个关键的事实,它将允许Sigmod神经元网络学习。

好吧,让我来描述Sigmod神经元。我们将以我们描述感知机的相同方式描绘Sigmod神经元:

 

就像一个感知器,Sigmod神经元有输入,x1,x2,…。但是这些输入不是0或1,而是可以接受0到1之间的任何值。例如,0.638…是Sigmod神经元的有效输入。也和感知器一样,Sigmod神经元对每个输入都有权,w1,w2,…,还有一个总偏差,b。但输出不是0或1,而是σ(w⋅x+b),其中σ 被称为sigmoid函数**,σ 有时被称为逻辑函数,这种新的神经元称为逻辑神经元。记住这个术语是很有用的,因为这些术语被许多使用神经网络的人使用。但是,我们将坚持使用sigmoid术语,定义如下:

更明确地说,输入x1,x2,…,权重w1,w2,…,偏差b的sigmoid神经元的输出是:

乍一看,Sigmod神经元和感知器看起来很不一样。如果你还不熟悉的话,sigmoid函数的代数形式可能会显得晦涩难懂。事实上,感知器和sigmoid神经元有很多相似之处,sigmoid函数的代数形式更像是一个技术细节,而不是理解的真正障碍。

为了理解与感知器模型的相似性,假设z≡w⋅x+b是一个大的正数。然后是e−z≈0左右σ((z)≈1.换句话说,当z=w⋅x+b是大而正的,来自Sigmod神经元的输出大约是1,就像一个感知器的输出一样。另一方面,假设z=w⋅x+b是非常负的。然后是e−z→∞, 以及σ((z)≈所以当z=w⋅x+b是非常负的,Sigmod神经元的行为也非常接近于感知器。只有当w⋅x+b的大小适中,与感知器模型有很大的偏差。

那么代数形式呢σ? 我们怎么能理解呢?事实上σ 不是很重要-真正重要的是函数在绘制时的形状。形状如下:

此形状是阶跃函数的平滑版本:

如果σ 如果实际上是一个阶跃函数,那么Sigmod神经元将是一个感知器,因为输出将是1还是0取决于w⋅x+b为正或负**实际上,当w⋅x+b=0感知器输出0,而阶跃函数输出1。严格地说,我们需要修改这个步骤函数。但你知道了。使用实际σ 我们得到的函数,正如上面已经暗示的,平滑的感知器。的确,这是σ 这是关键的事实,而不是它的详细形式。平滑σ 意味着小的变化权重Δwj和Δb在偏差中会产生小的变化Δoutput。事实上,微积分告诉我们Δoutput的近似值为:

其中,和超过所有权重wj,以及∂output/∂wj和∂output/∂b 分别表示输出相对于wj和b的偏导数。如果你不喜欢偏导数,不要惊慌失措!虽然上面的表达式看起来很复杂,但所有的偏导数,实际上它说的很简单(这是一个非常好的消息):Δoutput是变化的线性函数Δwj和Δb在权重和偏差中。这种线性使得选择小的权值和偏差变化变得容易,从而实现输出中任何期望的小变化。因此,虽然Sigmod神经元的定性行为与感知器有很多相同的性质,但它们却使我们更容易地了解如何改变权值和偏差将改变输出。

如果是σ 这真的很重要,而不是它的确切形式,那么为什么要使用特定的形式σ 在方程式(3)中?事实上,在后面,我们偶尔会考虑输出为f(w)的神经元⋅x+b)对于其他激活函数f(⋅). 当我们使用不同的激活函数时,主要变化的是方程(5)中偏导数的特定值发生变化。结果是,当我们以后计算偏导数时,使用σ 将简化代数,因为指数在区分时具有可爱的性质。无论如何,σ 通常用于神经网络的工作,是我们在这本书中最常使用的激活函数。

我们应该如何解释Sigmod神经元的输出?显然,感觉器和Sigmod神经元之间的一个大区别是Sigmod神经元不仅输出0或1。它们可以输出0到1之间的任何实数,因此,0.173…和0.689等值是合法的输出。例如,如果我们想使用输出值来表示输入到神经网络的图像中像素的平均强度,这可能很有用。但有时会让人讨厌。假设我们希望网络的输出指示“输入图像是9”或“输入图像不是9”。显然,如果输出是0或1,就像在感知器中一样,这样做是最简单的。但实际上,我们可以制定一项公约来处理这一问题,例如,决定将至少0.5的任何产出解释为表示“9”,而任何小于0.5的产出都表示“不是9”。我会在使用这样一个约定时明确地说明,所以它不应该引起任何混乱。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值