简要介绍弱监督学习(by 周志华)

原文:《A Brief Introduction to Weakly Supervised Learning》
作者:周志华

1. 概览

在强监督条件下,监督学习任务是从训练数据集 D = { ( x 1 , y 1 ) , … , ( x m , y m ) } D=\lbrace (x_1, y_1), …, (x_m, y_m) \rbrace D={(x1,y1),,(xm,ym)} 中学习 f : X − > Y f: X -> Y f:X>Y ,但是由于标注数据成本高,实际上在很多任务中我们很难获得含有真值标签的大规模数据集,因此弱监督学习成了研究的一个热点。
在这里插入图片描述

2. 不完全监督(incomplete supervision)

不完全监督是指训练数据中只有一小部分数据有标签,而大部分数据没有标签,且这一小部分有标签的数据不足以训练一个好的模型。该学习任务是从 D = { ( x 1 , y 1 ) , … , ( x l , y l ) , x l + 1 , … , x m } , D = \lbrace (x_1, y_1), …, (x_l, y_l), x_{l+1}, …, x_m \rbrace, D={(x1,y1),,(xl,yl),xl+1,,xm}, 中学习 f : X − > Y f: X -> Y f:X>Y ,目前主要有两种方法解决此问题:主动学习(active learning)和半监督学习(semi-supervised learning)。
在这里插入图片描述

  • 主动学习算法可以主动地提出一些标注请求,将一些经过筛选的数据提交给专家进行标注,其目标是使用尽量少的“查询”(query)来获得尽量好的性能。
  • 直推学习假设未标记的数据就是最终要用来测试的数据,学习的目的就是在这些数据上取得最佳泛化能力。
  • 纯半监督学习在学习时并不知道最终的测试用例是什么。

2.1 主动学习

主动学习在训练过程中有人为干预,其假设未标注数据的真值标签可以向专家(Oracle)查询,如果标注成本只与查询次数有关,那么主动学习的目标就是最小化查询次数,以使训练一个好模型的成本最小。
给定少量标注数据以及大量未标注数据,主动学习倾向于选择最有价值的未标注数据来查询先知。衡量选择的价值,有两个广泛使用的标准,即信息量(informativeness)和代表性(representativeness)。
信息量衡量一个未标注数据能够在多大程度上降低统计模型的不确定性。
代表性衡量一个样本在多大程度上能代表模型的输入分布。

2.2 半监督学习

半监督学习是指在无人为干预的情况下利用未标注数据。

2.2.1 为什么未标注数据对构建预测模型有用?

在这里插入图片描述
如果我们只能根据唯一的正负样本点来预测,那我们就只能随机猜测,因为测试样本恰好落在了两个标注样本的中间位置;如果我们能够观测到一些未标注数据,例如图中的灰色样本点,我们就能以较高的置信度判定测试样本为正样本。在此处,尽管未标注样本没有明确的标签信息,它们却隐晦地包含了一些数据分布的信息,而这对于预测模型是有用的。

2.2.2 基本假设

在半监督学习中有两个基本假设,其本质为相似的输入应该有相似的输出:

  • 聚类假设(cluster assumption):假设数据具有内在的聚类结构,因此,落入同一个聚类的样本类别相同。
  • 流形假设(manifold assumption):假设数据分布在一个流形上,因此,相近的样本具有相似的预测。

2.2.3 主要方法

  • 生成式方法(generative methods):假设标注数据和未标注数据都由一个固有的模型生成。因此,未标注数据的标签可以看作是模型参数的缺失,并可以通过EM算法(期望-最大化算法)等方法进行估计。
  • 基于图的方法(graph-based methods):该方法构建一个图,其节点对应训练样本,其边对应样本之间的关系(通常是某种相似度或距离),而后依据某些准则将标注信息在图上进行扩散。
  • 低密度分割法(low-density separation methods):该方法强制分类边界穿过输入空间的低密度区域。
    在这里插入图片描述
  • 基于分歧的方法(disagreement methods):该方法生成多个学习器,并让它们合作来挖掘未标注数据,其中不同学习器之间的分歧是让学习过程持续进行的关键。

3. 不确切监督(inexact supervision)

不确切监督是指训练样本只有粗粒度的标签,该学习任务是学习 f : X − > y f : X -> y f:X>y ,训练集为 D = { ( X 1 , y 1 ) , … , ( X m , y m ) } D = \lbrace (X_1, y_1), …, (X_m, y_m)\rbrace D={(X1,y1),,(Xm,ym)} ,其中 X i = { x i , 1 , … , x i , m i } ⊆ X X_i = \lbrace x_{i, 1}, …, x_{i, m_i}\rbrace \subseteq X Xi={xi,1,,xi,mi}X 被称为一个包, x i , j ⊆ X x_{i,j} \subseteq X xi,jX 是一个实例,当存在 x i , p ⊆ X i x_{i,p} \subseteq X_i xi,pXi 是一个正样本时,则 X i X_i Xi 为正包,其目的是预测未知包的标签,这被称为多示例学习(multi-instance learning)。

在计算机视觉中,通常从一张图像中提取多个图像块作为实例,例如下图:
在这里插入图片描述
假设每张图片的尺寸为88个像素,每个小块的尺寸为22个像素。单块(Single Blob, SB)以无重叠地滑动的方式,会给一个图片生成16个实例,即每个实例包含4个像素。领域单块(SBN)以有重叠地滑动的方式,则会给每一个图片生成9个实例,即每个示例包含20个像素。
多示例学习试图识别使得正包为正的关键实例。

4. 不准确监督(inaccurate supervision)

不准确监督关注样本的标签并不总是真值的情况,即存在错误标签。

一个典型的情况是在标签有噪声的条件下学习,这些研究大多都假设存在随机类型的噪声,即标签受制于随机噪声。在实际中,一个基本的想法是识别潜在的误分类样本,而后进行修正。例如,数据编辑(data-editing)方法构建了一个相对邻域图:
在这里插入图片描述

另一个最近出现的不准确监督的情景发生在众包模式中(crowdsourcing),即一个将工作外包给个人的流行模式。具体而言,将大量数据交给来自社会的工人去标注,并向这些工人支付少量的报酬,这对机器学习来讲是一种经济的方式,但是由于实际中通常存在不可靠的工人,因此,用从众包返回的不准确的监督信息进行学习,并保持学习到的性能,是有意义的。

很多研究试图从众包标签中推理出真值标签,有集成方法的理论支持的多票数策略在实际中得到了广泛应用,并有不错的性能,因此常常作为基线标准。

5. 总结

在带有真值标签的大量训练样本的强监督条件下,监督学习技术已经取得了巨大的成功。然而,在真实的任务中,收集监督信息往往代价高昂,因此探索弱监督学习通常是更好的方式, 总之,不论何种数据、何种任务,弱监督学习正在变得越来越重要。

6. 参考资料

  1. A brief introduction to weakly supervised learning(原文)
  2. A brief introduction to weakly supervised learning(简要介绍弱监督学习)
  3. 浅谈弱监督学习(Weakly Supervised Learning)
  4. 主动学习、纯半监督学习与直推学习
### 关于周志华机器学习中的集成学习方法与应用 #### 定义与概述 集成学习是一种通过构建并组合多个基础估计器来改进预测性能的方法。这种方法不仅能够提升模型的准确性,还能增强其稳定性[^1]。 #### 基本策略 集成学习主要分为两大类:序列化方法和并行化方法。前者代表性的有Boosting系列算法,在每一轮迭代中调整样本权重使得后续的学习器更加关注之前分错的数据;后者则以Bagging为代表,通过对原始数据集进行重采样得到若干子集用于训练不同的基学习器,最终将这些独立得出的结果综合起来作为整体输出[^2]。 #### 具体实现方式 - **Bagging (Bootstrap Aggregating)** Bagging通过自助法(bootstrap sampling)创建多样化的训练集合,进而训练出一组弱分类器,并采用投票机制决定最终类别标签。随机森林(Random Forests)便是基于这一原理发展而来的著名算法之一。 - **AdaBoost** AdaBoost即自适应boosting, 是一种典型的加权更新方案下的boosting算法。它赋予那些被前序个体学习器错误分类过的样本更高的权重,从而让新的学习器更专注于难处理的部分。随着轮次增加,各成员贡献逐渐累积形成强分类器[^3]. ```python from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier # 使用RandomForest作为bagging的例子 rf = RandomForestClassifier(n_estimators=100) # 使用AdaBoost作为boosting的例子 adaboost = AdaBoostClassifier(n_estimators=50) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) rf.fit(X_train, y_train) adaboost.fit(X_train, y_train) ``` #### 应用场景 集成学习广泛应用于各类监督式学习任务当中,特别是在解决复杂模式识别问题上表现出色,比如图像识别、自然语言处理等领域内的多分类或多标记分类任务。此外,在异常检测方面也有着不俗的表现,例如金融欺诈预警系统等实际案例中均可见到该技术的身影[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值