Batch Normalization笔记

来源:互联网 发布:linux 修改网络地址 编辑:程序博客网 时间:2024/06/06 13:53

最近研究了下whiteining, Batch Normalization, Data augmentation,  dropout, relu这几个知识点。

发现其很多道理是相同的。


1. whiteining:

白化这个词,可能在深度学习领域比较常遇到,挺起来就是高大上的名词,然而其实白化是一个比PCA稍微高级一点的算法而已,所以如果熟悉PCA,那么其实会发现这是一个非常简单的算法。
    白化的目的是去除输入数据的冗余信息。假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的;白化的目的就是降低输入的冗余性。
    输入数据集X,经过白化处理后,新的数据X'满足两个性质:
(1)特征之间相关性较低;
(2)所有特征具有相同的方差。
    其实我们之前学的PCA算法中,可能PCA给我们的印象是一般用于降维操作。然而其实PCA如果不降维,而是仅仅使用PCA求出特征向量,然后把数据X映射到新的特征空间,这样的一个映射过程,其实就是满足了我们白化的第一个性质:除去特征之间的相关性。因此白化算法的实现过程,
第一步操作就是PCA,求出新特征空间中X的新坐标,
第二步对新的坐标进行方差归一化操作。
2.Batch Normalization:

http://blog.csdn.net/elaine_bao/article/details/50890491

http://blog.csdn.net/happynear/article/details/44238541


3.Relu 

relu会使小于零的神经元直接失活。Relu除了引入非线性变化,更重要的是“失活”的作用,使得大量的神经元并不 参与。


4.Data Augmentation

除了翻转,对比度等变化。还有切割原始图像 大小。切割原有图像来增大数据集有两种方法:第一,比如32*32,直接割成81张24*24的图片。第二种是将原始图片补零成40*40,然后割成81张32*32大小的图片。

从数据增强的角度来理解的话,固然是增加了数据集,所以可以避免过拟合。

但如果从另一个角度来理解,补零成40*40,再切割成32*32,是否表示在训练的时候适当的引入“噪声”,提高整个分类器的抗噪声能力,参考 noise autoencoder。那么如果不对原始图像做处理,直接在图像真正输入模型之前,加一个Dropout,是否也可以达到相同效果,甚至更好的效果。假设图像32*32,那么相当于在32*32个像素点里选81个像素点失活。也就是C(1024,81),包含更多可能性,是否效果会更好。dropout = 0.92


5.Dropout

dropout让神经元随机失活,如果从神经元的角度来看,是神经元失活。但如果从下一层神经元的角度来看,相当于把上一层正常输出的结果中的部分数据随机置零,也就是人为在训练数据中引入噪声。

组合角度:经过交叉验证,隐含节点dropout率等于0.5的时候效果最好,原因是0.5的时候dropout随机生成的网络结构最多。

噪声角度:dropout也可以被用作一种添加噪声的方法,直接对input进行操作。输入层设为更接近1的数。使得输入变化不会太大

dropout与其他standerd regularizers的对比 

  • L2 weight decay(试过)
  • lasso
  • KL-sparsity (试过)
  • max-norm regularization
  • dropout (试过)
http://blog.csdn.net/stdcoutzyx/article/details/49022443


原创粉丝点击