Deep Learning基础--线性解码器、卷积、池化

摘要:
LinearDecoder意味着隐藏层使用的激励函数是S形函数,而输出层使用的激发函数是线性函数,例如最特殊的线性函数——等效函数。神经网络中局部连接网络的实现采用进化的方法。从解决方案中获得的结果的统计计算过程称为汇集,这表明汇集也是有效的。常见的池化方法包括最大池化和平均池化。

本文主要是学习下Linear Decoder已经在大图片中经常采用的技术convolution和pooling,分别参考网页http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial中对应的章节部分。

  Linear Decoders:

  以三层的稀疏编码神经网络而言,在sparse autoencoder中的输出层满足下面的公式:

   Deep Learning基础--线性解码器、卷积、池化第1张

  从公式中可以看出,a3的输出值是f函数的输出,而在普通的sparse autoencoder中f函数一般为sigmoid函数,所以其输出值的范围为(0,1),所以可以知道a3的输出值范围也在0到1之间。另外我们知道,在稀疏模型中的输出层应该是尽量和输入层特征相同,也就是说a3=x1,这样就可以推导出x1也是在0和1之间,那就是要求我们对输入到网络中的数据要先变换到0和1之间,这一条件虽然在有些领域满足,比如前面实验中的MINIST数字识别。但是有些领域,比如说使用了PCA Whitening后的数据,其范围却不一定在0和1之间。因此Linear Decoder方法就出现了。Linear Decoder是指在隐含层采用的激发函数是sigmoid函数,而在输出层的激发函数采用的是线性函数,比如说最特别的线性函数——等值函数。此时,也就是说输出层满足下面公式:

   Deep Learning基础--线性解码器、卷积、池化第2张

  这样在用BP算法进行梯度的求解时,只需要更改误差点的计算公式而已,改成如下公式:

   Deep Learning基础--线性解码器、卷积、池化第3张

  Deep Learning基础--线性解码器、卷积、池化第4张

  Convolution:

  在了解convolution前,先认识下为什么要从全部连接网络发展到局部连接网络。在全局连接网络中,如果我们的图像很大,比如说为96*96,隐含层有要学习100个特征,则这时候把输入层的所有点都与隐含层节点连接,则需要学习10^6个参数,这样的话在使用BP算法时速度就明显慢了很多。

  所以后面就发展到了局部连接网络,也就是说每个隐含层的节点只与一部分连续的输入点连接。这样的好处是模拟了人大脑皮层中视觉皮层不同位置只对局部区域有响应。局部连接网络在神经网络中的实现使用convolution的方法。它在神经网络中的理论基础是对于自然图像来说,因为它们具有稳定性,即图像中某个部分的统计特征和其它部位的相似,因此我们学习到的某个部位的特征也同样适用于其它部位。

  下面具体看一个例子是怎样实现convolution的,假如对一张大图片Xlarge的数据集,r*c大小,则首先需要对这个数据集随机采样大小为a*b的小图片,然后用这些小图片patch进行学习(比如说sparse autoencoder),此时的隐含节点为k个。因此最终学习到的特征数为:

   Deep Learning基础--线性解码器、卷积、池化第5张

  此时的convolution移动是有重叠的。

  Pooling:

  虽然按照convolution的方法可以减小不少需要训练的网络参数,比如说96*96,,100个隐含层的,采用8*8patch,也100个隐含层,则其需要训练的参数个数减小到了10^3,大大的减小特征提取过程的困难。但是此时同样出现了一个问题,即它的输出向量的维数变得很大,本来完全连接的网络输出只有100维的,现在的网络输出为89*89*100=792100维,大大的变大了,这对后面的分类器的设计同样带来了困难,所以pooling方法就出现了。

  为什么pooling的方法可以工作呢?首先在前面的使用convolution时是利用了图像的stationarity特征,即不同部位的图像的统计特征是相同的,那么在使用convolution对图片中的某个局部部位计算时,得到的一个向量应该是对这个图像局部的一个特征,既然图像有stationarity特征,那么对这个得到的特征向量进行统计计算的话,所有的图像局部块应该也都能得到相似的结果。对convolution得到的结果进行统计计算过程就叫做pooling,由此可见pooling也是有效的。常见的pooling方法有max pooling和average pooling等。并且学习到的特征具有旋转不变性(这个原因暂时没能理解清楚)。

  从上面的介绍可以简单的知道,convolution是为了解决前面无监督特征提取学习计算复杂度的问题,而pooling方法是为了后面有监督特征分类器学习的,也是为了减小需要训练的系统参数(当然这是在普遍例子中的理解,也就是说我们采用无监督的方法提取目标的特征,而采用有监督的方法来训练分类器)。

  参考资料:

     http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial

     http://www.cnblogs.com/tornadomeet/archive/2013/03/25/2980766.html

免责声明:文章转载自《Deep Learning基础--线性解码器、卷积、池化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Xilinx SDK编译出现undeference to "outbyte"错误的解决办法shiro 框架基本讲解【转载】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

解释深度学习在安全领域中的应用

摘要: 虽然深度学习在各个领域显示出巨大的潜力,但缺乏透明度限制了它在安全或关键安全领域的应用。现有的研究试图开发解释技术,为每个分类决策提供可解释的解释。不幸的是,当前的方法是针对非安全性任务(例如,图像分析)进行优化的。它们的关键假设在安全应用程序中经常被违反,导致解释的保真度很差。 本文提出了一种用于安全应用的高保真度解释方法LEMNA。给定一个输入...

当Transformer遇见U-Net!

前言 留给Transformer + U-Net 组合命名的缩写不多了... 之前盘点了目前已公开的5篇MICCAI 2021上的Transformer+医学图像分割的工作,详见:Transformer一脚踹进医学图像分割!看5篇MICCAI 2021有感 没想到大家这么喜欢这篇文章,收藏量高的可怕... 那么本文将盘点Tranformer + U-Net...

Coursera 机器学习 第8章(下) Dimensionality Reduction 学习笔记

8 Dimensionality Reduction8.3 Motivation8.3.1 Motivation I: Data Compression第二种无监督问题:维数约简(Dimensionality Reduction)。通过维数约简可以实现数据压缩(Data Compression),数据压缩可以减少计算机内存使用,加快算法运算速度。什么是维数...

【转】VGG网络结构及参数

VGG网络 VGG16输入224*224*3的图片,经过的卷积核大小为3x3x3,stride=1,padding=1,pooling为采用2x2的max pooling方式: 1、输入224x224x3的图片,经过64个卷积核的两次卷积后,采用一次pooling。经过第一次卷积后,c1有(3x3x3)个可训练参数 2、之后又经过两次128的卷积核卷积...

动手学深度学习13-权重衰减

权重衰减 高维线性回归实验 从零开始实现 初始化模型参数 定义L2范数惩罚项 定义训练和测试 使用权重衰减 pytorch简洁实现 小结 上一节中提提到的过拟合现象,在模型的训练误差远小于测试集上的误差。虽然增大训练接数据集可以减轻过拟合,但是获得额外的训练数据往往代价过大,本节介绍过拟合常用的方式:权重衰减(weight decay)。 权重衰...

两个多维高斯分布之间的KL散度推导

  在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异。并且损失可以定义得很简单,比如二范数即可。但是对于已知参数的两个确定分布之间的差异,我们就要通过推导的方式来计算了。   下面对已知均值与协方差矩阵的两个多维高斯分布之间的KL散度进行推导。当然,因为便于分布之间的逼近,Wasserstein dista...