深度学习6

Backpropagation
在这里插入图片描述
在神经网络中,却是拥有着大量的可能多达上百万个的参数,是一个百万维的向量,传统的求微分方法行不通,这样就需要应用Backpropagation去有效的计算出微分

Chain Rule
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Tips for Training DNN
deep learning 的方法:三步法大纲,define-goodness-pick
在这里插入图片描述
1、一般的机器学习方法(如KNN,决策树等)不会在train好的模型上检查training data的结果,因为NN在training data上都没有办法获得很好的正确率,所以要先回头看一下要对模型做什么修改,才能使得在training set上取得比较好的正确率。
2、在training set获得好的结果,但在testing set上获得不好的结果,这个才是overfitting,所以并不是说在training set获得好的结果就是overfitting。这个时候要回去做一些工作解决overfitting这个问题,解决overfitting的同时会使得结果在training set上的结果性能变差,那么此时这个时候要回到上面1中,就是training data上没有办法获得很好的正确率,应该回头去修改模型。
————————————————
版权声明:本文为CSDN博主「CatcousCherishes」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44790306/article/details/117477996
在这里插入图片描述
在上图中,56层的模型对比20层的模型,无论是在training set还是testing set上表现都要差,这个事情并不是Overfitting的原因,而是没有训练好

在这里插入图片描述
dropout ,这个方法如果training set表现很好,testing set上不行,用dropout可以提高准确率。但如果training set表现不行,testing set上也不行,用dropout 就会越来越差。
修正training data上效果不好的方法:new activation function和adaptive learning rate

在这里插入图片描述
在这里插入图片描述
(在training data上训练结果不好)第一种解决方案是:new activation function
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当region<0微分就是0,>0微分就是1。反正input不可能正好是0,所以就忽略不可导的那个点。
在这里插入图片描述
变种之后,防止小于零的输入input求导后为0(不然就没有办法更新参数)。右边的进一步把0.01参数变成一个超参数(可以从gradient descent中学出来的)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当不同的input输入,得到的z 是不一样的,group中的最大值是不一样的,我们的training set有很多笔data,每次不同的data输入,网络结构都不一样,所以每个element都会被training到。

(在training data上训练结果不好)第二种解决方案是: adaptive learning rate
在这里插入图片描述
在这里插入图片描述

需要一个动态变化的调整learning rate。就要用到用RMSProp
原来的adagrade,是固定的,这里添加了α的σ,和(1-α)的gradient,即倾向于新的gradient,还是旧的gradient。如下图:
在这里插入图片描述
在这里插入图片描述
解决上面问题的方法就是动量梯度下降法。
review vanilla gradient,
往梯度的反方向走,选择初始值,计算权重θ处的gradient ▽L(θ),结合learning rate,计算并更新得到的权重θ1。直到gradient趋近于0的时候,停止更新参数θ。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Momentum相当于利用指数加权平均给Loss function加入了一个惯性,RMSprop给梯度加了摩擦力

在这里插入图片描述
前面讲的都是training data就已经不好的解决方案了,下面讲在trainning data上训练的结果好,在test data上效果不好的处理方法
在这里插入图片描述
利用一个validation set(验证)。这样validation set的total loss最小的时候,就找到early stpping 的epoch的值,停止训练,得到参数

重新定义需要minimizing的loss function,加入regularization是为了让objective function更加平滑,防止过拟合,防止方差太大,与bias无关。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
dropout
1.在training的时候:
每次update参数之前,对每一个Neuron(包括input_layer)做sampling,决定这个Neuron按一定机率p丢掉,跟它相连的weight也被丢掉,结果得到一个细长的Network。如下图:
在这里插入图片描述
2.在testing的时候:

不做dropout
假设training时的删除神经元的概率为p,则在testing时,所有的weight都要乘以(1-p)。
如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
类似随机森林。dropout 就是终极的ensemble的方式,理论上dropout 就是training 了一大把的network structure。在这里插入图片描述
在testing 的过程中,按照ensemble的逻辑本来应该是把上面的training 好的一大把的network 拿出来,然后把testing data丢入这些个network中,然后把最后的结果做average,就是结果了,但是实际上这个计算量是非常大的,显然是很难计算处理的。

在这里插入图片描述
在这里插入图片描述
激活函数是线性函数(ReLU,Maxout的时候dropout 比较好用的)

Why Deep
why deep而不是why shallow?
给出两组实验
第一组就是:越深的神经网络,其参数越多,模型也就越复杂,当然能够拟合更为复杂的函数
第二组表明:单增加netural的数目,不增加layer时没办法提高准确率的。
在这里插入图片描述
在这里插入图片描述
Deep -> Modularization,在Deep Learning中怎么去做模组化,是机器会自动构建模组化的函数。模组化的好处是使模型变得简单了,这样training data就不需要那么多。而且实际上做Deep Learning 的data是比较少的,如果有很多的话,那直接查表就行。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值