- 一、神经网络基础
- 二、误差逆传播算法(BP神经网络算法)
- 误差函数
- 过拟合
- 全局最小与局部最小
- 三、神经网络可视化
一、神经网络基础
1、神经元模型(neuron)。
细胞体分为两部分,前一部分计算总输入值(即输入信号的加权和,或者说累积电平),后一部分先计算总输入值与该神经元阈值的差值,然后通过激活函数(activation function)的处理,产生输出从轴突传送给其它神经元。M-P神经元模型如下图所示:
2、激活函数
与线性分类十分相似,神经元模型最理想的激活函数也是阶跃函数,即将神经元输入值与阈值的差值映射为输出值1或0,若差值大于零输出1,对应兴奋;若差值小于零则输出0,对应抑制。但阶跃函数不连续,不光滑,故在M-P神经元模型中,也采用Sigmoid函数来近似, Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围内,所以也称为挤压函数(squashing function)。
3、感知机
感知机(Perceptron)是由两层神经元组成的一个简单模型,但只有输出层是M-P神经元,即只有输出层神经元进行激活函数处理,也称为功能神经元(functional neuron);输入层只是接受外界信号(样本属性)并传递给输出层(输入层的神经元个数等于样本的属性数目),而没有激活函数。这样一来,感知机与之前线性模型中的对数几率回归的思想基本是一样的,都是通过对属性加权与另一个常数求和,再使用sigmoid函数将这个输出值压缩到0-1之间,从而解决分类问题。不同的是感知机的输出层应该可以有多个神经元,从而可以实现多分类问题,同时两个模型所用的参数估计方法十分不同。
感知机的学习采用随机梯度下降算法(SGD):
其中 η∈(0,1)称为学习率,可以看出感知机是通过逐个样本输入来更新权重,首先设定好初始权重(一般为随机),逐个地输入样本数据,若输出值与真实标记相同则继续输入下一个样本,若不一致则更新权重,然后再重新逐个检验,直到每个样本数据的输出值都与真实标记相同。容易看出:感知机模型总是能将训练数据的每一个样本都预测正确,和决策树模型总是能将所有训练数据都分开一样,感知机模型很容易产生过拟合问题。
局限性:
感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限。 可以证明若二类模式是线性可分的,即存在一个线性超平面能将他们分开,则感知机的学习一定会收敛(converge)而求得适当的权向量w = (w1,w2,w3…..); 否则感知机学习过程将会发生震荡,w难以稳定下来,不能求得合适解。
二、误差逆传播算法(BP神经网络算法)
BP神经网络算法使用梯度下降法(gradient descent),以单个样本的均方误差的负梯度方向对权重进行调节(sgd算法)。学习率η∈(0,1)控制着沿反梯度方向下降的步长,若步长太大则下降太快容易产生震荡,若步长太小则收敛速度太慢,一般地常把η设置为0.1,有时更新权重时会将输出层与隐含层设置为不同的学习率。
误差函数:
过拟合:
缓解BP网络的过拟合问题:
-
早停:将数据分为训练集与测试集,训练集用于学习,测试集用于评估性能,若在训练过程中,训练集的累积误差降低,而测试集的累积误差升高,则停止训练。
-
引入正则化(regularization):基本思想是在累积误差函数中增加一个用于描述网络复杂度的部分,例如所有权值与阈值的平方和,其中λ∈(0,1)用于对累积经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。
全局最小与局部最小:
局部极小解:参数空间中的某个点,其邻域点的误差函数值均不小于该点的误差函数值。
全局最小解:参数空间中的某个点,所有其他点的误差函数值均不小于该点的误差函数值。
跳出局部最小的方法:
- 以多组不同参数值初始化多个神经网络,按标准方法训练,迭代停止后,取其中误差最小的解作为最终参数。
- 使用“模拟退火”技术
- 使用随机梯度下降,即在计算梯度时加入了随机因素,使得在局部最小时,计算的梯度仍可能不为0,从而迭代可以继续进行。
三、神经网络可视化
可视化工具: