上一篇讲的Softmax regression,当时时间不够,没把练习做完.这几天学车有点累,又特别想动动手自己写写matlab代码 所以等到了现在,这篇文章就当做上一篇的续吧. 回顾: 上一篇最后给出了softmax regression的代价函数和其偏导数,当然要实现的话基本也就是这两个函数的实现,为方便查看,这里再写一遍: 代价函数: 偏导数: 实现: 实现过程就是对MNIST手写数字库进行的分类(数字从0~9共10个). 说实话,上面代价函数对于我这matlab用的不熟的人来说,着实吓了…
接着看讲义,接下来这章应该是Self-Taught Learning and Unsupervised Feature Learning. 含义: 从字面上不难理解其意思.这里的self-taught learning指的是用非监督的方法提取特征,然后用监督方法进行分类.比如用稀疏自编码+softmax regression. 对于非监督特征学习,有两种类型,一类是self-taught learning,一类是semi-supervised learning.看他们的定义不如看讲义中给出的那个…
最近开始看Deep Learning,随手记点,方便以后查看. 主要参考资料是Stanford 教授 Andrew Ng 的 Deep Learning 教程讲义:http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial.这个讲义已经有人翻译了(赞一个),可以参见邓侃的新浪博客http://blog.sina.com.cn/s/blog_46d0a3930101h6nf.html.另外,博客园里有一个前辈关于讲义中练习的一系列文…
讲义中的第四章,讲的是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…
前面记到了深度网络这一章.当时觉得练习应该挺简单的,用不了多少时间,结果训练时间真够长的...途中debug的时候还手贱的clear了一下,又得从头开始运行.不过最终还是调试成功了,sigh~ 前一篇博文讲了深度网络的一些基本知识,这次讲义中的练习还是针对MNIST手写库,主要步骤是训练两个自编码器,然后进行softmax回归,最后再整体进行一次微调. 训练自编码器以及softmax回归都是利用前面已经写好的代码.微调部分的代码其实就是一次反向传播. 以下就是代码: 主程序部分: stacked…
图像大小与参数个数: 前面几章都是针对小图像块处理的,这一章则是针对大图像进行处理的.两者在这的区别还是很明显的,小图像(如8*8,MINIST的28*28)可以采用全连接的方式(即输入层和隐含层直接相连).但是大图像,这个将会变得很耗时:比如96*96的图像,若采用全连接方式,需要96*96个输入单元,然后如果要训练100个特征,只这一层就需要96*96*100个参数(W,b),训练时间将是前面的几百或者上万倍.所以这里用到了部分联通网络.对于图像来说,每个隐含单元仅仅连接输入图像的一小片相邻…
这一个多周忙别的事去了,忙完了,接着看讲义~ 这章讲的是深度网络(Deep Network).前面讲了自学习网络,通过稀疏自编码和一个logistic回归或者softmax回归连接,显然是3层的.而这章则要讲深度(多层)网络的优势. Deep Network: 为什么要使用深度网络呢?使用深度网络最主要的优势在于,它能以简洁的方式来表达比浅层网络大得多的函数集合.正式点说,可以找到一些函数,它们能够用k层网络简洁的表达出来(这里的简洁指的是使用隐层单元的数目与输入单元数目是多项式关系),但是对一…
接着上次的记,前面看了稀疏自编码.按照讲义,接下来是Vectorized, 翻译成向量化?暂且这么认为吧. Vectorized: 这节是老师教我们编程技巧了,这个向量化的意思说白了就是利用已经被优化了的数值运算来编程,矩阵的操作 尽量少用for循环,用已有的矩阵运算符来操作.这里只是粗略的看了下,有些小技巧还是不错的. PCA: PCA这个以前都接触过了,简单说就是两步: 1.协方差矩阵 其中x(i)是输入样本(假设已经均值化). 2.SVD分解,得出U向量.其中U向量的每列就是样本的新的方向…
前面Andrew Ng的讲义基本看完了.Andrew讲的真是通俗易懂,只是不过瘾啊,讲的太少了.趁着看完那章convolution and pooling, 自己又去翻了翻CNN的相关东西. 当时看讲义时,有一点是不太清楚的,就是讲义只讲了一次convolution和一次pooling,而且第一次的convolution很容易理解,针对一副图像来的,但是经过一次convolution和pooling 后,一副图像变成了好多副特征图(feature map)这时候再进行convolution时,该…
线性解码器(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手写数字库中其输入…