半监督学习将再度兴起!谷歌祭出大杀器:无监督数据增强-程序员宅基地

近日,谷歌AI发布了一篇博文,博文指出可以对无标注数据执行数据增强,从而显著提高了半监督学习(SSL)的性能,因此研究人员相信"半监督学习将再度兴起!"

 

以下是具体内容:

 

很大程度上,影响深度学习成功的关键因素有:算法的进步、并行处理硬件(GPU / TPU)以及大规模标注数据集的可用性(如ImageNet)。

 

然而,当标注数据稀缺时,很难通过训练使神经网络表现良好。这种情况下,研究人员可以应用数据增强技术,例如:通过转述一个句子或旋转一个图像,可以有效加的训练数据量。

 

近来,在用于自然语言处理(NLP)、视觉和语音等领域的数据增强方法上,已经取得了重大进展。遗憾的是,数据增强通常仅限于监督学习,在这种学习中,标签需要从原始示例迁移到扩展示例。

 

640?wx_fmt=png

基于文本(顶部)或基于图像(底部)的训练数据的增强操作示例。

 

在近来的工作中《用于一致性训练的无监督数据增强(UDA)》一文中,我们发现可以对无标注数据执行数据增强,从而显著提高半监督学习(SSL)的性能。

 

基于此,我们相信SSL会再度兴起,理由如下:

 

(1)SSL可以匹配甚至优于使用更多标记数据的纯监督学习。

 

(2)SSL可用于文本和视觉的跨领域工作。

 

(3)SSL可结合迁移学习,例如,在BERT的微调。

 

GitHub传送门:

https://github.com/google-research/uda

 

无监督数据增强

 

无监督数据增强(UDA)同时使用标记数据和未标记数据。为了使用标记数据,UDA使用监督学习的标准方法来计算损失函数以此来训练模型,如下图左侧所示。

 

对于未标注的数据,在一致性训练中,应用于强制未标注的示例和增强未标注的示例的预测相似。如图右侧所示。

 

在这里,将相同的模型应用于未标注的示例和增强的对应示例,以生成两个预测模型,从中计算一致性损失(即两个预测分布之间的距离)。然后,UDA通过联合优化标注数据的监督损失和未标注数据的无监督一致性损失来计算最终的损失。

 

640?wx_fmt=png

关于无监督数据增强的概述

 

左:  使用标注数据计算标准监督损失。右:使用未标注的数据,计算示例与其增强版本之间的一致性损失。

 

通过最小化一致性损失,UDA可将标注信息从已标注示例传播到未标注示例。直观地说,可以将UDA看作一个隐式迭代过程。

 

首先,该模型通过少量标记示例正确预测一些未标注的示例,通过一致性损失将标注信息传播到到增强的对应项中。

 

随着时间的推移,将会正确预测更多未标注的示例,这反映了模型被普遍改进。其他各类噪音也经过了一致性训练的测试(如高斯噪声、对抗性噪声等),然而,我们发现数据增强比这些表现都好,从而在语言到视觉的各种任务上都达到了最先进的水平。UDA根据任务不同应用(包括反向翻译、自动增强和TF-IDF单词替换)等不同的增强方法,

 

NLP和计算机视觉的基准

 

在IMDb的情绪分析任务中,只用20个标记示例,UDA通过50000个未标记的示例,实现了4.20的错误率。在之前的模型训练中,UDA使用25,000个标记的示例,错误率为4.32。上述结果表明,在低数据环境下,UDA更有效。大数据体制下,UDA使用完整的训练集,提供了巨大的收益。

 

640?wx_fmt=png

IMDb的基准是一种情绪分析任务。在不同培训规模的监督学习中,UDA最先进。

 

在CIFAR-10半监督学习的基准上,UDA的性能比现有的SSL方法(如VAT、ICT和MixMatch)都要好得多。

 

使用4k的示例,UDA的错误率为5.27,与使用50k示例的全监督模型的性能相匹配。此外,由于采用了更先进的体系结构PyramidNet+ShakeDrop, UDA实现了2.7的最新错误率,与之前最好的半监督结果的错误率相比降低了45%以上。

 

在SVHN上,UDA使用250个标注的样本,错误率是2.85,与经过~70k标注样本训练的全监督模型的性能相匹配。

 

640?wx_fmt=png

基于CIFAR-10的SSL基准测试是一个图像分类任务。UDA超越了所有使用Wide-ResNet-28-2结构的半监督学习方法,在4000个示例中,UDA的性能与50,000个示例的完全监督设置相匹配。

 

在ImageNet上,使用10%标注的示例时,UDA将top-1的准确率从55.1%提高到68.7%。在高数据状态下,使用完全标注集和额外130万个未标注的示例,UDA将top-1的精度从78.3%提高到79.0%。

 

参考链接:

https://ai.googleblog.com/2019/07/advancing-semi-supervised-learning-with.html

 

 

欢迎关注磐创博客资源汇总站:http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:http://pytorch.panchuang.net/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fendouaini/article/details/95559093

智能推荐

基于51单片机冰箱温度控制器设计_基于51单片机的智能冰箱控制系统设计-程序员宅基地

文章浏览阅读871次,点赞11次,收藏3次。*单片机设计介绍, 基于51单片机冰箱温度控制器设计。_基于51单片机的智能冰箱控制系统设计

ubuntu创建sftp和ftp服务器及相应的用户管理_ubuntu sftp服务器查看用户和密码-程序员宅基地

文章浏览阅读4.8k次。一、sftp服务器进入root模式(下面的操作默认都是在root用户下)#安装openssh-serverapt-get install -y openssh-server创建sftp的组和用户#创建sftp-users组groupadd sftp-users#创建sftp用户目录alicemkdir /home/alice#创建sftp用户alice,并且绑定其主目..._ubuntu sftp服务器查看用户和密码

关于在simulink中使用s-function后出现State derivatives returned by S-function during flag=1 call must be a rea_state derivatives returned by s-function 'pmsm' in-程序员宅基地

文章浏览阅读5.9k次,点赞9次,收藏16次。解决了在simulink中使用s-function遇到的报错:State derivatives returned by S-function 'demo' in 'test/S-Function' during flag=1 call must be a real vector of length 2 _state derivatives returned by s-function 'pmsm' in 'ipmsm/ipmsm/s-function1

Sublime Text 关闭自动更新 | Mac_mac sublime text 取消更新提示-程序员宅基地

文章浏览阅读3.1k次。1. 打开配置文件Mac 如下图2. 在文件内部添加这段文字,就可以了:"update_check":false _mac sublime text 取消更新提示

Linux系统下DNS配置指南_linux 服务器修改网络dns-程序员宅基地

文章浏览阅读548次,点赞10次,收藏6次。Linux系统下DNS配置指南_linux 服务器修改网络dns

Springboot/java/node/python/php基于springboot+vue手机售后管理系统【2024年毕设】-程序员宅基地

文章浏览阅读779次,点赞19次,收藏24次。springboot微信小程序的小疾病问诊服务系统的设计与实现。springboot基于spring的物业管理系统的设计与实现。springboot基于Java的高校学生请假系统。ssm基于Android的购物商场APP设计与实现。springboot基于微信小程序的智慧校园系统。ssm基于Android的英语词典的设计与开发。ssm基于SSM+Vue的学生实践管理平台开发。ssm基于android的企业员工考勤系统。ssm基于web的暗香小店系统的设计与实现。ssm基于Web的高等学校公费医疗管理系统。

随便推点

mpi4py 中的单边通信相关操作_win.fence() win.free()-程序员宅基地

文章浏览阅读511次。本文从本人简书博客同步过来在上一篇中我们简要地介绍了 mpi4py 中的单边通信概念,下面我们将介绍单边通信的相关操作。创建/释放窗口对象注意:在使用单边通信操作之前,所有进程都须通过共同参与的创建窗口操作公开声明自己可供访问的内存空间。创建和释放窗口对象的方法(MPI.Win 类方法)接口如下:Create(type cls, memory, int disp_unit=..._win.fence() win.free()

MIT 6.824 Lab1 MapReduce实现思路_mitmapreduce实现csdn-程序员宅基地

文章浏览阅读551次,点赞23次,收藏7次。mit6.824的lab1,实现MapReduce_mitmapreduce实现csdn

使用Android studio创建一个简单项目_android studio简单项目-程序员宅基地

文章浏览阅读6.6k次,点赞10次,收藏82次。在刚开始学Android开发时,下载好了Android studio,但是不知道如何下手,现在就通过一个简单的小项目熟悉如何使用这个软件进行Android开发。前提:下载好Android studio并配置好相关环境。首先介绍一下Android开发过程中需要修改的三类文件:位于java包下的各类activity文件:实现了用户与软件的交互,主要为java代码实现。位于res包下的.xml文件:在layout包里的为布局文件,即Android界面显示的视图,而drawable里则放置了某个控件的_android studio简单项目

Bootstrap 弹出框-程序员宅基地

文章浏览阅读3.5k次。一、Bootstrap 弹出框弹出框控件类似于提示框,它在鼠标点击到元素后显示,与提示框不同的是它可以显示更多的内容。注意: 弹出框要写在 jQuery 的初始化代码里: 然后在指定的元素上调用 popover() 方法。1.1 基本弹出框通过向元素添加 data-toggle=“popover” 来来创建弹出框。title 属性的内容为弹出框的标题,data-content 属性..._bootstrap 弹出框

基于Wemos D1 Mini Pro开发板的天气显示器_arduino wemos d1 mini-程序员宅基地

文章浏览阅读226次,点赞2次,收藏3次。本项目设计了一款可以触摸控制的天气显示器。主要由Wemos D1 Mini Pro和TFT显示屏组成,利用Wemos D1 Mini Pro作为设备的主控芯片,发出Wi-Fi信号并接收相应指令,通过调用API将接收到的信息传输到TFT显示屏,TFT显示屏将接收到的信息显示出来。该天气显示器实现对所在地区当前的时间与日期;当日的天气信息,如温度、压力、湿度、降雨量;七天的未来预测等功能的显示。设计采用Wemos D1 Mini Pro,利用API将实时获取的天气信息,通过TFT显示屏显示出来。_arduino wemos d1 mini

Android 双屏异显(兼容android8)_android service 检测是否双屏-程序员宅基地

文章浏览阅读653次。public void initDiffDisplay() { try { DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); Display[] presentationDisplays = displayManager.getDisplays(); if (presentationDi._android service 检测是否双屏

推荐文章

热门文章

相关标签