Deep learning:五十一(CNN的反向求导及练习)
摘要:前言: CNN作为DL中最成功的模型之一,有必要对其更进一步研究它。虽然在前面的博文Stacked CNN简单介绍中有大概介绍过CNN的使用,不过那是有个前提的:CNN中的参数必须已提前学习好。而本文的主要目的是介绍CNN参数在使用bp算法时该怎么训练,毕竟CNN中有卷积层和下采样层,虽然和M...
阅读全文
posted @
2013-12-10 23:36
tornadomeet
阅读(142458)
推荐(10) 编辑
Deep learning:五十(Deconvolution Network简单理解)
摘要:深度网络结构是由多个单层网络叠加而成的,而常见的单层网络按照编码解码情况可以分为下面3类:既有encoder部分也有decoder部分:比如常见的RBM系列(由RBM可构成的DBM, DBN等),autoencoder系列(以及由其扩展的sparse autoencoder, denoise a...
阅读全文
posted @
2013-11-26 21:05
tornadomeet
阅读(34984)
推荐(4) 编辑
Deep learning:四十九(RNN-RBM简单理解)
摘要:前言: 本文主要是bengio的deep learning tutorial教程主页中最后一个sample:rnn-rbm in polyphonic music. 即用RNN-RBM来model复调音乐,训练过程中采用的是midi格式的音频文件,接着用建好的model来产生复调音乐。对音乐建模的难点在与每首乐曲中帧间是高度时间相关的(这样样本的维度会很高),用普通的网络模型是不能搞定的(普通设计网络模型没有考虑时间维度,图模型中的HMM有这方面的能力),这种情况下可以采用RNN来处理,这里的RNN为recurrent neural network中文为循环神经网络,另外还有一种RNN为...
阅读全文
posted @
2013-11-23 21:54
tornadomeet
阅读(90062)
推荐(4) 编辑
Deep learning:四十八(Contractive AutoEncoder简单理解)
摘要:Contractive autoencoder是autoencoder的一个变种,其实就是在autoencoder上加入了一个规则项,它简称CAE(对应中文翻译为?)。通常情况下,对权值进行惩罚后的autoencoder数学表达形式为: 这是直接对W的值进行惩罚的,而今天要讲的CAE其数学表达式同样非常简单,如下: 其中的是隐含层输出值关于权重的雅克比矩阵,而 表示的是该雅克比矩阵的F范数的平方,即雅克比矩阵中每个元素求平方 然后求和,更具体的数学表达式为: 关于雅克比矩阵的介绍可参考雅克比矩阵&行列式——单纯的矩阵和算子,关于F范数可参考我前面的博文Sparse ...
阅读全文
posted @
2013-11-20 23:37
tornadomeet
阅读(19031)
推荐(1) 编辑
Deep learning:四十七(Stochastic Pooling简单理解)
摘要:CNN中卷积完后有个步骤叫pooling, 在ICLR2013上,作者Zeiler提出了另一种pooling手段(最常见的就是mean-pooling和max-pooling),叫stochastic pooling,在他的文章还给出了效果稍差点的probability weighted pooling方法。 stochastic pooling方法非常简单,只需对feature map中的元素按照其概率值大小随机选择,即元素值大的被选中的概率也大。而不像max-pooling那样,永远只取那个最大值元素。 假设feature map中的pooling区域元素值如下: 3*3大小...
阅读全文
posted @
2013-11-19 19:11
tornadomeet
阅读(27639)
推荐(0) 编辑
Deep learning:四十六(DropConnect简单理解)
摘要:和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单理解)的改进。 我们知道,Dropout是在训练过程中以一定概率1-p将隐含层节点的输出值清0,而用bp更新权值时,不再更新与该节点相连的权值。用公式描述如下: 其中v是n*1维的列向量,W是d*n维的矩阵,m是个d*1的01列向量,a(x)是一个满足a(0)=0的激发函数形式。这里的m和a(Wv)相乘是对应元素的相乘。 而DropConnect的思想也很简单,与Dropout不同的是...
阅读全文
posted @
2013-11-18 21:46
tornadomeet
阅读(24207)
推荐(0) 编辑
Deep learning:四十五(maxout简单理解)
摘要:maxout出现在ICML2013上,作者Goodfellow将maxout和dropout结合后,号称在MNIST, CIFAR-10, CIFAR-100, SVHN这4个数据上都取得了start-of-art的识别率。 从论文中可以看出,maxout其实一种激发函数形式。通常情况下,如果激发函数采用sigmoid函数的话,在前向传播过程中,隐含层节点的输出表达式为: 其中W一般是2维的,这里表示取出的是第i列,下标i前的省略号表示对应第i列中的所有行。但如果是maxout激发函数,则其隐含层节点的输出表达式为: 这里的W是3维的,尺寸为d*m*k,其中d表示输入层节...
阅读全文
posted @
2013-11-18 10:10
tornadomeet
阅读(59653)
推荐(3) 编辑
Deep learning:四十四(Pylearn2中的Quick-start例子)
摘要:前言: 听说Pylearn2是个蛮适合搞深度学习的库,它建立在Theano之上,支持GPU(估计得以后工作才玩这个,现在木有这个硬件条件)运算,由DL大牛Bengio小组弄出来的,再加上Pylearn2里面已经集成了一部分常见的DL算法,本着很想读读这些算法的源码和细节这一想法,打算学习下Pylearn2的使用. 网上这方面的中文资料简直是太少了,虽然本博文没什么实质内容,但也写贴出来,说不定可以帮到一些初学者。 从Bengio的一篇paper: Pylearn2: a machine learning research library可以看出,Pylearn2主要是针对机器学习开发者...
阅读全文
posted @
2013-11-14 23:49
tornadomeet
阅读(15515)
推荐(2) 编辑
Deep learning:四十三(用Hessian Free方法训练Deep Network)
摘要:目前,深度网络(Deep Nets)权值训练的主流方法还是梯度下降法(结合BP算法),当然在此之前可以用无监督的方法(比如说RBM,Autoencoder)来预训练参数的权值,而梯度下降法应用在深度网络中的一个缺点是权值的迭代变化值会很小,很容易收敛到的局部最优点;另一个缺点是梯度下降法不能很好的处理有病态的曲率(比如Rosenbrock函数)的误差函数。而本文中所介绍的Hessian Free方法(以下简称HF)可以不用预训练网络的权值,效果也还不错,且其适用范围更广(可以用于RNN等网络的学习),同时克服了上面梯度下降法的那2个缺点。HF的主要思想类似于牛顿迭代法,只是并没有显示的去计..
阅读全文
posted @
2013-08-19 11:20
tornadomeet
阅读(13686)
推荐(1) 编辑
Deep learning:四十二(Denoise Autoencoder简单理解)
摘要:前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Bengio在08年提出,见其文章Extracting and composing robust features with denoising autoencoders.使用dAE时,可以用被破坏的输入数据重构出原始的数据(指没被破坏的数据),所以它训练出来的特征会更鲁棒。本篇博文主要是根据Benigio的那篇文章简单介绍下dAE,然后通过2个简单的实验来说明实际编程中该怎样应用dAE。这2个...
阅读全文
posted @
2013-08-16 08:02
tornadomeet
阅读(75196)
推荐(1) 编辑
Deep learning:四十一(Dropout简单理解)
摘要:前言 训练神经网络模型时,如果训练样本较少,为了防止模型过拟合,Dropout可以作为一种trikc供选择。Dropout是hintion最近2年提出的,源于其文章Improving neural networks by preventing co-adaptation of feature detectors.中文大意为:通过阻止特征检测器的共同作用来提高神经网络的性能。本篇博文就是按照这篇论文简单介绍下Dropout的思想,以及从用一个简单的例子来说明该如何使用dropout。 基础知识: Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂...
阅读全文
posted @
2013-08-14 19:14
tornadomeet
阅读(159962)
推荐(11) 编辑
Deep learning:四十(龙星计划2013深度学习课程小总结)
摘要:头脑一热,坐几十个小时的硬座北上去天津大学去听了门4天的深度学习课程,课程预先的计划内容见:http://cs.tju.edu.cn/web/courseIntro.html。上课老师为微软研究院的大牛——邓力,群(qq群介绍见:Deep learning高质量交流群)里面有人戏称邓力(拼音简称DL)老师是天生注定能够在DL(Deep learning)领域有所成就的,它的个人主页见:http://research.microsoft.com/en-us/people/deng/。这次我花费这么大的力气参加这个课程,是期望能达到3个目的的:一、把DL中一些常见基础算法弄明白,特别是跟能量模..
阅读全文
posted @
2013-07-14 19:09
tornadomeet
阅读(24187)
推荐(2) 编辑
Deep learning:三十九(ICA模型练习)
摘要:前言: 本次主要是练习下ICA模型,关于ICA模型的理论知识可以参考前面的博文:Deep learning:三十三(ICA模型)。本次实验的内容和步骤可以是参考UFLDL上的教程:Exercise:Independent Component Analysis。本次实验完成的内容和前面的很多练习类似,即学习STL-10数据库的ICA特征。当然了,这些数据已经是以patches的形式给出,共2w个patch,8*8大小的。 实验基础: 步骤分为下面几步:设置网络的参数,其中的输入样本的维数为8*8*3=192。对输入的样本集进行白化,比如说ZCA白化,但是一定要将其中的参数eplison...
阅读全文
posted @
2013-05-07 22:56
tornadomeet
阅读(9333)
推荐(3) 编辑
Deep learning:三十八(Stacked CNN简单介绍)
摘要:前言: 本节主要是来简单介绍下stacked CNN(深度卷积网络),起源于本人在构建SAE网络时的一点困惑:见Deep learning:三十六(关于构建深度卷积SAE网络的一点困惑)。因为有时候针对大图片进行recognition时,需要用到无监督学习的方法去pre-training(预训练)stacked CNN的每层网络,然后用BP算法对整个网络进行fine-tuning(微调),并且上一层的输出作为下一层的输入。这几句话说起来很简单,可是真的这么容易吗?对于初学者来说,在实际实现这个流程时并不是那么顺利,因为这其中要涉及到很多细节问题。这里不打算细讲deep statcked网...
阅读全文
posted @
2013-05-05 20:27
tornadomeet
阅读(81834)
推荐(11) 编辑
Deep learning:三十七(Deep learning中的优化方法)
摘要:内容: 本文主要是参考论文:On optimization methods for deep learning,文章内容主要是笔记SGD(随机梯度下降),LBFGS(受限的BFGS),CG(共轭梯度法)三种常见优化算法的在deep learning体系中的性能。下面是一些读完的笔记。 SGD优点:实现简单,当训练样本足够多时优化速度非常快。 SGD缺点:需要人为调整很多参数,比如学习率,收敛准则等。另外,它是序列的方法,不利于GPU并行或分布式处理。 各种deep learning中常见方法(比如说Autoencoder,RBM,DBN,ICA,Sparse coding)的区别是...
阅读全文
posted @
2013-05-02 00:04
tornadomeet
阅读(28405)
推荐(2) 编辑
Deep learning:三十六(关于构建深度卷积SAE网络的一点困惑)
摘要:前言: 最近一直在思考,如果我使用SCSAE(即stacked convolution sparse autoendoer)算法来训练一个的deep model的话,其网络的第二层开始后续所有网络层的训练数据从哪里来呢?其实如果在这个问题中,当我们的样本大小(指提供的最原始数据,比如大的图片集)和我们所训练第一个网络的输入维度是一样的话,那么第二层网络的输入即第一层网络的输出(后续的网络依次类推),但是这种情况下根本就不会涉及到convolution(一般有convolution的地方也会有pooling),所以不属于我想要讨论的SCSAE框架。后面根据自己对deep learning的...
阅读全文
posted @
2013-05-01 15:32
tornadomeet
阅读(21841)
推荐(1) 编辑
Deep learning:三十五(用NN实现数据降维练习)
摘要:前言: 本文是针对上篇博文Deep learning:三十四(用NN实现数据的降维)的练习部分,也就是Hition大牛science文章reducing the dimensionality of data with neural networks的code部分,其code下载见:http:/...
阅读全文
posted @
2013-04-30 20:03
tornadomeet
阅读(25538)
推荐(8) 编辑
Deep learning:三十四(用NN实现数据的降维)
摘要:数据降维的重要性就不必说了,而用NN(神经网络)来对数据进行大量的降维是从2006开始的,这起源于2006年science上的一篇文章:reducing the dimensionality of data with neural networks,作者就是鼎鼎有名的Hinton,这篇文章也标志着deep learning进入火热的时代。 今天花了点时间读了下这篇文章,下面是一点笔记: 多层感知机其实在上世纪已经被提出来了,但是为什么它没有得到广泛应用呢?其原因在于对多层非线性网络进行权值优化时很难得到全局的参数。因为一般使用数值优化算法(比如BP算法)时需要随机给网络赋一个值,而当这...
阅读全文
posted @
2013-04-29 22:52
tornadomeet
阅读(15874)
推荐(1) 编辑
Deep learning:三十三(ICA模型)
摘要:基础知识: 在sparse coding(可参考Deep learning:二十六(Sparse coding简单理解),Deep learning:二十九(Sparse coding练习))模型中,学习到的基是超完备集的,也就是说基集中基的个数比数据的维数还要大,那么对一个数据而言,将其分解为基的线性组合时,这些基之间本身就是线性相关的。如果我们想要得到线性无关的基集,那么基集中元素的个数必须小于或等于样本的维数,本节所讲的ICA(Independent Component Analysis,独立成分分析)模型就可以完成这一要求,它学习到的基之间不仅保证线性无关,还保证了相互正交。本节...
阅读全文
posted @
2013-04-25 11:03
tornadomeet
阅读(11019)
推荐(1) 编辑
Deep learning:三十二(基础知识_3)
摘要:前言: 本次主要是重新复习下Sparse autoencoder基础知识,并且加入点自己的理解。关于sparse autoencoder在前面的博文Deep learning:八(Sparse Autoencoder)中已有所介绍。 基础知识: 首先来看看为什么sparse autoencoder能够学习到输入数据的特征呢?当使用autoencoder时,隐含层节点的个数会比输入层小(一般情况下),而autoencoder又要能够重构输入数据,说明隐含层节点压缩了原始数据,既然这个压缩是有效的,则它就代表了输入数据(因为输入数据每个分量值并不是相互独立的)的一部分特征了。如果对隐含节...
阅读全文
posted @
2013-04-25 00:14
tornadomeet
阅读(7222)
推荐(0) 编辑