用GANs来做数据增强

news2024/11/22 5:23:12

适用于只有很少样本的情况。

即使是不完美的合成数据也可以提高分类器的性能。

生成对抗网络(Generative adversarial networks,简称GANs)由Ian Goodfellow于2014年推出,近年来成为机器学习研究中非常活跃的话题。GAN是一种无监督生成模型,它隐含地学习底层分布。在GAN框架中,学习过程是两个网络之间的极大极小博弈,一个生成器,生成给定随机噪声向量的合成数据,一个鉴别器,区分真实数据和生成器的合成数据。

生成对抗网络

逼真的生成图像(BigGAN, 2018)

GANs在许多领域的应用都取得了令人瞩目的成果,尤其是在计算机视觉领域。在这篇文章中,我们将探索GANs的一个不那么华丽但很有影响力的用例,即在监督学习中提高分类器性能的数据增强。

数据增强

获得更大的数据集是提高机器学习算法性能最可靠的方法之一 —— 用Andrew Ng的一句话来说,“数据量驱动机器学习过程”。在某些情况下,添加生成的或合成的数据(称为数据增强的过程)也可以提高性能。

最常见的方法是对现有数据应用一些转换。在图像分类的例子中,我们知道,例如,在移动或翻转一个猫的图像后,它仍然是一只猫的图像。因此,图像分类数据集通常会增加移位、翻转、旋转或颜色变化,以获得可能的最佳结果。

传统的图像数据增强

这里有一个问题:我们可以使用GAN来生成合成数据来改进分类器吗?在2019年4月的一篇论文:https://arxiv.org/pdf/1904.09135.pdf中,作者为一个二分类问题(癌症检测)生成了完全合成的数据。引人注目的是,他们展示了决策树分类器在这个完全合成的数据集上比在原始小数据集上训练时表现得更好。

然而,这似乎是一个例外情况,这种直接的数据增强方法在非常小的数据集上有更好的工作机会。在2017年的一篇论文中,使用深度学习的图像分类中的数据增强的有效性,作者发现使用GANs直接的数据增强不如其他增强策略有效。

少样本背景下的数据增强

因此,让我们修改一下我们的问题:如果我们有一个非常小的类作为一个更大数据集的子集,比如图像数据集中的一个罕见的狗品种,会怎么样?或者,如果我们正在训练一个欺诈分类器,但我们只有几个已知的欺诈例子,和许多非欺诈的例子,那该怎么办?这种情况被称为少样本学习,这被证明是使用GANs进行数据增强的一个更有前途的用例。但要解决这个问题,我们需要在GAN模型中包含类信息。

我们可以使用conditional GAN来实现这一点,在这个GAN中,类信息被提供给生成器。现在我们来讨论过去两年里的三种conditional GANs变体。

ACGAN: Cooperate on classification

conditional GAN的一个变体,称为ACGAN(辅助分类器GAN),除了区分真实数据和合成数据之外,还让鉴别器执行分类,损失函数包括用于分类的二元交叉熵项。除了学习生成总体真实的样本,这样还鼓励生成器学习不同类别样本的表示。这本质上是多任务学习:虽然生成器和鉴别器在生成的图像是真还是假上“竞争”,但他们在正确分类上“合作”。

DAGAN: learn a shared family of transformations for data augmentation

另一种变体叫做DAGAN (Data augmented GAN),它学习如何使用真实图像的低维表示来生成合成图像。在DAGAN框架中,生成器不是将一个类和噪声向量作为输入,而是本质上是一个自动编码器:它将现有的图像进行编码,添加噪声,然后解码。因此,解码器学习了大量的数据增强转换。

DAGAN生成器

DAGAN鉴别器一方面区分图像和变换后的版本,另一方面区分来自同一类的一对图像。因此,鉴别器激励解码器学习变换,这些变换不会改变类,但在变换后的图像需要与原始图像不太相似这一点上是不容易做到的。然而,DAGAN的一个关键假设是,相同的变换适用于所有类别 —— 这在计算机视觉环境中是合理的,但在欺诈或异常检测中就不那么合理了。

DAGAN的判别器

BAGAN: learning to balance imbalanced data

在另一个conditional  GAN的变体,称为BAGAN,自动编码器也用于生成器。自动编码器被预训练来学习整个数据集的分布。然后,对编码后的图像进行多元正态分布拟合。现在你可以从这些多元正态分布中采样,并将conditional 隐向量传递给生成器。与DAGAN不同,BAGAN为你提供了一个成熟的条件生成器,而不是对现有数据进行转换。它也可能比ACGAN在少量的背景下更好,因为VAE在拟合每个类的正态分布之前有学习整体分布的能力。

BAGAN框架

思考

尽管使用GANs进行简单的数据增强有时可以提高分类器的性能,特别是在非常小或有限的数据集的情况下,但使用GANs进行增强的最有希望的情况似乎包括迁移学习或少量学习。随着研究不断提高GAN训练的稳定性和可靠性,将GAN用于数据增强的快速进展将不足为奇。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

光栅尺磁栅尺编码器AB信号输入4倍频脉冲计数器,Modbus RTU模块

IBF153远程I/O模块,可以用来测量1路光栅尺磁栅尺编码器信号。 信号输入 1路光栅尺磁栅尺编码器信号输入,可接NPN和PNP信号,通过命令设置输入类型。 通讯协议 通讯接口: 1路标准的RS-485通讯接口。 通讯协议:支持两…

一篇文章搞定《Android嵌套滑动》

一篇文章搞定《Android嵌套滑动》 前言嵌套滑动冲突种类产生原因1、外部与内部滑动方向不一致2、外部与内部滑动方向一致3、多种情况下的嵌套(电商首页) 解决嵌套滑动的方法1、外部拦截法2、内部拦截法3、现有API框架 外部与内部滑动方向不一致1、ViewPa…

MySQL第三章、表的增删查改

目录 一、CRUD 二、新增(Create) 2.1单行数据 全列插入 ​2.2多行数据 指定列插入 ​编辑 三、查询(Retrieve) ​3.1全列查询 3.2指定列查询 3.3 查询字段为表达式 3.4 别名 3.5 去重:DISTINCT 3.6 排序…

docker-compose安装 rocketmq server、dashboard

目录 目录结构 nameserver安装 broker安装 控制台安装 测试效果 rocket分为3个服务:nameserver、broker、dashboard 这边我计划分开安装: 安装版本为4.5.0 目录结构 规划的结构 命令 mkdir -p /apps/rocketmq/namesrv/{config,data,logs} mkdir…

自动化测试-终章

自动化测试-终章 前沿 如果想做不需要人去点击使用程序做到真正的自动化测试思想,以下是我的思想,需要跟着我的思路来,我们做一个可以测试所有页面的增删改查功能是否好使 思想一 我使用的是Java 做自动化测试,我们现做一个简单的自动化 pom 需要引入 selenium-java 然后需…

Qt中的窗口类及其特点

目录 常用的窗口类 窗口的显示内嵌窗口 QWidget内嵌窗口演示 QWidget不内嵌窗口演示 QDialog类型的窗口特点 QMainWindows窗口的特点 总结 常用的窗口类 常用的窗口类有 3 个 在创建 Qt 窗口的时候,需要让自己的窗口类继承上述三个窗口类的其中一个QWidget 所有…

增量数据抽取技术

写在前面 本文隶属于专栏《大数据从 0 到 1》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见《大数据从 0 到 1》 正文 在数据仓库中要实现增量抽取&#x…

STL-string-1

stoi int stoi (const string& str, size_t* idx 0, int base 10);int stoi (const wstring& str, size_t* idx 0, int base 10); Convert string to integer 解析str,将其内容解释为指定基数的整数,该整数作为int值返回。 如果idx不是空…

QLoRa:在消费级GPU上微调大型语言模型

大多数大型语言模型(LLM)都无法在消费者硬件上进行微调。例如,650亿个参数模型需要超过780 Gb的GPU内存。这相当于10个A100 80gb的gpu。就算我们使用云服务器,花费的开销也不是所有人都能够承担的。 而QLoRa (Dettmers et al., 2023)&#x…

公司裁员不给赔偿怎么办?

阅读本文大概需要 1.61 分钟。 最近在星球回答球友问题的时候,发现不少人都提到裁员这个话题。 有球友说他们公司在裁员,但不想给赔偿。 领导给他的方案是把年假调休休了,然后再给三周找工作时间,这三周不用打卡,三周后…

茅塞顿开的C#代码——通用型科学计算器

计算器是经常遇到的编程作业。 一般都是实现加、减、乘、除四则运算的普通计算器。 这里介绍用几十行C#代码实现的复杂的《科学计算器》,可以计算各种函数。 不知道其他语言实现同样的功能需要编写多少行代码?20000行? using System; usin…

SpringBoot接口如何正确地接收时间参数

唠嗑部分 在做Java开发时,肯定会碰到传递时间参数的情况吧,比如用户的出生日期、活动的开始,结束日期等等,这些参数往往是由前端传递过来的,那么在SpringBoot项目中,该如何正确的接收日期参数呢&#xff0…

如果不小心上了电信黑名单,应该怎么妥善处理呢?

有些小伙伴们在处理不用的手机卡时,可能会粗心大意,认为不用了就用不了呗,存在欠费停机的情况下也没有及时的去补交欠费,然后销户,导致了自己不小心上了电信黑名单,那遇到这种情况,应该怎么妥善…

论文解读 | 利用图形卷积核在距离图像中实现高效的3D目标检测

原创 | 文 BFT机器人 01 摘要 该论文提出了一种基于范围图像的高效3D物体检测方法,通过利用图卷积核来提取每个像素周围的局部几何信息。 作者设计了一种新颖的2D卷积网络架构,并提出了四种替代内积核心的卷积核,以注入所需的三维信息。该方法…

GPT最常用的应用场景有哪些?

生成式预训练转换器(GPT)是一种深度学习模型,它能够根据给定的提示生成类似人类的文本,彻底改变了自然语言处理(NLP)领域。 聊天机器人和虚拟助手 GPT最受欢迎的应用程序之一是开发聊天机器人和虚拟助手。凭…

【Python 自然语言处理(NLP)】零基础也能轻松掌握的学习路线与参考资料

Python 自然语言处理(NLP)是目前人工智能(AI)发展中的重要领域。随着科技的不断进步,NLP已经被应用于文本自动摘要、机器翻译、语音识别、情感分析、问答系统等各项实际任务中。 要学习 Python 自然语言处理&#xff…

“河南省数字化转型与信息技术应用创新专家研讨会-政府数字化转型推动信创产业发展”专场活动成功召开

由《中国信息化》杂志社主办的“2023河南省数字化转型与信息技术应用创新专家研讨会——政府数字化转型推动信创产业发展”专场活动于5月27日,在郑州成功举办。本次活动由深圳竹云科技股份有限公司协办,由河南省测绘学会、中国信息主管平台支持。中国交通…

Windows 安装部署 MinIo

1、下载地址 安装包下载地址:https://min.io/download#/windows 2、安装目录 下载的是一个可执行文件 minio.exe 将其放到一个方便寻找的目录,我这里放在 D:\develop\minio 同时新建一个 data 文件夹,用来存储上传的文件 3、启动 MinIo 服…

Godot引擎 4.0 文档 - 第一个 3D 游戏

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Your first 3D game — Godot Engine (stable) documentation in English 你的第一个 3D 游戏 在这个循序渐进的教程系列中,您将使用 Godot 创建您的第一…

Java程序设计入门教程 -- 二维数组

二维数组创建 定义数组 声明二维数组 Java中二维数组的声明格式: 数据类型名[ ][ ] 数组名; 或 数据类型名 数组名[ ][ ]; 分配数组内存 常用格式: new 数组名[ M][N ] ; //M,N为数组行号和列号 分配数组内存 1)规…