- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深度学习(1)——稀疏自动编码机(SAE)网络 广东工业大学 13级控制工程 1019408133@ 传统神经网络 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设置网络参数( 结构为[784 100]的两层网络) 2.在第1步基础上修改网络参数(这里是修改第一组的 激活函数类型、学习率、输入加噪率、训练迭代次数、batchsize) 3.调用saetrain,让它对各个隐含层进行逐层训练(例子中给的隐含层数为1层,100个节点,输入输出同是train_x。每次进行nntrain来训练隐含层都为三层网络,输入层和输出层一样) 4.对第一组权值进行可视化,看看学习结果。(由于例中的网络只有一个100节点隐含层,故可视化为一张100个特征块图片。第一组权值W{1}用于编码,第二组W{2}用于解码) 二、初始化网络(为第三步初始化) 1.调用nnsetup,设置整个网络(结构是[784 100 10]) 2.设置网络的激活函数和学习率 3.第一步中,把用于编码的W(实际包括阈值b和权值W)赋给此网络。 三、训练前向网络 1. 设置训练次数、batchsize。 2.调用nntrain训练整个网络(此时因期望输出是train_y,为有监督的训练) 3.调用nntest测试整个网络 saesetup.m 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} nnsetup.m 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.m nnff.m 得到每层的激活值, 一、输入层 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{
文档评论(0)