第十三章,用了这技术

一只公鹿在飞快地奔跑,于是它成了“高速公路”。

深度学习说白了就是机器学习中的神经网络。

图片 1

在2017年写给亚马逊股东的信中,Jeff Bezos提到了亚马逊语音智能助理Alexa的一些有趣之处:

相关知识:分类、回归

1. 章节主要内容

在美国、英国和德国,通过改进Alexa的机器学习组件以及使用半监督学习技术,在过去12个月里我们把Alexa的口语理解能力提高了25%以上。

分类和回归是机器学习中两个非常重要的问题。

在前边的学习过程中,我们知道了监督学习和无监督学习的区别。前者是在标注好了的训练集上训练学习器,并用训练好的学习器去对新的样本进行预测,朴素贝叶斯、决策树、神经网络等都属于这类机器学习算法。后者是在未标注的数据集上根据数据本身的分布情况来对数据进行分类,各种聚类算法就是这类的机器学习算法。

鉴于这些结果,在我们自己的分类问题上尝试半监督学习可能会很有趣。那么,什么是半监督学习呢?它有什么优缺点?我们怎样使用它?

在分类任务中,希望能自动识别某种数据的类别。一般情况是这样,首先你通过已有数据,以及标记的分类,建立模型,然后通过模型预测新输入数据的类别。例如针对不同类别蔬菜的图像。我们首先为每种蔬菜照片指定了特定的标签,例如土豆,番茄,胡萝卜等,然后通过图像分类的算法建立了一个蔬菜识别的模型。针对新的蔬菜照片来说,可以通过这个模型输出对应的标签(蔬菜名)。

从上边的定义来看,一个机器学习算法“监督”与否取决于用来计算的数据有无被“标注”好!那以此来推理,我们这章学习的“半监督学习”算法就是即使用了标注好了的数据,又使用了未标注的数据来训练学习器!

什么是半监督学习?

图片 2

可是,既然已经有了标注好的数据集了,我们为什么还要费心去使用未标注的数据来辅助学习呢?原来在实际场景下,标注好了的数据集往往只是未标注数据集的千万分之一。想想互联网上每天产生多少PB的数据,其中拥有标注的数据真是少之又少。没有足够的标注训练集,监督学习算法训练出来的学习器往往泛化能力不佳,而且那么多的未标注数据不去利用,其中包含的信息就被浪费了!

顾名思义,半监督学习介于受监督学习和无监督学习之间。受监督学习采用带有正确答案的标记过的训练数据。在学习过程之后,将得到一个经过调优的权重集的模型,这可以用于预测尚未标记的类似数据的答案。

建立模型的过程叫做训练。在训练过程中,有个非常重要的工作就是调参。针对输入的图像,我们调整模型的参数,希望输出的标签类别尽可能正确可靠。为了测试模型的预测能力,可以针对不同的训练样本进行测试,判别其预测的准确度,当准确度最高或者达到需求时,参数就是最优的。

一个最简单的办法是找来一堆人一个个的为未标注数据进行标注。显然,这种方法比较“笨”,需耗费大量的时间和精力

半监督学习同时使用标记和未标记的数据来拟合模型。在某些情况下,比如Alexa的添加未标记的数据的确提高了模型的准确性。在其他情况下,未标记的数据可能会使模型更差。正如我将在下面所讨论的,在不同的数据特性条件下,不同的算法会有不同的缺点。

回归和分类问题类似,但是他处理的是连续数据,从特定的输入向量预测其指标值。例如,我们可以在一定经纬度与地形高度对应的样本的基础上,建立模型,从而预测不在训练样本内的经纬度下其地形高度是怎样的。

一个稍微省力的办法是,先用标注好的数据来进行训练,然后利用训练好的学习器找出未标注数据中能对性能改善最大的数据来询问“专家”。这样只需要专家标注比较少的数据就能得到较强的学习器了。

一般来说,标记数据需要花费金钱和时间。这并不总是问题,因为有些数据集已经有了标记。但是如果您有很多数据,其中只有一些是标记过的,那么半监督学习这种技术很值得一试。

用于分类和回归的方法是相似的,都涉及到超纬数据的多纬泛化,只是一个针对离散数据,一个针对连续数据。那么它们都涉及到调参的问题。

上边的方法被称为“主动学习”(active learning),这种方法引入了额外的专家知识,还需要外部的介入来辅助学习。如果我们不想再增加额外的人力了,想让机器自己的对未标注数据进行分析来提高泛化性能,可行吗?

半监督学习算法

为了解决调参的问题,研究者们尝试设计一个超级通用的黑盒子,它具有许多参数(可以联想到旋钮)可以调整,以便将输入映射到准确的输出。比较古老的梯度下降算法能自动的调整参数,以使得模型在特定的训练数据集上能达到最优的效果。大量机器学习的研究也是在优化这种涉及。神经网络就是其中一种。

答案是可行,半监督学习就是这样的算法!

半监督学习至少可以追溯到15年前,甚至更长;威斯康星州大学的Jerry Zhu在2005年写了一份文献调查。近年来,半监督学习再次兴起,因为它降低了重要基准的错误率。

神经网络

事实上,未标记样本虽未直接包含标记信息,但若他们与有标记样本是从同样的数据源独立同分布采样而来,则它们所包含的关于数据分布的信息对建立模型将大有裨益。

DeepMind的Sebastian Ruder在2018年4月写了一篇博文,介绍了一些半监督学习算法,即创建代理标签的算法:包括自我训练、多视图学习和自我整合。

McCulloch和Pitts最早在他们感知器的相关工作中提出了神经网络的概念,其设计理念来源于人脑。在1975年,Werbos创建了反向传播学习算法,神经网络才开始应用到模型训练中。该方法通过链规则对网络的输入进行反向传播,更新其梯度从而实现梯度下降。

下图给出了一个直观的示例。若仅基于图中的一个正例和反例,则由于待判别样本恰位于两者正中间,大体上只能随机猜测;若能观察到图中的为标记样本,则将很有把握的判别为正例。

自我训练使用模型自己对未标记数据的预测结果,将其添加到已标记的数据集中。实际上,这为预测的置信水平设置了一些阈值,通常为0.5甚至更高,高于该阈值时,相信预测结果并将其添加到已标记的数据集中。不断地重新训练这个模型,直到没有更多可信的预测结果为止。

通常神经网络由很多层和节点组成。每一层从前面一层的每个节点中获取数据,将这些数据乘以权重并且将来自不同节点的数据相加,最后在通过非线性函数产生该层的结果。每一层会有很多节点,从而实现实现尺寸的缩减或扩展。

图片 3

这就回避了用于训练的实际模型的问题。和大多数机器学习一样,你可能会尝试每一个合理的候选模型,以期找到一个能很好工作的模型。

图片 4

让学习器不依赖外界交互、自动地利用为标记样本来提升学习性能,就是半监督学习(semi-supervised learning)。

自我训练在一定程度上是成功的,可谓是好坏参半。最大的缺点是模型无法纠正自己的错误:例如,对异常值高度自信的预测可能会破坏整个模型。

神经网络示意

半监督学习还可细分为纯(pure)半监督学习和直推学习,前者假定训练数据中的为标记数据并非待预测数据,而后者则假定学习过程中所考虑的为标记样本恰是待预测数据。下图直观的显示出主动学习、纯监督学习和直推学习的区别。

多视图训练在不同的数据视图上训练不同的模型,其中可能包括不同的特征集、不同的模型体系结构和不同的数据子集。多视图训练算法有很多,其中最著名的是三视图训练。本质上,可以创建三个不同的模型;每当两个模型同意一个数据点的标签时,该标签就会被添加到第三个模型中。与自我训练一样,当没有更多的标签被添加到任何一个模型时,就停止了。

最简单的神经网络如上图所示,一个输入层、一个隐藏层和一个输出层。输出层是输入层的连续函数,这样就完成了回归的功能。为了得到分类效果,可以将输出层的每个节点阈值化或者用来表征类别的概率,还一种做法则是借助另外的机器学习算法实现分类,例如SVM。

图片 5

自我整合通常使用具有多个不同配置的单个模型。在梯形网络方法中,对干净样本的预测结果被用作随机扰动样本的代理标签,目的是开发能够抵制噪声的特性。

无监督训练

半监督学习要利用未标记样本,必然要做一些将未标记样本所揭示的数据分布信息与类别标记想联系的假设,其本质是“相似的样本拥有相似的输出”

Jerry Zhu在2007年的教程中还考虑了一些其他算法。这包括生成模型、半监督支持向量机和基于图的算法。

传统神经网络存在两个比较明显的问题。一是当处理的问题越来越复杂,所需要的层次越来越多,反向传播算法的效率会大大降低。二是在训练期间容易陷入饱和模式,特别是使用sigmoidal等函数时。最新研究成果就是结合无监督训练解决上述问题。

针对未标记样本的假设的不同会形成不同的半监督学习算法,下边我们将一一介绍半监督学习领域比较有名的算法模型

云中的半监督学习

前面我们介绍分类和回归,都是说训练时候除了样本数据,还需要输入对应的标签。这种方法成为监督学习方法。而无监督训练指的是输入的样本不用包含样本对应的标签,只需要指定一个最大化的目标函数,用来表征分类的效果,算法通过样本训练出具体的分类。

1)生成式方法(generative methods)

半监督学习正慢慢进入主流的机器学习服务。例如,Amazon Sagemaker Ground Truth使用Amazon Mechanical Turk对部分图像集进行手动标记和边界确定,并使用神经网络训练功能对图像集的其余部分进行标记。

借助无监督学习方法,可以让神经网络工作的更好。我们使用无监督学习算法,一层一层训练,一旦有了一个没有标记数据而训练出来的网络,再借助SVM等方法就可以达到分类效果。还有一种方法,在前面层次都使用无监督学习,但是为了保证分类的准确度,输出层使用带标记的样本数据进行训练,这中方法称为半监督学习方法。输出层使用的数据样本可以不用像前面那些无监督学习层次的多。

生成式方法是直接基于生成式模型的方法,此类方法假设所有数据(无论是否有标记)都是由同一个潜在的模型生产的。这个假设使得我们能通过潜在模型的参数将未标注数据与学习目的关联起来,而未标注数据的标记则可看作模型的确实参数。

类似的半监督学习方法可以用于其他类型的半监督学习,包括自然语言处理、分类和对多种服务的回归。但是,你必须为其中的大多数算法编写自己的链接代码。

半监督学习和人脑是比较接近的。简单来说,小孩的大脑从各种感官数据中学习,形成自己对世界的认知模型,然后成人给提供少量带有标签的信息,从而最终“训练”出小孩自己的思维模式。当然人脑还有很多非常的功能和限制是当前理论所无法表征的。

通常可基于EM算法进行极大似然估计求解。EM(Expectation Maximization)算法也叫期望最大化算法,在西瓜书第七章有过介绍。该算法的核心思想是通过 E 步来对未知变量进行估算,然后通过估算出来的变量在 M 步使用极大似然估计法(在第七章也有介绍)对模型参数进行估算。在反复迭代 E, M 步骤的过程中使预估的参数收敛到局部最优解。

作者:Martin Heller是InfoWorld的特约编辑和审稿人。他曾是一名网络和Windows编程顾问,1986年至2010年间开发过数据库、软件和网站。

深度学习

在半监督学习生成式方法中,EM算法的使用逻辑是这样的:

编译:Charles

除了上面介绍的理论逐渐完善,还一个推动深度学习火热的因素是最近硬件技术的发展,特别是GPU和FPGA。深度学习的训练过程是非常耗时的,以往硬件来说往往要耗费几天甚至更长时间,而GPU和FPGA则非常适合进行相关并行计算,大大缩短了训练时间。训练时间的降低,对算法的迭代,模型的效果都大有裨益。

[1]假设标注数据与未标注数据来源于同一潜在的分布模型,模型参数为 t

原文网址:-supervised-learning-explained.html

RBM是深度学习层次的常用架构,它是由可视单元和隐藏单元的概率无向图组成的。相关单元的权重是输入空间的特定的概率分布,模型训练就是为了计算出权重最优。多层次的RBM可以叠加,这样可以使用贪心算法,一层一层训练从而实现多层次的神经网络。

[2]给定参数的初始值 t0,我们可以根据分布模型计算出未标注数据的标注值 y0

责任编辑:周星如

图片 6

[3]根据 y0 和标注数据使用极大似然估计估算此时参数 t 能使得数据概率最大的最优解 t1

RBM架构

[4]使用 t1 计算估算此时未标注数据的标注值 y1

图像数据的统计规律往往具有平移不变性,另外一种架构卷积神经网络能大大需要学习的参数。卷积神经网络训练的权重往往能应用到图像的不同位置,也就是说不用针对左边图像和右边图像进行分别统计。使用稀疏数据进行训练的神经网络在图像分类上也取得了不错的结果,它减少了整个模型中同时活跃的unit的数量,并且能从中训练出非高斯分布的模型。

[5]步骤[3]和步骤[4]不断迭代,直到收敛

优点:简单,易于实现,在有标记数据极少的情形下往往比其他方法性能更好

缺点:此类方法的关键在于,模型假设必须准确,即假设的生成式模型必须与真实数据分布吻合,否则使用未标记数据反而会降低泛化性能。遗憾的是,在现实任务中往往很难事先做出准确的模型假设,除非拥有充分可靠的领域知识

2)半监督SVM(Semi-supervised Support Vector Machine,简称S3VM)

半监督支持向量机是支持向量机在半监督学习上的推广。相对于支持向量机要找出最大间隔划分超平面,S3VM考虑了未标注样本的信息,试图找到能将两类有标记样本分开,且穿过数据低密度区域的划分超平面。如下图所示,这里的基本假设是“低密度分隔”(low-density separation)

图片 7

半监督支持向量机中最著名的是TSVM(Transductive Support Vector Machine)。TSVM试图考虑对未标记样本进行各种可能的标记指派,然后从中找出在所有标记和未标记样本上间隔最大化的划分超平面。

TSVM的基本逻辑如下:

[1]先用标记好的样本训练一个SVM分类器

[2]用SVM对未标记数据的分类结果进行预测

[3]在预测的未标记数据分类中,找出指派的标记相反的且很可能错误的未标记样本对,将它们的标记对换,然后用现有的标记和未标记样本重新训练SVM

[4]重复[2]、[3]直到到达停止条件

[5]至此在未标记数据的基础上获得了一个SVM分类器,即对已有的未标注样本进行了标记,还能用来对未见的样本进行预测

解释:算法中提到的很可能错误的判断标准是具体样本的松弛向量;在使用样本时,标注样本和未标注样本的权重是不同的,一开始我们将未标注样本的权重设定为很小,每次迭代一次后将其权重调高,当未标注样本的权重高于标注样本权重时,到达停止条件

特点:搜寻标记指派可能出错的每一对未标记样本进行调整,是一个涉及巨大计算开销的大规模优化问题。因此,半监督SVM研究的一个重点是如何设计出高效的优化求解策略

3)图半监督学习

将数据集映射成图,数据集中的每个样本对应于图中的一个结点,若两个样本之间的相似度或相关性很强,则对应的结点之间存在一条边,边的强度正比于样本之间的相似度。

我们将有标记的数据看作是被染色的节点,未标注的数据是未染色的节点。图半监督学习就对应于“颜色”在图上扩散和传播的过程。由于一个图对应了一个矩阵,这就使得我们能基于矩阵运算来进行半监督学习算法的推导与分析。

基本的学习逻辑如下:

[1]基于数据集构建一个图 G = (V, E),V代表结点集合,E代表边集合

[2]根据数据集中结点的相似度计算出图的边集 E 的亲和矩阵 W;其中 wij 代表第 i 个结点和第 j 个结点之间的相似度,一般可基于高斯函数定义

[3]假定从图 G 上可学得一个实值预测函数 f:V -> R,于是可定义关于 f 的“能量函数”,能量函数可理解为任意两个结点的预测结果的差值乘以它们之间的权重 wij 的和。很明显,能量函数最小化时即得到最优结果

[4]对能量函数求导,可得到未标注数据的预测结果

优点:概念清晰,且易于通过对矩阵运算的分析来探索算法性质

缺点:存储开销大,很难直接处理大规模数据;接收新样本时可能需要从新计算

4)基于分歧的方法(disagreement-based methods)

与前边介绍的只基于单学习器的方法不同,基于分歧的方法使用多个学习器来训练数据,并利用学习器之间的“分歧”对未标记样本进行利用

“协同训练”(co-training)是此类方法的重要代表,它最初是针对“多视图”(multi-view)数据设计的,因此也被看作“多视图学习”的代表。

多视图:在不少现实应用中,一个数据对象往往同时拥有多个“属性集”(attribute set),每个属性集就构成了一个“视图”。比如一部电影,它的画面信息所对应的属性集可看作是一个视图、声音信息所对应的属性集也可看作是一个视图、甚至字幕信息或网络评论所对应的属性集也可以是一个视图。这种拥有多个视图的数据对象我们称之为多视图数据

多视图的特性:假设不同视图具有“相容性”(compatibility),即不同视图所包含的关于输出空间的信息是一致的:用电影的画面视图和声音视图来进行预测的输出都应该是判断电影类型,而不是一个是判断电影类型,一个是判断电影好评度。在此假设下,不同视图信息的“互补性”会给学习器的构建带来很多的便利

协同训练:协同训练正是很好地利用了多视图的“相融互补性”。假设数据拥有两个充分(充分指每个视图都包含足浴产生最优学习器的信息)且条件独立视图,则协同训练学习的基本逻辑如下:

[1]在每个视图上基于有标记样本分别训练出一个分类器

[2]让每个分类器分别挑选自己“最有把握的”未标记样本赋予伪标记

[3]将伪标记样本提供给另一个分类器作为新增的有标记样本用于训练更新

[4]重复[2]、[3]直到两个学习器不再变化或达到预设的迭代次数时停止

优点:过程简单,并且若两个视图充分且条件独立,可利用未标记样本将弱分类器的泛化性能提升到任意高

缺点:视图的条件独立性在现实任务中通常很难满足,因此性能提升幅度不会那么大

5)半监督聚类(semi-supervised clustering)

半监督聚类通过利用现实聚类任务中的额外监督信息来获得更好的聚类效果。(有趣的是:前边的算法是在监督学习的基础上引入未标注数据来优化性能,半监督聚类则是在非监督学习的基础上引入监督信息来优化性能,这同样也是另一个角度的“”监督学习)

聚类任务中获得的监督信息大致有两种类型。第一种是“必连”(must-link)与“勿连”(cannot-link)约束,前者是指样本必属于同一簇,后者是指样本必不属于同一簇;第二种类型的监督信息则是少量的有标注样本。根据不同的监督信息,我们分别介绍一个经典的半监督聚类算法。

约束 k 均值(Constrained k-means)算法:约束 k 均值算法是利用第一类监督信息的代表,其在 k 均值算法的基础上考虑了“必连”和“勿连”约束。

具体逻辑如下:

-> 首先,初始化 k 个簇,随机选择 k 个样本作为 k 个簇的初始均值向量

-> 然后,不断迭代以下几步步骤

>> 对每个样本 x ,计算其与每个簇均值向量的距离 d,

>> 找出距离样本 x 最近的簇 i ,判断将 x 放进 i 是否违反“约束”

>> 如果不违反,则将簇 i 作为 x 的簇标记,并将 x 放入该簇集合 Ci 中

>> 如果违反,则找次近的簇,以此类推直到找到满足约束的最近簇 i',将x 放入该簇集合 Ci' 中

>> 对所有的簇集合,根据本次迭代得到的簇集合计算新的均值向量

>> 当均值向量均未更新时,退出迭代步骤

-> 最终,我们获得了聚类计算的结果簇划分

约束种子 k 均值(Constrained Seed k-means)算法:约束种子 k 均值算法使用少量标记数据来辅助聚类计算。与 k 均值算法一样,不同点在于用标记样本作为“种子”来初始化 k 均值算法的 k 个聚类中心,并且在聚类簇迭代更新过程中不改变种子样本的簇隶属关系

2. 基础知识

1)松弛向量

一般地,对于不同形式的线性规划模型,可以采用一些方法将其化为标准型。其中,当约束条件为“≤”(“≥”)类型的线性规划问题,可在不等式左边加上(或者减去)一个非负的新变量,即可化为等式。这个新增的非负变量称为松弛变量(或剩余变量),也可统称为松弛变量

给线性规划加入松弛变量也就是为硬性的阈值加入一定的容错性

可以用生活中的问题来帮助理解松弛变量。有多条长短不一的绳子,现在将所有绳子的一端固定在墙上,然后将所有绳子的另一端对齐后往外拉。当拉不动时,说明最短的一根绳子已经拉紧了,不能继续拉了。但是,这时其他绳子可能还是松的。如果放开已经拉紧的绳子,松弛的绳子还可以继续拉动,每根松弛的绳子可以继续拉动的距离就是各个指标的松弛变量值。

2)拉普拉斯矩阵(Laplacian matrix)

拉普拉斯矩阵(Laplacian matrix) 也叫做导纳矩阵、基尔霍夫矩阵或离散拉普拉斯算子,主要应用在图论中,作为一个图的矩阵表示。

3)高斯函数

在数学中,高斯函数,或者直接称为高斯,其形式为:

图片 8

其中a,b,c∈R

以大数学家约翰·卡尔·弗里德里希·高斯的名字命名。高斯函数的图形在形状上像一个倒悬着的钟。参数a指高斯曲线的峰值,b为其对应的横坐标,c即标准差(有时也叫高斯RMS宽值),它控制着“钟”的宽度。

高斯函数被广泛运用于统计学以描述正态分布

3.总结

1)半监督学习是相对于监督学习和非监督学习来说的,前者是在标注好了的训练集上训练学习器,并用训练好的学习器去对新的样本进行预测;后者是在未标注的数据集上根据数据本身的分布情况来对数据进行分类

2)所以对于监督学习,让学习器不依赖外界交互、自动地利用为标记样本来提升学习性能,就是半监督学习

3)对于非监督学习,让学习器引入额外的监督信息来获得更好的性能,也是半监督学习

4)半监督学习要利用未标记样本,必然要做一些将未标记样本所揭示的数据分布信息与类别标记想联系的假设,其本质是“相似的样本拥有相似的输出”

5)基于这个假设,我们可以从不同的角度来使用非标记样本的这个特性,这就形成了不同的半监督学习算法

本文由澳门威斯尼人平台登录发布于 操作系统,转载请注明出处:第十三章,用了这技术

相关阅读