李宏毅机器学习-----做深度学习的一些Tips

Tips for deep learning

在这里插入图片描述
上面的步骤我们都非常熟悉了,定义模型,评估模型,选择最好的function,得到神经网络,检查在训练集中的表现,然后检查在测试集中的表现。

  • 为什么要做训练集的检查?
    在传统机器学习中,通常在训练集都会表现得比较好,但是在神经网络中,不一定会表现得好,有可能陷入了局部最优,这是需要回头检查哪个步骤出了什么问题,你可以做什么样的修改,在training set得到好的结果。

  • 为什么要做测试集检查?
    假如说你在training set得到了一个好的performance了,然后再把neural network放在你的testing data,testing set的performance才是我们关心的结果。在trainingdata获得好的performance的前提下,testingdata\color{red}{在training data获得好的performance的前提下,testing data}trainingdataperformance,testingdata上表现的不好,才是overfitting\color{red}{上表现的不好,才是overfitting}overfitting
    在这里插入图片描述
    有时候我们不能认为问题都是overfitting,这里有个例子:

例如,单看右图时,在testing data上,56层的error rate要比20层的要高,这个时候,你就可以说56层因为参数过多,所以overfitting了吗?在神经网络中这样直接判断是错误的\color{red}{错误的}!!!你必须先检查一下你的training data上的结果。

看回左图,明显看到56层的performance是比20层差的,在做神经网络的时候,其实会有很多问题导致你train得不好,例如局部最优,56层可能卡在局部最优得地方,所以表现才这么差,所以56层并没有overfitting,只是在train的时候,已经出问题了。

  • 有人会问,那56层这个神经网络算是underfitting吗?
    对Underfitting的理解是这个model的参数不够多,所以model的能力不足以解决这个问题。
    其实也不算是,因为56层的参数肯定是比20层多的,你20层能做得好的事情,50层会可能做不好吗? 50层都已经包括了20层所有的参数,还添加了额外的参数,从理论上说,50层必然比20层表现得好的。
    在这里插入图片描述
  • 当你看到一个方法,你要知道它要解决什么样的问题?
    例如dropout,dropout是在training data表现好,testing data上表现不好的时候才会去使用,当training data 结果就不好的时候用dropout 往往会越训练越差。
    【随机失活(dropout)在学习过程中通过将隐含层的部分权重或输出随机归零,降低节点间的相互依赖性,从而实现神经网络的正则化,降低其结构风险】

如何解决神经网络遇到的问题?

下面将会针对training表现不好的这方面,给出一些修改建议

1.改变激活函数

在这里插入图片描述
当training 的结果不好,你可以思考一下,是否你的Network的架构有问题?activation function不适用?
在这里插入图片描述
在2006年以前,如果将网络叠很多层,往往会得到上图的结果。上图,是手写数字识别的训练准确度的实验,使用的是sigmoid function。可以发现当层数越多,训练结果越差,特别是当网络层数到达9、10层时,训练集上准确度就下降很多。但是这个不是当层数多了以后就overfitting,因为这个是在training set上的结果。

梯度消失Vanishing Gradient

在这里插入图片描述
在神经网络的layer比较深的时候,会出现梯度消失现象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值