随笔分类 -  deep learning

摘要:转自http://blog.csdn.net/zouxy09/article/details/8781543CNNs是第一个真正成功训练多层网络结构的学习算法。它利用空间关系减少需要学习的参数数目以提高一般前向BP算法的训练性能。在CNN中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,... 阅读全文
posted @ 2015-07-02 11:46 Providence 阅读(1370) 评论(0) 推荐(1)
摘要:在这一节里,我们将总结PCA,ZCA白化算法,并描述如何使用高效的线性代数库来实现它们。首先,我们需要确保数据的均值(近似)为零。对于自然图像,我们通过减去每个图像块(patch)的均值(近似地)来达到这一目标。为此,我们计算每个图像块的均值,并从每个图像块中减去它的均值。Matlab实现如下:avg = mean(x, 1); % 分别为每个图像块计算像素强度的均值。 x = x - repmat(avg, size(x, 1), 1);下面,我们要计算,如果你在Matlab中实现(或者在C++, Java等中实现,但可以使用高效的线性代数库),直接求和效率很低。不过,我们可以这样一... 阅读全文
posted @ 2014-02-21 14:45 Providence 阅读(357) 评论(0) 推荐(0)
摘要:介绍我们已经了解了如何使用PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。2D的例子下面我们先用前文的2D例子描述白化的主要思想,然后分别介绍如何将白化与平滑和PCA相结合。如何消除特征之间的相关性?在前文计算时实际上已经消除了输入特征之间的相关性。得到的新特征的分布如下图所示:这个数据的协方差矩阵如下:( 阅读全文
posted @ 2014-02-21 11:44 Providence 阅读(13801) 评论(0) 推荐(0)
摘要:主成分分析(PCA)是一种能够极大提升无监督特征学习速度的数据降维算法。更重要的是,理解PCA算法,对实现白化算法有很大帮助,很多算法都先用白化算法作预处理步骤。假设你使用图像来训练算法,因为图像中相邻的像素高度相关,输入数据是有一定冗余的。具体来说,假如我们正在训练的16×16灰度值图像,记为一个256维向量,其中特征值对应每个像素的亮度值。由于相邻像素间的相关性,PCA算法可以将输入向量转换为一个维数低很多的近似向量,而且误差非常小。在我们的实例中,使用的输入数据集表示为,维度即。假设我们想把数据从2维降到1维。(实际应用中,我们也许需要把数据从156维降到50维;在这里使用低维 阅读全文
posted @ 2014-02-21 08:38 Providence 阅读(1960) 评论(0) 推荐(0)
摘要:如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。自动编码器就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,就像PCA那样,找到可以代表原信息的主要成分。具体过程简单的说明如下:1)给定无标签数据,用非监督学习学习特征:在我们之前的神经网络中,如第一个图,我们输入的样本是有标签的,即(input, target),这样我们根据当前输出和target(label)之间的差去改变前面各层的参数,直到收敛。但现在我们只 阅读全文
posted @ 2014-02-19 09:32 Providence 阅读(10006) 评论(1) 推荐(1)
摘要:目前为止,我们已经讨论了神经网络在有监督学习中的应用。在有监督学习中,训练样本时有类别标签的。现在假设我们只有一个没带类别标签的训练样本集合,其中。自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如。下图是一个自编码神经网络的示例。自编码神经网络尝试学习一个的函数。换句话说,它尝试逼近一个恒等函数,从而使得接近于输入。恒等函数虽然看上去不太有学习的意义,但是当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,我们就可以从输入数据中发现一些有趣的结构。举例来说,假设某个自编码神经网络的输入是一张图像(共100个像素)的像素灰度值,于是,其隐藏层中有50 阅读全文
posted @ 2014-02-18 21:35 Providence 阅读(2369) 评论(0) 推荐(1)
摘要:假设有一个二部图,每一层的节点之间没有连接,一层是可视层,即输入数据是(v),一层是隐藏层(h),如果假设所有的节点都是随机二值变量节点(只能取0或者1值)同时假设全概率分布满足Boltzmann 分布,我们称这个模型是Restricted BoltzmannMachine (RBM)。首先,这个模型因为是二部图,所以在已知v的情况下,所有的隐藏节点之间是条件独立的(因为节点之间不存在连接),即p(h|v)=p(h1|v)…p(hn|v)。同理,在已知隐藏层h的情况下,所有的可视节点都是条件独立的。同时又由于所有的v和h满足Boltzmann 分布,因此,当输入v的时候,通过p(h|v) 可以 阅读全文
posted @ 2014-02-18 16:36 Providence 阅读(2789) 评论(0) 推荐(0)
摘要:卷积神经网络的网络结构卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。图:卷积神经网络的概念示范:输入图像通过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如上图,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进行滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。一般地,C层为特征提取层,每个神经元的输入与前一层的局部感受野相连,并提取该局部的特征,一旦该局部特征被提取 阅读全文
posted @ 2014-02-18 11:44 Providence 阅读(1330) 评论(0) 推荐(0)
摘要:训练完(稀疏)自编码器,我们还想把这自编码器学习到的函数可视化出来,好弄明白它到底学到了什么。我们以在10×10图像(即n=100)上训练自编码器为例。在该自编码器中,每个隐藏单元i对如下关于输入的函数进行计算:我们将要可视化的函数,就是上面这个以2D图像为输入,并由隐藏单元i计算出来的函数。它是依... 阅读全文
posted @ 2014-01-14 16:42 Providence 阅读(1502) 评论(0) 推荐(0)
摘要:目前为止,我们已经讨论神经网络在有监督学习中的应用。在有监督学习中,训练样本是有类别标签的。现在假设我们只有一个没有带标签的训练样本集合 ,其中 。自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如 。下图是一个自编码神经网络的示例。 自编码神经网络尝试学习一... 阅读全文
posted @ 2014-01-14 15:16 Providence 阅读(783) 评论(0) 推荐(0)
摘要:众所周知,反向传播算法很难调试得到正确结果,尤其是当程序存在很多难于发现的bug时。距离来说,索引的缺位错误(off-by-one error)会导致只有部分层的权重得到训练,再比如忘记计算偏置项。这些错误会使你得到一个看似十分合理的结果(但实际上比正确代码的结果要差)。因此,但从计算结果上来看,我... 阅读全文
posted @ 2014-01-14 10:18 Providence 阅读(436) 评论(0) 推荐(0)
摘要:假设我们有一个固定样本集,它包含 个样例。我们可以用批量梯度下降法来求解神经网络。具体来讲,对于单个样例(x,y),其代价函数为:这是一个(二分之一的)方差代价函数。给定一个包含 个样例的数据集,我们可以定义整体代价函数为:以上公式中的第一项 是一个均方差项。第二项是一个规则化项(也叫权重衰减项... 阅读全文
posted @ 2014-01-14 09:41 Providence 阅读(1459) 评论(0) 推荐(0)
摘要:概述以监督学习为例,假设我们有训练样本集(x(i),y(i)),那么神经网络算法能够提供一种复杂且非线性的的假设模型hw,b(x),它具有参数W,b,可以以此参数来拟合我们的数据。为了描述神经网络,我们先从最简单的神经网络讲起,这个神经网络仅由一个“神经元”构成,以下即是这个神经元的图示:这个“神经... 阅读全文
posted @ 2014-01-13 22:17 Providence 阅读(942) 评论(0) 推荐(0)
摘要:9.3、Restricted Boltzmann Machine (RBM)受限玻尔兹曼基假设有一个二部图,每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),如果假设所有的节点都是随机二值变量节点(只能取0或者1值),同时假设全概率分布p(v,h)满足Boltzmann... 阅读全文
posted @ 2014-01-13 21:19 Providence 阅读(243) 评论(0) 推荐(0)
摘要:九、Deep learning的常用模型或者方法9.1、AutoEncoder自动编码器Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,的都每一层中的权重。自... 阅读全文
posted @ 2014-01-13 15:54 Providence 阅读(385) 评论(0) 推荐(0)
摘要:深度学习(deep learning)思想就是堆叠多个层,也就是说这一层的输入作为下一层的输出。通过这种方式,就可以实现对输入信息进行分级表达了。浅层学习和深度学习(shallow learning and deep learning)浅层学习时机器学习的第一次浪潮:BP算法(Back Propag... 阅读全文
posted @ 2014-01-13 11:36 Providence 阅读(504) 评论(0) 推荐(0)