TreeMix:基于组合的数据增强方法

Publish

NAACL2022

Title

TreeMix: Compositional Constituency-based Data Augmentation for Natural Language Understanding

Abstract

数据增强是解决过度拟合问题的一种有效方法。前人针对自然语言处理提出了不同的数据扩充策略,如噪声注入、单词替换、回译等。虽然有效,但它们忽略了语言的一个重要特征-组合性复杂表达的意义是从其子部分建立起来的。受此启发,我们提出了一种用于自然语言理解的成分数据扩充方法TreeMix。具体地说,TreeMix利用选区分析树将句子分解成构成子结构,并利用Mixup数据增强技术对它们进行重组以生成新的句子。与以前的方法相比,TreeMix在生成的样本中引入了更大的多样性,并鼓励模型学习NLP数据的组合性。在文本分类和SCAN的大量实验表明,TreeMix的性能优于目前最先进的数据增强方法。

Solution problem

合成性是语言的一个关键方面,因为复句的意义是从它的子部分建立起来的。先前的工作还表明,语法树(例如,基于树的LSTM)有助于对句子结构进行建模,以便更好地进行文本分类。然而,在语言技术社区中,除了在语义分析方面的一些例外情况外,利用组合结构进行数据扩充并没有受到太多关注

image-20220613135315056

我们提出了一种用于自然语言理解的成分数据增强方法,即TreeMix(图1)。TreeMix是一种输入级混合方法,它利用成分分析信息,将来自不同句子的不同片段(子树的短语)进行重组,以创建训练集中从未见过的新示例;同时还将基于这些片段策略性地创建新的软标签。这样,TreeMix不仅利用了构成语言的特征来增加扩充的多样性,而且为这些混合的例子提供了合理的软标签。

mixup定义为

其中$(x_i,x_j),(y_i,y_j)$为从训练数据中随机抽出两个目标特征向量,$\lambda\in[0,1]$

我们通过融入语言的组合性来改进Mixup,这是泛化所必需的一个关键特征,但神经模型往往无法捕捉到这一点。我们新提出的方法TreeMix不是用整个样本进行内插,而是通过删除句子的短语并重新插入其他句子的子部分来创建新句子。TreeMix利用选民树将句子分解成有意义的组成部分,然后将这些组成部分移除并重新组合,以生成新的扩充样本。我们的目标是通过对TreeMix生成的大量样本进行训练来提高模型的组合性泛化能力。一个使用TreeMix进行单句分类的例子如上图所示。

TreeMix 详细过程

${x}{i}=\left{x{i}^{1}, x{i}^{2}, \ldots, x{i}^{l}\right}$表示长度为$l$的序列,其对应的one-hot编码label为$yi$,我们在$x_i$上运行一个解析器得到它的解析树$T(x_i)$,为了获取序列中有意义的子部分,采用递归遍历解析树,获得所有具有一个以上child的子树。表示子树的集合为$S(x_i)= {t_i^k}$.其中$t_i^k$表示样本$x_i$的第k个子树,对于子树$t_i^k$连续覆盖了$x_i$的$t{i}^{k} \triangleq\left[x{i}^{r{k} }, \ldots, x{i}^{s{k} }\right]$,索引$r_k$为开始,$s_k$为结束。例如图一左侧所示,例句子树可以cover span 的有1.this poor film,2. in this poor film, 3.no interest …etc

对于给定的样本$(x_i,y_i)$,我们从训练集中随机抽取另一个数据点$(x_j, y_j)$。我们对这两个句子运行选区解析器,得到它们的子树集$S(x_i)$和$S(x_j)$,我们可以对要交换的子树进行采样。我们引入两个额外的超参数$λ_L$和$λ_U$来约束待采样子树的长度。$λ_L$和$λ_U$,用子树与原始句子的长度之比来衡量要采样子树的上下限。直观地说,$λ$控制着我们想要交换的短语的粒度。我们希望交换的长度是合理的。如果它太短,那么交换不能给增强样本引入足够的多样性;否则,如果太长,这个过程可能会给原句注入太多噪音。我们设置λ为比率,以便与原句子的长度不变。表2显示了一些具有不同长度约束的子树示例。我们将长度受限子树集合定义为:

其中$|·|$表示序列或子树的长度,对于两个句子$xi$和$x_j$,我们随机采样两个子树$t{i}^{k} \in S{\lambda}\left(\mathbf{x}{i}\right)$和$t{j}^{l} \in S{\lambda}\left(\mathbf{x}_{j}\right)$并且通过$t_j^l$替换$t_i^k$构建新的样本。例如

其中$t{j}^{l}=\left[x{j}^{r{l} }, \ldots, x{j}^{s{l} }\right]$替换$t{i}^{k}=$ $\left[x{i}^{r{k}}, \ldots, x{i}^{s{k} }\right]$如上图1所示a touching transcend love story 替换this poor film.

TreeMix制作标签

为扩充的样本$\overline{x}$创建有效标签是一个具有挑战性的问题。类似于Mixup,我们使用原始的凸组合两个句子的标签作为扩充样本的标签。

其中$l_i$为$x_i$的长度,$|t_i^k|$为子树的长度,在新的句子中,从$x_i$中保留$l_i-|t_i^k|$个words,从句子$x_j$插入$|t_j^l|$个words。

$\frac{l{i}-\left|t{i}^{k}\right|}{l{i}-\left|t{i}^{k}\right|+\left|t_{j}^{l}\right|}$是来自$x_i$的words的分数,其可以决定$y_i$的权重,然后,基于标签的变化与原始句子中的长度变化成比例的猜想来创建标签。附录提供样本。

image-20220614162150953

组合算法

我们的主要算法如算法1所示。虽然TreeMix创建的句子并不都是流畅的甚至有效的新句子,但它们包含具有不同含义的子部分,这鼓励模型以组合的方式构建丰富的句子表示。需要注意的是,扩展后的标签是原始标签的凸组合,只有当模型学习到两个部分的表示在一起时,它们才能预测具有不同权重的两个标签

Training Objective

我们的模型是在原始样本和增强样本的组合上训练,以获得正则化和噪声注入之间的权衡。最终的培训目标是:

$\gamma$i是增强样本的权重

Experiment

  • 数据集

    image-20220614164635190

  • Baseline

    | approaches | 简介 |
    | ———————— | —————————————————————————————— |
    | BERT | |
    | EDA | 由四个简单操作组成:同义词替换、随机插入、随机交换和随机删除。 |
    | AEDA | 在文本中随机插入标点符号的AEDA |
    | Back Translation | 将句子翻译成临时语言(EN-DE),然后将先前翻译的文本翻译回源语言(DE-EN) |
    | GPT3Mix | 设计提示并利用GPT3生成新的示例来训练模型。 |
    | SSMix | 通过在给定类的所有示例前添加类标签来为条件BART。BARTword屏蔽了单个单词,而BARTspan屏蔽了连续的区块。 |
    | EmbedMix | |
    | Tmix | 首先对两个输入分别编码,然后在某一编码器层a处对两个嵌入进行线性插值,最终向前传递组合嵌入到其余层中。 |

  • 结果

    image-20220614170349622

image-20220614170416075

image-20220614170443863

Conclusion

没找到代码,自己摸索了。

Text Smoothing:一种数据结合mix-up的数据增强方法

Publish

2022ACL

title

Text Smoothing: Enhance Various Data Augmentation Methods on Text Classification Tasks

solution problem

进入神经网络之前,标记通常被转换为对应的One-hot表示,这是词汇表的离散分布。平滑表示是从预先训练的MLM中获得候选token的概率,它可以被视为对onr-hot表示的更多信息的替代。我们提出了一种有效的数据增强方法,称为文本平滑,通过将句子从其one-hot表示转换为可控的平滑表示。我们在低资源条件下对不同基准的文本平滑进行了评估。实验结果表明,文本平滑方法的性能明显优于各种主流数据增强方法。此外,文本平滑可以与这些数据增强方法相结合,以获得更好的性能。

image-20220526171221247

image-20220526175945737

文本平滑代码:Pytorch

1
2
3
4
5
6
7
sentence = "My favorite fruit is pear ."
lambd = 0.1 # interpolation hyperparameter
mlm.train() # enable dropout, dynamically mask
tensor_input = tokenizer(sentence, return_tensors="pt")
onehot_repr = convert_to_onehot(**tensor_input)
smoothed_repr = softmax(mlm(**tensor_input).logits[0])
interpolated_repr = lambd * onehot_repr + (1 - lambd) * smoothed_repr
  1. 使用BERT作为MLM,给定下游数据集命名为:$D={ti,p_i,s_i,l_i}{i=1}^{N}$ ,N表示样本数量,$t_i$表示文本one-hot 编码,$p_i$表示$t_i$位置编码,$s_i$表示$t_i$的段编码,$l_i$表示实例标签。

  2. 将$t_i,p_i,s_i$送入BERT

  3. 取回BERT中Transformer-encoder最后一层的输出表示为

    其中$\overrightarrow{t_i}$形状为[seq_len,emb_size]

  4. 然后乘以$\overrightarrow{t_i}$乘以BERT中词嵌入矩阵$W$,其形状为[vocab_size,embed_size]

    其中$MLM(t_i)$中每一行是token词汇表中的概率分布,表示了预训练BERT学习到输入文本所在位置的包含上下文 的标记选项(信息)。

  1. mixup定义为

    其中$(x_i,x_j),(y_i,y_j)$为从训练数据中随机抽出两个目标特征向量,$\lambda\in[0,1]$在文本平滑中,One-hot表示和平滑表示来自相同的原始输入,标签相同,其内部插入操作不会改变标签,因此mixup操作可以简化为

    其中$t_i$为one-hot表示,$MLM(t_i)$为平滑表示,$\widetilde{t_i}$为联合插入表示,$\lambda$为用于控制插入的超参数。下游任务中我们使用联合表示代替one-hot变化表示作为输入。

Experiment

  • 数据集

    image-20220526201719743

  • Baseline

    | approaches | 简介 |
    | ———————————- | —————————————————————————————— |
    | EDA | 由四个简单操作组成:同义词替换、随机插入、随机交换和随机删除。 |
    | Back Translation | 将句子翻译成临时语言(EN-DE),然后将先前翻译的文本翻译回源语言(DE-EN) |
    | CBERT | 用预先训练的BERT mask一些标记并预测它们的上下文替换。 |
    | BERTexpand, BERTprepend | 通过在给定类的所有示例中添加类标签来满足BERT条件。“expand”标签以 模拟 词汇表,而“prepend”则没有 |
    | GPT2context | 为预先训练的GPT模型提供提示,并持续生成,直到[EOS]token |
    | BARTword, BARTspan | 通过在给定类的所有示例前添加类标签来为条件BART。BARTword屏蔽了单个单词,而BARTspan屏蔽了连续的区块。 |

  • 结果

    image-20220526202740487

Conclusion

小数据,可控,目前优于其他,未来,结合其他DA=顶会。我也想发顶会啊。