Data Augment Approavhes in Natural Language Processing

数据增强

在自然语言处理中的数据增强方法主要可以分为三种:Paraphrasing, Noising, Sampling.

在这里插入图片描述

Paraphrasing:对句子中的词、短语、句子结构做一些更改,保留原始的语义

Noising:在保证label不变的同时,增加一些离散或连续的噪声,对语义的影响不大

Sampling:旨在根据目前的数据分布选取新的样本,会生成更多样的数据

各种方式的具体增强方法图如下:

在这里插入图片描述

Paraphrasing

这类方法根据替换的成分不同,又可以分为词、短语、句子级别。

在这里插入图片描述

Thesaurus:

利用词典、知识图谱等外部数据,随机将非停用词替换成同义词或上位词,如果增加多样性的话还可以替换成相同词性的其他词。
在这里插入图片描述

Advantage(s):

  1. Easy to use.

Limitation(s):

  1. The scope and part of speech of augmented words are limited.

  2. This method cannot resolve the ambiguity problem.

  3. Sentence semantics may be affffected if there are too many substitutions.

Semantic Embeddings:

利用语义向量,将词或短语替换成相近的(不一定是同义词)。由于每个词都有语义表示,可替换的范围更大。而上一种方法只能替换图谱里的。
在这里插入图片描述

Advantage(s):

  1. Easy to use.

  2. Higher replacement hit rate and more comprehensive replacement range.

Limitation(s):

  1. This method cannot resolve the ambiguity problem.

  2. Sentence semantics may be affffected if there are too many substitutions.

MLMs

利用BERT等模型,随机mask掉一些成分后生成新的

在这里插入图片描述

Advantage(s):

  1. This approach alleviates the ambiguity problem.

  2. This method considers context semantics.

Limitation(s):

  1. Still limited to the word level.

  2. Sentence semantics may be affffected if there are too many substitutions.

Rules

利用一些规则,例如缩写、动词变位、否定等,对句子一些成分进行改写,比如把 is not 变成 isn’t

在这里插入图片描述

Advantage(s):

  1. Easy to use.

  2. This method preserves the original sentence semantics.

Limitation(s):

  1. This method requires artifificial heuristics.

  2. Low coverage and limited variation.

Machine Translation

分为两种,Back-translation指把句子翻译成其他语言再翻译回来,Unidirectional Translation指在跨语言任务中,把句子翻译成其他语言

在这里插入图片描述

  1. Easy to use.

  2. Wide range of applications.

  3. This approach guarantees correct syntax and unchanged semantics.

Limitation(s):

  1. Poor controllability and limited diversity because of the fifixed machine translation models.

Model Generation

在这里插入图片描述

利用Seq2Seq模型生成语义一致的句子

  1. Wide range of applications.

  2. Strong application.

Limitation(s):

  1. Require for training data.

  2. High training diffiffifficulty.

Noising

人在读文本时对噪声是免疫的,比如单词乱序、错别字等。基于这个思想,可以给数据增加些噪声来提升模型鲁棒性。

在这里插入图片描述

  1. Swapping:除了交换词之外,在分类任务中也可以交换instance或者sentence
  2. Deletion:可以根据tf-idf等词的重要程度进行删除
  3. Insertion:可以把同义词随机插入句子中
  4. Substitution:把一些词随机替换成其他词(非同义),模拟misspelling的场景。为了避免改变label,可以使用label-independent的词,或者利用训练数据中的其他句子
  5. Mixup:这个方法最近两年比较火,把句子表示和标签分别以一定权重融合,引入连续噪声,可以生成不同label之间的数据,但可解释性较差

Sampling

在这里插入图片描述

Sampling是指从数据分布中采样出新的样本,不同于较通用的paraphrasing,采样更依赖任务,需要在保证数据可靠性的同时增加更多多样性,比前两个数据增强方法更难。作者整理了4种方法:

  1. Rules:用规则定义新的样本和label,比如把句子中的主谓进行变换
  2. Seq2Seq Models:根据输入和label生成新的句子,比如在NLI任务中,有研究者先为每个label(entailment,contradiction,neutral)训一个生成模型,再给定新的句子,生成对应label的。对比之下,paraphrasing主要是根据当前训练样本进行复述
  3. Language Models:给定label,利用语言模型生成样本,有点像前阵子看的谷歌UDG。有些研究会加个判别模型过滤
    ntradiction,neutral)训一个生成模型,再给定新的句子,生成对应label的。对比之下,paraphrasing主要是根据当前训练样本进行复述
  4. Language Models:给定label,利用语言模型生成样本,有点像前阵子看的谷歌UDG。有些研究会加个判别模型过滤
  5. Self-training:先有监督训练一个模型,再给无监督数据打一些标签,有点蒸馏的感觉
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch提供了丰富的数据增强技术,可以帮助我们扩充数据集,提高模型的泛化能力。常用的数据增强技术有: 1. 随机翻转:可以通过torchvision.transforms.RandomHorizontalFlip()和torchvision.transforms.RandomVerticalFlip()来实现图像的水平或垂直翻转。 2. 随机裁剪:可以通过torchvision.transforms.RandomCrop()来实现图像的随机裁剪。 3. 随机旋转:可以通过torchvision.transforms.RandomRotation()来实现图像的随机旋转。 4. 随机缩放:可以通过torchvision.transforms.RandomResizedCrop()来实现图像的随机缩放。 5. 颜色抖动:可以通过torchvision.transforms.ColorJitter()来实现图像颜色的随机抖动。 6. 标准化:可以通过torchvision.transforms.Normalize()来实现图像的标准化。 下面是一个使用数据增强技术的示例代码: ```python import torch import torchvision.transforms as transforms from torchvision.datasets import ImageFolder # 定义数据增强 transform = transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomCrop(size=(224, 224)), transforms.RandomRotation(degrees=15), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) # 加载数据集 train_dataset = ImageFolder(root='data/train', transform=transform) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True) # 训练模型 ... ``` 在上面的示例代码中,我们定义了一个包含多种数据增强技术的transform,并通过ImageFolder加载了数据集。在训练模型时,我们可以使用train_loader迭代数据集中的样本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值