您的位置:首页 > 理论基础 > 计算机网络

神经网络细节与训练注意事项

2017-03-25 20:55 295 查看
主要内容:

神经网络训练注意事项:

1、权重初始化

2、Batch Normalization

3、正则化和Dropout

4、训练状态监控

5、最优化与参数更新方法

深层CNN与ResNet:

1、ResNet结构浅析

2、Mxnet与简单ResNet实现

最常见的训练过程:

站在巨人的肩膀上---做fine-tuning  

caffe下面的Model zoo 有大量预训练好的模型。

讲前面的学习率调低,后面的学习率调高。

一般神经网络的训练过程:(mini-batch)SGD

1、采样一个batch数据(比如128张)

2、前向计算得到损失loss

3、反向传播计算梯度(一个batch上的)

4、用这部分梯度迭代更新权重参数

不断循环上面四步。

训练神经网络细节:

针对CNN而言:

数据去均值化;一般不做标准化、PCA和白化;激励函数

权重初始化:

1、随机很小数初始化:

比如初始化为0,我们会发现,神经元激活和不激活的状态是一致的,输出都是0,这样不行。

比如初始化为很小随机数,如果网络层级不是很深,是OK的。但是如果层级很深的话,会出现输出的方差越来越小。即输出值基本不变了。。。。

详细讲解:

比如 初始化方式: 0.01*一个均值为0,方差为1的高斯随机数。

第一层经过f(wx+b)后,输出值已经比输入小了,所以再放到下一层,就更小了。

我们把每个神经元经过非线性变换后的每一层结果画出来。(这里用的激励函数是tanh)



可以发现后面的隐含层都不怎么活跃了,这样会带来一个问题:

如果现在反向传播, 求梯度 f(wx) 对w求导,里面有个x项哦,但是从上图看,输出的x基本接近于0了。这样一个现象叫梯度弥散。

2、如果取随机大一点的数呢?

比如 *1.0 instead of *0.01

你会发现所有的输出要么就是0,要么就是1。你会发现 梯度为0.。。。也不行啦。

3、哈维尔/Xavier 初始化

因为WX = 上一层神经元的输出*权重,一般来想,如果上一层的神经元很多,那么WX可能很大,这时候我们希望W小一点;反之如果上一层的神经元很少,我们希望W大一点。这样每一层的输出的分布比较相似。



如果我们用RELU和 Xavier呢?

输入小于0就被截断了。大概有一半的输入被砍掉了,所以到下一层的分布发生了变化,见下图:



这时候我们的哈维尔分母就不要根号N了,而是应该根号N/2. 因为你砍掉了一半哦。

Batch Normalization

我们希望灌入激活函数的分布是一致的, 那么我们能不能对输入先做一个变换:

1、如果输出是N*D的结果,对D个维度每个维度求均值和方差。

2、根据均值和方差做归一化。

但是有个失真的缺点。



BN的好处:

1、梯度传递(计算)更为顺畅,即活性保持的比较好

2、学习率设高一点也没关系

3、对于初始值的依赖减少了!!

4、说起来,其实这里也可以看做一种正则化,减少了对dropout的需求。

BN的注意点:

1、如果层次深,激励层前全加上BN层,训练时间比不加BN层可能慢30%

2、视情况而定是否需要加

过拟合与正则化

神经网络,尤其是层次深的神经网络

1、记忆太强大

2、不好好理解深层规律(泛化),完全死记硬背了

3、测试集上“考试不及格”

限制“过拟合”=>  正则化

L1(截断性效应,不相关的输入的权重会变为0)、

L2(缩放性效应,减小每个特征的权重)、

L1+L2

过拟合与Dropout

别一次开启所有学习单元。



神经元的开关的打开或者关闭,在每一次前向运算都可能状态不一样。这样就可能会去除一些噪声。

怎么判断神经元的开关呢?

我们定义一个dropout的概率,也就是保持一个神经元激活状态的概率。我们会给某个神经元算出一个高斯分布随机数 ,如果这个数小于P,就让这个神经元的输出通过,不小于P,就不让他通过。

 


为什么Dropout可以防止过拟合呢?

第一种理解:

1、别让你的神经网络记住那么多东西(知道你记忆力好)

2、就是一只猫而已,要有一些泛化能力



训练检查与监控

1、在小数据集上能够“过拟合”(先把正则化关了)  看看loss、训练集上的准确率、输出的方差等等。

2、加入正则化,但强度不大,观察是否loss下降,(准确率可能下降。)

3、监控下loss (每一轮(mini-batch)的loss都画出来)



4、对比训练集和验证集上情况,判断网络状况



SGD与学习率

一、公式的变化

二、学习率衰减

步伐衰减:比如每20轮完整训练周期,下降10%
指数衰减:
1/t 衰减
demo图:cs231n.github.io/assets/nn3/opt2.gif   ;  cs231n.github.io/assets/nn3/opt1.gif

深层网络与ResNet
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: