1 网络构建
输入层其结点表示单纯的网络输入,没有线性加权求和、激活函数等运算,为第0层,不算入整个网络的有效层数。
隐藏层激活函数为S型等非线性函数,其神经元结点个数的经验公式
输出层有多种形式:离散单输出(二分类)、离散多输出(多分类)、连续单输出(函数逼近,或称回归)、连续多输出。激活函数可为非线性或线性的。
激活函数 激活函数是可微的,因为BP算法是基于梯度的。
非线性激活函数:sigmoid、tanh、高斯函数,第三个与前两个的区别在于使用欧式距离而不是点积表示相似性,用在径向基函数网络中。
分类网络和回归网络
1.二分类网络输出层只有一个结点,激活函数可以是非线性的,输出
o j =f(∑ m i=0 w ij ∗x i )
可表示
P(o j =1|I,W)
2. 多分类输出层多个节点,一种可能的实现是每个结点为一个二分类节点,输出为0或1,且这些结点中只有一个为1,表示选中多分类中的对应的分类。
3.回归网络,即函数逼近网络的输出层有一个或多个结点,输出值为连续的。且与分类网络不同的是它的激活函数为线性函数,是隐藏层输出的加权和
o=∑ m i=0 w ij ∗x i
.(但是看有的资料的回归网络的输出层激活函数也是非线性的)
本例中神经网络的隐藏层结点个数为
M
,激活函数为
2 样本划分
training set:用于学习模型参数
validation set:用于在多个模型中选择较优的模型
test set:用于验证较优模型的泛化能力
3训练算法
3.1 前向传播
根据网络层之间的权重(包括偏置)、激活函数,由输入层结点值计算网络各层结点的值。
3.2 反馈传播
在前向传播过程中,可得到网络的输出值 o j ,从而可计算它与目标输出的均方差 ∑ j (o j −y j ) 2 ,该均方差是网络权重(包括偏置)的函数,而监督学习的目的是最小化该均方差。也就是Widrow-Hoff算法(LMS的近似)原则,即最小化网络输出与目标输出的均方差,该最小化问题的解析方法为分别求解对各层的权重的偏导数为零的等式的解,然而解析解在实际中往往不可求,所以使用迭代的方法来搜索权重参数空间寻找使性能参数最小的权重值,比如梯度下降搜索法。
3.2.1 梯度下降
批量梯度下降:对所有样本(或一个EPOCH,即S个样本)的均方差和求偏导而得到梯度值,为全局最优
∂E∂w ij =∂∑ s 12 (o s j −y s j ) 2 ∂w ij
,是所有单样本的梯度之和,对应批量学习算法,即遍历所有样本而得到它们梯度的累加之后更新权重值。
随机梯度下降:对单样本的均方差求偏导而得到梯度值,为局部最优
∂E s ∂w ij =∂12 (o s j −y s j ) 2 ∂w ij
,对应在线学习算法,即根据每个样本计算的梯度来更新权重值。
隐藏层到输出层梯度
∂E∂w 2 ij =∂12 (f 2 (∑ N i=0 w 2 ij x i )−y j ) 2 ∂w 2 ij =(o j −y j )f ′ 2 x i =(o j −y j )x i
,其中
f ′ 2 =1
.
输入层到隐藏层梯度
利用链式法则进行推导,
∂E∂w 1 ij =
加快梯度下降算法收敛速度
- 动量(momentum):在梯度下降算法中,参数相邻两次的更新量可能很不相同以至于出现摆动,减缓收敛速度,所以可以在当前改变中考虑上次更新量。这样也可能使变化量冲过误差曲面上的极小值或滚过平坦区域,如果没有动量,那么变化量就可能在这个区域停止,即在梯度不变的区域逐渐增大搜索步长,加速收敛。
Δw t i =−η∂E t ∂w t i +αΔw t−1 i其中, t 表示一个更新周期,以Epoch或样本为单位。
α 取值在0.5到1.0之间,该方法对在线学习算法很有用,因为该算法参数更新量的波动比较大。 - 自适应学习率:误差减少时,表示参数更新的方向是对的,故增大学习率,反之减小学习率。
3.2.2 模型精度
分类问题的准确度为 correctNumtotalSamNum ,回归问题的误差 ϵ=1S ∑ s (o s j −y s j )
4 应用
分类、回归
实现
分类和回归实现上的不同
1.网络结构上,回归模型的输出层的激活函数可以使线性函数,输出为连续值。
2.模型精度度量不同,见3.2.2部分的阐述。
c++版本的回归模型
参考文献
1.《神经网络和机器学习》中文第三版
2.《机器学习》