2013年11月26日
摘要: 前面Andrew Ng的讲义基本看完了。Andrew讲的真是通俗易懂,只是不过瘾啊,讲的太少了。趁着看完那章convolution and pooling, 自己又去翻了翻CNN的相关东西。当时看讲义时,有一点是不太清楚的,就是讲义只讲了一次convolution和一次pooling,而且第一次的convolution很容易理解,针对一副图像来的,但是经过一次convolution和pooling后,一副图像变成了好多副特征图(feature map)这时候再进行convolution时,该怎么办呢?所以去瞅了瞅CNN的相关论文。CNN最经典的案例应该是LeNet-5这个数字识别的任务了吧。这 阅读全文
posted @ 2013-11-26 10:35 bzjia 阅读(12185) 评论(0) 推荐(0) 编辑
  2013年11月9日
摘要: 图像大小与参数个数:前面几章都是针对小图像块处理的,这一章则是针对大图像进行处理的。两者在这的区别还是很明显的,小图像(如8*8,MINIST的28*28)可以采用全连接的方式(即输入层和隐含层直接相连)。但是大图像,这个将会变得很耗时:比如96*96的图像,若采用全连接方式,需要96*96个输入单元,然后如果要训练100个特征,只这一层就需要96*96*100个参数(W,b),训练时间将是前面的几百或者上万倍。所以这里用到了部分联通网络。对于图像来说,每个隐含单元仅仅连接输入图像的一小片相邻区域。这样就引出了一个卷积的方法:convolution:自然图像有其固有特性,也就是说,图像的一部分 阅读全文
posted @ 2013-11-09 16:39 bzjia 阅读(4988) 评论(0) 推荐(0) 编辑
  2013年11月4日
摘要: 线性解码器(Linear Decoder)前面第一章提到稀疏自编码器(http://www.cnblogs.com/bzjia-blog/p/SparseAutoencoder.html)的三层网络结构,我们要满足最后一层的输出:a(3)≈a(1)(即输入值x)的近似重建。考虑到在最后一层的a(3)=f(z(3)),这里f一般用sigmoid函数或tanh函数等非线性函数,而将输出界定在一个范围内(比如sigmoid函数使结果在[0,1]中)。这对于有些数据组,例如MNIST手写数字库中其输入输出范围符合极佳,但并不是所有的情况都满足这个条件。例如,若采用PCA白化,输入将不再限制于[0,1] 阅读全文
posted @ 2013-11-04 17:11 bzjia 阅读(1958) 评论(0) 推荐(1) 编辑
  2013年11月1日
摘要: 前面记到了深度网络这一章。当时觉得练习应该挺简单的,用不了多少时间,结果训练时间真够长的...途中debug的时候还手贱的clear了一下,又得从头开始运行。不过最终还是调试成功了,sigh~前一篇博文讲了深度网络的一些基本知识,这次讲义中的练习还是针对MNIST手写库,主要步骤是训练两个自编码器,然后进行softmax回归,最后再整体进行一次微调。训练自编码器以及softmax回归都是利用前面已经写好的代码。微调部分的代码其实就是一次反向传播。以下就是代码:主程序部分:stackedAEExercise.m% For the purpose of completing the assign. 阅读全文
posted @ 2013-11-01 17:02 bzjia 阅读(1471) 评论(2) 推荐(0) 编辑
  2013年10月29日
摘要: 这一个多周忙别的事去了,忙完了,接着看讲义~这章讲的是深度网络(Deep Network)。前面讲了自学习网络,通过稀疏自编码和一个logistic回归或者softmax回归连接,显然是3层的。而这章则要讲深度(多层)网络的优势。Deep Network:为什么要使用深度网络呢?使用深度网络最主要的优势在于,它能以简洁的方式来表达比浅层网络大得多的函数集合。正式点说,可以找到一些函数,它们能够用k层网络简洁的表达出来(这里的简洁指的是使用隐层单元的数目与输入单元数目是多项式关系),但是对一个只有(k-1)层的网络而言,除非它使用与输入单元数目呈指数关系的隐层单元数目,否则不能简洁表达这些函数。 阅读全文
posted @ 2013-10-29 10:26 bzjia 阅读(3443) 评论(0) 推荐(0) 编辑
  2013年10月18日
摘要: 接着看讲义,接下来这章应该是Self-Taught Learning and Unsupervised Feature Learning。含义:从字面上不难理解其意思。这里的self-taught learning指的是用非监督的方法提取特征,然后用监督方法进行分类。比如用稀疏自编码+softmax regression。对于非监督特征学习,有两种类型,一类是self-taught learning,一类是semi-supervised learning。看他们的定义不如看讲义中给出的那个简单的例子:假定有一个计算机视觉方面的任务,目标是区分汽车和摩托车图像;也即训练样本里面要么是汽车的图像, 阅读全文
posted @ 2013-10-18 18:18 bzjia 阅读(3523) 评论(0) 推荐(0) 编辑
  2013年10月16日
摘要: 这两天跟人讨论起说在DL中用DBN的,而DBN就是用很多RBM叠加起来的,想起以前看到的RBM,只是粗略看了下,没有仔细研究,现在正好借这个机会好好研读一番。玻尔兹曼机(BM):波尔兹曼机(Boltzmann Machine, BM)是Hiton(是的,Hiton大牛)和Sejnowski 于1986年基于统计力学提出的神经网络,这种网络中的神经元是随机神经元,神经元的输出只有两种状态(激活和未激活),一般用二进制0或1表示。如下图所示:受限玻尔兹曼机(RBM):BM具有强大的无监督学习能力,能够学习数据中复杂的规则。但是训练时间过长,另外其概率分布很难获得,为了克服这一个问题,Smolens 阅读全文
posted @ 2013-10-16 14:31 bzjia 阅读(7341) 评论(1) 推荐(0) 编辑
  2013年10月15日
摘要: 上一篇讲的Softmax regression,当时时间不够,没把练习做完。这几天学车有点累,又特别想动动手自己写写matlab代码所以等到了现在,这篇文章就当做上一篇的续吧。回顾:上一篇最后给出了softmax regression的代价函数和其偏导数,当然要实现的话基本也就是这两个函数的实现,为方便查看,这里再写一遍:代价函数:偏导数:实现:实现过程就是对MNIST手写数字库进行的分类(数字从0~9共10个)。说实话,上面代价函数对于我这matlab用的不熟的人来说,着实吓了一跳,好在看了讲义,里面真是深入浅出啊,相当于手把手教咱编程啊,太赞了~讲义里给出了代码的基本框架,我们只需填几个地 阅读全文
posted @ 2013-10-15 19:14 bzjia 阅读(1575) 评论(0) 推荐(0) 编辑
  2013年10月13日
摘要: 讲义中的第四章,讲的是Softmax 回归。softmax回归是logistic回归的泛化版,先来回顾下logistic回归。logistic回归:训练集为{(x(1),y(1)),...,(x(m),y(m))},其中m为样本数,x(i)为特征。logistic回归是针对二分类问题的,因此类标y(i)∈{0,1},。其估值函数(hypothesis)如下:代价函数:softmax 回归:softmax回归解决的是多分类问题,即y(i)∈{1,2,...,k}。(这里softmax回归一般从类别1开始,而不是从0)。其估值函数形式如下:为了方便起见,我们同样使用符号θ来表示全部的模型参数。在实 阅读全文
posted @ 2013-10-13 16:44 bzjia 阅读(6555) 评论(0) 推荐(1) 编辑
  2013年10月11日
摘要: 接着上次的记,前面看了稀疏自编码。按照讲义,接下来是Vectorized, 翻译成向量化?暂且这么认为吧。Vectorized:这节是老师教我们编程技巧了,这个向量化的意思说白了就是利用已经被优化了的数值运算来编程,矩阵的操作尽量少用for循环,用已有的矩阵运算符来操作。这里只是粗略的看了下,有些小技巧还是不错的。PCA:PCA这个以前都接触过了,简单说就是两步:1.协方差矩阵其中x(i)是输入样本(假设已经均值化)。2.SVD分解,得出U向量。其中U向量的每列就是样本的新的方向向量。前面的是主方向。然后用U'*x得到PCA后的样本值xrot:Whitening:我们已经了解了如何使用 阅读全文
posted @ 2013-10-11 15:15 bzjia 阅读(1592) 评论(0) 推荐(0) 编辑