神经元模型
神经网络指由具有适应性的简单单元组成的广泛并行互连的网络。其中的简单单元就是神经元,M-P神经元模型是一个经典并且沿用至今的模型,对于一个神经元:
其中代表其他神经元的输入,为其他神经元和本神经元的连接权重,是本伸进元的阈值,为激活函数。整个公式的理解就是所有连接神经元对本神经元的所有输入和本神经元的阈值进行比较,通过激活函数判断最后的输出。
对于激活函数有:
- 阶跃函数
- Sigmoid函数
可以将较大范围内的输入挤压到(0,1)范围内。
将所有的神经元连接到一起就形成了神经网络,可以将其视为一个包含了许多参数的模型。例:10个神经元的网络模型参数个数=90个连接权重+10个神经元阈值。
感知机与多层网络
感知机由两层神经元组成,分别成为输入层和输出层。输入层负责信号的输入,输出层接受信号,然后进行函数判断,又称为功能神经元。感知机通过权重和阈值来实现简单的逻辑运算,而和就可以通过学习来获得(可以将看作是整个问题就可以看作是权重的学习过程)。
学习过程通过下式描述:
其中是学习效率,是真实输出,为预测输出,通过每次输出预测的差值对进行调整。
感知机的特点在于,结构简单,但是只能处理比较简单的线性可分问题(即通过一个超平面就可以将两类模式分开),在这类问题中,学习过程会收敛,从而才会有稳定的结果。
对于异或逻辑运算这种非线性可分的问题,就需要比较复杂的多层网络,这种网络除了输入层和输出层,还包含了存于中间的隐含层,隐含层也有函数激活功能,数目为一层或者多层。多层网络的结构特点在于,层间不连,邻层全连,隔层不连,也称为多层前馈神经网络(前馈指的是没有回路和环路)。
误差逆传播算法
误差逆传播算法(error BackPropagation,简称BP)是一种用于训练多层神经网络的算法,多用于多层前馈神经网络,所以有“BP网络”,但是这个算法还可以用于其他神经网络。
对于给定的训练集:
其中:
为样本个数,为属性个数,为输出神经元个数。假定为隐层神经元的个数,表示第个输出神经元的阈值,表示第隐层神经元的阈值,表示输入层和隐层之间的权重,表示隐层和输出层之间的权重。则隐层第个神经元接收的输入为:
输出层第个 神经元接收的输入为:
神经网络的输出为:
则网络在上的均方误差为:
网络中需要确定的参数数目为:,即两层权重和两层阈值,通过迭代学习算法,对参数进行更新估计,因此对于每一个参数有:
BP算法基于梯度下降策略,以为例进行计算。
通过和偏导数构建(为学习率):
从输入层到输出层理解,可得:
其中:
所以得到:
类似可以计算其他参数:
这个式子我的理解就是为均方误差对输入的变化,阈值对应输入的反向变化可以达到同样结果。
输入层和隐含层之间,隐含层和输出层之间各种参数的计算思想相同,但是可以使用不同的为了调整学习速度。
BP算法的整体流程如下:
输入:训练集D,学习率
过程:
(0,1)范围内随机初始化所有参数
repeat
for all D do
计算当前样本输出
计算输出层神经元梯度项gj
计算隐层神经元梯度项eh
更新连接权和阈值
end for
until 达到条件
输出:神经网络
上述这种针对单个样本的均方误差最小进行调整的方式,称为标准BP算法,如果用累积误差最小化的规则更新,就是累积误差逆传播算法(累积BP)。两种方法都很常用,标准BP算法,参数更新频繁,且更新效果存在“抵消”现象,往往进行多次迭代;累积BP算法读取整个训练集之后更新参数,频数低,但是累积误差下降到一定程度后,进一步下降会十分缓慢,因此当D比较大的时候,标准算法更快。
已经证明如果有足够多的隐含层神经元,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数,然而没有明确的准则设置数目,常用“试错法”。
为了应对BP网络的过拟合,有以下两中策略:
- 早停
当训练集误差降低但验证集误差升高的时候,停止训练,返回最小验证集误差对应的连接权和阈值 - 正则化
在目标函数中增加用于描述网络复杂度的部分,利用来折中两项(交叉验证估计)
全局最小和局部极小
伸进网络的训练过程实际上就是寻找最优的和使得误差最小,存在两种最优:对于和,若存在使得对于:
都有,则为局部极小解;若对于任意都有,则为全局最小解。
全局最小解对应的数值唯一,局部极小解可能有多个,全局一定局部,局部不一定全局。在寻找最优参数的过程中,就是寻找全局最小解的过程,从一定的初始值,沿着一定的方向进行优化,沿着下降的方向自然是最快的,例如上面提到的基于梯度下降的搜索方法,但是找到的最小值可能是局部最小而非全局最小,因此就需要一些跳出局部最小的方法(都是启发式,没有理论支持):
- 通过从多种初始化参数数值进行训练,就会得到多个最小解,将所有最小解中的最小的作为结果,就有可能是全局最小
- 模拟退火技术,以一定概率接受次优解,便能够跳出局部最小,通过概率随事件变小,从而保证算法稳定
- 随机梯度下降,与标准梯度下降相比,在计算梯度中加入了随机因素,从而在局部极小点计算的梯度可能仍不为零,从而有机会跳出
其他常见神经网络
- RBF网络
- ART网络
- SOM网络
- 级联相关网络
- Elman网络
- Boltzmann机
深度学习
复杂的模型参数数目多,功能强,但是训练效率低下,而且容易过拟合,但是大数据以及,高计算的出现,使这类复杂模型有了更好的利用。
深度学习在神经网络方面就可以理解为,通过添加多个隐层,然后通过每一层的分解处理,将低层特征逐渐转化为高层特征,从而在输出层可以使用“简单模型”来完成复杂的学习任务。通过机器自己学习来产生好的特征就可以省去人类子集的设计,就更接近于“全自动数据分析”。
主要实现方式有:
- 无监督逐层训练
先将每一层的下层输出作为输入,本层的输出作为上层的输出,训练本层的隐结点,称为预训练。预训练完成后,对整个网络进行微调。这种方法可以看做将大量参数进行分组,先找局部比较好的设置,再从整体上进行微调。例如:深度信念网络(DNB) - 权共享
每组的神经元都使用相同的权,节省训练开销。例如:卷积神经网络(CNN)