热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[半监督学习]ReMixMatch:SemiSupervisedLearningwithDistributionAlignmentandAugmentationAnchoring

改进了MixMatch半监督学习算法,引入了两种新技术:分布对齐(DistributionAlignment)和增强锚定(AugmentationAnchoring).分布对齐鼓励

改进了 MixMatch 半监督学习算法, 引入了两种新技术: 分布对齐(Distribution Alignment)和增强锚定(Augmentation Anchoring). 分布对齐鼓励未标记数据预测的边际分布接近真实标签的边际分布. 增强锚定将输入的多个强增强版本输入到模型中, 并鼓励每个输出接近同一输入的弱增强版本的预测.


在 MixMatch 的基础上, 原作者自己提出了改进版本: ReMixMatch. 关于 MixMatch 的介绍, 可以参考上一篇文章: https://blog.csdn.net/by6671715/article/details/122766432?spm=1001.2014.3001.5501.

ReMixMatch 与 MixMatch 主要的区别在于, ReMixMatch 改进了两个地方: 分布对齐, 增强锚定.


分布对齐(Distribution Alignment)

在这里插入图片描述
Distribution Alignment 强制要求未标记数据的预测集合与提供的标记数据的分布相匹配, 即根据有标签数据的标签分布, 对无标签的"猜测"标签进行对齐.

Distribution Alignment 可描述如下: 在训练过程中, 我们保持模型对未标记数据的预测的平均值, 称之为 p~(y)\tilde{p}(y)p~(y). 给定模型对未标记示例 uuu 的预测 q=pmodel(y∣u;θ)q=p_{model}(y \vert u; \theta)q=pmodel(yu;θ), 我们通过比率 p(y)/p~(y)p(y)/ \tilde{p}(y)p(y)/p~(y)qqq 进行缩放, 其中 p(y)p(y)p(y) 为标签数据的标签分布, 然后重新规范化结果以形成有效的概率分布: q~=Normalize(q×p(y)/p~(y))\tilde{q}=\mathrm{Normalize}(q \times p(y)/ \tilde{p}(y))q~=Normalize(q×p(y)/p~(y)), 其中 Normalize(x)i=xi/∑jxj\mathrm{Normalize}(x)_i=x_i/\sum_j x_jNormalize(x)i=xi/jxj. 然后, 我们使用 q~\tilde{q}q~ 作为 uuu 的标签猜测, 并像 MixMatch 一样进行锐化和其他处理.


增强锚定(Augmentation Anchoring)

在这里插入图片描述
在 MixMatch 中, 通过对无标签数据做 KKK 次增强后取平均得到猜测标签, 再与通过对标签数据做 KKK 次增强后的结果做一致性正则.
在 ReMixMatch 中, 对同一无标签数据使用弱增强和强增强, 前者直接指定为猜测标签, 后者再与前者做一致性正则.

在少标签 SSL 情况下, AutoAugment, RandAugment 方法存在一些问题, 因此, 开发了 CTAugment, 一种设计高性能增强策略的替代方法. 与 RandAugment 一样, CTAugment 还对变换进行统一随机采样, CTAugment 不需要在有监督的代理任务上进行优化, 并且没有敏感的超参数, 因此可以直接将其包含在半监督模型中, 以在半监督学习中进行更积极的数据增强实验.


损失函数(Loss Function)

ReMixMatch 算法描述如下:
在这里插入图片描述
ReMixMatch 算法同时还输出 U^1\hat{\mathcal{U}}_1U^1, 它由每个未标记图像的大幅增强版本及其猜测标签组成. U^1\hat{\mathcal{U}}_1U^1 还用于两个额外的损失项, 除了提高稳定性外, 还提供了性能的轻微提升, 损失函数如下:
∑x,p∈X′H(p,pmodel(y∣x;θ))+λU∑u,q∈U′H(q,pmodel(y∣u;θ))+λU^′∑u,q∈U′H(q,pmodel(y∣u;θ))+λr∑u∈U1′H(r,pmodel(r∣Rotate(u,r);θ))\sum_{x,p\in\mathcal{X}'} \mathrm{H}(p,p_{model}(y\vert x;\theta))+\lambda_{\mathcal{U}}\sum_{u,q\in\mathcal{U}'} \mathrm{H}(q,p_{model}(y\vert u;\theta))+\lambda_{\mathcal{\hat{U}'}}\sum_{u,q\in\mathcal{U}'} \mathrm{H}(q,p_{model}(y\vert u;\theta))+\lambda_{r}\sum_{u\in\mathcal{U}_1'} \mathrm{H}(r,p_{model}(r\vert \mathrm{Rotate}(u,r);\theta)) x,pXH(p,pmodel(yx;θ))+λUu,qUH(q,pmodel(yu;θ))+λU^u,qUH(q,pmodel(yu;θ))+λruU1H(r,pmodel(rRotate(u,r);θ))
将自监督学习(Self-supervised learning)的思想应用于 SSL 可以产生强大的性能. 所以通过旋转每个图像 u∈U1′^u \in \hat{\mathcal{U}_1'}uU1^ , Rotate(u,r)\mathrm{Rotate}(u,r)Rotate(u,r) 来整合这个想法, 其中从 rrr 均匀地采样旋转角度 r∼{0,90,180,270}r \sim \{0,90,180,270\}r{0,90,180,270}, 然后要求模型作为四类分类问题预测旋转量.

代码地址: https://github.com/google-research/remixmatch


推荐阅读
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
author-avatar
手机用户2502857113
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有