美赛前神经网络的一波总结

1、BP神经网络的非线性系统建模

  • 网络构建
  • 网络训练
  • 网络预测
%%newff:BP神经网络设置函数
net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

%%train:BP神经网络训练函数
[net,tr] = train(NET,X,T,Pi,Ai)

%%sim:BP神经网络预测函数
y = sim(net,x)

2、遗传算法优化BP神经网络

遗传算法基本操作有:选择,交叉,变异。

  • 种群初始化
  • 适应度函数
  • 选择操作
  • 交叉操作
  • 变异操作
%%遗传算法主函数

%清空环境变量
clc;clear all;

%读取数据
load data input output

%网络结构
inputnum = 2;
hiddennum = 5;
outputnum = 1;

%获取训练数据和预测数据
input_train = input(1:1900,:);
input_test = input(1901:2000,:);
output_train = output(1:1900);
output_test = output(1901:2000);

%数据归一化
[inputn,inputps] = mapminmax(input_train);
[outputn,outputps] = mapminmax(output_train);

%构建网络
net = newff(inputn,outputn,hiddennum);

%遗传算法参数初始化
maxgen = 50;		%迭代次数
sizepop = 10;		%种群规模
pcross = [0,4];		%交叉概率
pautation = [0,2];	%编译概率
numsum = inputnum + hiddennum + outputnum
lenchrom = ones(1, numsum);		%个体长度
bound = [-3 * ones(numsum, 1), 3*ones(numsum,1)]	%个体范围

%种群信息定义为结构体
individuals = struct('fitness',zeros(1,sizepop),'chrom',[]);
avgfitness = [];	%每代平均适应度值
bestfitness = [];	%每代最佳适应度值
bestchrom = [];		%最优个体

%计算个体适应度值
for i = 1 : sizepop
	%个体初始化
	individuals.chrom(i,:) = Code(lenchrom, bound);
	
	%计算个体适应度
	individuals.fitness(i) = fun(x, inputnum, hiddennum, outputnum, net, inputn, outputn);
end

%迭代寻优
for i = 1:maxgen
	%选择操作
	individuals = Select(individuals.sizepop);
	%交叉操作
	individuals.chrom = Cross(pross, lenchrom, individuals.chrom.sizepop, bound);
	%变异操作
	individuals.chrom = Mutation(pautation, lenchrom,individuals.chrom.sizepop, i, maxgen, bound);
	
	%计算适应度值
	for j = 1:sizepop
		x = individuals.chrom(j.:);	%个体
		individual.fitness(j) = fun(x, inputnum, hiddennum, outputnum, net, inputn, outputn, n);
	
	%寻找最优最差个体
	[newbestfitness, newbestindex] = min(individuals.fitness);
	[worsestfitness, worsestindex] = max(individuals.fitness);
	
	%最优个体更新
	if bestfitness > newbestfitness
		bestfitness = newbestfitness;
		bestchrom = individual.chrom(newbestindex,:);
	end
	individuals.chrom(worstindex,:) = bestchrom;
	individuals.fitness(worstindex) = bestfitness;
	
	%记录最优个体适应度值和平均适应度值
	avgfitness = sum(individuals.fitness)/sizepop;
	trace = [trace; avgfitness, bestfitness];
end

3、神经网络遗传算法函数极值寻优

4、基于BP_Adaboost的强分类器设计(公司财务预警建模)

Adaboost算法的思想是合并多个弱分类器来产生有效分类,步骤如下:

  • 从弱学习算法和样本空间 ( x , y ) (x,y) (x,y)中找相互m组数据,每个权重都是: 1 m \frac{1}{m} m1
  • 用弱学习算法迭代 T T T次,每次运算后更新权重分布;
  • 最终强分类器 F F F由弱分类器加权得到。

5、PID神经元解耦控制算法(应该不会用到)

6、RBF网络的回归

  • RBF神经网络概述

    径向基函数(RBF)是多维空间插值的传统技术。RBF神经网络属于前向神经网络(输入层,隐藏层,输出层)。其基本思路为:用RBF作为隐单元的“基”构成隐藏层空间,隐含层对输入矢量进行变换,讲低维的模式输入数据变换到高维空间内,使得低维线性不可分变为高维度线性可分。

  • 线性不可分

    即不能通过一个线性分类器进行分类,主流的解决线性不可分的办法是通过核函数:

    1)将输入的空间中样本映射到新的空间中,在新的空间中求内积;

    2)找到一个核函数,它不需要将输入空间中的样本映射到新的空间中去,在输入空间中就可以直接计算出内积了。

7、GRNN的数据预测

  • GRNN神经网络概述

    广义回归神经网络(GRNN)有很强的非线性映射能力和柔性网络结构以及高度的容错性和鲁棒性,适用于解决非线性问题。速度快。

    (输入层,模式层,求和层,输出层)

8、离散 H o p f i e l d Hopfield Hopfield神经网络(数字识别)

​ 也称DHNN,实现步骤如下:

  • 对网络进行初始化;
  • 从网络中随机选取一个神经元;
  • 计算神经元 i i i 的输入 u i ( t ) u_i(t) ui(t)
  • 计算该神经元的输出 v i ( t − 1 ) v_i(t-1) vi(t1), 此时网络中其他神经元的输出保持不变;
  • 判断网络是否达到稳定状态,若是则结束,否则跳第二步。

这个matlab有工具箱。

9、SVM数据分类预测

支持向量机(SVM)用于模式分类和非线性回归。建立一个分类超平面作为决策屏幕,使得正例和反例之间的隔离边缘被最大化。

  • 原理:

    学习及其在测试集上的误差率和一个依赖于VC维数的项的和为界,在可分情况下,SVM前一项的值为0,并且第二项最小化。因此,虽然它不利用问题的领域内部问题,但是泛化性能好。

10、自组织竞争网络

  • 无监督学习方式,分为输入层和竞争层。

11、SOM网络数据分类

自组织特征映射网络(SOM)是由一个全连接的神经元阵组成的无监督学习网络。当一个神经网络接受外界输入模式时,将会分为不同的反应区域,各区域对输入模式有不同的响应特性。

12、Elman神经网络

反馈型神经网络。

13、概率神经网络

基于贝叶斯理论,PNN。由四层组成(输入层,模式层,求和层,输出层)。

14、LVQ神经网络分类

学习向量量化是一种用于训练竞争层的有监督学习前向神经网络。由输入层,竞争层,线性输出层组成。matlab里用 n e w l v q ( ) newlvq() newlvq() 可直接建立。有个人脸朝向识别的demo。

15、小波神经网络的时间序列预测

  • 小波特点

    • 时域具有紧支集或者近似紧支集;
    • 直流分量为0;
  • 小波神经网络

    以BP神经网络结构为基础,把小波简述作为隐含层节点的传递函数,前向传播的同时误差反向传播的神经网络。

16、模糊神经网络

  • T-S模糊模型(水质分析)

    一种自适应能力很强的模糊系统,该模型不仅能自动更新,而且能不断修正模糊子集的隶属函数。类似于 i f . . . t h e n . . . if...then... if...then...格式。

17、广义神经网络的聚类算法

  • FCM聚类算法

    模糊c均值聚类算法是用隶属度确定每个元素属于某个类别程度的一种聚类算法。步骤如下:

    • 给定类别数c, 模糊权重指数m;
    • 初始聚类中心v;
    • 计算模糊隶属度矩阵;
    • 计算每类的中心;
    • 计算模糊聚类目标值,判断是否满足结束条件,满足中止,不满足返回第三步。
  • 广义神经网络

    径向基函数神经网络的一个分支,是一种属于非线性回归理论的前馈式神经网络。

18、粒子群优化算法的寻优算法(非线性函数极值寻优)

  • 粒子群优化算法(PSO)中每个粒子都代表问题的一个潜在解,每个例子对应一个由适应度函数决定的适应度值,粒子的速度决定了粒子移动的方向和距离,速度随自身以及其他粒子的移动经验进行动态调整,从而实现个体再可解空间中的寻找。寻优的非线性函数实例:
    y = − c 1 e − 0.2 1 n ∑ j = 1 n x i 2 − e 1 n ∑ j = 1 n c o s ( 2 π x j ) + c 1 + e y = -c_1e^{-0.2\sqrt{\frac{1}{n}\sum\limits_{j =1}^{n}x_i^2}}-e^{\frac{1}{n}\sum\limits_{j=1}^{n}cos(2\pi{x_j})}+c_1+e y=c1e0.2n1j=1nxi2 en1j=1ncos(2πxj)+c1+e

  • 迭代寻优示例

    %迭代寻优
    for i = 1:maxgen
    	%粒子位置和速度更新
    	for j = 1:sizepop
    	
    		%速度更新
    		V(j,:) = V(j,:) + c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:));
    		V(j,find(V(j,:) > Vmax)) = Vmax;
    		V(j,find(V(j,:) < Vmin)) = Vmin;
    		
    		%粒子更新
    		pop(j,:) = pop(j,:) + 0.5*V(j,:);
    		pop(j,find(pop(j,:) > popmax)) = popmax;
    		pop(j,find(pop(j,:) < popmin)) = popmin;
    		
    		%新粒子适应度值
    		fitness(j) = fun(pop(j,:));
    	end
    	
    	%个体极值和群体极值更新
    	for j = 1:sizepop
    	
    		%群体极值更新
    		if fitness(j) < fitnessgbest(j)
    			gbest(j,:) = pop(j,:);
    			fitnessgbest(j) = fitness(j);
    		end
    		
    		%个体极值更新
    		if fitness(j) < fitnesszbest
    			zbest = pop(j,:);
    			fitnesszbest = fitness(j);
    	end
    	%每代最优值记录到yy数组中
    	yy(i) = fitnesszbest;
    end	
    

    遗传算法有工具箱。

19、注意神经网络GUI使用,可以直接建立网络。

你可能感兴趣的:(美赛前神经网络的一波总结)