半监督学习笔记(四)

昨天的更新中,我们学习了几种基于对抗方法的一致性正则化的策略,接下来让我们做一个简单的复习:

1、 Fast-SWA:采用了退火算法的思想,逼近多个最小值点后求平均。

2、 Virtual Adversarial Training:通过找到网络的薄弱点,选择性的挑取噪声进行训练。

3、 Adversarial Dropout:采用对抗性的方法找到最弱的随机丢弃层,其中运用了元素级丢弃和通道级丢弃的方法。

4、 Interpolation Consitency training:插值一致性训练,体现了奥卡姆剃刀准则。

5、 Unsuperviesd Data Augmentation:从数据本身的角度对数据进行增强。

之前更新的两篇文章已经结束了对一致性正则化方法的阐述,我们可以从中找到核心思路:主要利用了集成学习和对抗训练的思想,使得模型更加平滑。接下来我们来学习一些新的半监督学习的知识。

三、Entropy Minimization(熵最小化)

由于半监督学习的样本过少,所以一种比较好的思路就是再本次训练中将网络在上一次产生的,自信程度比较高的预测(我们就当他是预测对了的)加入到本次的训练中,这样反复的迭代,就从中体现了聚类的思想,使得决策边界能更加趋于真实。因此,在训练的时候我们需要让网络的预测更加自信,而不是比较犹豫。而熵最小化这套理论则是希望让网络的预测更加自信,也就是进行低熵预测。

所以,我们基于绝大部分数据点都远离决策边界的假设下,我们需要阻止网络的决策边界在数据点附近。这个方法我们可以通过增加一个对于预测的损失项来实现:

L=−∑k=1cfθ(x)klogfθ(x)kL=-\sum_{k=1}^cf_{\theta}(x)_{k}logf_{\theta}(x)_{k} L=−k=1∑c​fθ​(x)k​logfθ​(x)k​
对于分类问题,网络最后必然是通过一个softmax来输出,而softmax是所有的类别经过归一化之后自信程度。假设网络对每一个类的自信程度都相近,那么整体的熵值就会越大,反之则越小。通过添加这一项正则化项就能实现让网络的预测更加自信。当然,这也有不好的情况:倘若网络预测错了,那人家对自己的错误答案也会十分自信。

四、Proxy-label Methods(代理变量方法)

代理变量方法的定义之前已经说过,我们来复习一下:通过给没有标签的数据提供标签的方法利用无标签数据,从而优化网络的训练。代理变量的方法可以分为两类。

1、 自训练(self-training):每一个数据的标签由网络自己提供。

2、 多视角学习(Multi-view learning):代理变量由对数据的不同观测训练出的模型提供。

首先,我们先介绍自训练。

4.1 self-training

整体概念开头已经提过了,算法表述如下:给定数据集,利用有标记的数据训练网络,再让网络对未标记的数据进行预测,取自信程度最大的数据和预测,和原本有标记的数据整合作为新的训练集,再训练网络,如此循环。自训练也可以和熵最小化的方法结合,毕竟从目标上来说,都是希望网络不管预测的结果是对是错,都能让网络的判断更加自信。

#### 代理标签

Shi 提出了一种“自适应传输半监督学习”的方法,通过将未标记的样本的标签作为变量,并且通过迭代训练过程层最小化损失函数,尝试确定其标签和最好的模型参数。对于生成的代理标签的处理方法如下:将所有的标签视作“硬标签”。对所有的没有标记的样本,对其引入不确定性权重,这包括类间不确定性权重和类内一致性权重。以及具有不同扰动的样本之间的一致性项。

Iscen等人在伪标签中集成了标签传播算法,该方法交替使用了标记示例和伪标签训练网络,然后利用学习到的表示构建最近邻图,在该图中应用标签传播来优化伪标签。他们还引入了两个不确定性分数,一个是基于输出概率熵的每个样本的不确定性分数,以克服预测中的不平等置信度;另一个是基于类的频率都类间分数,来处理类间的不平衡。

这段话的重点是标签传播算法,从概念上来理解,这十分的简单:A和B有一定的相似度,B和C有一定的相似度。此时我们确定了C是什么,那么B和A在类别上和C就可能会一致。标签传播算法的应用也可以使得网络学到更好的表示。

Arazo表明了,一个未经充分训练的伪标记算法,通常会因为确认性偏差(Confirmation bias)会产生过拟合,以至于没有良好的性能。另外也证明了MixUp和设定每一个采样的minibatch数量中的样本最少数是一个减小确认性偏差(Confirmation bias)的好方法。

这段话该怎么理解呢?有两个重点,一个是确认性偏差,另一个是MixUp。首先我们先解释确认性偏差:

Overfitting to incorrect pseudo-labels Predicted by the network is known as confirmation bias(摘自Arazo原文)

这表明,对错误代理标签的过拟合就是确认性偏差。简单的来说,就是老师教了你一个错的东西,你还把他学过来了。


MixUp是什么呢?简单的说,就是把两个训练样本做一个插值,应用公式如下:

x~=λxi+(1−λ)xj\tilde{x}=\lambda x_{i}+(1-\lambda)x_{j}x~=λxi​+(1−λ)xj​, where xix_{i}xi​,xjx_{j}xj​ are raw input vectors.

y~=λyi+(1−λ)yj\tilde{y}=\lambda y_{i}+(1-\lambda)y_{j}y~​=λyi​+(1−λ)yj​, where yiy_{i}yi​,yjy_jyj​ are one-hot label encodings.

因此,MixUP就是对两个数据做一个插值,假设对一个二元分类问题而言,如果两个数据的labelyyy相同,那么他们数据的中间值应该也会接近。对于独热编码的标签yyy而言,这也引入了软标签的概念。

To sum up,代理标签的关键词如下:自适应传输半监督学习、标签传播算法、确认性偏差与校正。

Meta Pseudo Labels(元代理标签,MPL)

这里首先要解释一个概念:元学习(Meta learning)

元学习,简单的来说,就是“让机器学习去学习”。我们可以去想,假设让机器去拟合一个函数,我们需要自己设定学习率,超参数,甚至网络的架构(几层隐藏层)等。但是元学习就是训练一个函数,让这个函数观察了所要求解的问题之后,自己生成一个函数的架构,来最好的适应这个学习任务。

简单的来说,就是套娃。

好了,那么Meta Pseudo label是什么意思呢?

首先还是一个teacher和一个student。teacher生成代理标签给student学习,然后teacher根据student学习的反馈更新自己的参数,然后在下一次生成一批新的标签(按理说是更好的标签)给student继续学习。这是不是有点强化学习的味道?

一个MPL的步骤包括下面两步:

  • phase1:student从teacher这边学习,首先给定一个样本集x∈Dlx\in{D_{l}}x∈Dl​,teacherfθ′f_{\theta '}fθ′​ 生成目标的类别分布区训练学生,每一个样本(xi,fθ′(x))(x_i,f_{\theta'}(x))(xi​,fθ′​(x))作为一个训练数据,然后通过正常的机器学习算法来学习。

  • phase2:teacher收集到学生的测试损失(通俗的来说,就是答卷)来更新自己的参数,得到θ′(t+1)\theta ' (t+1)θ′(t+1),从上述过程可以得知,θ′(t+1)\theta '(t+1)θ′(t+1)都是从学生训练得到的参数中得出来的,因此也可以用梯度下降来求解。

    也就是说,老师可以通过学生的表现进行调整,就是师生相互学习,共同进步。

4.2 Multi-view training(多视角训练,MVL)

多视角训练利用了在现实中非常常见的多视角数据,这是什么意思呢?比如针对一个实践,我们要写调研,我们需要图片数据、文本数据等多元的数据。当同一个问题能收集到的数据形式多种多样,且每一种数据形式的样本数量都十分的有限时,MVL就希望学得一个函数集,函数集中的函数能对对这些真实数据xxx对应的视角数据vi(x)v_i(x)vi​(x)进行建模,并且同时优化这些函数,以让最后的性能更好。当然,我们也希望这些函数集中的函数能够相互影响,互相学习,用来提高整体和彼此的预测性能。

4.2.1 Co-training(联合训练)

联合训练就是每一个数据xxx有两个视角v1(x)v_1(x)v1​(x)和v2(x)v_2(x)v2​(x),并且每一个视角收集到的数据都足够多,能来训练一个函数。在两个预测函数fθ1f_{\theta _1}fθ1​​和fθ2f_{\theta _2}fθ2​​训练成功之后,接下来进入循环:如果模型A对一个数据点有足够自信的预测(超过某个阈值),那么这个数据点就被用来作为另一个模型的训练集对模型B进行训练。简单的来说,就是一个模型能给另外一个模型提供该模型不确定的数据。

但是多数情况下,xxx只有一个视角v(x)v(x)v(x),那么我们就可以使用不同的学习算法,或者不同的参数设定来训练两个分类器,然后执行相同的迭代过程。我们还可以对视角v(x)v(x)v(x)加入噪声或者通过不同的增强方法来生成不同的视角。

Democratic Co-training

这就是把2个模型变成多个模型来替换对输入数据的不同视图,不过说来,这不就是集成学习的思想嘛?

4.2.2 Tri-Training (三重训练)

首先,有标记的数据集DlD_lDl​被用来训练三个模型:fθ1f_{\theta_1}fθ1​​fθ2f_{\theta_2}fθ2​​fθ3f_{\theta_{3}}fθ3​​.对于一个给定的未标记数据x∈Dux\in{D_{u}}x∈Du​,如果有两个模型对他们的分类都是一致的,那么这个数据就加入用来训练另一个函数的监督学习数据集。直到没有数据被放入任何模型的监督学习训练集中,训练结束。三重训练集不需要多视角,也不需要独特的学习算法,因此这样的训练方法更加普遍。但是这样的问题在于:训练的开销太大了。每一次对一个样本进行预测,都需要三个模型来共同执行前向传播。

Multi-task tri-training(多任务三重训练)

当然,对于分类问题,我们可以通过让三个分类器都共享一个特征提取层来减少训练时间和采样的复杂性。比如对于图像,我们都可以用VGG16的骨架。在这种方法中,每一个模型在训练时,都需要增加一个正则化损失项来保证自己和另外两个模型是正交的。以防止模型出现相似性,最后以至于走向了自训练的路。Tri-Net就采取了上述方法,但是还额外加了一个输出涂抹去初始化这些模块。在代理标签迭代完成后,最后还增加了一个微调步骤,以用来消除可疑的伪标签。

Cross-View Training(交叉视角训练)

在自训练中,模型起了双重作用:自己又当老师又当学生,在交叉视角训练中,也有一种更好的解决方法:根据一个数据的不同视角,不同的模型被训练去尝试生成一致性的预测。首先,所有的模型共享编码层,然后增加一些辅助预测模块,用来将编码的表示转移成预测。这些模块被分成学生预测模块和主要的教室模块。每一个学生的预测都是模型的一部分。参考LSTM/双向LSTM层。这样所有的学生就会相互影响。主要教室模型只会被有标记的数据训练,并且教室模型需要根据所有的无标签输入的视角生成为标签。学生被按照跟教师产生一致性预测的方式被训练。

其中,给定一个编码器eee,一个教师模块ttt和KKK个学生模块sis_{i}si​,i∈[0,K]i\in{[0,K]}i∈[0,K],每一个学生都收到了一个输入的有限视角。损失函数如下:
L=Lu+Ls=1∣Du∣∑x∈Du∑i=1KdMSE(t(e(x)),si(e(x)))+1∣Dl∣∑x,y∈DlH(t(e(x)),y)L=L_u+L_s=\frac{1}{|D_u|}\sum_{x\in{D_{u}}}\sum_{i=1}^K d_{MSE}(t(e(x)),s_i(e(x)))+\frac{1}{|D_l|}\sum_{x,y\in{D_l}}H(t(e(x)),y) L=Lu​+Ls​=∣Du​∣1​x∈Du​∑​i=1∑K​dMSE​(t(e(x)),si​(e(x)))+∣Dl​∣1​x,y∈Dl​∑​H(t(e(x)),y)
其中LuL_uLu​是无监督学习损失,LsL_sLs​是有监督学习损失。

交叉视图训练通过改进编码器的表示学习来利用未标记的数据。学生预测模块可以从教师模块的预测中学习,因为该主要模块对输入有更好的、不受限制的视图。当学生模块学习在输入视图受限的情况下做出准确预测时,他们提高了编码器生成的表示的质量,这反过来又改进了使用相同共享表示的完整模型。

半监督学习笔记(四):熵最小化、代理变量相关推荐

  1. UDA一致正则化和熵最小化

    2021SC@SDUSC Consistency Regularization 一致性正则化 在监督学习中,一种常见的正则化技术是数据增强,它应用于对输入进行转换,同时假定这种转换不影响类语义分类.例 ...

  2. 半监督学习笔记(一):综述,定义,方法

    这几天学习了一篇论文,名称就是An Overview of Deep Semi-Supervised Learning.是一篇关于半监督学习的综述,当然自己的理解也十分的肤浅,这篇文章是自己的学习笔记 ...

  3. EVM底层探索:字节码级分析最小化代理标准EIP1167

    概述 前往我的博客获得更好地阅读体验. 本文主要介绍最小化代理合约EIP1167的相关内容.为了实现最小化,EIP1167使用了bytecode(字节码)作为主要编码方式,即直接使EVM汇编指令进行编 ...

  4. 半监督学习(Semi-Supervised Learning, SSL)-简述及论文整理

    本文参考An Overview of Deep Semi-Supervised Learning,An overview of proxy-label approaches for semi-supe ...

  5. MixMatch:半监督学习

    MixMatch:半监督学习 1 摘要 2 介绍 3 已有相关工作 3.1 Consistency Regularization 一致性正则化 3.2 Entropy Minimization/ En ...

  6. 医学图像分割的半监督学习综述

    Title: 目录 Abstract(摘要) 二:前期 2.1半监督学习的基本分类 2.2半监督学习的三个假设 三:半监督学习图像分割的相关工作 半监督医学图像分割问题的分类 无监督正则化 具有知识先 ...

  7. 厉害了!谷歌新发布的半监督学习算法降低4倍错误率

    点击我爱计算机视觉标星,更快获取CVML新技术 昨天跟大家分享了Facebook AI 提出10亿级数据规模的半监督图像分类模型,ImageNet测试精度高达81.2%!,引起了不少朋友的兴趣.虽说做 ...

  8. 半监督学习之伪标签(pseudo label,entropy minimization,self-training)

    1.什么是伪标签 伪标签方法是一种同时从未标记数据和标记数据中学习的监督范式.将具有最大预测概率的类作为伪标签.形式化后等价于熵正则化(Entropy Regularization)或熵最小化(Ent ...

  9. 用于三维医学图像检测的半监督学习——FocalMix: Semi-Supervised Learning for 3D Medical Image Detection

    本文记录下阅读 CVPR2020论文 其中的<FocalMix: Semi-Supervised Learning for 3D Medical Image Detection>,更新于2 ...

最新文章

  1. JavaScript 计算两个颜色叠加值
  2. 字节跳动Java高级工程师:java队列实现停车场出入
  3. 函数不可访问_C++之访问控制与继承
  4. 超好用的简单的jquery tab选项卡切换代码(点击切换和导航栏滑过)
  5. MySQL类型介绍以及适用范围
  6. java md5运算_java实现计算MD5
  7. Hibernate3 r的SLF4J问题
  8. 架构设计:文件服务的设计与实现
  9. [实践] Android5.1.1源码 - 让某个APP以解释执行模式运行
  10. java易错基础知识点
  11. Android学习之多触点滑动
  12. 华硕笔记本 X550JD4710HQ
  13. 简述div标签和span标签的不同_div与span的区别是什么?
  14. 单片机----数码管(138译码器)显示日期
  15. Git三大特色之Stage(暂存区)--留着当资料
  16. 从发声机理到听觉感知认识声音的本质
  17. 微信实现电脑远程关机
  18. 左神算法:如何较为直观地打印二叉树(Java版)
  19. 淘宝二维码显示与隐藏
  20. 2019北航961考研初试经验之谈

热门文章

  1. NEU 1690 (最短路+LCA)
  2. [CSCCTF 2019 Qual]FlaskLight SSTI注入
  3. vs2017c语言没有空项目,「vs2017新建项目」visual studio 2017 创建空项目和桌面向导下的空项目...
  4. flatten层的作用
  5. opencv 将两张图片显示到一幅图片中
  6. NSR学习笔记(手写版)
  7. 电脑上的文件夹都是显示英文怎么快速翻译成中文
  8. 学习jqr2013-05-11
  9. 手把手教程:零基础使用MATLAB完成基于深度学习U-Net模型的遥感影像分类
  10. Unity面试题ABC(Yanlz+A经典面试题+C#问题+Unity问题+...+F高薪就业+...+立钻哥哥+...)