One PUNCH Man——半监督学习

2023-11-11

半监督学习介绍

我们在丰收的季节来到瓜田,满地都是西瓜,瓜农抱来四个西瓜说这都是好瓜,然后指着地里面六个瓜说这些不好,还需要再生长几天,基于这些信息,我们能否构建一个模型,用于判别地里面哪些是该采摘的瓜?显然,可将瓜农告诉我们的好瓜,与不好的瓜分别作为正例和反例来训练一个分类器,然而只用这十个瓜做训练样本,有点太少了吧,能不能把地里的瓜也用上呢?

形式化地看,我们有训练样本集合 D l = { x 1 , x 2 , . . . , x l } D_l=\{x_1,x_2,...,x_l\} Dl={x1,x2,...,xl},这个样本集是带标记的(告诉了我们哪些是好瓜,哪些是坏瓜),称为有标记样本;此外还有无标记样本 D u = { x l + 1 , x x + 2 , . . . , x l + u } D_u=\{x_{l+1},x_{x+2},...,x_{l+u}\} Du={xl+1,xx+2,...,xl+u},我们知道这类无标记的样本数量是远远大于有标记样本的数量的,也就是 u > > l u>>l u>>l

如果我们只利用 l l l个数据来做训练,那剩下的庞大的 u u u个样本就浪费了。我们怎么样才能把剩下的庞大的 u u u个样本利用起来呢?下面是两种思想。

  • 把剩下的 u u u个样本打上标记,这样做的缺点就是耗费人力,相当于让瓜农把剩下的瓜全部检查一遍。
  • 先把 l l l个数据训练起来,训练好了,我们把一个瓜判断优劣后,问问瓜农这瓜是不是符合我们的判断,然后把该样本加入到 l + 1 l+1 l+1个数据中再训练。这样瓜农只需要检验少量的瓜,从而大幅度降低成本。这种方法叫做主动学习

别慌,还有一种思路。上面两种思路都是需要通过“专家参与”,人为的判断样本好坏,那么有没有一种不用人为判断好坏的方法出现呢?
半监督学习:让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能

半监督学习,要利用未标记的 u u u个样本,同样参与到训练之中。所以,半监督学习有这么一个假设:相似的样本有相似的输出
半监督学习又分为纯半监督学习直推学习。前者假定训练数据中的未标记样本并非待预测的数据, 而后者则假定学习过程中所考虑的未标记样本恰是待预测数据。
下面只介绍两种半监督,其他算法原理以后有机会再学习。

半监督SVM

半监督支持向量机(S3VM)是支持向量机在半监督学习上的推广。它的思想很简单,如下图所示:
在这里插入图片描述
在不考虑未标记样本时,支持向量机试图找到最大间隔划分超平面, 而在考虑未标记样本后, S3VM 试图找到能将两类有标记样本分开,且穿过数据低密度区域的划分超平面。

回忆一下SVM的公式:https://blog.csdn.net/No_Game_No_Life_/article/details/89877123#_108


我们在SVM中得出过下面的公式:

在这里插入图片描述

并且,我们曾经提到过, l 0 / 1 l_{0/1} l0/1函数不连续,我们有其变形。不过在本节,我们将其表示为:
m i n w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ \underset{w,b,\xi}{min}\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi w,b,ξmin21w2+Ci=1mξ

其中, ξ \xi ξ l 0 / 1 l_{0/1} l0/1函数的作用相同。

同样的,在S3VM中,我们结合样本集 D l = { x 1 , x 2 , . . . , x l } D_l=\{x_1,x_2,...,x_l\} Dl={x1,x2,...,xl}和样本集 D u = { x l + 1 , x x + 2 , . . . , x l + u } D_u=\{x_{l+1},x_{x+2},...,x_{l+u}\} Du={xl+1,xx+2,...,xl+u},可知:

m i n w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C l ∑ i = 1 l ξ l + C u ∑ i = l + 1 l + u ξ u \underset{w,b,\xi}{min}\frac{1}{2}||w||^2+C_l\sum_{i=1}^{l}\xi_l+C_u\sum_{i=l+1}^{l+u}\xi_u w,b,ξmin21w2+Cli=1lξl+Cui=l+1l+uξu

其中, C u C_u Cu的值比 C l C_l Cl小,这样才能使得有标记的样本的作用更大。
输入很明显,直接来说过程。这里我们介绍TSVM的过程。
过程:

  1. 通过有标记样本 D l D_l Dl计算出一个SVM模型。
  2. 通过SVM模型给 D u D_u Du打标记(伪标记)。
  3. 通过有标记的两个样本 D l D_l Dl D u D_u Du,训练出新的TSVM,找到新的 ( w , b ) (w,b) (w,b)(新的超平面)。
  4. 通过训练出的TSVM,在 D u D_u Du中找出两个标记指派为异类且很可能发生错误的未标记样本?交换它们的标记。
  5. 重复步骤3,4。并逐步增大 C u C_u Cu以提高未标记样本的影响,直到 C u = C l C_u=C_l Cu=Cl为止。

S3VM介绍完毕,可以看到,一开始,我们就利用了未标记的样本,并且不断修正对未标记样本的伪标记。

其实这个过程很像EM算法的思想,关于EM算法,可以看下面的链接 https://zhuanlan.zhihu.com/p/36331115

基于分歧的方法

基于分歧的方法大多数使用“学习器”,并利用“学习器”之间的“分歧”来对未标记数据进行利用。

我们这里介绍其中一种算法:协同训练。在介绍协同训练之前,首先要了解什么是多视图数据

一个数据对象往往同时拥有多个"属性集" (attributeset) ,每个属性集就构成了一个"视图"(view)。举个例子,对一部电影来说,它拥有多个属性集:图像画面信息所对应的属性集、声音信息所对应的属性集(还有字幕,网上讨论等等属性集)。.于是,一个电影片段可表示为样本 ( &lt; x 1 , x 2 &gt; , y ) (&lt;x_1,x_2&gt;,y) (<x1,x2>,y) x 1 x_1 x1表示图像画面信息对应的属性集, x 2 x_2 x2表示声音信息所对应的属性集, y y y则是标记,比如电影属于“爱情片”“动作片”等等(我怀疑你在开车,可是我没有证据)。

假设不同视图具有"相容性",举个例子,用 y 1 y^1 y1表示从图像画面信息判别的标记空间,用 y 2 y^2 y2表示从声音信息判别的标记空间。以电影为例,某个片段上有两人对视( y 1 = 爱 情 片 y^1=爱情片 y1=),仅凭图像画面信息难以分辨其类型,但此时若从声音信息昕到"我爱你"( y 2 = 爱 情 片 y^2=爱情片 y2=)则可判断出该片段很可能属于"爱情片"( y = 爱 情 片 y=爱情片 y=)。当两者一起考虑时就有很大的把握判别正确,在"相容性"基础上,不同视图信息的"互补性"会给学习器的构建带来很多便利。

协同训练正是很好地利用了多视图的"相容互补性"。假设数据拥有两个充分(sufficient )且条件独立视图,“充分"是指每个视图都包含足以产生最优学习器的信息”,条件独立"则是指在给运类别标记条件下两个视图独立。
在此情形下,可用一个简单的办法来利用未标记数据:
首先在每个视图上基于有标记样本分别训练出一个分类器,然后让每个分类器分别去挑选自己"最有把握的"未标记样本赋予伪标记,并将伪标记样本提供给另一个分类器作为新增的有标记样本用于训练更新。
这个"互相学习、共同进步"的过程不断迭代进行,直到两个分类器都不再发生变化,或达到预先设定的迭代轮数为止。

为了使用此类方法,市能生成具有显著分歧、性能尚可的多个学习器,但当有标记样本很少,尤其是数据不具有多视图时,要做到这一点并不容易,需有巧妙的设计。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

One PUNCH Man——半监督学习 的相关文章

  • 计算机专业的浪漫情话,计算机专业表白情话 污到流水文章

    次日早起 江笑还没有到学校 就收到了顾言兮的一条短信 陈昊轩回来了 在餐厅遇到 依然众星捧月 江笑皱了一下眉 要不是这条短信 她竟然都差一点忘了还有陈昊轩这个人了 众星捧月 也能想象 陌家成了那样 陌雪是不可能在栓得住陈昊轩了 那其他对于陈
  • 游戏开发unity xlua框架知识系列:C#如何调用lua

    参看xlua框架的LuaDLL cs文件后 才知道其实lua仍然是用c写的源代码编译成不同平台的库 然后通过unity的DLLImport方法来使用的
  • 学习SQL注入基础板块---准备工作以及踩的坑

    准备 下载phpStudy 建议下载2018版本的 因为新版本让我这个菜渣折腾挺多天 下载sqli labs GitHub下载 之后将其放在安装好的phpstudy的WWW目录下 下载HackBar插件 GitHub下载2 1 3版本的 不
  • 四十岁以上的程序员都去干啥了?

    编译丨Linsa 在美国 工作者的年龄中位数是42岁 而Stack Overflow 2016年的程序员调查中 程序员的平均年龄是29 6岁 中位数为27岁 40岁以上的程序员只占总数的12 7 2016年Stack Overflow程序员
  • 方格填数(2016年蓝桥杯)

    如图 如下的10个格子 填入0 9的数字 要求 连续的两个数字不能相邻 左右 上下 对角都算相邻 一共有多少种可能的填数方案 请填写表示方案数目的整数 看到这题第一个想到的方法就是回溯 就很像八皇后 能填进去就填 填不进去就看下一个位置 我
  • 剑指 Offer 36. 二叉搜索树与双向链表(java+python)

    输入一棵二叉搜索树 将该二叉搜索树转换成一个排序的循环双向链表 要求不能创建任何新的节点 只能调整树中节点指针的指向 为了让您更好地理解问题 以下面的二叉搜索树为例 我们希望将这个二叉搜索树转化为双向循环链表 链表中的每个节点都有一个前驱和
  • 打造属于自己的字体(转)

    打造属于自己的字体 转 more 不少做平面的朋友可能都有过这样的经历 在自己的作品中要使用某种特效字体 但是到处都找不到符合自己要求的 于是有些朋友选择了自己绘制 这当然解决了当时的问题 可你有没有想过 把你绘制的字符图形制作成为真正意义
  • windows下安装,配置gcc编译器

    在Windows下使用gcc编译器 1 首先介绍下MinGW MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境 它是Minimalist GNU on Windows的略称 实际上 MinGW 并不是一个 单纯的C C
  • J2ee集合框架

    一 Collection接口 首先如图所见 Collection是整个集合框架的顶级接口 是Set和List的父接口 但不是Map的父接口 Map也是一个顶级接口 二 List集合的特点 总的来说学习框架就是为了学习容器的数据结构 增删改查
  • Qt:读写SVG

    Qt 读写SVG 绘制SVG图形 SvgView SvgView const QString file QWidget parent QWidget parent doc new QSvgRenderer file this QSvgRen
  • linux安装lcov

    linux安装lcov 一 去官网下载源码压缩包 lcov的github官网 https github com linux test project lcov releases 建议选择较新的版本 这里选择下载的是lcov1 16版本 gc
  • nginx 启动 停止,与报错nginx: [error] open() “/run/nginx.pid“ failed (2: No such file or directory)

    1 寻找nginx启动路径whereis nginx 2 启动 nginx s reload 3 停止 nginx s stop 4 如报错 在执行启动或者停止时 执行 nginx c etc nginx nginx conf
  • Dynamics CRM SLA 使用限制

    自身限制 一 不能循环 例如 Failure设置3天提醒 Warning设置5天提醒 只能是从Applicable From时间开始 第3天Failure 第5天Warning 不能有第二次3天和5天的提醒 不能循环发邮件 例如Warnin
  • 为三个整数排序(30分)

    2 为三个整数排序 30分 题目内容 输入三个整数a b c 按照从小到大的顺序打印输出 输入格式 三个整数 每行一个 输出格式 三个整数 每行一个 输入样例 3 1 22 a int input b int input c int inp
  • 手机端font-size:31.25vw原理

    移动端布局一般使用 方法一 媒体查询 rem 弹性盒子布局 方法二 vw rem 弹性盒子布局 这里说一下vw原理 vw它是根据可视区的宽度来计算的 如果是10vw 就是当前移动设备 浏览器 宽度的十分之一大小 vw 视窗宽度的百分比 1v
  • java集群

    转载 http blog csdn net happyangelling article details 6413584 序言 越来越多的关键应用运行在J2EE Java 2 Enterprise Edition 中 这些诸如银行系统和账单

随机推荐

  • Oracle快速入门(1)——ORACLE数据库简介

    一 什么是ORACLE ORACLE数据库系统是美国ORACLE公司 甲骨文 提供的以分布式数据库为核心的一组软件产品 是目前最流行的客户 服务器 CLIENT SERVER 或B S体系结构的数据库之一 ORACLE通常应用于大型系统的数
  • 编译boost提示错误:LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc100-mt-gd-1_64.lib”

    在Visual Studio 2010下编译出现如下错误 1 gt LINK fatal error LNK1104 cannot open file libboost system vc100 mt gd 1 64 lib 1 gt 1
  • pytorch安装报错:ERROR: torch has an invalid wheel, .dist-info directory not found

    在windows10 anaconda创建虚拟环境后 安装pytorch 运行pip install r requirement txt安装torch时报错 ERROR torch has an invalid wheel dist inf
  • NLP预训练模型系列-GPT-2

    NLP预训练模型 系列文章目录 1 BERT 2 GPT 3 GPT 2 4 GPT 3 目录 NLP预训练模型系列文章目录 前言 1 Abstract 2 Introduction 3 Approach 3 1 Training Data
  • 科大奥锐密立根油滴实验数据_密立根油滴实验数据处理

    刘秋君 回答于 2017 03 05 密立根油滴实验报告 实验题目 密立根油滴实验 电子电荷的测量 实验目的 1 通过对带电油滴在重力场和静电场中运动的测量 验证电荷的不连续性 并测定电子电荷的电荷值e 2 通过实验过程中 对仪器的调整 油
  • Python Wind量化API

    文章目录 导入 代码生成器 各个函数 wds 日期序列函数 wss多维数据函数 wset数据集函数 wsee wses swq 实时行情数据 wsi 获取分钟级别数据 wst 日内 edb 宏观数据 日期函数 tdays ddaysoffs
  • 【page分页工具类】贼好用的分页工具类

    PageUtils工具类如下 package utils import java io Serializable import java util HashMap import java util List import java util
  • QT学习笔记(四)信号槽与简单的自定义信号

    1 坐标系 左上角为零点 x向右为正方向 y向下为正方形 2 信号 完成连接connect的过程包括以下内容 信号的发送 信号发送的具体内容 信号的接受 信号的处理 称为槽函数 3 信号槽 信号槽的优点 松散耦合 信号的发送方和接受方本身没
  • 使用navicat为数据表添加外键

    1 选择需要操作的表 打开设计表 点击外键 2 名 自动生成 无需添加 字段 选择需要添加外键的字段 参考模式 选择表所在的数据库 参考表 关联表名 参考字段 关联表的关联字段 删除时 当删除关联表时 set null该字段置空 更新时 当
  • 【子比主题】添加今日实时热搜榜单教程

    预览图 演示地址 实时热榜 淇云博客 专注于IT技术分享 使用教程 首页版 将下载文件中的 index php 里的内容复制到 wp content themes zibll index php 里你想要放置的地方 Tips 不止index
  • 我爱说英语之学美语发音

    开篇 在写这篇文章之前 我考虑了很久 思前想后 还是决定把她写成一个系列的文章 用以来见证我们学习英语的历程 同时也为了说明我要学好英语的决心 废话不多说 进入正题 回忆 对于我们这些已经毕业很久的人来说 不知道还算不算有英语基础 最起码在
  • 狂野飙车9服务器维护中,狂野飙车9传奇进不去怎么办

    狂野飙车9 国际服IOS进入办法 苹果端的小伙伴如果想要进入 狂野飙车9 的国际服应该怎么办呢 下面 就跟随玩游戏网的小编一起来看一下具体的进入办法吧 感兴趣的小伙伴可千万不要错过哦 进入方法 第一步 首先我们需要推出AppStore账号
  • 魔方机器人之结构篇

    魔方颜色识别和魔方复原算法以及串口通信都解决完了 感觉自己该松口气了吧 结构可以反正仿照别人的来嘛 做出来就的了 事实又打了我一耳光 我怎么发现我的预判总是那么的不靠谱 总结就是自己没做过的东西再也不要说很简单了 即使看上去简单的再也不能简
  • 5-8 以特殊方式跟管理员打招呼

    创建一个至少包含5个用户名的列表 且其中一个用户名为 admin 想象你要编写代码 在每位用户登录网站后都打印一条问候消息 遍历用户名列表 并向每位用户打印一条问候消息 如果用户名为 admin 就打印一条特殊的问候消息 如 Hello a
  • 使用EasyExcel实现导入导出功能

    使用EasyExcel实现导入导出功能 一 导出 1 使用ideal新建一个maven项目 并在pom xml文件中引入EasyExcel依赖
  • impala 错误

    问题一 impala state store unrecognized service 原因 当前节点未成功安装impala server impala state store impala catalog 解决方案 yum install
  • ulua源码分析

    对于NestClass的Type 用了2次被Cache了两次 主要是因为PushType这个函数 对每个Type对象 不进行Cache检测 总是push一个新的proxy对象
  • 蓝桥杯省赛2021 括号序列 python

    给定一个括号序列 要求尽可能少地添加若干括号使得括号序列变得合法 当添加完成后 会产生不同的添加结果 请问有多少种本质不同的添加结果 两个结果是本质不同的是指存在某个位置一个结果是左括号 而另一个是右括号 例如 对于括号序列 只需要添加两个
  • MQTT:用Mosquitto搭建轻量级的设备接入网关

    开发部署在云端的设备接入网关服务就不得不提到MQTT 使用MQTT不论是从设备到设备 还是设备到云端服务的双向通讯 都可以获得较好的支持 MQTT的起源和我的理解 用tcpdump分析下MQTT的通讯时序 这里基于mosquitto 以一组
  • One PUNCH Man——半监督学习

    文章目录 半监督学习介绍 半监督SVM 基于分歧的方法 半监督学习介绍 我们在丰收的季节来到瓜田 满地都是西瓜 瓜农抱来四个西瓜说这都是好瓜 然后指着地里面六个瓜说这些不好 还需要再生长几天 基于这些信息 我们能否构建一个模型 用于判别地里