您的位置:首页 > 其它

深度学习关键技术总结

2014-07-08 19:45 489 查看
一 数据预处理

1.常用批量梯度下降法来求解神经网络代价函数,但是L-BFGS和共轭梯度算法通常比梯度下降法快很多。

求取代价函数的关键步骤是计算偏导数,反向传播算法是计算偏导数的一种有效方法,但是反向传播算法很难调试得到正确结果。可以采用对求导结果进行数值检验的方法。自动调整学习速率 ,以得到合适的步长值,最终使 能够快速收敛到一个局部最优解(比如可以寻找一个Hessian矩阵的近似,得到最佳步长值,使用该步长值能够更快地收敛到局部最优(和牛顿法类似))。

2主成分分析(PCA)

在实践中我们发现,大多数特征学习算法对训练图片的确切类型并不敏感,所以大多数用普通照相机拍摄的图片,只要不是特别的模糊或带有非常奇怪的人工痕迹,都可以使用。

图像自然特征(平稳性):在自然图像上进行训练时,对每一个像素单独估计均值和方差意义不大,因为(理论上)图像任一部分的统计性质都应该和其它部分相同,图像的这种特性被称作平稳性(stationarity)。

具体而言,为使PCA算法正常工作,我们通常需要满足以下要求:(1)特征的均值大致为0;(2)不同特征的方差值彼此相似。对于自然图片,即使不进行方差归一化操作,条件(2)也自然满足,故而我们不再进行任何方差归一化操作(对音频数据,如声谱,或文本数据,如词袋向量,我们通常也不进行方差归一化)。实际上,PCA算法对输入数据具有缩放不变性,无论输入数据的值被如何放大(或缩小),返回的特征向量都不改变。

3白化

白化的目的就是降低输入的冗余性;即通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。

a. PCA白化,不同的特征之间不相关并且具有单位方差。

b. ZCA白化,尽可能的接近原始数据,通常保留数据的n个维度,不尝试降低维度

白化与降维相结合。 如果你想要得到经过白化后的数据,并且比初始输入维数更低,可以仅保留 白化后数据 中前 k个主要成分。

二 训练和分类

softmax回归解决的是多分类问题(logistic回归解决的二分类问题)

尽管一个单一的未标注样本蕴含的信息比一个已标注的样本要少,可以通过获取大量无标注数据(比如从互联网上下载随机的、无标注的图像、音频剪辑或者是文本),能避免大规模的手工构建特征和标数据的复杂性。

自学习和无监督特征学习能够从未标注数据中学习。可以给算法以大量的未标注数据,学习出较好的特征描述。在尝试解决一个具体的分类问题时,可以基于这些学习出的特征描述和任意的(可能比较少的)已标注数据,使用有监督学习方法完成分类。

未标注数据(无监督)得到已标注特征辅助分类(有监督)

4稀疏编码及拓扑稀疏编码

稀疏编码

绝大多数的感官数据,比如自然图像,可以被表示成少量基本元素的叠加,在图像中这些基本元素可以是面或者线。同时,与初级视觉皮层的类比过程也因此得到了提升。从概率的角度出发,将稀疏编码算法当作一种“生成模型”

稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据。稀疏编码算法的目的就是找到一组基向量 ,使得我们能将输入向量 表示为这些基向量的线性组合。

稀疏性:对于一组输入向量,我们只想有尽可能少的几个系数远大于零

超完备基:能更有效地找出隐含在输入数据内部的结构与模式。

局限性:即使已经学习得到一组基向量,如果为了对新的数据样本进行“编码”,我们必须再次执行优化过程来得到所需的系数。这个显著的“实时”消耗意味着,即使是在测试中,实现稀疏编码也需要高昂的计算成本,尤其是与典型的前馈结构算法相比。

拓扑稀疏编码

大脑皮层 V1 区神经元能够按特定的方向对边缘进行检测,同时,这些神经元(在生理上)被组织成超柱(hypercolumns),在超柱中,相邻神经元以相似的方向对边缘进行检测,一个神经元检测水平边缘,其相邻神经元检测到的边缘就稍微偏离水平方向,沿着超柱,神经元就可以检测到与水平方向相差更大的边缘了。

学习到的特征具有拓扑秩序”性质:如果“相邻”的特征是“相似”的,就意味着如果某个特征被激活,那么与之相邻的特征也将随之被激活

拓扑稀疏编码得到的特征与稀疏编码得到的类似,只是拓扑稀疏编码得到的特征是以某种方式有“秩序”排列的。

注意:用稀疏编码学习得到的基向量之间不一定线性独立。尽管在某些情况下这已经满足需要,但有时我们仍然希望得到的是一组线性独立基。独立成分分析算法(ICA)可以实现了一组线性独立基(满足特征稀疏和基是标准正交两个条件)

5自编码器

自编码神经网络通常可以学习出一个跟主元分析(PCA)结果非常相似的输入数据的低维表示。

用自编码器来学习输入至 softmax 或logistic 回归分类器的未标注数据学习获得

的特征。

大量已标注训练数据的情况下使用微调能显著提升分类器性能(回归层,有监督)。自动编码器训练第一层,利用logistic/softmax 回归训练第二层)之后,我们可以进一步修正模型参数,进而降低训练误差。具体来说,我们可以对参数进行微调,在现有参数的基础上采用梯度下降或者L-BFGS 来降低已标注样本集 上的训练误差。(此为含一个隐藏层的三层网络)

6深度网络

大脑皮层同样是分多层进行计算的。例如视觉图像在人脑中是分多个阶段进行处理的,首先是进入大脑皮层的“V1”区,然后紧跟着进入大脑皮层“V2”区,以此类推。

当处理对象是图像时,我们能够使用深度网络学习到“部分-整体”的分解关系。例如,第一层可以学习如何将图像中的像素组合在一起来检测边缘(正如我们在前面的练习中做的那样)。第二层可以将边缘组合起来检测更长的轮廓或者简单的“目标的部件”。在更深的层次上,可以将这些轮廓进一步组合起来以检测更为复杂的特征。

如何训练:逐层贪婪训练方法,每次只训练网络中的一层,逐层递增,各层单独训练所得到的权重被用来初始化最终(或者说全部)的深度网络的权重,然后对整个网络进行“微调” (Fine tuning)(即把所有层放在一起来优化有标签训练集上的训练误差)。

自编码器“栈化”到逐层贪婪训练法

栈式自编码(Stacked autoencoder)神经网络是一个由多层稀疏自编码器组成的神经网络,其前一层自编码器的输出作为其后一层自编码器的输入。

优点:栈式自编码神经网络的第一层会学习得到原始输入的一阶特征(比如图片里的边缘),第二层会学习得到二阶特征,该特征对应一阶特征里包含的一些模式(比如在构成轮廓或者角点时,什么样的边缘会共现)。栈式自编码神经网络的更高层还会学到更高阶的特征。如果网络的输入数据是图像,网络的第一层会学习如何去识别边,第二层一般会学习如何去组合边,从而构成轮廓、角等。更高层会学习如何去组合更形象且有意义的特征。例如,如果输入数据集包含人脸图像,更高层会学习如何识别或组合眼睛、鼻子、嘴等人脸器官。

如何微调:反向传播算法(任意多层都适用)

7卷积网络

生物学视觉系统结构中,视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。启发了局部联通思想。

在稀疏自编码中输入层和隐含层进行“全连接”,对于大图像全联通网络的这种方法来学习整幅图像上的特征,从计算角度而言,将变得非常耗时。

对隐含单元和输入单元间的连接加以限制:每个隐含单元仅仅只能连接输入单元的一部分。例如,每个隐含单元仅仅连接输入图像的一小片相邻区域。(对于不同于图像输入的输入形式,也会有一些特别的连接到单隐含层的输入信号“连接区域”选择方式。如音频作为一种信号输入方式,一个隐含单元所需要连接的输入单元的子集,可能仅仅是一段音频输入所对应的某个时间段上的信号。)

自然图像固有特征( “静态性”的属性):图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。

例如:从一个大尺寸图像中随机选取一小块,比如说8x8 作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个8x8 样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。特别是,我们可以用从8x8 样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。

8池化

卷积获得了特征(features) 训练softmax分类器实现分类,因为卷积特征量大,容易出现过拟合 (over-fitting)

池化:为了描述大的图像,可以对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。

特点:(池化不变性)如果选择图像中的连续范围作为池化区域,并且只是池化相同(重复)的隐藏单元产生的特征,那么,这些池化单元就具有平移不变性(translation invariant)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: