CAE(Convolutional Auto-Encode) 卷积自编码

最近复习一下之前看的深度学习的网络,在deeplearning-toolbox中看到一个CAE一时没想起来就看了一下官方的解释

CAE(Convolutional Auto-Encode) 卷积自编码 ,对于这个深度学习的网络的的解释很少。

下面谈一下自己的认识,算是总结吧

CAE(Convolutional Auto-Encode) 卷积自编码 :一种卷积自编码器,其实现的过程与Auto-Encode的思想是一致的

都是使用的是先编码在解码,比较解码的数据与原始的数据的差异进行训练,最后得到比较稳定的参数,待这一层的参数都训练好的时,再进行下一个的训练

如此堆积起来的网络看作是Stacked Auto-Encode 为了增加其抗干扰的能力,有时在训练时加入随机噪声进而增加其鲁棒性,称为Stacked denoise Auto-Encode。


但是今天要介绍的CAE只是加入了卷积的训练。其中主要思想是加入一些卷积的操作

1.CAE-UP 可以看做是卷积的的操作(在图像中进行卷积计算,得到卷积的图像)

2.CAE-Down 可以看做是一种翻卷的过程(在上层的基础之上,进行反卷积,得到原始的数据(肯定会有差距))

3.CAE-BP 可以看做是反向椽笔算法来计算残差,损失,计算出梯度与变化值。使用残差值对网络的参数进行更新。

主要的步骤就是这些,剩下的就是堆在一起了。


下面介绍一下在CAE中的数学计算

卷积层-卷积:初始化k个卷积核(W),每个卷积核搭配一个偏置b,与输入x卷积( )后生成k个特征图h,激活函数 σ tanh 。公式如下:


                                                                                                                         

卷积层-自编码:每张特征图h与其对应的卷积核的转置 进行卷积操作并将结果求和,然后加上偏置c,激活函数 σ 仍然是 tanh 。公式如下:  



卷积层-更新权值:要更新权值,首先要确定cost function,此处作者采用的MSE(最小均方差)函数,即:目标值减去实际值的平方和再求均值,2n是为了简化求导。其中 θWb 。公式如下: 




  但是会存在一种输入要与输出的维度一样才可以进行残差的计算,这个时候,就要对卷积的三种方式就要理清楚是怎样的操作的

卷积的三种操作: 假设原始图像的size是AxA的  卷积核的大小BxB 在计算时候对于边界如果需要进行边界补零操作

1.valid   得到的图像是 (A-B+1)x(A-B+1)

2.full    得到的图像是 (A+B-1)x(A+B-1)

3.same   得到的图像是   AxA


  确定好cost function以后,就是对W和b求导,公式如下:  


  
   由于论文没有具体给出的只是说δh and δy are the deltas of the hidden states and the reconstruction, respectively

在此参考一下deeplearning-toolbox中的CAE的代码中,其对于卷积使用的full操作,而在进行down时使用的是valid,

这样就是的输入前与输入后保持一致的维度了。


caesdlm是进行梯度检测的

可以进行pooling 也可以选择不使用,只是用来减少参数的,其在计算中只是随机的将某些数据值置为0.

  Max pooling:引入Max pooling下采样技术,获取到特征的平移不变性。Max pooling就是pooling时选取最大值。由于采用了pooling技术,因此就没有必须使用L1/L2规则化项了。

文中的实验结果

  将上述卷积层和pooling层堆积起来,形成CAEs,最后加入SVMs或其他的分类器。据实验结果显示,CAEs在泛化性、鲁棒性方面表现特别好,尤其是在无监督训练界

参考文献

[1]: Stacked Convolutional Auto-Encoders for Hierarchical Feature Extraction


你可能感兴趣的:(CAE(Convolutional Auto-Encode) 卷积自编码)