机器学习花朵图像分类_半监督学习图像分类综述
总结半监督学习的部分算法:
算法1:该算法采用伪标签方法实现基于深度神经网络的半监督学习过程,并且其特点是具有简洁高效的学习效率
* 基本算法思路
* pseudo-label起作用的一些理论依据
-
算法2:Temporal Ensembling for Semi-Supervised Learning
- 算法思想
算法3: Average teacher serves as a better role model: The use of weight-averaged consistency targets enhances the performance of semi-supervised deep learning approaches.
* 算法思想
* 算法介绍
第4个算法:虚拟对抗训练是一种用于监督学习与半监督学习中的正则化方法
* 算法思想
-
算法细节
-
算法5:mixup: BEYOND EMPIRICAL RISK MINIMIZATION
第6个算法采用内插一致性训练用于半监督学习
* 算法介绍
* 文中提到的一些理论知识
-
算法7:MixMatch: A Holistic Approach to Semi-supervise learning
-
算法的思想
-
算法流程
-
算法8:基于分布对齐与增强锚定的半监督学习方法(ReMixMatch)
* 算法思想
* 细节
Algorithm 9: FixMatch by Simplifying Semi-supervised Learning through Consistency and Confidence
* 算法思路
主要对自己阅读过的几篇论文做一下总结:
- Pseudo-Label: 一种高效的深度半监督学习方法
- Virtual Adversarial Training: 一种适用于监督学习与半监督学习的正则化技术
- Temporal Ensembling在半监督学习中的应用
- 平均教师作为榜样:加权平均一致性目标提升半监督深度学习成果
- mixup:超越经验风险最小化的方法
- Interpolation Consistency Training在半监督学习中的运用
- MixMatch:一种全面的半监督学习策略
- FixMatch:结合一致性和置信度的简化半监督学习方法
这些文章是我最近在学习这类资料时已阅读并计划继续阅读的一系列文章。首先系统地学习基础知识,接着深入理解核心思路后,进一步探索代码的具体实现细节。
算法1:伪标签法 : 一种简单有效的半监督学习方法用于深度神经网络
2013年的一篇文章。
基本算法思路
伪标签被定义为将未经标注的样本通过CNN前向传播计算并得到最终的softmax输出结果后,在所有类别中概率最大的那个类别被指定为该未标注样本的伪标签。
在训练的过程中,在每次权重更新后段,依据无标注样本生成相应的伪标签,并将其被视为真实标签;随后采用与有监督训练分类过程中相同的交叉熵损失函数进行计算,并对包含有标注样本与无标注样本的损失函数进行加权处理以优化模型性能。

pesudolabel_1
Alpha值用于调节两个类别之间的权重分配系数。当Alpha值过大时,使得带标签样本的作用得以消除;而当Alpha值过小时,则会导致半监督学习的效果显著降低。因此,我们将Alpha设定为分段调整的形式以获得更好的效果。

pesudolabel_2
pseudo-label起作用的一些理论依据
- 决策边界应该穿过数据分布的低密度区域
人们的正常直觉也证实了这一点。在数据集中样本密度较低的区域中设置分类决策边界时,该算法能够有效地实现数据的分离与划分。这种划分方式更为科学合理,并且通过这样的划分方式实现了显著提升的分类准确率
cluster assumption 在这篇2005年的论文中说明了理论。
- 熵正则化
在该文章(2006年)中详细阐述了熵正则化的原理及其应用。这种技术为无标注数据的最大后验概率估计提供了有效的解决方案。通过最小化类条件熵(即类概率的条件熵),从而在无需密度建模的情况下有效地分离出低密度区域。

pesudolabel_3
在该式中,熵衡量的是不相交类别的数量;当熵值较小时,在减少类别间重叠的同时(即当类别之间的重叠程度降低时),数据样本的密度也随之减小。
最大化后验概率估计:

pesudolabel_4
在这个数学表达式中,在线性模型中第一项对应于有标注样本的情况达到最高概率,在无标签样本的情况下第二项被最小化从而导致数据点分布密度最低这使得模型在泛化能力方面得到了显著提升综上所述通过优化这两项模型能够更好地适应未标记的数据集并提高其泛化性能
- 以伪标签作为熵正则化进行训练
分别考察上下文中提及的公式(18)与公式(15)。观察发现,在第一个部分中两者的表达具有对应关系,在第二个部分中同样存在这样的关联性。由此可见,在这种情况下伪标签的方法等效于应用了熵正则化技术。
通过引入伪标签的训练策略,在无标注数据样本中实现了熵值的降低,并将决策边界置于数据样本密度较低的位置上;这进一步提升了分类模型在未知类别上的泛化能力
算法2:Temporal Ensembling for Semi-Supervised Learning
2017年的文章
算法思想
本文重点探讨了两个模型的第一个是 II 模型。其网络架构以及算法流程图如图所示。
- II Model

temporalensambilg_1
根据以上结构图简要介绍算法的操作流程。
在模型训练过程中,默认给定一张输入图片会通过随机噪声干扰以及Dropout机制的作用后经历网络处理并生成两个不同的特征表示Zi和Zi'。整个损失函数由两部分组成其中第一部分为基于带有标签的数据集计算的交叉熵损失函数仅用于包含标签数据的情形而第二部分则采用均方误差(MSE)作为惩罚项用于约束这两个不同特征表示之间的差异性该方法适用于所有样本来确保模型对带标签与非带标签数据都能进行有效的学习过程在此基础上引入动态权重策略来平衡这两项损失函数的重要性具体而言权重系数w(t)会随着时间t的变化而不断调整在模型刚开始训练阶段为了保证带标签数据对模型学习的基础作用因此交叉熵损失项在整个损失计算中占据主导地位而随着训练进程的推进第二种MSE惩罚项的重要性逐步提升以实现模型对复杂数据分布的学习能力

temporalensambling_3
- Temporal ensembling
这个算法模型与II model基本一致,针对II Model作了一些改进。
- 因为II Model在每一个时间步(step)都需要对两个独立的子模型分别进行一次完整的推理过程才能获得当前状态信息(即 Zi 和 Zi'),这种做法虽然直观易懂但会导致冗余计算的发生并最终降低整体计算效率。
- 在Temporal ensembling 模型架构中, 通过单次推断即可获得当前状态信息(即 Zi), 而 Zi' 则来源于前一段时期内基于 Z 的加权平均结果, 这种设计使得 Zi' 可以有效地继承历史数据的影响并帮助维持系统的稳定运行。

temporalensambling2

temporalensambling_4
算法3:The typical average teacher serves as more effective role models: These weight-averaged consistency targets serve as the foundation for enhancing semi-supervised deep learning results.
2018年的文章
论文主要针对temporal ensambling系统性地优化了其性能的一些不足,并在此基础上提出了一种改进方案。该方法通过动态加权机制对每个训练样本的label预测结果实施动态调整,并引入了新的损失函数计算策略以缓解同一目标预测值之间出现的一致性问题。值得注意的是,在传统temporal ensambling框架下,在单个epoch阶段仅能完成一次参数更新任务这一限制使得其难以应对大规模数据集以及在线学习场景下的需求。因此,在所提出的算法中作者摒弃了对label prediction结果直接施加指数移动平均的做法而转而对teacher模型中的权重参数进行了动态更新处理以实现每一步骤内的参数优化从而有效规避了上述限制条件同时显著提升了系统的识别精度
算法思想
- 因为标注数据的费用过高, 所以考虑通过正则化手段利用未标注样本来降低深度学习模型的过拟合问题。
- 在图像分类模型中, 当输入图像发生轻微变化时, 希望模型仍能输出相同的预测结果。为此, 可以在输入端加入噪声(数据增广data augmentation)以增强模型鲁棒性, 或采用如dropout等正则化策略进一步提升性能。
- 由于未标注样本的分类损失无法直接计算, 因此单独对其进行正则化处理并不能构成有效的主动半监督学习方法。针对这种情况, 需要对每个样本在有噪声与无噪声情况下的预测一致性损失(MSE)进行评估。
- 采用学生-教师模型框架, 学生模型通过正常训练获得预测结果, 教师模型生成目标预测值后反向指导学生模型进行预测。然而由于教师模型本身存在偏差, 这会导致生成的目标值出现大量预测偏差。如果给予较高权重, 一致性损失将急剧上升导致误判问题。可以通过优化目标值的质量来改善整体效果。
- 提升目标值质量的方法有两种: 第一种是借鉴VAT方法通过巧妙选择扰动而非直接添加加性或乘性噪声; 第二种则是通过精心选择教师网络而非简单复制学生网络(本文采用该策略)。
- 在不额外训练的情况下期望从学生网络中获得更好的教师网络模型是不可行的。因为softmax激活函数在训练集外难以产生精确预测结果, 在推理阶段向输入添加噪声类似于模拟测试集增强(TTA), 而这种方法已被证明能带来良好效果。
- 本文算法基于时间采样策略并结合EMA更新机制, 在大规模数据集和在线学习场景中展现出更好的适用性和优越性
算法介绍

如上图所示,在教师型模型(Teacher Model)中引入学生的指数加权平均权重来进行更新操作。这一过程不仅能够提升顶层神经元(top layer neurons)的激活强度,并且能够同时优化各层神经元(layer neurons)的表现质量。从而能够显著提升整个神经网络的表现水平。
相较于Temporal Ensambling算法而言,该方法具有两个显著的优势:首先,在教师模型生成了更为精准的target labels的基础上,在教师与学生模型之间的反馈传递过程中能够收敛得更快并表现出更高的准确性。其次,在大规模数据集以及在线学习场景中展现出良好的扩展性。
损失函数采用一致性损失(均方误差损失MSE):

权重的移动平均:

Algorithm 4: Virtual Adversarial Training: A Regularization Method for Supervised and Semi-Supervised Learning
Algorithm 4: Virtual Adversarial Training: A Regularization Method for Supervised and Semi-Supervised Learning
2018年的文章
算法思想
本研究提出了一种新型的正则化方法,在此过程中我们引入了vat这一技术手段
注
为了增强模型在面对未知数据时的表现(鲁棒性),首先向输入样本添加噪声,并促使模型对这些带噪声的样本产生一致的响应(一致性正则化)。
当引入各向同性类型的随机扰动,并对输入图像执行随机的数据增强处理时,在模型中某些特定方向上的perturbation效果较为不足。这种情况下,在模型中某些特定方向上的perturbation效果较为不足。这种情况下,在模型中某些特定方向上的perturbation效果较为不足。这即为抗ago perturbation的方向。因此需要添加相应的antago perturbation来弥补这一缺陷。为了实现对model output distribution的最大化影响,在antago perturbation的选择上应着重考虑能够造成model output最大变化的方向。对于NN model而言,在negative gradient direction上model loss descent速度最快——这表明该direction是model optimization速度最快的区域。为了实现最大的output distribution变化,则应选择positive gradient direction作为antago perturbation的方向——该direction也是model loss descent速度最慢的区域。
文中强调了虚拟对抗扰动在无标注数据集上的有效性。即使没有标签信息也能识别出虚拟抗干扰的方向。文中定义了LDS(Local Distributional Smoothness)作为衡量模型在特定方向上的分布鲁棒性,并提出了一个创新性的训练策略。通过有效的近似技术来提高模型的最大似然估计效果,在每个训练输入数据点上都提高了模型的LDS值。这种方法正是我们常说的VAT(Virtual Adversarial Training)。
VAT的优点:
- 被广泛应用于半监督学习领域
- 该方法被设计为适用于所有需要评估输入与参数梯度的参数化模型
- 具有较少超参数设置
- 参数不受正则化机制的影响
针对这一优点,在研究如何提升模型性能的过程中,在神经网络领域需要通过求解最优化问题来确定虚拟对抗的方向。具体而言,在神经网络(Neural Network)的情况下,则必须计算输入与输出之间的梯度;而该方法提供了一个较为简洁且有效的解决方案,并且可以将其直接应用于神经网络模型中以实现性能提升。
第四点而言,在Lp范数正则化的情况下,通过有效的参数控制实现了较好的效果;然而,在具有较高非线性度的模型中,则表现出较低的效果表现;这要求必须保持参数数量不变以实现有效的正则化。
算法细节
对抗训练:

VAT_1
散度D被定义为衡量两个概率分布之间的差异程度。在面对特定扰动时,默认情况下无法获得精确计算radv的结果;然而,在实际应用中可以通过对散度D在r处进行泰勒展开来近似计算radv,并且这一过程会受到l2正则化的约束

VAT_2
l无穷正则化:

VAT_3
与传统的对抗训练相比,虚拟对抗训练的主要区别在于它特别针对未标注的大龄样本进行半监督学习任务处理,并由此导致其发散程度为:

VAT_4
针对未标注的数据集,在数据分布变化较大的情况下
因此在这篇文章中采用现在的估计值p(y|x,θ^)取代q(y|x).

VAT_5
其中x*中包含了标记和未标记的数据样本。针对每个输入数据点而言,LDS为当前模型设置了负面的标准,该指标数值越低,表明模型在该输入点上表现得越平滑,而正则化项则是所有数据点上LDS指标值的平均值。

VAT_6
那么整个的目标函数就是:

VAT_7
其中,第一项是有标注数据的交叉熵。
算法5:mixup: BEYOND EMPIRICAL RISK MINIMIZATION
2018年的文章
在监督学习框架下, 通过最小化训练数据集上的平均损失来进行模型优化, 这一策略等价于经验风险最小化(ERM)。其本质即为对训练样本特征的学习过程. 然而过度 memorization 可能会损害其泛化性能(如前所述)。然而当遇到新的数据分布情况时(未见过的数据实例),尤其是测试集中的实例时, ERM 不能保证模型具有很强的泛化能力
后来的研究方法旨在通过应用数据增广策略来实现邻域风险最小化(Vicinal Risk Minimization),以增强学习机在面对不同类别样本时的表现能力。然而,在同类间的样本处理上,常规的数据增广方法仅局限于对单个类别内的数据进行操作,并未涉及不同类别之间的融合。
本文的算法提出,采用mixup对不同类的数据进行数据增广。
对于不同类别的数据进行线性的操作混合。

mixup_1
基础操作通常表现出色,并且在后续的过程中取得了显著的效果。此外,在半监督学习阶段中,许多现有方法都采用了这一技术作为基础。
算法6:Interpolation Consistency Training in Semi-Supervised Learning
2019年的文章
算法介绍
该算法——Interpolation Consistency Training(其核心机制类似于上文介绍的mixup与mean—teacher集合),基于类似的方法设计了一种插值一致性训练策略。
miup的公式:

ICT_1
这个模型旨在建立一个分类器用于估计无标注样本点经插值后的连续预测结果:

ICT_2
其中theta‘为学生模型的参数的移动平均。
算法的网络结构:

ICT_3
类似mean-teacher的算法操作流程,不过多了插值的一个步骤。
算法流程:

ICT_6
文中提到的一些理论知识
- 聚类假设
如果两个样本各自被称作两个聚类的话,那么这两个样本倾向于被称作两个类别。这与前面几个算法所提及的低密度分离假设是等同的。也就是说,在数据分布密度较小的地方出现的学习机分类决策边界属于一致性正则化的内容。
一致性正则化旨在对应同一个输入样本的一个微小的扰动。这样学习机的预测仍然维持一致的结果。这等价于满足低密度分离假设。

ICT_7
- 一致性正则化的策略
采用一致性的正则化策略通常会在输入样本中加入随机扰动;然而这些随机扰动的效果并不理想;而VAT算法采用了一种更为有效的方法;它采用了能够使预测输出发生最大变化的具体扰动;这种方法要求计算预测输出对输入的变化率;对于大型神经网络模型而言计算开销过大;此外研究表明这种方法可能会影响模型的一般化能力
为了减弱随机扰动带来的不稳定影响,VAT方法揭示出其局限性.本文创新性地提出了ICT这一高效的一致性正则化方案.通过引入无标注样本u1与u2之间的插值方法来模拟扰动.该方案具有简便易行的特点.
- 插值策略的有效性
其有效性源于何处?其原因在于仅限于位于决策边界上的数据点更为关键;当对这些关键数据点施加扰动时,则可能导致该数据点被分类到不同的类别中;这有助于提升模型的整体泛化能力。
对于选中进行插值的两个数据点u1与u2,其能够出现以下三种情况:
- 所有样本被归入同一类别
- 样本虽分属不同类别但最终被分类为同类
- 样本被分配到各自独立的类别中
3出现的概率最高;当无标注样本点位于决策边界时,其插值方向指向低密度区域;这样得到的新点可能会落在另一个聚类中;因此这一策略对一致性正则化表现出显著的优势.
在有监督训练过程中,通过应用mixup方法使模型对两类样本进行线性变换,在此过程中决策边界被引导远离类边界;因此借鉴了该方法的思想。
算法7:MixMatch: A Holistic Approach to Semi-supervise learning
2019年的文章
算法的思想
这个算法就是之前一些常用的半监督学习的paradigm(范式)的整合。
半监督学习常用的paradigm的整合,常用的方法有:
- 熵最小化
关于该方法的具体阐述已在《算法1:pesudo-label》一文中进行了详述。这一关键假设即为决策边界穿过数据分布密度较低区域这一特性。在pesudo label框架下,作者通过将高置信度预测值作为训练样本的目标,并将这些目标用于无标注样本标记的过程,则可有效地结合这两类信息并采用交叉熵损失函数来进行优化求解。这种设计使得模型得以实现对潜在标签的学习与推断,在理论上与基于真实标签的学习具有相似的效果但避免了直接依赖高质量标注数据的需求
在本文中研究者通过调用shapen函数以隐式的方式实现了交叉熵
- 一致性正则化
核心观点在于预测机制应保证在面对相同样本时产生一致性的预测结果。尽管样本可能受到干扰影响其质量或特性但在关键属性上保持恒定性。特别是在时间聚合方法中研究者采用滑动平均策略以减少不同时间尺度上的波动效应进而提升整体稳定性。具体而言该方法通过计算两个相邻时刻预测结果之间的误差程度并据此调整模型参数从而实现对潜在稳定性的约束这一过程可视为一种形式的一致性正则化措施。值得注意的是这种方法并非独有而是与经典的mean-teacher框架具有相似的功能即利用指数加权平均的方式持续优化模型参数最终达成一致性的目标这一机制不仅能够增强模型鲁棒性还为其长期性能表现提供了理论保障
mixmatch使用标注的data augmentation的方法实现一致性正则化。
- 一般正则化
一般正则化的主要目的是提升模型的泛化能力,降低过拟合。
该方法通过L2范数约束乘法模型的参数实现权重衰减作用于模型参数中,并且同样地采用mixup方法进行数据增强以提高训练效果
算法流程
带标签的数据集X与未标记的数据集U在数量上具有相等性。通过数据增强技术生成增强后的X'(包含标签信息)及U'(预设标签),分别对带标签的X'与预设标签的U'进行损失计算,并将其损失值L1与L2进行加权求和得到最终统一化的损失函数.

mixmatch_1
- 数据增广
采用数据增强技术处理具有标注和无标注的数据样本。将未标记的数据样本经过增强后得到K个增强图像,并通过上述K个增强图像推断可能的目标类别标签。

mixmatch_3
- label guessing
对于无标注样本的K个增广样本的预测值进行平均,得到:

mixmatch_2
然后利用sharpen函数隐式的实现熵的最小化。

mixmatch_4
其中p被定义为输入数据的分布,在此处等同于qb;而T被设定为温度超参数。当温度T趋向于零时,则该分布趋于Dirac(one-hot)分布。
- Mixup
首先整理所有的无标注与有标注的样本,qb为预测的label。

mixmatch_6
在治理方法上与以往工作相异之处在于对带标签和不带标签的样本进行混合;以便分别针对带标签和不带标签样本计算对应的损失;采用修正后的mixup方法。

mixmatch_5
在原始mixup方法中,在此方案下lambda'被设定为lambda值。其中alpha被视为超参数起作用于数据混合过程。随后我们记录无标记样本与带标签样本在一个batch中的出现顺序,并利用这一排列关系来计算两类样本之间的损失分隔值
超参数的论文最优设置可以参考原始论文。
Algorithm 8: ReMixMatch, a method for semi-supervised learning that aligns distributions through distribution alignment techniques while incorporating augmentation anchoring to enhance performance.
2020年的文章
算法思想
这篇文章是mixmatch算法的改进版本。
主要通过引入分布对齐技术以及增强增强学习方法来优化mixmatch算法性能。同时采用交叉熵损失替代均方误差(MSE),并结合CTAugs数据增强策略提升模型鲁棒性。
该技术的目标是使无标注数据集的分布情况与真实标签保持一致。
Augmentation Anchoring的功能是通过引入更多更强的数据增强手段来生成多组增强后的样本集合,并使得模型在面对同一无标注样本时的不同增强版本能够达成一致的结果。

remixmatch_1
Distribution Alignment(分布对齐)的主要功能就是使模型整体预测输出的概率分布与真实标签的边缘概率分布达成一致。通过提高输入与输出之间的互信息程度,基于这一理论,将分布对齐直接整合到mixmatch机制中以纠正被推测label的不确定性
首先, Augmentation Anchoring替代了mixmatch中的一致性强化技术,该方法特别适用于处理无标注样本的情况.具体而言,该方法首先通过生成轻度强化的数据来辅助生成多个深度强化的数据集.随后,将这些轻度强化数据集的预测结果作为深度强化数据集的目标标签.其中,针对深度强化数据的操作,本文采用了CTAugmentation这一技术手段来进行处理.
算法流程伪代码如下:

remixmatch_2
输入输出互信息:

remixmatch_3
第二项通过最小化熵来实现,并赋予某一类别更高的置信度;第一项旨在使模型在训练集上对各类别预测的概率均值相等;这一特性常被称作公平性
在mixmatch方法中应用sharpen操作以实现熵的最小化,并基于前面所述的分析考虑引入一个公平性的原则以平衡各标签之间的预测频率。在互信息公式的首项中表明其应使模型对每个标签具有相同的预测频率;然而,在数据集类别边缘概率分布p(y)呈现非均匀性的情况下这一目标未必能达到预期效果。
为了防止不必要的额外超参数以及对应的损失项被引入到系统中,并且避免增加额外的计算负担与复杂度,在算法设计中采用分布对齐的技术。在算法伪代码中具体涉及的操作包括步骤6、7及8的相关运算。
细节
- 为何不采用Auto Augmentation?
作者在mixmatch框架下采用了auto-augmentation的强大增强策略进行实验测试。然而该算法未能收敛,并推测其主要原因可能在于mixmatch采用了取平均操作而导致结果不可靠;而强化增强的方法可能会使预测产生不同的结果,在这种情况下取平均后的输出未必具有实际意义。
同时基于AutoAugmentation通过在有监督训练过程中进行搜索获得(强化学习)的方法需要依赖于大量标注数据然而在半监督学习环境中标注样本的数量有限因此不能使用这种增强方法
- CTAugmentation
因此文中作者基于控制理论的思想构建出CTAugmentaion这一技术方案,并未采用任何强化学习相关的训练方案。(我对该增强算法的具体运作原理尚不明确,在后续我可以查阅相关代码以进一步理解其工作原理)
- 最终模型的损失函数:
第一指标是基于带有标记数据的交叉熵损失;第二指标基于无标签数据经过mixup处理后的交叉熵损失;第三指标是经过强力增强的数据集所对应的交叉熵损失
第四项目采用rotation loss,在此过程中采用了自监督学习的思想,并将后续的样本划分为四类损失函数进行计算,并以四个不同的旋转角度进行计算

remixmatch_4
算法9:FixMatch Algorithm: Streamlining Semi-Supervised Learning through Consistency-Based and Confidence-Based Approaches
2020年的文章
算法思路
该算法具有极高的简单性。具体来说, 该方法结合了伪标签(Pseudo-Label)与一致性正则化(Consistency Regularization)机制。
- 通过弱化数据增强技术生成伪标签
- 设定一个置信度阈值后筛选出预测结果较高的伪标签
- 将产生的伪标签作为标注信息使用于经过强增强处理的图像,并采用常规交叉熵损失函数进行训练

fixmatch_1
损失函数由两部分组成,有监督训练的交叉熵,无监督交叉熵
有监督交叉熵针对具有标注的样本集合,在未采用强烈的增强数据增强的情况下,在轻微的数据增强策略下进行训练。

fixmatch_4
无监督交叉熵针对无标注样本:

fixmatch_5
最终的loss依然采用二者的加权。
更多技术文章请点击查看
