P14 Tips for Deep Learning

目录

前言

一、回顾ML训练过程

二、针对两个问题的解决方法

1.New activation function

1.1 sigmoid函数

1.2 New activation function

2.Adaptive Learing rate

3.Early stopping

4.Regularization

4.1 L2 regularization

4.2 L1 regularization

5.Dropout

5.1 怎么Dropout?

5.2 为什么Dropout有用?


前言

Training过程中的两个问题

Q1:Training data上表现不好

Q2:Testing data上表现不好

一、回顾ML训练过程

Step 1. 定义Function set

Step 2. 定义Loss Function评估Function set好坏

Step 3. 根据Training data训练模型

Neural Network很有可能在Training data上就训练不好,这不叫Overfitting,是我们还没有训练好;在Training data上表现好,而在Testing data上表现不好才是Overfitting。

此外,层数多的模型比层数低的在Testing data上表现好,并不一定是Overfitting,要先检查他们在Training data上的结果;可能是层数多的模型在Training data上我们就训练的不好。也不是Underfitting(参数不够多)。

二、针对两个问题的解决方法

Training过程中的两个问题

Q1:Training data上表现不好

① New activation function(新的激活函数)

② Adaptive Learing rate(调整学习率)

Q2:Testing data上表现不好

① Early stopping(提前终止)

② Regularization(正则化)

③ Dropout

1.New activation function

1.1 sigmoid函数

现已不常用,存在Gradient vanishing(梯度消失)问题。

观察sigmoid函数图像,当输入的x变化很大时,y变化很小;Layer越深,对输入的衰减次数越多,输入对输出的影响就越小。

1.2 New activation function

1.ReLU(Rectified Linear Unit 线性整流函数/线性修正单元)

a=max\left \{ 0,z \right \}

原因:①计算速度快(sigmoid需要指数运算)

           ②Biological reason

           ③等同于无穷多个不同bias的sigmoid叠加

           ④解决梯度消失问题

 2.Leakly ReLU&Parametric ReLU

 3.Maxout

Maxout可以看做是在深度学习网络中加入一层激活函数层,包含一个参数k。这一层相比ReLU,sigmoid等,其特殊之处在于增加了k个神经元,然后输出激活值最大的值。

隐含层节点的输出表达式为:f_i(x) = \max_{j \in [1,k]} z_{ij},z_{ij}=X^TW_{ij}+b_{ij}

假设 w 是 2 维,那么有 f(x)=\max({w_1}^Tx+b_1,{w_2}^Tx+b_2)

ReLU 和 Leaky ReLU 都是它的一个变形。

与常规激活函数不同的是,它是一个可学习的分段线性函数。然而任何一个凸函数,都可以由线性分段函数进行逼近近似。

如何训练Maxout呢,激活哪个就训练哪个,没有被激活的就舍弃掉,就会变成一个thin & linear的网络,比较好训练。

不同的输出data对应不同的网络结构,所以在实际实践中所有的参数都能被训练到。

2.Adaptive Learing rate

1.Adagrad

2.RMSProp(Root Mean Square Propagation)

RMSProp比Adagrad只多了一个超参数,其值通常置为0.9。

α小,倾向于相信新的梯度;反之,倾向于相信旧的梯度。

3.Momentum

动量来源于物理学,当momentum越大时,转换为势能的能量就越大,就越有可能摆脱局部凹区域,从而进入全局凹区域,用\lambda表示惯性的大小,综合考虑了梯度下降的方向和上次更新的方向来更新参数。

v^t实际上是到\theta ^t之前所有梯度的加权求和。

4.Adam=RMSPRop+Momentum

 


3.Early stopping

Validation set(验证集)作为Testing set当Loss最小的时候,training就停止。

之前就建议过可以把Training data分一部分出来当做Testing data可能会训练的更好,当训练的模型用于真正的Testing data时,出现过拟合也没必要再去修改参数,没有意义。

4.Regularization

4.1 L2 regularization

4.2 L1 regularization

补充:符号函数

sgn(x)=\left\{\begin{matrix}1 \quad x>0 \\0 \quad x=0 \\-1 \quad x<0 \end{matrix}\right.

L1 训练结果:权重会比较稀疏,有的参数很小,接近于0;有的参数很大。
L2 训练结果:平均都比较小。(没听明白这一块)

5.Dropout

5.1 怎么Dropout?

在每次参数更新前,每个神经元有p%的概率被丢弃,相连的权重也会被丢弃。随着丢弃部分神经元,神经网络的结构发生改变(Thinner!)用这个新的神经网络做训练。

在训练的时候结果会变差,但是对于验证集和测试集,利用dropout后,结果会变好。
测试的时候,不需要 dropout,如果训练时,丢弃神经元的概率是p%,测试时所有权重都要乘(1-p)%

5.2 为什么Dropout有用?

防止参数过分依赖训练数据,增加参数对数据集的泛化能力。

可以看看这个:理解dropout_张雨石的博客-CSDN博客_dropout

当激活函数是线性的(ReLU,Maxout)的情况下,dropout 效果比较好;
当激活函数是非线性的(sigmoid)的情况下,dropout效果一般。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值