激活函数-将神经元的工作一般化
上一篇文章中介绍了用数学式表示了神经元的工作。本篇试着将其在数学上一般化。
简化神经元的图形
为了更接近神经元的形象,将神经元表示为了下图的样子。
神经元的示意图(3个输入、2个输出的情况)。轴突分岔为两个输出端,其输出值相同。
然而,为了画出网络,需要画很多的神经元,在这种情况下上面那样的图就不合适了。因此,使用如下所示的简化图,这样很容易就能画出大量的神经元。
该图是神经元的简化图。用箭头方向区分输入和输出。神经元的输出由两个箭头指出,其值是相同的。
为了与生物学的神经元区分开来,把经过这样简化、抽象化的神经元称为神经单元(unit)。
注:很多文献直接称为“神经元”。这里为了与生物学术语“神经元”区分,使用“神经单元”这个称呼。另外,也有文献将“神经单元”称为“人工神经元”,但是由于现在也存在生物上的人工神经元,所以我们也不使用“人工神经元”这个称呼。
激活函数
将神经元的示意图抽象化之后,对于输出信号,我们也对其生物上的限制进行一般化。
根据点火与否,生物学上的神经元的输出y分别取值1和0(下图)。
点火与否用1和0表示。
然而,如果除去“生物”这个条件,这个“0和1的限制”也应该是可以解除的。这时表示点火与否的下式(1-2节式(3))就需要修正。
这里,u是单位阶跃函数。将该式一般化,如下所示。
这里的函数a是建模者定义的函数,称为激活函数(activation function)。x1、x2、x3是模型允许的任意数值,y是函数a能取到的任意数值。这个式(2)就是今后所讲的神经网络的出发点。
注:虽然式(2)只考虑了3个输入,但这是很容易推广的。另外,式(1)使用的单位阶跃函数u(z)在数学上也是激活函数的一种。
请注意,式(2)的输出y的取值并不限于0和1,对此并没有简单的解释。一定要用生物学来比喻的话,可以考虑神经单元的“兴奋度”“反应度”“活性度”。
下面来总结一下神经元和神经单元的不同点,如下表所示。
将神经元点火的式(1)一般化为神经单元的激活函数式(2),要确认这样做是否有效,就要看实际做出的模型能否很好地解释现实的数据。实际上,式(2)表示的模型在很多模式识别问题中取得了很好的效果。
Sigmoid函数
激活函数的代表性例子是Sigmoid函数σ(z),其定义如下所示。
之后再详细讨论这个函数。这里先来看看它的图形,Sigmoid函数σ(z)的输出值是大于0小于1的任意值。此外,该函数连续、光滑,也就是说可导。这两种性质使得Sigmoid函数很容易处理。
右图是激活函数的代表性例子Sigmoid函数σ(z)的图形。除了原点附近的部分,其余部分与单位阶跃函数(左图)相似。Sigmoid函数具有处处可导的性质,很容易处理。
单位阶跃函数的输出值为1或0,表示点火与否。然而,Sigmoid函数的输出值大于0小于1,这就有点难以解释了。如果用生物学术语来解释的话,如上文中的表格所示,可以认为输出值表示神经单元的兴奋度等。输出值接近1表示兴奋度高,接近0则表示兴奋度低。
本系列博文中将Sigmoid函数作为标准激活函数使用,因为它具有容易计算的漂亮性质。如果用数学上单调递增的可导函数来代替,其原理也是一样的。
偏置
再来看一下激活函数的式(2)。这里的θ称为阈值,在生物学上是表现神经元特性的值。从直观上讲,θ表示神经元的感受能力,如果θ值较大,则神经元不容易兴奋(感觉迟钝),而如果值较小,则神经元容易兴奋(敏感)。
然而,式(2)中只有θ带有负号,这看起来不漂亮。数学不喜欢不漂亮的东西。另外,负号具有容易导致计算错误的缺点,因此,将-θ替换为b。
经过这样处理,式子变漂亮了,也不容易发生计算错误。这个b称为偏置(bias)。
输入x1、x2、x3,权重w1、w2、w3,偏置b,以及输出y在式(4)中联系了起来。
本系列博文将式(4)作为标准使用。另外,此时的加权输入z,如下所示。
式(4)和式(5)是今后所讲的神经网络的出发点,非常重要。
另外,生物上的权重w1、w2、w3和阈值θ(=-b)都不是负数,因为负数在自然现象中实际上是不会出现的。然而,在将神经元一般化的神经单元中,是允许出现负数的。
#### 问题右图是一个神经单元。如图所示,输入x1的对应权重是2,输入x2的对应权重是3,偏置是-1。根据下表给出的输入,求出加权输入z和输出y。注意这里的激活函数是Sigmoid函数。
解结果如下表所示(式((3))中的e取e=2.7进行计算)。
#### 备注改写式(5)
将式(5)像下面这样整理一下。
这里增加了一个虚拟的输入,可以理解为以常数1作为输入值(如下图)。
于是,加权输入z可以看作下面两个向量的内积。
(w1, w2, w3, b)(x1, x2, x3,1)
计算机擅长内积的计算,因此按照这种解释,计算就变容易了。