UFLDL深度学习笔记 (三)无监督特征学习

1. 主题思路

UFLDL 无监督特征学习”本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较简化,主题思路和步骤如下:

  • 把有标签数据分为两份,先对一份原始数据做无监督的稀疏自编码训练,获得输入层到隐藏层的最优化权值参数\(W, b\);
  • 把另一份数据分成分成训练集与测试集,都送入该参数对应的第一层网络(去掉输出层的稀疏自编码网络);
  • 用训练集输出的特征作为输入,训练softmax分类器;
  • 再用此参数对测试集进行分类,计算出分类准确率。

后面两个步骤和前一节softmax回归相同,区别仅仅是输入变成了原始数据的稀疏自编码隐藏层激活值。

特征提取网络组合形态

2. 本节练习不需要公式推导

3. 代码实现

根据前面的步骤描述,我们要实现对有监督数据的特征提取,为了报出稀疏自编码模块sparseAutoencoderCost.m的独立性,单独写一个feedForwardAutoencoder.m模块来实现。代码是不是非常简单?

function [activation] = feedForwardAutoencoder(theta, hiddenSize, visibleSize, data)
W1 = reshape(theta(1:hiddenSize*visibleSize), hiddenSize, visibleSize);
b1 = theta(2*hiddenSize*visibleSize+1:2*hiddenSize*visibleSize+hiddenSize);
m = size(data,2);
activation = sigmoid(W1*data + repmat(b1,1,m));
end
function sigm = sigmoid(x)
sigm = 1 ./ (1 + exp(-x));
end

从UFLDL原有代码中可以发现分类标签从0-9移动到了1-10,原因在于matlab的数组索引从1开始,最后做softmax判决时,找最大概率的分类的类别号得到的是1-10,所以才做移动的。

此外练习说明中将类别为6-10作为无监督学习的素材,1-5作为有监督softmax回归的素材,无非就是为了判决出类别号后,统计准确率时可以将softmaxPredict.m输出的类别号与测试集的真实label直接比较,不用考虑偏移的问题。

4.图示与结果

数据集仍然来自Yann Lecun的笔迹数据库,再瞜一眼原始MMIST数据集的笔迹。

设定与练习说明相同的参数,运行完整代码https://github.com/codgeek/deeplearning 可以看到预测准确率达到98.35%。达到了练习的标准结果。

回过来看一下,无监督学习到底学习到了什么呢?

类似稀疏自编码对边缘的学习,上图的特征其实还是稀疏自编码学习到的阿拉伯数字的笔迹基本特征,各种弧线样式。另外一点有点讲究的是对总数据集合拆分两组,也可以不按照1-5、6-10来拆,如果按照数据集的前一半后一段拆成两组。这样无监督训练数据就是所有0-9的数字笔迹,softmax判决的也是0-9的数字笔迹。代码见stlExercise.m% 拆分无监督学习和softmax监督学习方法二 部分。

结果有些意外又可以解释:准确率为95.8%。 可以解释为稀疏自编码、softmax有监督学习对每个分类的数据量都减少了,在1E5量级上,数据量对结果好坏有明显的影响。

UFLDL深度学习笔记 (三)无监督特征学习的更多相关文章

  1. paper 124:【转载】无监督特征学习——Unsupervised feature learning and deep learning

    来源:http://blog.csdn.net/abcjennifer/article/details/7804962 无监督学习近年来很热,先后应用于computer vision, audio c ...

  2. 转:无监督特征学习——Unsupervised feature learning and deep learning

    http://blog.csdn.net/abcjennifer/article/details/7804962 无监督学习近年来很热,先后应用于computer vision, audio clas ...

  3. [转] 无监督特征学习——Unsupervised feature learning and deep learning

    from:http://blog.csdn.net/abcjennifer/article/details/7804962 无监督学习近年来很热,先后应用于computer vision, audio ...

  4. Liunx学习笔记(三) 文件权限

    一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...

  5. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  6. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. CVPR2020:三维点云无监督表示学习的全局局部双向推理

    CVPR2020:三维点云无监督表示学习的全局局部双向推理 Global-Local Bidirectional Reasoning for Unsupervised Representation L ...

  8. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  9. Deep Learning 学习随记(四)自学习和非监督特征学习

    接着看讲义,接下来这章应该是Self-Taught Learning and Unsupervised Feature Learning. 含义: 从字面上不难理解其意思.这里的self-taught ...

随机推荐

  1. hdu 4826 Labyrinth DP

    题目链接:HDU - 4826 度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向 ...

  2. u-boot-2010.3移植到Tiny6410问题总结

    问题1: u-boot-2010.3中nand_spl文件夹的作用:实现从Nandflash启动在编译是会建立几个链接文件,用这几个链接文件生成u-boot-spl-16k.bin nand_spl/ ...

  3. MySQL Cluster导入数据表时报错:Got error 708 'No more attribute metadata records (increase MaxNoOfAttributes)' from NDBCLUSTER

    准备把以前的非集群版MySQL数据导入到MySQL Cluster中,出现 'No more attribute metadata records (increase MaxNoOfAttribute ...

  4. CSS背景属性background

    background属性是所有背景属性的缩写: 以下是这些背景属性: background-color:背景颜色 你可以通过颜色名称(red/green/blue)来设置 也可以用十六进制(#fff/ ...

  5. Linux下防止文件误删方法

    转载:http://coolsky.blog.51cto.com/177347/1230332 Linux系统中,在root帐号下使用rm * -rf是非常危险的,一不小心就可能删除系统中的重要文件. ...

  6. 鸟哥的linux私房菜学习记录之计算机概论

  7. 使用Spring的AbstractRoutingDataSource实现多数据源切换

    https://www.cnblogs.com/softidea/p/7127874.html?utm_source=itdadao&utm_medium=referral https://b ...

  8. Linux学习之三-Linux系统的一些重要配置文件

    Linux学习之三-Linux系统的一些重要配置文件 1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 说明: DEVICE=eth0        ...

  9. vs2010 编译多个project问题

    使用VS2010 编译从vc6.0复制过来的原project文件源代码.提示错误非常多.感觉无从下手.非常多原始的函数和API參数都提示类型 错误或者不兼容. 百度一下.第一个问题: vc6.0使用A ...

  10. Angular 学习笔记——模块之间的通讯

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...