DivideMix:LNL、SSL算法的思考。

三、DIVIDEMIX: LEARNING WITH NOISY LABEL AS SEMI-SUPERVISED LEARNING

1.思想:同时训练两个网络,首先通过聚类(GMM)将标签噪声数据分为两部分:有标签数据(labeled set, 认为其是clean samples)和无标签数据(unlabeled set, 认为其是 noisy samples),然后基于两数据集以半监督的方式训练模型。

2.算法

3.参数详解

       θ(1), θ(2) 是DNN1和DNN2的参数。

τ 是clean概率阈值。超过该阈值,认为是有标签的(clean)。否则认为是无标签的(noisy)。

       M是数据增强数量。MixMatch内容,详见后文。

       T是锐化温度。MixMatch内容,详见后文。

       λu是无监督损失权重。是超参数,控制cleannoisy两部分损失比例,代码中clean部分数据的权重为1

       αBeta(α,α)的参数。MixMatch内容,详见后文。

4.过程详解:

WarmUp(预热):

       目的:为了算法的初始收敛,使GMM能够通过各sample的损失分得开clean和noisy。(通过warm_up次迭代,warm_up是超参数,是代码中的变量名。)

       方法:这里是使用全部数据集!!!分别训练两个模型!!!(白话说就是这个阶段都是用全部数据集,各自玩各自的。各迭代wram_up次,当噪声不同的时候,使用了不同的损失函数而已。)

       损失函数

              对称噪声: 交叉熵损失函数

lθ={li}i=1N={-c=1Cyiclog⁡(pmodelcxi)}i=1N

非对称噪声: 带惩罚项H(θ)的交叉熵损失函数lθ+ H(θ)

H(θ)={c=1Cpmodelcxilog⁡(pmodelcxi)}i=1N

GMM(co-divide阶段):

       目的:将原始数据划分为clean和noisy两个部分。

步骤

在WarmUp后得到两个模型,分别计算所有数据的损失并归一化(max-min标准化),然后使用GMM模型(n_components=2),使用EM算法对归一化损失拟合及预测,找到每个样本数据具有最小均值的那个component,提取属于该component的预测概率prob。根据超参数τ将prob变为pred(>τ的为True,反之为False)。

再根据pred找到True和False的索引,根据这些索引将数据集划分为clean和noisy。i.e., labeled和unlabled。再通过GMM1模型得到的clean和noisy训练DNN2,通过GMM2模型得到的clean和noisy训练DNN1。

MAugment:

  

疑惑: 代码中并没有M这个显式的超参数,不明白这里为什么有两个inputs_x、inputs_x2?通过debug,这两个是不一样的。猜测这是数据增强,应该在加载数据集的代码中,具体体现未知,难道是transform?

       co-guessing: 使用两个DNN,分别对inputs_u和inputs_u2预测,得到4个预测的结果。求这4个预测结果进行softmax,再进行temperature sharpening得到ptu,然后再归一化(除以他们的和)得到target_u(这是小数?)。

       co-refinement: 对于两个inputs_x、inputs_x2,使用训练中的DNN分别预测,得到两个输出,然后求平均,再使用另一个网络的clean prob进行计算。

然后再进行temperature sharpening,再归一化。

MixMatch:

通过Beta(α,α)获得随机数λ,然后求λ=max(λ,1-λ),然后把获得的所有输入inputs_x, inputs_x2, inputs_u, inputs_u2拼接(dim=0)得到all_inputs,输出targets_x, targets_x, targets_u, targets_u拼接(dim=0)得到all_outputs。然后进行:

这里的算法: 将其打乱索引再创建一份,然后混合得到mixed_input和mixed_target。

       然后把混合后的带入训练的网络DNN,计算Lx, Lu, Lreg, 相加得到总损失。这里的lamb采用了截断函数clip(current-warm_up,0,1),因为warm_up无Lu

更新参数: SGD

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值