[半监督学习] Temporal Ensembling for Semi-Supervised Learning

论文地址: Temporal Ensembling for Semi-Supervised Learning
代码地址: https://github.com/s-laine/tempens
会议: ICLR 2017
任务: 分类

self-ensembling

self-ensembling 即自集成, 自己集成自己. 对于神经网络来说, 一个样本如果多次送入网络, 能够产生多个模型预测结果, 这些结果可以进行融合, 同时在不同的 batch 训练之后, 模型的参数也会发生变化, 参数可以进行融合, 因此, self-ensembling 的套路在于集成模型预测结果或者模型参数.

论文中提出两种自集成的实现: Π \Pi Π-model, Temporal ensembling

文中符号定义如下:

  • N N N 为训练集大小.
  • M M M 为带标签的样本个数.
  • { x i } i = 1 N \{x_i\}_{i=1}^N {xi}i=1N 为训练集中的每个样本 .
  • L L L 为每个样本的索引集合, 且 ∣ L ∣ = M \vert L \vert =M L=M.
  • 对于每个 i ∈ L i \in L iL, 对应一个正确的标签 y i ∈ { 1 , … , C } y_i \in \{1,\dots,C\} yi{1,,C}, C C C 为不同类别的数量.
  • w ( t ) w(t) w(t) 为无监督权重 ramp-up 函数.
  • f θ ( x ) f_\theta(x) fθ(x) 为具有可训练参数 θ \theta θ 的随机神经网络.
  • g ( x ) g(x) g(x) 为随机输入增强函数.
  • α \alpha α 为 ensembling momentum.

Π \Pi Π-model

模型中损失函数由两个部分组成: 1.标准交叉熵损失, 仅针对有标记输入进行评估. 2.对无标记输入进行评估, 取预测向量 z i z_i zi z ~ i \tilde{z}_i z~i 之间的均方差. 为了结合监督和非监督损失项, 在之后通过加权函数 w ( t ) w(t) w(t) 进行缩放操作.

训练过程的每一个 epoch 中, 一个标签样本前向传播两次, 通过 data augmentation 和 dropout 注入扰动, 由于前向传播两次, 所以得到两个预测向量 z i z_i zi z ~ i \tilde{z}_i z~i, 然后计算均方误差. 基于一致性正则化, 模型希望在注入扰动后得到的结果应该与原来一致, 所以, Π \Pi Π-model 希望 z i z_i zi z ~ i \tilde{z}_i z~i 尽可能一致.

对于有标签样本, 前向传播一次, 注入扰动后在预测值与真实值之间进行交叉熵计算. 最后将两个损失函数进行加权求和即为损失函数 l o s s loss loss.

Π \Pi Π-model 模型如下图所示:
在这里插入图片描述
需要注意的是, 由于 dropout 正则化, 训练期间的网络输出是一个随机变量. 因此, 在相同网络权重 θ \theta θ 下对相同输入 x i x_i xi 的两次评估会产生不同的结果. 此外, 高斯噪声和诸如随机平移之类的增强被评估了两次, 从而产生了额外的变化.

Π \Pi Π-model 算法流程如下图所示:
在这里插入图片描述
对于一个 mini-batch 中的所有 x i x_i xi:

  • 1.计算两次 augmentation 后的值, 分别为 z i z_i zi z ~ i \tilde{z}_i z~i.
  • 2.使用损失函数 l o s s loss loss 对参数 θ \theta θ 进行更新.
  • 重复1,2直到退出循环. 最终得到学习完成的参数 θ \theta θ.

在此实现中, 无监督损失加权函数 w ( t ) w(t) w(t) 从零开始 ramp-up, 这个权重随时间变化而变化, 即 time-dependent. 其在前 80 个 epoch 中沿着高斯曲线上升. 同时文中发现 ramp-up 的上升速度要足够慢才行, 不然, 网络很容易陷入退化的解, 无法获得有意义的数据分类.

下面代码来自 mean-teacher 中的 ramp-down 策略

def cosine_rampdown(current, rampdown_length):
    """Cosine rampdown from https://arxiv.org/abs/1608.03983"""
    assert 0 <= current <= rampdown_length
    return float(.5 * (np.cos(np.pi * current / rampdown_length) + 1))

Temporal ensembling

在这里插入图片描述
Π \Pi Π-model 相比, 训练过程的每一个 epoch 中, 一个无标签样本只前向传播一次, 而另一次则使用之前 epoch 得到的预测结果来充当, 具体做法为用指数平滑(EMA)来计算. 这时, 每个样本在每个 epoch 只通过了一次评估, 比 Π \Pi Π-model 的速度快了近2倍.
在这里插入图片描述

  • 1.初始化 Z Z Z, z ~ \tilde{z} z~, 分别为 N × C N \times C N×C 的预测结果矩阵和目标向量.
  • 2.在每个 epoch t 中, 对每个 mini-batch B B B 执行:
    • 评估增强输入的网络输出 z i ∈ B z_{i \in B} ziB.
    • 使用损失函数 l o s s loss loss 对参数 θ \theta θ 进行更新.
  • 3.通过指数滑动平均(EMA)更新 Z ← α Z + ( 1 − α ) z Z \gets \alpha Z+(1-\alpha)z ZαZ+(1α)z.
  • 4.通过偏差校正目标向量 z ~ ← Z / ( 1 − α t ) \tilde{z} \gets Z/(1-\alpha^t) z~Z/(1αt).
  • 循环结束后获得最终参数 θ \theta θ.
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Temporal Ensembling是一种半监督学习方法,它使用了时间上的一致性来提高模型的性能。该方法通过对未标记数据进行预测,并将预测结果与之前的预测结果进行平均,从而获得更加稳定和准确的预测结果。同时,该方法还使用了一个噪声注入技术来增加模型的鲁棒性。该方法已经在图像分类、语音识别等领域取得了很好的效果。 ### 回答2: Temporal Ensembling是一种半监督学习方法。它主要通过使用同一批数据的多个副本,在单批数据上进行迭代学习来提高预测模型的准确性。这种方法能够很好地利用已有数据中的潜在信息,同时也能避免因缺乏大量标注数据而损失准确性的问题。 Temporal Ensembling的核心思想是使用模型的历史预测结果来生成新的虚拟标签。在训练期间,模型不断地更新,同时不断生成新的“标注”,并将这些新的“标注”与原始标注数据一起训练。这样,模型可以从大量带有“标注”的数据中学习并逐渐提高其准确性。 Temporal Ensembling方法在许多学习任务中都展现出优良的性能,比如图像分类、物体识别、图像分割、语音识别等。其中,与其他半监督学习方法相比,Temporal Ensembling在半监督图像分类中的性能最为出色。 尽管Temporal Ensembling的性能非常出色,但是其中的一些问题仍需要解决。 首先,这种方法需要大量的GPU计算力和存储空间,并且需要复杂的算法设计。其次,由于该方法是基于生成虚拟标签的,因此,如果模型在未来预测错误而不正确地生成了虚拟标签,那么可能会产生负面影响。 总之,Temporal Ensembling是一种有效的半监督学习方法,其取得的结果显示出高水平的准确性。与其他方法相比,Temporal Ensembling具有更好的稳健性及效能。也因此,它在深度学习领域中被广泛应用。 ### 回答3: Temporal Ensembling是一种半监督学习技术,可以用于训练深度神经网络。该技术旨在利用未标记的数据来改善模型的泛化能力。在传统的监督学习中,我们需要分类器预测每个样本的标签,并将其与真实标签进行比较以计算损失函数。然而,在许多现实世界的场景中,标记数据的数量通常是有限的,这使得监督学习变得更加困难和昂贵。相反,在半监督学习中,我们将未标记的数据与标记数据结合在一起进行训练。 Temporal Ensembling的实现是基于一个假设,即相似的输入应该具有相似的潜在表示形式。具体来说,该技术通过在连续训练周期中收集了单次训练中的模型预测,通过将这些预测结果整合成一个移动平均版本来构建模型共识。这可以看作是把模型的预测提供给下一个周期的训练,让模型逐渐整合起来,在连续的训练周期中收集了对训练数据更准确的表示。在训练过程中,我们不仅使用真实标签来计算损失函数,还将平均预测意味着的交叉熵添加到损失函数中。这使得模型学习时能够尽可能地匹配模型共识中的数据。 虽然在许多情况下,半监督学习可以增加模型学习任务的效果,但它依赖于许多因素,包括未标记样本的数量、分布和标记样本之间的相似性。使用Temporal Ensembling时,需要做好降噪处理,适当选择数据能够真正提高该技术效果。此外,需要注意的是,Temporal Ensembling只能在没有过度拟合数据集时才能有效,因为此技术基于模型共识构建。在实际应用中,可以将Temporal Ensembling与其他半监督学习技术结合使用,以提高模型性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值