BP网络以及深度学习_第1页
BP网络以及深度学习_第2页
BP网络以及深度学习_第3页
BP网络以及深度学习_第4页
BP网络以及深度学习_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、神经网络1 BP网图:三层BP网信号正向传播和误差反向传播 k=1,2l 有l个输出(l常常为1)。中间隐层有m层: i=1,2,m n个输入。j=1,2m其中Sigmoid函数: (单极性) 1.1 计算流程推导误差公式计算结果E=0,p=1,其中p+=1,q+=1训练次数计数器样本模式计数器p<M训练样本数E<Emin不同样本误差:E=(T-Ok)'*(T-Ok)/2; 一般使用1.2 影响参数:1.2.1 隐层节点数 nn= +a,其中 m 为输出神经元数, n 为输入神经元数,a 为1,10之间的常数。 nn=nn=2n+1;nn=1.2.2 学习率学习率,太大会影

2、响训练稳定性,太小使训练收敛速度慢。一般在0.01-0.8之间。我取0.2Emin一般在0.1-之间。1.3 样本/输入1.3.1 训练样本训练样本数:M,为权值阈值总数,一般为连接权总数的510倍。训练数据必须作平衡处理,不同类别的样本需要交叉输入,轮流输入-时间延长。1.3.2 输入形式字符:形状格填充、边缘距离曲线:采样 变化大可以密集采样输出:不同的输出用不同的码表示1.3.3 归一化:样本分布比较均匀0,1区间:-1,1区间: 其中不均匀:对数 平方根coef,score,latent,t2 = princomp(x);(个人观点):x:为要输入的n维原始数据。带入这个matlab自

3、带函数,将会生成新的n维加工后的数据(即score)。此数据与之前的n维原始数据一一对应。score:生成的n维加工后的数据存在score里。它是对原始数据进行的分析,进而在新的坐标系下获得的数据。他将这n维数据按贡献率由大到小排列。(即在改变坐标系的情况下,又对n维数据排序)latent:是一维列向量,每一个数据是对应score里相应维的贡献率,因为数据有n维所以列向量有n个数据。由大到小排列(因为score也是按贡献率由大到小排列)。coef:是系数矩阵。通过cofe可以知道x是怎样转换成score的。1.4 权值/阈值1.4.1 初始权值初始权值足够小,初始值为1和-1的权值数相等。1.

4、4.2 权值学习算法P99traingd:标准梯度下降算法traingdm:附加动量项traingda:自适应学习速率,效果比上者好。traingdx: 附加动量项、自适应学习速率更好的算法如下:trainlm:trainscg:权值学习算法算法描述traingd标准BPtraingda可变学习率BPtraingdm附加动量的BPtraingdx附加动量、可变学习率BPtraincgfFletcher-Powell共轭梯度法traincgpPolak-Ribiere共轭梯度法traincgbPowell-Beale共轭梯度法trainscgScaled共轭梯度法trainbfgBFGS拟牛顿法

5、trainoss正割拟牛顿法trainlmLevenberg-Marquardt法trainrp弹性BP1.5 优化1 提高训练速度:附加动量法:其中 见P852 改为,一般=1较大时,进入平坦区,令>1常用的改进方法有附加冲量项、自适应学习参数、模拟退火法等,1.6 技巧若show设为NaN ,则不显示训练过程一篇论文中案例:初始权值不可过大过小。网络1的初始权值和偏差定为-0.25-0.25的随机数,网络2的定为-0.5-0.5的随机数。目标误差:0.05 两个连续迭代过程平均相差小于,样本数:2001.7 常用函数归纳1.7.1 train之前net.trainParam.show

6、=10; %show interval 25%net.trainParam.showWindow=flase;net.trainParam.epochs=5000;%train times.default:10net.trainParam.goal=0.0001;%0net.trainParam.lr=0.2;%0.15net.trainParam.max_fail=5;% max times of affirm failurenet.trainParam.min_grad=1e-10;%min gradientnet.trainParam.time=inf;%max train timene

7、t.trainParam.mc=0.95; %momentum factor when use traingdm,default:0.91.7.2%net.iw1,1=iw;net.lw2,1=lw;net.b1=theta1;net.b2=theta2;%net.layers1.initFcn ='initlay'Plotpv(p,t,v)Plotpc(net.iw1,1,net.b1)初始化网络:Net.inputWeights1,1.initFcn=rands; %initialize weightNet.biases1.initFcn=rands; %initializ

8、e deviationnet=init(net)误差平方和:sumsqrNewff newcf1.8 评价标准实际为正类实际为负类预测为正类TPFP预测为负类FNTN查准率/精度:precision=TP/(TP+FP) 真正类率(TPR)/查全率/真阳性率/灵敏度/召回率/敏感性(sensitivity):recall=TP/(TP+FN) 正确率:accuracy=(TP+TN)/ALL特异性(specificity)/真阴性率/1-假阳性率:TN/(FP+TN)2 前馈神经网络无隐层:线性单隐层:凸域双隐层:任意复杂形状区域,所以一般使用单隐层,较少情况下可以使用双隐层。解决已知的线性问

9、题,使用感知器或者自适应网络更好,非线性使用BP。2.1 单层感知器方程组求解的形式,只能做 线性划分 Newp检验:hardlim(W+P,B)2.2 Adaline自适应线性元件神经元有一个激活函数, 因此输出可以是任意值。可以做线性逼近。采用LMS(最小均方差规则,又称W-H学习规则):不用求导newlinnewlind带有延时的自适应线性网络3 深度神经网络在语音识别和图像识别等领域获得了巨大的成功4 递归神经网络反馈神经网络4.1 全局反馈递归神经网络4.1.1 ARX和NARX网络4.1.2 Hopfield网络4.1.3 约旦网络4.2 前向递归神经网络4.2.1 局部连接4.2

10、.2 全连接型Elman记忆递归神经网络4.3 混合型网络5 RBF网络径向基函数解决插值问题完全内插法要求插值函数经过每个样本点,即。样本点总共有P个。RBF的方法是要选择P个基函数,每个基函数对应一个训练数据,各基函数形式为,由于距离是径向同性的,因此称为径向基函数。|X-Xp|表示差向量的模,或者叫2范数。基于为径向基函数的插值函数为:输入X是个m维的向量,样本容量为P,P>m。可以看到输入数据点Xp是径向基函数p的中心。隐藏层的作用是把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了。将插值条件代入:写成向量的形式为,显然是个规模这P对称矩阵,且与X的维度无关,当

11、可逆时,有。对于一大类函数,当输入的X各不相同时,就是可逆的。下面的几个函数就属于这“一大类”函数:1)Gauss(高斯)函数2)Reflected Sigmoidal(反常S型)函数3)Inverse multiquadrics(拟多二次)函数称为径向基函数的扩展常数,它反应了函数图像的宽度,越小,宽度越窄,函数越具有选择性。完全内插存在一些问题:1)插值曲面必须经过所有样本点,当样本中包含噪声时,神经网络将拟合出一个错误的曲面,从而使泛化能力下降。由于输入样本中包含噪声,所以我们可以设计隐藏层大小为K,K<P,从样本中选取K个(假设不包含噪声)作为函数的中心。2)基函数个数等于训练样

12、本数目,当训练样本数远远大于物理过程中固有的自由度时,问题就称为超定的,插值矩阵求逆时可能导致不稳定。拟合函数F的重建问题满足以下3个条件时,称问题为适定的:1. 解的存在性2. 解的唯一性3. 解的连续性不适定问题大量存在,为解决这个问题,就引入了正则化理论。正则化理论正则化的基本思想是通过加入一个含有解的先验知识的约束来控制映射函数的光滑性,这样相似的输入就对应着相似的输出。寻找逼近函数F(x)通过最小化下面的目标函数来实现:加式的第一项好理解,这是均方误差,寻找最优的逼近函数,自然要使均方误差最小。第二项是用来控制逼近函数光滑程度的,称为正则化项,是正则化参数,D是一个线性微分算子,代表

13、了对F(x)的先验知识。曲率过大(光滑度过低)的F(x)通常具有较大的|DF|值,因此将受到较大的惩罚。直接给出(1)式的解:权向量*(2)G(X,Xp)称为Green函数,G称为Green矩阵。Green函数与算子D的形式有关,当D具有旋转不变性和平移不变性时,。这类Green函数的一个重要例子是多元Gauss函数:。代码%/ This is a RBF network trained by BP algorithm %/ Author : zouxy %/ Date : 2013-10-28 %/ HomePage : %/ Email : zouxy09 close all; clear

14、; clc; % *% * step 0: load data *display('step 0: load data.');% train_x = 1 2 3 4 5 6 7 8; % each sample arranged as a column of train_x% train_y = 2 * train_x;train_x = rand(5, 10);train_y = 2 * train_x;test_x = train_x;test_y = train_y; % from matlab% rbf = newrb(train_x, train_y);% outpu

15、t = rbf(test_x); % *% * step 1: initialize parameters * display('step 1: initialize parameters.');numSamples = size(train_x, 2);rbf.inputSize = size(train_x, 1);rbf.hiddenSize = numSamples; % num of Radial Basis functionrbf.outputSize = size(train_y, 1);rbf.alpha = 0.1; % learning rate (shou

16、ld not be large!) % centre of RBFfor i = 1 : rbf.hiddenSize % randomly pick up some samples to initialize centres of RBF index = randi(1, numSamples); rbf.center(:, i) = train_x(:, index);end % delta of RBFrbf.delta = rand(1, rbf.hiddenSize); % weight of RBFr = 1.0; % random number between -r, rrbf.

17、weight = rand(rbf.outputSize, rbf.hiddenSize) * 2 * r - r; % *% * step 2: start training *display('step 2: start training.');maxIter = 400;preCost = 0;for i = 1 : maxIter fprintf(1, 'Iteration %d ,', i); rbf = trainRBF(rbf, train_x, train_y); fprintf(1, 'the cost is %d n', rb

18、f.cost); curCost = rbf.cost; if abs(curCost - preCost) < 1e-8 disp('Reached iteration termination condition and Termination now!'); break; end preCost = curCost;end % *% * step 3: start testing * display('step 3: start testing.');Green = zeros(rbf.hiddenSize, 1);for i = 1 : size(t

19、est_x, 2) for j = 1 : rbf.hiddenSize Green(j, 1) = green(test_x(:, i), rbf.center(:, j), rbf.delta(j); end output(:, i) = rbf.weight * Green;enddisp(test_y);disp(output);function rbf = trainRBF(rbf, train_x, train_y) % step 1: calculate gradient numSamples = size(train_x, 2); Green = zeros(rbf.hidde

20、nSize, 1); output = zeros(rbf.outputSize, 1); delta_weight = zeros(rbf.outputSize, rbf.hiddenSize); delta_center = zeros(rbf.inputSize, rbf.hiddenSize); delta_delta = zeros(1, rbf.hiddenSize); rbf.cost = 0; for i = 1 : numSamples % Feed forward for j = 1 : rbf.hiddenSize Green(j, 1) = green(train_x(:, i), rbf.center(:, j), rbf.delta(j); end output = rbf.weight * Green; % Back propagation delta3 = -(train_y(:, i) - output); rbf.cost = rbf.cost + sum(delta3.2); delta_weight = delta_weight + delta3 * Green' delta2 = rbf.weight' * delta3 .* Green; for j = 1 : rbf.hidd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论