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. 第八章 android-布局

    常用的布局实现方式:线性布局,框架布局,表格布局,相对布局,绝对布局 1,线性布局 (1)线性布局是一种很重要的布局,也是经常用到的一种布局 (2)在线性布局中,所有的元素都按照水平竖直的顺序在界面上 ...

  2. 1.NFC入门

    1.什么是NFC? 近距离无线通信技术(Near Field Communication,NFC).NFC提供了一种简单的.非触控式的解决方案,可以让消费者简单直观地交换信息.访问内容与服务. 2.运 ...

  3. Eclipse使用Debug模式调试Spring Boot项目时跳转到exitCurrentThread的问题

    Spring Boot项目使用了spring-boot-devtools工具且在Eclipse中Debug调试会自动跳转到这个方法: public static void exitCurrentThr ...

  4. wget下载网站

    命令格式如下: wget -r -p -np -k http://URL -r:在本机建立服务器端目录结构: -p: 下载显示HTML文件的所有图片: -np:只下载目标站点指定目录及其子目录的内容: ...

  5. html 基础二

    HTMLCSS基础2 一.HTML中的标签 1.1标签的特点 给文本加上含有语义的标签 应该学习更多具体语义标签 标签:用“<>”包起来的内容 2.1 更多的标签 2.1.1 h系列的标签 ...

  6. oracle数据库中函数和存储过程中的区别

    一.函数必须有返回值,过程没有返回值: 二.函数可以单独执行,过程必须通过execute执行: 三.函数可以嵌入SQL中执行,过程不能. 可以将比较复杂的查询写成函数,然后在过程中调用.

  7. 码云的GIT操作

    git操作 git initgit add .git commit -m ""git remote add origin https://git.coding.net/jessei ...

  8. agruments应用——求出函数参数的总合&&css函数——设置/读取对象的属性&&当前输入框高亮显

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Win7安装了Visual Studio 2008没有快捷方式怎么办

    在C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE,就是这个devenv.exe了  

  10. Sql Server 表分区(转)

    什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在 ...