Deep-Learning NotePad2 : Deep Neural network

Deep Neural network

整理于udacity免费deep learning course


线性模型具有局限性

ReLUs网络


将线性变成非线性,这就是一个neural network

两层神经网络


反向传播(back propagation)  

我们很难确定我们究竟需要多少数据,这就是skinny jeans problem,所以我们一般采取:取巨大数据,然后防止overfitting 的方法
bp算法是一个迭代算法 chain rule,耗费两倍 memory 两倍compute

bp算法执行的操作是:
先将输入示例提供给输入层神经元,然后逐层信号前传,直到产生输出层结果。
然后根据hidden layer的神经元的误差对weight进行调整
该迭代过程循环进行,直到loss function达成一个很小的值

正则化

防止overfitting的方法:

方法1.

观察validation下的表现,‘’早停‘算法 early termination

将数据分成训练集和测试集,训练集用来计算梯度、更新连接权和阀值、验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阀值。

not improving之后就stop,这是防止在training-set over-optimizing的最佳方法

方法2.

apply regularization  正则化
减少Free parameters,在loss funtion中加入一个“弹性变量”,这个“弹性变量”是用于描述网络复杂度的部分,系数Beta很小,系数通过·cross validation来估计。

DropOut

以下引用张雨石msdn博客:http://blog.csdn.net/stdcoutzyx/article/details/49022443
dropout是指在 深度学习 网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。

观点

该论文从神经网络的难题出发,一步一步引出dropout为何有效的解释。大规模的神经网络有两个缺点:

  • 费时
  • 容易过拟合

这两个缺点真是抱在深度学习大腿上的两个大包袱,一左一右,相得益彰,额不,臭气相投。过拟合是很多机器学习的通病,过拟合了,得到的模型基本就废了。而为了解决过拟合问题,一般会采用ensemble方法,即训练多个模型做组合,此时,费时就成为一个大问题,不仅训练起来费时,测试起来多个模型也很费时。总之,几乎形成了一个死锁。

Dropout的出现很好的可以解决这个问题,每次做完dropout,相当于从原始的网络中找到一个更的网络,如下图所示:


因而,对于一个有N个节点的神经网络,有了dropout后,就可以看做是2n个模型的集合了,但此时要训练的参数数目却是不变的,这就解脱了费时的问题。

训练阶段:

1.Dropout是在标准的bp网络的的结构上,使bp网的隐层激活值,以一定的比例v变为0,即按照一定比例v,随机地让一部分隐层节点失效;在后面benchmark实验测试时,部分实验让隐层节点失效的基础上,使输入数据也以一定比例(试验用20%)是部分输入数据失效(这个有点像denoising autoencoder),这样得到了更好的结果。

2.去掉权值惩罚项,取而代之的事,限制权值的范围,给每个权值设置一个上限范围;如果在训练跟新的过程中,权值超过了这个上限,则把权值设置为这个上限的值(这个上限值得设定作者并没有说设置多少最好,后面的试验中作者说这个上限设置为15时,最好;为啥?估计是交叉验证得出的实验结论)。


如果dropout不成 ,那就选择更加deep的neural network吧





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值