首页 深度学习(1)——sae(稀疏自动编码机)PPT课件

深度学习(1)——sae(稀疏自动编码机)PPT课件

举报
开通vip

深度学习(1)——sae(稀疏自动编码机)PPT课件深度学习(1)——稀疏自动编码机(SAE)网络广东工业大学13级控制工程1019408133@qq.com*传统神经网络 1)比较容易过拟合,参数比较难调整; 2)训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优;BP算法存在的问题: (1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小; (2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生); (3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没...

深度学习(1)——sae(稀疏自动编码机)PPT课件
深度学习(1)——稀疏自动编码机(SAE)网络广东工业大学13级控制 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 1019408133@qq.com*传统神经网络 1)比较容易过拟合,参数比较难调整; 2)训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优;BP算法存在的问题: (1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小; (2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生); (3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习;*一、针对过拟合现象的处理 1.惩罚项(Penalty,正则化方法,正则化的一般形式是在整个目标函数后增加一个正则项,以使经验风险最小化。把不重要的项的参数保留,但是令其系数为零) 2.给输入层a{1}加噪,以及对隐含层a{i}进行Dropout(按比例随机清零。)二、针对训练快慢与稳定性的矛盾应用权值动量辅助调整权值三、针对以往一个bp网络不能太多层先逐个逐个隐含层进行无监督训练(实际还是用bp),即调用saesetup.m以及saetrain.m。然后得到各个隐含层的参数才对完整的网络进行有监督训练。*test_example_SAE.m 一、训练隐含层(例中为单个隐含层) 1.调用saesetup设置网络参数(结构为[784100]的两层网络) 2.在第1步基础上修改网络参数(这里是修改第一组的激活函数类型、学习率、输入加噪率、训练迭代次数、batchsize) 3.调用saetrain,让它对各个隐含层进行逐层训练(例子中给的隐含层数为1层,100个节点,输入输出同是train_x。每次进行nntrain来训练隐含层都为三层网络,输入层和输出层一样) 4.对第一组权值进行可视化,看看学习结果。(由于例中的网络只有一个100节点隐含层,故可视化为一张100个特征块图片。第一组权值W{1}用于编码,第二组W{2}用于解码) 二、初始化网络(为第三步初始化) 1.调用nnsetup,设置整个网络(结构是[78410010]) 2.设置网络的激活函数和学习率 3.第一步中,把用于编码的W(实际包括阈值b和权值W)赋给此网络。 三、训练前向网络 1.设置训练次数、batchsize。 2.调用nntrain训练整个网络(此时因期望输出是train_y,为有监督的训练) 3.调用nntest测试整个网络*saesetup.m这里sae.setup中的输入是[784100],令architecture=[78410784],调用nnsetup进行网络参数设置。xhxW1b1W1’b1’*saetrain.m 逐个隐含层进行nntrain(sae.ae{i},x,x,opts)训练更新sae.ae{i}参数,其实就是更新sae.ae{i}.W{1}、sae.ae{i}.W{2} 实验中,这里的i=1,因而就是得到sae.ae{1}.W{1}、sae.ae{1}.W{2},而最后只取用sae.ae{1}.W{1}784+1100+1784+1+1这里a{1}=train_xa{2}=sigm(nn.a{1}*nn.W{1}‘),作为训练第二个隐含层的输入,但是这里只有一个隐含层,所以a{2}在这里并没用a{1}a{2}若是需要训练两个隐含层,那么这里的a{2}则作为下个三层网络的输入以及输出a{1}a{2}阈值B*nnsetup.mnn.size=architecture;%要设置的各层节点结构,如[784100784]nn.n=numel(nn.size);%层数,当[784100784],则为3nn.activation_function=‘tanh_opt’;%激活函数,或称传递函数nn.learningRate=2;%学习率,或称步长,就是决定每次梯度下降的长度nn.momentum=0.5;%权值动量nn.scaling_learningRate=1;%在nntrain中出现,是每代间,学习率的关系倍数nn.weightPenaltyL2=0;%权值惩罚(L2正则化),在nnapplygrads中用到nn.nonSparsityPenalty=0;%稀疏惩罚项,在nnbp中用到。nn.sparsityTarget=0.05;%稀疏目标,在nnbp中用到。nn.inputZeroMaskedFraction=0;%用于加噪nn.dropoutFraction=0;%每一次mini-batch样本输入训练时,随机扔掉0%的隐含层节点nn.testing=0;%设置此时网络有无测试nn.output=‘sigm’;%输出接什么函数,还有'softmax'and'linear‘以下i为从第2到最后一层nn.nnn.W{i-1}随机给出网络权值初始值nn.vW{i-1}让它初值=0%用于更新参数时的临时参数nn.p{i}让它初值=0稀疏*nntrain(这里无验证数据输入) 大循环逐numepochs(训练代数) 小循环逐numbatches(每代的样本批次,每批样本100个,它们共同决定更新一次权值。。。。。不同代的同个批次中的样本不会相同,因为被随机打乱了。) 1故有numepochs*numbatches次执行下列(这么多次更新权值) 判断inputZeroMaskedFraction,看看是否要加噪,是的话,按此比例随机把输入值清零。 nn=nnff(nn,batch_x,batch_y);%前向网络 nn=nnbp(nn);%反向传播网络 nn=nnapplygrads(nn);%梯度下降 L(n)=nn.L;%保存每次训练的误差,总共训练了10*600次,故有6000个误差 2每代更新损失值和学习率 loss=nneval(nn,loss,train_x,train_y);%误差值 nn.learningRate=nn.learningRate*nn.scaling_learningRate;%调整改变下一次训练的学习率*nntrain.mxhyW2b2W1b1结果* 得到每层的激活值,一、输入层 a{1}=[ones(m,1)x],这里m=size(x,1)=100二、隐含层(这里只考虑s函数) 从第2到第n-1层,a{i}=sigm(nn.a{i-1}*nn.W{i-1}'); dropoutFraction用在训练隐含层中,随机将激活值按比例清零(为了让权值不起作用) dropoutFraction用在测试中,将激活值nn.a{i}=nn.a{i}.*(1-nn.dropoutFraction) if(nn.nonSparsityPenalty>0)%在nnbp中用到 nn.p{i}=0.99*nn.p{i}+0.01*mean(nn.a{i},1);三、输出层 1。当输出不接softmax时 nn.a{n}=sigm(nn.a{n-1}*nn.W{n-1}'); 2。当输出接分类器softmax时(此次实验没用到它) … 得到误差值 e=y-a{n} 当输出不接softmax时,平均误差平方为 L=sum(sum(1/2*nn.e.^2))/m;nnff.m* 为了得到n-1组dW,用于调节n-1个W。在求dW过程中用到了中间变量d{i},d_act一、求d{i}1.输出层的d{n} 当nn.output=‘sigm’时,d{n}=-nn.e.*(nn.a{n}.*(1-nn.a{n})); (即1/2*nn.e^2的复合函数求导,其中变量是nn.a{n})2.隐含层的d{i} if(nn.nonSparsityPenalty>0) pi=repmat(nn.p{i},size(nn.a{i},1),1); sparsityError=[zeros(size(nn.a{i},1),1)nn.nonSparsityPenalty*(-nn.sparsityTarget./pi+(1-nn.sparsityTarget)./(1-pi))]; ifi+1==n%倒数第二层,即最后一个隐含层 d{i}=(d{i+1}*nn.W{i}+sparsityError).*d_act;%d_act=nn.a{i}.*(1-nn.a{i}); else%此外 d{i}=(d{i+1}(:,2:end)*nn.W{i}+sparsityError).*d_act; if(nn.dropoutFraction>0)%nn.dropOutMask{i}在nnff中已求得,必须与它相同 d{i}=d{i}.*[ones(size(d{i},1),1)nn.dropOutMask{i}];(清零)二、求dW{i} ifi+1==n nn.dW{i}=(d{i+1}'*nn.a{i})/size(d{i+1},1); else nn.dW{i}=(d{i+1}(:,2:end)'*nn.a{i})/size(d{i+1},1); (以往的bp网络,△W=-ƞ*de/dw,这里多了稀疏项,以及Dropout的处理,在下一步的nnapplygrads中还多了权值惩罚以及权值动量)nnbp.m*nnapplygrads.m 梯度下降法计算作为更新值的nn.W。 当设置nn.weightPenaltyL2>0,则 dW=nn.dW{i}+… nn.weightPenaltyL2*[zeros(size(nn.W{i},1),1)nn.W{i}(:,2:end)]; 当设置nn.weightPenaltyL2=0,则dW=nn.dW{i} 再让dW乘以学习率(或称步长) 如果权值动量momentum>0,则 nn.vW{i}=nn.momentum*nn.vW{i}+dW; dW=nn.vW{i}; 最后nn.W{i}=nn.W{i}-dW; 1。惩罚项方法是一种间接修剪网络的办法,其原理是在传统的误差函数中加入一衡量网络结构复杂程度的“复杂度项”。应用到权值更新规则后,该项在训练过程中起到防止权值增长太大和驱使不重要权值逐渐减小到零的作用。尽管那些接近零的连接权没有从网络中被删除。但它们对网络输出几乎没有影响,已相当于从网络中被删除了。这样一来,训练后的神经网络实际上已是被修剪过的小网络了。可见,惩罚项法在没有破坏网络结构的同时又达到网络修剪的目的,从而是提高神经网络泛化能力的一个重要方法。.2。权值动量是为了解决“步长大收敛快,但是容易引起不稳定;步长小可避免振荡,但是收敛慢”的矛盾。*nntest 调用函数nnpredict进行分类 看看分类结果与类标不同的有多少个,将它个数除以测试样本个数,得到偏差。*nnpredict.m 令nn.test=1,然后把测试样本代进nnff函数中。得到输出。再令nn.test=0。 找出此次代入nnff后的最后一层的每行的最大值所在的位置**
本文档为【深度学习(1)——sae(稀疏自动编码机)PPT课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
金水文库
鑫淼网络科技有限公司主要经营:PPT设计 、课件制作,软文策划、合同简历设计、计划书策划案、各类模板等。公司秉着用户至上的原则服务好每一位客户
格式:ppt
大小:246KB
软件:PowerPoint
页数:0
分类:小学语文
上传时间:2020-05-10
浏览量:8