人工神经网络 神经元模型

之前在网上搜索了好多好多关于CNN,卷积神经网络的文章,很多都讲如何卷积、卷积层如何操作、具体如何进行卷积计算、卷积的好处。我也在此之前走了好多弯路,已经很了解如何卷积了,但是却不知道物理意义上,卷积与神经网络之间的联系。

但是鉴于大量的文章在网络上层出不穷地重复与累赘,更重要的是对于 卷积神经网络 一词当中,很多人都忽略了 神经网络 而去强调如何 卷积,因此本文主要讲述卷积神经网络中最重要的部分, 神经网络。希望看完这篇文章和相关卷积神经网络ConvsNet的人能够搞懂 NN 与 Conv 之间的联系与物理意义。

1.人工神经网络

1.1 神经元模型

神经元是神经网络操作的基本信息处理单位。下图给出了神经元的模型model,这张图是后续章节单重将要探讨的设计(人工)神经网络Big Family的基础。我们在这里给出了神经元模型的三种基本元素:

突触 或者 链接链集, 每一个都由其 权值 或者 强度 作为特征。具体来说,在连接到神经元k的突触 j 上的输入信号 xj 被乘以 k 的突触权值 wkj。 注意突触权值 wkj 下标的写法很重要。第一个下标指正在研究的这个神经元,第二个下标指权值所在的突触的输入端。和人脑的突触不一样的是,人工神经元的突触权值只有一个范围,可以取正值也可以取负值。

加法器,用于求输入信号干杯神经元的相应突触加权的和。这个操作构成一个线性组合器。

激活函数,用来限制神经元输出振幅。由于通过激活函数将输出信号压制(限制)到允许范围之内的一定值,故而激活函数也被称之为压制函数。通常,一个神经元输出的正常幅度范围可写成单位区间 [0, 1] 或者另一种区间 [-1, +1]。

图1的神经元也包括了一个外部偏置(bias),记为 bk。偏置 bk的作用是根据其为正或为负,相应地增加或降低激活函数的网络输入。

用数学的公式来表示,我们可以用下面的方程描述上图1的神经元 k:

1.2 激活函数的类型

激活函数 φ(∗),通过诱导局部域 v 定义神经元输出。根据本人的漏见与了解呵,在CNN当中主要用到的三种常见激活函数有(1)sigmoid function (2)tanh function (3) ReLU function:

1.sigmoid函数

此函数的图形是S形状的,在构造人工神经网络中是最常见的激活函数,注意了,这里在 卷积神经网络 当中并不是最常见的,而是第三种 ReLu函数,因为ReLu计算起来更加简单,可以大大缩小计算时间。回到sigmoid函数,它是严格递增函数,在线性和非线性行为之间显现出较好的平衡。sigmoid函数的第一个例子就是logistic函数,定义如下:

其中 α 是sigmoid函数的倾斜参数。修改参数 α 可以改变倾斜程度。在极限情况下,倾斜参数趋于无穷,sigmoid就变成了简单的阈值函数。阈值函数仅取值0或1,而sigmoid的值域是0到1的连续区间。还要主要到sigmoid函数是可微分的。可微分性是神经网络理论的一个重要的特征呵。

下面是更加科学的解释为何激活函数使用sigmoid函数:

从数学意义来看,非线性的Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上,有很好的效果。

从神经科学上来看,中央区酷似神经元的兴奋态,两侧区酷似神经元的抑制态,因而在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区。

2.tanh函数,双曲正切函数

与 sigmoid 不同的是,tanh 是0均值的。因此,实际应用中,tanh 会比 sigmoid 更好。

3.ReLU函数,ReLu(Rectified Linear Units)

很显然,从图左可以看出,输入信号<0时,输出都是0,>0 的情况下,输出等于输入。w 是二维的情况下,使用ReLU之后的效果如下:

ReLU 的优点:

  • Krizhevsky et al. 发现使用 ReLU 得到的SGD的收敛速度会比 sigmoid/tanh 快很多。
  • 相比于sigmoid/tanh,ReLU 只需要一个阈值就可以得到激活值,而不用去算一大堆复杂的运算。
  • ReLU 的缺点:

    当在神经网络中学习速率很大的时候,很有可能网络中大部分神经元都会变成0。

    当然,如果设置一个合适而且较小的学习速率的话,此类问题发生的情况也不会太频繁。同时,为了解决这个问题,后面出现了各种ReLU的变种:Leaky-ReLU、P-ReLU、R-ReLU。

    1.3 被看做有向图的神经网络

    图1中提供了构成人工神经元模型各个要素的功能描述。我们可以在补习生模型功能细节的条件下用信号流图来简化模型外观。图形中各部分的信号流动遵从三条基本规则。

  • 信号仅仅沿定义好的箭头方向在链接上流动。
  • 节点信号等于经有连接进入的有关节点的所有信号的代数和。
  • 节点信号沿着每个外向链接外向传递,此时传递的信号完全独立于外向链接的传递函数。
  • 1.4 反馈

    1.5 多层前馈网络

    在分层网络中,神经元以层的形式组织。相应的计算节点称为隐藏神经元或隐藏单元。隐藏是指神经网络的这一部分无论从网络的输入端或者输出端都不能直接看到。隐藏神经元的功能是以某种有用的方式接入外部输入和网络输出中的。

    多层网络可以根据其输入引出高阶统计特性, 即使网络为局部连接,由于格外的突触连接和额外的神经交互作用,也可以使网络在不十分严格的意义下获得一个全局关系。这也就是CNN使用局部连接之后还获得很好的效果的原因。

    在物理意义上,CNN其实也是上图这样的一个神经网络,其卷积核就是权值的集合,例如一个卷积核是3*3大小,实际上是由9个权值组合而成的。通过大量的输入进行训练,为的就是得到这些权值,然后下一次有新的输入的时候,直接由之前已经训练好的权值和偏置对输入进行计算,直接得到输出。更加详细的会在后续的面包中讲解。

    小结

    文章转载自:Sanjay Chan [ http://blog.csdn.net/chenzomi ]