构造性神经网络综述

Download Report

Transcript 构造性神经网络综述

构造性神经网络
与
开源工具介绍
Noted By David Hsu
Content
•
•
•
•
BP神经网络及其算法
构造性神经网络
CC算法与RBF-DDA算法
开源工具:Joone与JavaNNS
BP神经网络及其算法
BP神经网络及其算法
BP神经网络及其算法
BP神经网络及其算法
构造性神经网络
传统的BP神经网络算法是一个梯度下降优化过程,所以存
在自身的限制与不足,例如,它需要的训练时间较长、存在局
部极小值、隐元数目和网络拓扑结构难以确定等,其不足之处
还在学习率的选择(在误差曲面的不同部位可能需要不同的
学习率)。
Fahlman的Cascade-correlation算法(简称CC算法,又称
级连相关算法),是一种能在训练过程中增长,构造出接近最小
网络结构的监督训练算法。RBF-DDA网络具有结构简单、收敛
速度快、泛化能力强等优点,可很好地应用于模式识别领域。
这两种算法都在开始时构造初始隐层节点数为零的网络,通过
在训练过程中不断地按照自适应算法添加隐层单元,它们都具
有较高的鲁棒性和分类精度。
构造性神经网络
参考的论文推荐:
[1]二种构造性神经网络算法的对比
[2]基于构造性神经网络的石油测井解释方法
[3]The Cascade-Correlation Learning Architecture
[4]The Recurrent Cascade-Correlation Architecture
[5]Boosting the performance of RBF networks with
dynamic decay adjustment
CC算法与RBF-DDA算法
CC算法与RBF-DDA算法
CC算法与RBF-DDA算法
CC算法有两层含义:
一是级联式结构(每次仅添加一个新元,并且在它们全面添加后
不再发生变化)。
二是学习算法(即创建并添加新元于网络中)。对每个新元,CC
算法试图使新元输出信号与网络残留误差信号之间关联的幅
度最大化。
CC算法与RBF-DDA算法
CC算法可描述如下:
(1)用仅有一个输入层、一个输出层(输入输出层全连接)的最小网络
初始化。
(2)用一个常规学习算法(如BP)训练连接权值,直到网络误差不再减
小。
(3)产生所谓的候选元(Candidate Units)。每个候选元均与全体输入
元连接,并与业已存在的隐层元连接,但候选元与输出元之间没有权
值连接。(?!)
(4)通过训练连入的候选元的权值使候选元激励与网络残留误差之间
的关联度最大化。学习算法采用常规方法。关联度不再改善时停止
训练。
(5)选择具有最大关联度的候选元,冻结其输入权值并将其连入网络
中。此时,候选元变成一个隐元,并且将其与全体输入元相连。因为
新隐元的引入权冻结,一个新的永久性特征检测子即由此获得。
(6)返回(2),重复算法直到网络的全体误差小于某个给定值时,则停止
训练。
开源工具:Joone与JavaNNS
Joone is a neural net framework written in Java(tm). It's
composed by a core engine, a GUI editor and a distributed
training environment and can be extended by writing new
modules to implement new algorithms or architectures starting
from base component
开源工具:Joone与JavaNNS
public class myNeuralNetwork
implements NeuralNetListener {
//创建神经网络,用于配置,控制和
链接
private NeuralNetnnet = null;
//创建文件输入突触
……
public static void main(String
args[]) {
myNeuralNetwork xor = new
myNeuralNetwork();
//初始化,训练,查询
xor.initNeuralNet();
xor.train();
xor.interrogate();
}
public void train() {
……
}
private void interrogate() {
……
}
protected void initNeuralNet() {
//创造线性或S型的神经元层次
LinearLayer或SigmoidLayer
……
//创建突触Synapse,连接Layer和储
存权矩阵
……
// 连接
……
// 创建训练器和期望输出
……
}
//添加事件响应
public void
errorChanged(NeuralNetEvent e) {
//显示一定周期后的误差率
……
}
……
}
开源工具:Joone与JavaNNS
开源工具:Joone与JavaNNS
Java Neural Network Simulator (JavaNNS) is a simulator for
neural networks developed at the Wilhelm-Schickard-Institute for
Computer Science (WSI) in Tübingen, Germany. It is based on the
Stuttgart Neural Network Simulator (SNNS) 4.2 kernel, with a new
graphical user interface written in Java set on top of it.
The End