
UFLDL
文章平均质量分 78
包含斯坦福大学UFLDL教程的全部练习个人解答,以对于深度学习(Deep Learning)的诸多个人理解。
ycheng_sjtu
上海交通大学自动化系,关注模式识别,机器学习,算法研究,人工智能, 移动互联网等学科和产业,希望结识更多同道中人。
展开
-
卷积特征提取与池化(Pooling)——处理大型图像
在之前的章节中,我们已经很好地解决了手写体识别问题(维数为28*28)。但如果是更大的图像(维数为96*96)呢?如果你还是要学习400个特征,那么网络权重参数就有400*96*96即近400万个。 卷积特征提取如果我们从大型彩色图像(64*64*3)中随机抽取一些小patch(8*8),学到了一些特征,然后用这些特作为滤波器去扫过整张大图,即逐行逐列做卷积。这样做可以大幅减小网原创 2014-08-18 16:49:37 · 18172 阅读 · 2 评论 -
线性解码器——解决数据缩放问题
稀疏自编码器效果不错,但是有个固有缺陷:必须对输入数据的范围缩放到(0,1)。 设想一个图像如果不经预处理,直接把大于1的值输入稀疏自编码器,那么被sigmoid一下,就成了(0,1)的范围了,再被sigmoid一下,还是在(0,1)范围。这样残差根本没办法算,因为经过了sigmoid变换之后的数据已经不可能与输入数据相等了。 但是如果我们把第三层,原先的sigmoid函数换成恒等原创 2014-08-16 13:49:29 · 2980 阅读 · 0 评论 -
从自我学习到深层网络——建立你的第1个深度网络分类器
自我学习就是稀疏编码器串联一个Softmax分类器,上一节看到,训练400次,准确率为98.2%在此基础上,我们可以搭建我们的第一个深度网络:栈式自编码(2层)+Softmax分类器 简单地说,我们把稀疏自编码器的输出作为更高一层稀疏自编码器的输入。和自我学习很像,似乎就是新加了一层,但是其实不然:新技巧在于,我们这里有个微调的过程,让残差从最高层向输入层传递,微调整个网络权重原创 2014-08-16 11:32:40 · 3344 阅读 · 1 评论 -
自我学习(Self-Taught Learning)
自我学习就是把稀疏自编码器与Softmax回归分类器串联起来。稀疏编码器是用来无监督学习的,使用无标签数据。Softmax回归分类器是有监督学习,使用标签数据。 实际生活中,我们能轻松获得大量无标签数据(如从网上随机下载海量图片)难以获得大量有标签数据(有标签的数据库通常不会太大,而且很贵) 如果我们手头上只有少量标签数据,但是有大量的无标签数据,这是就可以采用自我原创 2014-08-13 12:36:08 · 8154 阅读 · 2 评论 -
Softmax回归——识别MINST数据库
Softmax回归就是推广版本的逻辑回归。只不过逻辑回归是个2分类问题,而Softmax是多分类问题,仅此而已。Softmax回归在2分类情况下就蜕化成了逻辑回归。逻辑回归的代价函数考虑到权重衰减,修改一下就是Softmax回归的代价函数了这里的权重衰减项是必须的,因为原先的代价函数不是严格凸函数,有无穷个极小值。现在加了这个权重衰减项,函数变成了严格凸函数。L原创 2014-08-12 16:30:01 · 4072 阅读 · 1 评论 -
主成分分析与白化预处理
上一节介绍了主成分分析应用于2维数据。现在使用高维的图像数据来试试效果。原始图像如图1所示。图1每个图片都是12*12的小patch,原始数据是一个144*10000的矩阵x。在使用了PCA旋转之后,可以检查一下此时的协方差矩阵是否已经成功变成对角阵了,如图2所示。avg=mean(x,1);x=x-repmat(avg,size(x,1),1);xRot = ze原创 2014-08-11 19:40:40 · 2906 阅读 · 0 评论 -
主成分分析(PCA)——以2维图像为例
这一节不论是思想还是实现都比较容易。主成分分析(PCA)就是模式识别里面说的K-L变换,思想是完全相同的。详情可见我的博文:特征选择(三)-K-L变换这里简单介绍几个概念。顺便贴出代码和效果图。xRot = zeros(size(x));xRot=u'*x;figure(2);scatter(xRot(1, :), xRot(2, :));title('xRot');得到原原创 2014-08-11 15:20:51 · 15353 阅读 · 0 评论 -
矢量化编程——以MNIST为例
矢量化编程就是用矢量运算取代所有的显式for循环。上一节所用的是512*512*10的数据集很小,我们取的patch很小(8*8),学来的特征很少(25),而我又注释掉了梯度校验(偷懒),所以程序用了1分钟就跑完了(i5处理器)。 但实际上我们遇到的问题规模比这个打太多了,稍微大一点的数据集比如说MNIST,这个数据库是另外一个更大的手写体数据库NIST的子集,包含60000个训练例子原创 2014-08-11 10:05:19 · 3550 阅读 · 0 评论 -
稀疏自编码器及其实现——如何搞基
自编码器是什么?自编码器本身就是一种BP神经网络。它是一种无监督学习算法。我们都知道神经网络可以从任意精度逼近任意函数,这里我们让神经网络目标值等于输出值x,也就是模拟一个恒等函数:太无聊了,是吗?输入等于输出,这网络有什么意义?但是,当我们把自编码神经网络加入某些限制,事情就发生了变化。如图1所示,这就是一个基本的自编码神经网络,可以看到隐含层节点数量要少于输入层节点数量。原创 2014-08-09 10:57:30 · 21828 阅读 · 7 评论