级联相关网络
文章转自https://blog.****.net/xc_xc_xc/article/details/53163478
介绍
一般的神经网络是固定好拓扑结构,然后训练权重和阈值。级联相关神经网络是从一个小网络开始,自动训练和添加隐含单元,最终形成一个多层的结构。
级联相关神经网络具有以下优点:
- 学习速度快;
- 自己决定神经元个数和深度;
- 训练集变化之后还能保持原有的结构(这个是缺点还是优点);
- 不需要后向传播错误信号;
后向传播算法运行缓慢的原因
后向传播算法运行缓慢主要有两个原因:步长问题和目标移动问题。
为了快速学习,我们通常希望步长越大越好。然而,如果步长过大,训练网络不能稳定地收敛到一个较好的结果。因此,为了选择一个合适的步长,我们不仅需要知道误差函数的斜率,还要了解它的曲率。相应的算法叫Quickprop Algorithm。
移动目标问题主要是说,在网络的每次迭代中,每个单元都希望进化成在全局计算中扮演重要角色的那个。实际的问题是,训练过程很复杂,所有的单元都会同时更新。隐含单元之间缺少必要的沟通,每个单元只能看到自己的输入和从网络输出反馈的错误信号。因此,单元需要相当长的时间才能稳定。为解决这个问题,每次迭代中,算法可以只允许部分权重和单元改变。
级联相关神经网络(CCNN)
级联相关神经网络包含两个部分:
- cascade architecture : 在这个步骤中,隐含单元一个一个的添加到网络中,当他们添加到网络之后就不能更改;
- learning algorithm : 创造并安装新的单元;
算法过程
- 首先,候选神经元连结到所有的输入和隐含神经元(也就是图中的虚线),并且候选神经元的输出不连结到网络上;
- 然后固定住图中的实线部分,只训练候选神经元的权重(也就是图中的虚线);
- 当权重训练好之后,就将候选神经元安装到图中空白的层上,也就是第四个区域,这时候选项的连接权就不能再改变了;
- 接着,
将候选神经元连结到网络的输出上,这时候选神经元被**,开始训练网络的所有输出连接权; - 重复以上步骤;
候选神经元的训练目标是最大化新神经元的输出和网络训练误差之间的相关性 :
S=∑o|∑p(Vp−V¯¯¯¯)(Ep,o−Eo¯¯¯¯¯¯)|S=∑o|∑p(Vp−V¯)(Ep,o−Eo¯)|
VV :候选单元的值
EoEo:单元o处观察到的输出残差;
oo:网络输出,从这里测量误差;
pp:训练模式(training pattern);
为了最大化SS,我们需要计算∂S/∂wt∂S/∂wt:
∂S∂wi=∑p,oσo(Ep,o−Eo¯¯¯¯¯¯)f′pIi,p∂S∂wi=∑p,oσo(Ep,o−Eo¯)fp′Ii,p
σoσo:是候选项和输出oo之间的相关性的符号;
f′pf′p:是模式p的候选单元的激励函数的对输入的微分;
Ii,pIi,p:是候选单元从单元ii处接收的输入;
我们使用梯度上升算法来最大化SS。然后再训练单层的权值。