机器学习笔记之前馈神经网络——M-P神经元模型与感知机的关系
引言
从本节开始,介绍反向传播算法( BackPropagation,BP \text{BackPropagation,BP} BackPropagation,BP),本节将介绍 M-P \text{M-P} M-P神经元模型与感知机算法的关系。
M-P \text{M-P} M-P神经元模型
本部分是针对前馈神经网络模型结构上的理论上的补充说明。详见《机器学习》(周志华著)P98。
M-P \text{M-P} M-P神经元模型由 1943 \text{1943} 1943年被提出,它是神经网络的基本组成单位:
- 这里的 x m ( m = 1 , 2 , ⋯ , M ) x_m(m=1,2,\cdots,\mathcal M) xm(m=1,2,⋯,M)表示 M \mathcal M M个其他神经元,如果是输入层,那么 x m x_m xm表示样本特征 X \mathcal X X的随机变量集合;对应的 W m ( m = 1 , 2 , ⋯ , M ) \mathcal W_m(m=1,2,\cdots,\mathcal M) Wm(m=1,2,⋯,M)表示各神经元向神经元 Y \mathcal Y Y传递过程中对应的权重信息。
- θ \theta θ被称作阈值( Threshold \text{Threshold} Threshold)。从逻辑意义的角度观察,它可以看作成一个触发器:一旦神经元 Y \mathcal Y Y接收到的总输入值超过阈值 θ \theta θ,那么神经元 Y \mathcal Y Y就被激活,从而得到神经元 Y \mathcal Y Y的输出结果 y o u t y_{out} yout:
但从数学意义的角度观察,总输入值
∑ m = 1 M W m x m \sum_{m=1}^{\mathcal M} \mathcal W_mx_m ∑m=1MWmxm与阈值
θ \theta θ计算了它们之间的偏差
∑ m = 1 M W m x m − θ \sum_{m=1}^{\mathcal M} \mathcal W_mx_m - \theta ∑m=1MWmxm−θ。也就是说,神经元
Y \mathcal Y Y总是会被激活的,只不过激活的效果视偏差结果而定。
y o u t = f ( ∑ m = 1 M W m x m − θ ) y_{out} = f \left(\sum_{m=1}^{\mathcal M} \mathcal W_m x_m - \theta\right) yout=f(m=1∑MWmxm−θ)
其中 f ( ⋅ ) f(\cdot) f(⋅)表示激活函数( Activation Function \text{Activation Function} Activation Function)。上式表示的具体流程为:
需要注意的点:
x m ( m = 1 , 2 , ⋯ , M ) x_m(m=1,2,\cdots,\mathcal M) xm(m=1,2,⋯,M)如果不是输出层的神经元,那么它们每个神经元也应存在对应的阈值,只不过上图没有将其画出而已。
- 神经元 Y \mathcal Y Y将接收到其他 M \mathcal M M个其他神经元 x x x的输入信号,并通过这些输入信号通过带权重 W \mathcal W W的连接( Connection \text{Connection} Connection)向神经元 Y \mathcal Y Y进行传递;
- 神经元 Y \mathcal Y Y将接收到的总输入结果 ∑ m = 1 M W m x m \sum_{m=1}^{\mathcal M} \mathcal W_m x_m ∑m=1MWmxm与神经元 Y \mathcal Y Y的阈值 θ \theta θ之间进行比较;
- 最终将比较结果 ∑ m = 1 M W m x m − θ \sum_{m=1}^{\mathcal M} \mathcal W_mx_m - \theta ∑m=1MWmxm−θ通过激活函数处理以产生神经元 Y \mathcal Y Y的输出 y o u t y_{out} yout。
关于激活函数,理想状态下的激活函数就是指示函数自身:
当比较结果
∑ m = 1 M W m x m − θ > 0 \sum_{m=1}^{\mathcal M} \mathcal W_mx_m - \theta>0 ∑m=1MWmxm−θ>0时,神经元
Y \mathcal Y Y必然以状态
1 1 1的情况下被激活;相反,如果总输入结果
< < <阈值时,神经元
Y \mathcal Y Y必然以和状态
1 1 1相反的状态
0 0 0情况下激活。
之所以称之为‘理想状态’,是因为该函数的功能与上面描述的完全一致,没有出现流程错误的可能性。
然而,指示函数自身并不是连续函数,着意味着该函数并非在其定义域内处处可导。如果针对损失函数求解连接权重 W m ( m = 1 , 2 , ⋯ , M ) \mathcal W_m(m=1,2,\cdots,\mathcal M) Wm(m=1,2,⋯,M)的最优值,上述函数因无法求导而无法对权重信息进行更新,这并不是一个好的性质。
因此,实际上通常使用 Sigmoid \text{Sigmoid} Sigmoid函数作为激活函数。 Sigmoid \text{Sigmoid} Sigmoid函数图像表示如下:
关于
Sigmoid \text{Sigmoid} Sigmoid函数,不仅在‘激活函数’中提到过,在
逻辑回归( Logistic Regression \text{Logistic Regression} Logistic Regression),以及
受限玻尔兹曼机( Restricted Boltzmann Machine,RBM \text{Restricted Boltzmann Machine,RBM} Restricted Boltzmann Machine,RBM)——后验概率求解中都提到过相关性质。后续会专门写一篇关于
Sigmoid \text{Sigmoid} Sigmoid函数的总结。
标记-> 关键词:对数几率函数。
该函数的特点相比指示函数可在其定义域上处处连续、可导,这样在迭代求解连接权重时,能够对连接权重的最优方向进行计算;相反,依然从概率的角度观察, Sigmoid \text{Sigmoid} Sigmoid激活函数并没有指示函数那样准确和果断:
- 当总输入结果超过阈值时,我们仅是分配一个 稍微高一点( > 0.5 >0.5 >0.5)的神经元激活状态。
- 相反,当总输入结果小于阈值时,依然存在一定神经元激活状态,只不过和指示函数相比,它们的区别可能小很多。
由于 Sigmoid \text{Sigmoid} Sigmoid函数能够把较大范围内变化的输入值压缩到 ( 0 , 1 ) (0,1) (0,1)范围的区间内,因而也称 Sigmoid \text{Sigmoid} Sigmoid函数为挤压函数 ( Squashing Function ) (\text{Squashing Function}) (Squashing Function)。
而神经网络( Neural Network \text{Neural Network} Neural Network)就是这些神经元模型按照一定的层次结构连接起来得到的模型结果。
‘按照一定层次结构’本质上是若干个
y j = f ( ∑ m = 1 M W m x m − θ j ) y_j = f \left(\sum_{m=1}^{\mathcal M} \mathcal W_mx_m - \theta_j\right) yj=f(∑m=1MWmxm