该章节参考ufldl

1.什么是自我学习(Self-Taught Learning)与半监督学习

首先,什么是半监督学习?当你手头上拥有在大量未标注数据少量的已标注数据,那这种场景就可以说是半监督学习。自我学习和半监督学习的场景一样,不过有个细节不一样。

自学习(self-taught learning) 是更为一般的、更强大的学习方式,它不要求未标注数据 和已标注数据有同样的分布。而半监督学习不一样,它要求未标注数据 和已标注数据服从同样的分布。下面通过例子解释二者的区别。

假定有一个计算机视觉方面的任务,目标是区分汽车和摩托车图像;哪里可以获取大量的未标注数据呢?最简单的方式可能是从互联网上下载一些随机的图像数据集,在这些数据上训练出一个稀疏自编码器,从中得到有用的特征。这个例子里,未标注数据对比已标注数据,是一个完全不同的数据分布(未标注数据集中,或许其中一些图像包含汽车或者摩托车,但不是所有的图像都如此)。这种情形被称为自学习。

相反,如果有大量的未标注图像数据,要么是汽车图像,要么是摩托车图像,仅仅是缺失了类标号(没有标注每张图片到底是汽车还是摩托车)。也可以用这些未标注数据来学习特征。这种方式,即要求未标注样本和带标注样本服从相同的分布,有时候被称为半监督学习。在实践中,常常无法找到满足这种要求的未标注数据(到哪里找到一个每张图像不是汽车就是摩托车,只是丢失了类标号的图像数据库?)因此,自学习在无标注数据集的特征学习中应用更广。

2.自我学习的模型

2.1 数据预处理

首先对未标记数据和已标记数据进行相同的数据预处理。比如进行相同的归一化。如果对未标记数据进行PCA,那么PCA过程得到的特征向量矩阵U需要保留下来。之后对于已标记数据,应用UTxU^TxUTx 得到降维后的数据。或者,将已标记,未标记两部分数据凑起来,一同进行PCA降维。

2.2未标记数据训练稀疏自编码器

不懂稀疏自编码器的同学,可以参考我这篇博客

首先我们利用未标记数据训练一个自编码器。

利用训练得到的模型参数$ W^{(1)}, b^{(1)}, W^{(2)}, b^{(2)}$,给定任意的输入数据 xxx,可以计算隐藏单元的激活量(activations)aaa。如前所述,相比原始输入 xxx 来说,aaa 可能是一个更好的特征描述。下图的神经网络描述了特征(激活量 a)的计算。

这实际上就是之前得到的稀疏自编码器,在这里去掉了最后一层。

2.3 有标记数据特征转换,然后实现监督学习

假定有大小为$ m_l$ 的已标注训练集
KaTeX parse error: Expected '}', got 'EOF' at end of input: …, y^{(m_l)}) \}(下标 lll 表示“带类标”),我们可以为输入数据找到更好的特征描述。例如,可以将 xl(1)x_l^{(1)}xl(1)​ 输入到稀疏自编码器,得到隐藏单元激活量 al(1)a_l^{(1)}al(1)​。接下来,可以直接使用 al(1)a_l^{(1)}al(1)​ 来代替原始数据 $ x_l^{(1)}$ (“替代表示”,Replacement Representation)。也可以合二为一,使用新的向量 (xl(1),al(1))(x_l^{(1)}, a_l^{(1)})(xl(1)​,al(1)​) 来代替原始数据 $ x_l^{(1)}$ (“级联表示”,Concatenation Representation)。

经过变换后,训练集就变成 KaTeX parse error: Expected '}', got 'EOF' at end of input: …, y^{(m_l)}) \}或者是KaTeX parse error: Expected '}', got 'EOF' at end of input: …, y^{(m_l)}) \}(取决于使用 $a_l^{(1)} $替换 $ x_l^{(1)} $还是将二者合并)。在实践中,将 $a_l^{(1)} $和 $ x_l^{(1)}$ 合并通常表现的更好。但是考虑到内存和计算的成本,也可以使用替换操作。

最终,可以训练出一个有监督学习算法(例如 svm, logistic regression 等),得到一个判别函数对 y 值进行预测。预测过程如下:给定一个测试样本xtestx_{\rm test}xtest​,重复之前的过程,将其送入稀疏自编码器,得到 atesta_{\rm test}atest​。然后将 $ a_{\rm test}$ (或者 $ (x_{\rm test}, a_{\rm test}) $)送入分类器中,得到预测值。

3.补充

在有标记示例较少时,如何利用大量的未标记示例来改善学习性能已成为当前机器学习研究中最受关注的问题之一。**目前,利用未标记示例的主流学习技术主要有三大类[Zhou06],即半监督学习(semi-supervisedlearning)、直推学习(transductive learning)和主动学习(active learning)。**这三类技术都是试图利用大量的未标记示例来辅助对少量有标记示例的学习,但它们的基本思想却有显著的不同。在半监督学习[ChapelleSZ06][Zhu06]中,学习器试图自行利用未标记示例,即整个学习过程不需人工干预,仅基于学习器自身对未标记示例进行利用。直推学习[Vapnik98][Joachims99]与半监督学习的相似之处是它也是由学习器自行利用未标记示例,但不同的是,直推学习假定未标记示例就是测试例,即学习的目的就是在这些未标记示例上取得最佳泛化能力。换句话说,半监督学习考虑的是一个“开放世界”,即在进行学习时并不知道要预测的示例是什么,而直推学习考虑的则是一个“封闭世界”,在学习时已经知道了需要预测哪些示例。主动学习[SeungOS92][LewisG94][AbeM98]和前面两类技术不同,它假设学习器对环境有一定的控制能力,可以“主动地”向学习器之外的某个“神谕”(oracle) 2 进行查询来获得训练例的标记。因此,在主动学习中,学习器自行挑选出一些未标记示例并通过神谕查询获得这些示例的标记,然后再将这些有标记示例作为训练例来进行常规的监督学习,而其技术难点则在于如何使用尽可能少的查询来获得强泛化能力。对比半监督学习、直推学习和主动学习可以看出,后者在利用未标记示例的过程中需要与外界进行交互,而前两者则完全依靠学习器自身,正因为此,也有一些研究者将直推学习作为一种半监督学习技术来进行研究。(出自周志华教授)

深度学习入门 --- 自我学习与半监督学习相关推荐

  1. 【《深度学习入门》—— 学习笔记(二)】

    <深度学习入门>-- 学习笔记(二)_5-8章 第五章 误差反向传播法 方法一:基于数学式 - 严密简洁 方法二:基于计算图(computational graph) - 直观 5.1 计 ...

  2. 【《深度学习入门》—— 学习笔记(一)】

    <深度学习入门>-- 学习笔记(一)_1-4章 第一章 Python入门 略 第二章 感知机(Perception) 2.1 感知机是什么 感知机接收多个输入信号,输出一个信号.x1, x ...

  3. python深度学习入门-与学习相关的技巧

    深度学习入门-与学习相关的技巧 博主微信公众号(左).Python+智能大数据+AI学习交流群(右):欢迎关注和加群,大家一起学习交流,共同进步! 目录 摘要 1. 参数的更新 1.1 SGD 1.2 ...

  4. React学习:入门实例-学习笔记

    文章目录 React学习:入门实例-学习笔记 React的核心 需要引入三个库 什么是JSX react渲染三步骤 React学习:入门实例-学习笔记 React的核心 1.组件化:把整一个网页的拆分 ...

  5. 强化学习ppt_机器学习原理、算法与应用配套PPT第四部分(深度学习概论、自动编码器、强化学习、聚类算法、半监督学习等)...

    本文是SIGAI公众号文章作者雷明编写的<机器学习>课程新版PPT第四部分,包含了课程内容的深度学习概论,自动编码器,受限玻尔兹曼机,聚类算法1,聚类算法2,聚类算法3,半监督学习,强化学 ...

  6. 深度学习入门整理学习(二)

    深度学习入门 深度学习横跨矩阵论.概率论与数理统计.信息论.博弈论.最优化等理论,并融合机器学习.数据挖掘.大数据.人工智能等领域技术,是具有深度和广度的综合范例 数学基础 矩阵论 (1)正交矩阵 A ...

  7. 深度学习入门课程学习笔记06 反向传播

    本篇学习笔记对应深度学习入门课程 第七课 博客地址:http://blog.csdn.net/tangyudi 欢迎转载 反向传播: 咱们在之前的课程讲了一系列的前向传播的知识点,前向传播也就是从输入 ...

  8. 《基于张量网络的学习入门》学习笔记3

    <基于张量网络的机器学习入门>学习笔记3 量子寄存器.量子状态叠加与并行处理的关系 不确定性原理 量子寄存器.量子状态叠加与并行处理的关系 叠加态的数学定义: ∣x⟩=α1∣x1⟩+α2∣ ...

  9. 使用Python和Numpy进行波士顿房价预测任务(二)【深度学习入门_学习笔记】

    使用Python和Numpy进行波士顿房价预测任务–详解 目录: 一.数据处理 (1)读入数据 (2)数据形状变换 (3)数据集划分 (4)数据归一化处理 (5)封装成load data函数 二.模型 ...

最新文章

  1. Linux 应用程序 嵌汇编,Linux下C语言嵌汇编
  2. 3.STM32中对EXTI_PE5_Config()函数的理解(自定义)之中断控制按键LED
  3. python输出奇数数字序位_python对输出的奇数偶数排序实例代码
  4. sqlserver安装显示句柄无效_Sqlserver 2016 R Service环境安装的各种错误(坑)解决办法...
  5. 【2017年第1期】手机基站定位数据可视分析
  6. [*转*] 开发B2C电子商务系统(ASP.NET)--多年前的老文章
  7. activeMQ 问题
  8. CSS中transform:skew属性理解
  9. Open Robotics 十周年(2012-2022)
  10. 项目文档编制-投标书
  11. codeforces C. Multiples of Length
  12. QQ Scheme跳转接口
  13. 第二阶段:数据库设计与初始化
  14. 银行手续费收取标准,你知道吗
  15. 河南在郑州开启5G网络全城试用
  16. MySQL的自身防御机制_自我防御机制
  17. [ 网络 ] 应用层协议 —— HTTP协议
  18. linux 列转行函数,Linux 文本行列转换
  19. 2022年卡塔尔世界杯黑科技盘点
  20. 采用循环队列或链队列实现病人看病的模拟程序

热门文章

  1. C语言小项目 -- 扫雷游戏完整代码(递归展开 + 选择标记)
  2. 细数每日优鲜的五大增长点,是什么让它APP月活突破千万?
  3. html页面怎么实现背景全屏显示,HTML 全屏背景的方法
  4. nRF52笔记(26)QSPI接口液晶显示屏
  5. 247条Web可用性指南
  6. 新媒体短视频运营要素分析
  7. 庞果网之字符串的完美度
  8. ftp传输最后一直卡在最后10秒_迅雷下载总卡在最后99 9%详细处理方法【图文】...
  9. 电动车质量排名前十名出炉,绿源长期占据前三备受好评
  10. 鸿蒙手机最新,华为手机将全面告别安卓系统!迎来新鸿蒙系统时代:3月全面上线...