当前位置: 首页 > article >正文

RoCBert:具有多模态对比预训练的健壮中文BERT

摘要

大规模预训练语言模型在自然语言处理(NLP)任务上取得了最新的最优结果(SOTA)。然而,这些模型容易受到对抗攻击的影响,尤其是对于表意文字语言(如中文)。 在本研究中,我们提出了 ROCBERT——一种对抗各种形式对抗攻击(如单词扰动、同义词替换、拼写错误等)具有鲁棒性的中文预训练 BERT 模型。 该模型采用对比学习目标(contrastive learning objective)进行预训练,以最大化不同合成对抗样本下的标签一致性。此外,模型输入包含多模态信息,包括:

  • 语义(semantic)
  • 音韵(phonetic)
  • 视觉(visual)

我们发现,这些特征对于提升模型的鲁棒性至关重要,因为对抗攻击可能发生在这三种信息模态中。 在 5 个中文自然语言理解(NLU)任务上,ROCBERT 在三种黑盒对抗攻击算法下均优于强基线模型,同时不损失干净测试集(clean testset)上的性能。此外,在有害内容检测任务中,该模型在人工构造的攻击下表现最佳。


1 引言

大规模预训练模型在微调(finetuning) 充足的标注数据后,已经能够接近甚至超越人类水平(Peters et al., 2018; Radford et al.; Devlin et al., 2019; Liu et al., 2019; Brown et al., 2020)。 然而,即便这些模型在海量文本上进行了预训练,它们仍然容易受到对抗攻击(adversarial attacks)的影响,例如:

  • 同义词替换(synonyms substitution)
  • 单词删除/交换(word deletion/swapping)
  • 拼写错误(misspelling)

这些对抗样本(adversarial examples) 在真实世界场景中频繁出现,它们可能是:

  • 自然产生的(例如:拼写错误)
  • 恶意制造的(例如:规避有害内容的自动检测)

在这里插入图片描述

缺乏鲁棒性的问题

在噪声较大的真实环境中进行测试时,这些预训练模型的鲁棒性不足,可能会导致严重的性能下降。这一问题在表意文字语言(如中文)中尤为突出,因为对抗攻击可以发生在:

  • 字形(Glyph Character)
  • 拼音(Pinyin,即罗马化音标表示)
  • 或二者结合的方式

(Wang et al., 2020; Li et al., 2020d; Zhang et al., 2020; Nuo et al., 2020)。

表 1 展示了一些攻击示例。例如,单词“科比 (Kobe)” 可以被替换为:

  • 同义词(语义攻击)
  • 发音相似的词(语音攻击)
  • 视觉上相似的字(视觉攻击)

攻击者甚至可以先将汉字转换为拼音,然后在字母层面继续攻击(如表中的 “keb1”)。

由于汉字的语义与语音信息相互独立,且汉字的字形字符丰富,使得攻击形式远比英语等字母语言更加多样化。


当前对抗防御方法的局限性

目前,研究人员主要采用两种方法来防御对抗攻击:

  1. 拼写检查(Spell Checking)

    • 在文本输入预测模型之前,先进行拼写检查,以修正书写错误
    • 相关研究:Pruthi et al., 2019; Li et al., 2020b; Mozes et al., 2021
    • 问题:中文拼写检查本身就是一个极具挑战的任务,模型需要准确恢复原始文本,而拼写检查中的微小错误都可能导致模型无法预测或产生错误行为
  2. 对抗训练(Adversarial Training)

    • 在训练数据中加入对抗样本,让模型适应对抗攻击
    • 相关研究:Zang et al., 2020; Li et al., 2020a; Liu et al., 2020
    • 问题:在微调阶段,模型难以适应所有对抗变体,尤其是在训练数据稀缺的情况下(Meng et al., 2021)

ROCBERT 方案:构建鲁棒的中文 BERT

为了解决上述挑战,我们提出ROCBERT,这是一种鲁棒的中文 BERT 预训练模型,其核心方法包括:

  • 对抗对比学习目标(Contrastive Learning Objective)

    • 最大化不同对抗样本下的标签一致性,提高模型鲁棒性
  • 自动生成对抗样本

    • 采用专门的算法,涵盖常见的攻击类型
  • 组合攻击(Combinatorial Attacks)

    • 多个攻击类型可叠加(这在以往研究中从未被考虑)
  • 多模态信息融合

    • 在编码器中融合语义、音韵和视觉信息,以全面抵御不同形式的攻击
    • 其中,语音和视觉特征被插入到自注意力层(Self-Attention Layer)中,然后在后续层进行动态融合

在5 个标准 NLU 任务和1 个有害内容检测任务上,我们的预训练模型在各种对抗攻击下达到了最新 SOTA 结果。


贡献总结

  1. 提出了一种新的鲁棒中文 BERT 预训练方法,结合对抗对比学习,使模型在干净测试集和对抗攻击数据集上都能表现良好。
  2. 采用合成对抗样本,涵盖语义、音韵和视觉三种攻击类型,并融合多模态特征来防御所有级别的攻击。
  3. 在 5 个 NLU 任务和 1 个有害内容检测任务上,在各种对抗攻击下均超越强基线模型。
  4. 进行广泛的消融实验,探讨不同预训练选项的影响,并与主流对抗防御方法进行了深入比较,以促进未来研究。

2 相关工作

对抗攻击(Adversarial Attack)

大量研究表明,NLP 模型在对抗样本下极易受到攻击,即使这些样本对人类来说可理解,但会导致模型预测错误(Li et al., 2020c; Garg & Ramakrishnan, 2020; Zang et al., 2020)。

通常,对抗攻击可分为两类:

  1. 语义等价替换(Semantic Equivalent Replacement)

    • 通过词向量相似性替换单词(Jin et al., 2020; Wang et al., 2020)
    • 通过WordNet 同义词替换(Zang et al., 2020)
    • 通过预训练模型的掩码预测(Masked Prediction)(Li et al., 2020c; Garg & Ramakrishnan, 2020; Li et al., 2020d)
  2. 噪声注入(Noise Injection)

    • 添加/删除/交换单词(Li et al., 2019a; Gil et al., 2019; Sun et al., 2020a)
    • 替换为发音或视觉相似的单词(Eger et al., 2019; Eger & Benz, 2020)

对于中文而言,由于汉字的字形和拼音特性,噪声可以同时作用在字形和拼音上(Zhang et al., 2020; Nuo et al., 2020)。


3 对抗样本生成(Adversarial Example Synthesis)

3.1 中文字符攻击(Attacking Chinese Characters)

由于汉字的复杂性,我们专门设计了5 种中文特定的攻击方法:

  1. 语音攻击(Phonetic Attack)

    • 用同音字替换汉字(忽略声调)
    • 对于多音字,选取最常见的 2 个拼音
  2. 视觉攻击(Visual Attack)

    • 用视觉上相似的汉字进行替换(使用汉字相似度数据库)
  3. 字符拆分攻击(Character Split Attack)

    • 拆分汉字为两个子部分,且每部分仍是有效汉字或视觉相似汉字
    • 参考中文拆分字典(共17,803 种拆分方式)
  4. 同义词替换攻击(Synonym Attack)

    • 分词后用同义词替换部分单词(使用Jieba 分词器)
    • 同义词判定标准:相似度 > 0.75
    • 仅替换名词和形容词(因为其他词的替换往往会改变语义)
  5. 字符转拼音攻击(Character-to-Pinyin Attack)

    • 用拼音表示汉字(忽略声调)

      在这里插入图片描述

3.2 其他字符的攻击方式

除了中文字符,中文语料库中还包含拼音、数字、标点符号和外文单词。我们设计了以下 4 种攻击方法,适用于所有字符类型:

  1. Unicode 攻击(Unicode Attack)

    • 随机选取一个视觉相似的 Unicode 字符进行替换
  2. 随机插入(Random Insertion)

    • 从词汇表中随机抽取一个字符
    • 随机插入到目标字符的左侧或右侧
  3. 交换字符(Swap)

    • 交换目标字符与其相邻字符的位置
  4. 删除字符(Deletion)

    • 直接删除目标字符

表 1 展示了所有攻击类型的示例。

3.3 对抗样本的生成过程(Synthesis Process)

对抗样本的生成流程如下:

  1. 给定一个句子,我们首先选择多个字符作为攻击目标。
  2. 针对每个被选中的字符,我们结合上述字符级攻击算法,生成被攻击后的字符形式。

攻击比例(Attack Ratio) 攻击比例( γ γ γ)决定了一个句子中有多少字符会被攻击。
设句子中的总字符数为 n c n_c nc,我们定义 γ γ γ 为:
γ = min ⁡ ( max ⁡ ( int ⁡ ( ϵ ) , 1 ) , n c ) ( 1 ) ϵ ∼ N ( max ⁡ ( 1 , 0.15 n c ) , 1 ) \begin{aligned} & \gamma=\operatorname*{min}(\operatorname*{max}(\operatorname{int}(\epsilon),1),n_{c}) \\ & & \mathrm{(1)} \\ & \epsilon\sim\mathcal{N}(\max(1,0.15n_{c}),1) \end{aligned} γ=min(max(int(ϵ),1),nc)ϵN(max(1,0.15nc),1)(1)
其中,int 函数将四舍五入为最接近的整数。这样做的直观原因是,我们希望平均攻击 15% 的字符。如果句子较短,我们将确保至少攻击一个字符。我们在平均比例的基础上添加了正态高斯噪声,以增加一定的随机性。

字符选择:许多研究表明,攻击信息量大的词比随机选择词更有效(Li et al., 2019a; Sun et al., 2020a)。因此,我们根据字符在句子中的信息量来决定其被选中的概率。设 w ( c i ) w(c_i) w(ci) 表示字符 c i c_i ci 所属的词, c i c_i ci 的信息量得分通过删除 w ( c i ) w(c_i) w(ci) 后语言模型损失的变化来计算(记为 L ( ▽ w ( c i ) ) \mathcal{L}(\triangledown w(c_{i})) L(w(ci)),参考 Li et al., 2016)。字符 c i c_i ci 被选中攻击的概率为:
p ( c i ) = e L ( ∇ w ( c i ) ) ∣ w ( c i ) ∣ ∑ j = 1 n w e L ( ∇ w j ) ( 2 ) p(c_i)=\frac{e^{\mathcal{L}(\nabla w(c_i))}}{|w(c_i)|\sum_{j=1}^{n_w}e^{\mathcal{L}(\nabla w_j)}}\qquad{(2)} p(ci)=w(ci)j=1nweL(wj)eL(w(ci))(2)
其中, n w n_{w} nw 是句子中的词数。 ∣ w ( c i ) ∣ |w(c_i)| w(ci) 表示 w ( c i ) w(c_i) w(ci) 中的字符数,因此同一词中的字符被选中的概率相等。

攻击组合:一个字符可能会受到多种攻击的组合。例如,我们可以将一个中文字符转换为其拼音,然后继续在字母级别对其进行攻击(如表1中的“to pinyin + unicode”)。我们将其定义为一个顺序过程,每一步都可以在之前的基础上添加新的攻击。具体来说,所有攻击组合应用于字符 c c c 后得到的新字符 c ~ \tilde{c} c~ 为:
c ~ = A S ( c ) ∘ ⋯ ∘ A 2 ∘ A 1 ( c ) ( 3 ) \tilde{c}=A_{S(c)}\circ\cdots\circ A_2\circ A_1(c) \qquad{(3)} c~=AS(c)A2A1(c)(3)

p ( S ( c ) = k ) = q ( 1 − q ) k − 1 p(S(c)=k)=q(1-q)^{k-1} p(S(c)=k)=q(1q)k1

其中,“o” 表示将新的攻击算法 A A A 应用于上一步的输出。在每一步 i i i,攻击算法 A i A_i Ai 都是从所有适用于上一步输出的算法中随机选择的。 S ( c ) S(c) S(c) 表示应用于字符 c c c 的攻击步骤数,它服从指数衰减函数。我们在实验中将超参数设定为 q = 0.7 q=0.7 q=0.7。对抗样本生成的完整流程如图 1 所示。


4. 多模态对比学习预训练(Multimodal Contrastive Pretraining)

借助上述对抗样本生成算法,我们可以通过多模态对比学习目标来预训练模型。


4.1 多模态特征(Multimodal Features)

我们采用标准 BERT 结构(Devlin et al., 2019)作为基础,并在此基础上**将语音(Phonetic)和视觉(Visual)特征融合到输入文本中。

特征表示(Feature Representation)

对于词汇表中的每个字符 c c c,除了标准的语义嵌入(Semantic Embedding) S e ( c ) Se(c) Se(c),我们还包括两个额外的向量:

  • P h ( c ) Ph(c) Ph(c) —— 编码字符的语音(拼音)信息
  • V i ( c ) Vi(c) Vi(c) —— 编码字符的视觉信息

如果 c c c 不是一个汉字,它会有自己的语音向量。否则,其语音向量 P h ( c ) Ph(c) Ph(c) 定义如下:

P h ( c ) = ∑ k ∈ p i n y i n ( c ) P h ( k ) Ph(c)=∑k∈pinyin(c)Ph(k) Ph(c)=kpinyin(c)Ph(k)

其中, p i n y i n ( c ) pinyin(c) pinyin(c) 是字符 c c c 的拼音序列。字符的视觉向量 V i ( c ) Vi(c) Vi(c) 是从其 32×32 图像 I ( c ) I(c) I(c) 中提取的。对于汉字,该图像采用宋体(Simsun);对于其他字符,则采用Arial字体,这些是大多数在线文本的默认字体。

V i ( c ) Vi(c) Vi(c) 的计算方式如下:
V i ( c ) = L a y e r N o r m ( M T R e s N e t 18 ( I ( c ) ) ) ( 4 ) Vi(c)=LayerNorm(M^TResNet18(I(c)))\qquad{(4)} Vi(c)=LayerNorm(MTResNet18(I(c)))(4)
M M M 是一个可学习矩阵,我们利用 ResNet18 (He et al., 2016)将 字符图像 I ( c ) I(c) I(c) 映射为一维向量(该映射在训练过程中被冻结,即不会更新)。


视觉表征预训练(Visual Representation Pretrain)

为了获得合理的初始化,我们增加了一个仅针对视觉表征的预训练阶段。

  • 语音表征(Phonetic representations)在训练开始时随机初始化。
  • 视觉表征的变换矩阵 M M M(公式 4 中)使用与公式 5 相同的对比损失进行预训练。

在该阶段,字符 c c c 的正样本(positive sample)是其视觉对抗形式 c ~ \tilde{c} c~,定义如下:

c ~ = A ( c ) \tilde{c}=\mathcal{A}(c) c~=A(c) ,其中, A ∼ U ( visual, character split, unicode ) \mathcal{A} \sim \mathbb{U}(\text{visual, character split, unicode}) AU(visual, character split, unicode),表示从 §3 提到的三种视觉攻击方法**(**视觉替换、字符拆分、Unicode 替换)中均匀采样。 如果 c c c 被拆分为两个字符 c 1 c_1 c1 c 2 c_2 c2,则其视觉表征计算方式如下:

V i ( c ~ ) = V i ( c 1 ) + V i ( c 2 ) Vi(\tilde{c})=Vi(c_1)+Vi(c_2) Vi(c~)=Vi(c1)+Vi(c2)

负样本(negative samples) 是同一批次(batch)中的所有其他字符。 经过该训练后,视觉相似的字符将在表征空间中彼此靠近。


特征融合(Feature Integration)

一个直接的多模态特征融合方法是在送入编码器(encoder)之前进行融合(Sun et al., 2021; Liu et al., 2021)。
然而,这种方法会对三种特征(语义、语音、视觉)赋予相等的权重**,使模型无法动态关注最有用的特征。

另一种方法是两步编码(two-step encoding),先确定各特征的权重,然后用选择性注意力进行编码(Xu et al., 2021)。
但这种方法会显著降低系统的运行速度。 我们提出了一种轻量级融合方法——“层插入”(layer-insert) ,即仅在编码器的一个层中插入多模态特征。令 H k ( i ) H_k(i) Hk(i) 表示第 k k k 层中第 i i i 个词的表征,我们的插入方式如下:
W 1 = K 1 T H k ( i ) H k ( i ) V 1 W 2 = K 2 T H k ( i ) P h ( i ) V 2 W 3 = K 3 T H k ( i ) V i ( i ) V 3 H k ( i ) = W 1 H k ( i ) + W 2 P h ( i ) + W 3 V i ( i ) W 1 + W 2 + W 3 \begin{aligned} W_{1} & =K_{1}^{T}H^{k}(i)H^{k}(i)V_{1} \\ W_{2} & =K_{2}^{T}H^{k}(i)Ph(i)V_{2} \\ W_{3} & =K_3^TH^k(i)Vi(i)V_3 \\ H^{k}(i) & =\frac{W_{1}H^{k}(i)+W_{2}Ph(i)+W_{3}Vi(i)}{W_{1}+W_{2}+W_{3}} \end{aligned} W1W2W3Hk(i)=K1THk(i)Hk(i)V1=K2THk(i)Ph(i)V2=K3THk(i)Vi(i)V3=W1+W2+W3W1Hk(i)+W2Ph(i)+W3Vi(i)
其中, P h ( i ) Ph(i) Ph(i) V i ( i ) Vi(i) Vi(i)分别是语音和视觉表示, K j / V j K_j / V_j Kj/Vj是可学习的矩阵。直观上,我们可以使用第 0 层到第 ( k-1 ) 层来决定三种多模态表示的权重,并使用其余层进行句子表示学习。这使得模型能够根据句子上下文动态融合多模态信息,同时仅增加少量复杂性。

4.2 模型损失

模型损失由两部分组成:对比学习损失和标准的掩码语言模型(MLM)损失。

对比学习:对比学习(Chen et al., 2020; Kim et al., 2021)的核心思想是,表示空间应使相似(正)样本更接近,而使不相似(负)样本更远离。对于每个句子,我们将其对抗形式(通过第 3 节中的算法获得)视为正样本,并将同一批次中的所有其他句子视为负样本。给定一个包含 ( N ) 个句子的批次,第 ( i ) 个句子 ( s i s_i si ) 的损失为:
L c ( i ) = − log ⁡ e s i m ( s i , s ~ i ) / τ ∑ j = 1 N e s i m ( s i , s j ) / τ , ( 5 ) \mathcal{L}_{c}(i)=-\log\frac{e^{sim(s_{i},\tilde{s}_{i})/\tau}}{\sum_{j=1}^{N}e^{sim(s_{i},s_{j})/\tau}},\qquad{(5)} Lc(i)=logj=1Nesim(si,sj)/τesim(si,s~i)/τ,(5)
其中, τ \tau τ 是温度超参数(temperature hyperparameter), s i   s_i^{~} si  是从 s i s_i si 生成的对抗样本。我们在初步实验的基础上设定 τ = 0.01 \tau = 0.01 τ=0.01,并定义相似度计算公式如下: sim ( s i , s ~ i ) = h i ⃗ T h i ⃗ ∥ h i ⃗ ∥ ⋅ ∥ h i ⃗ ∥ \text{sim}(s_i, \tilde{s}_i) = \frac{\vec{h_i}^T\vec{h_i}}{\|\vec{h_i}\| \cdot \|\vec{h_i}\|} sim(si,s~i)=hi hi hi Thi ,即在表示空间 h i h_i hi h i ~ \tilde{h_i} hi~ 中的余弦相似度(cosine similarity)。


混合 MLM 训练(Mix with MLM)

我们将**对比学习损失(contrastive learning loss)与标准的掩码语言模型(MLM)损失(Devlin et al., 2019)混合,以实现句子级和词级的表示学习。 我们采用基于字符(character-based)的分词器,原因如下:

  1. 中文字符本身可作为独立的语义单元(Li et al., 2019b)。
  2. 基于字符的模型在嘈杂(noisy)或对抗性(adversarial)场景下更具鲁棒性**(El Boukkouri et al., 2020)。

对于中文字符,我们采用两种掩码策略:

  • 整词掩码(Whole Word Masking, WM)
  • 字符掩码(Char Masking, CM)

因为大量中文词汇由多个字符组成(Cui et al., 2019; Sun et al., 2021)。 最终,对比学习损失和 MLM 损失具有相同的权重**(equally weighted)。

5 实验(Experiments)

5.1 实验设置(Experiment Setup)

模型细节(Model Details)

我们使用16224个词汇(vocabulary size),其中14642个是中文字符。我们提供两种版本的 ROCBERT:

  • Base 版本:12 层/头,隐藏神经元数为 768。训练 600k 步,batch size 为 4k,学习率 1e-4,warmup 25k 步。
  • Large 版本:48 层,24 个注意力头(attention heads),隐藏神经元数为 1024。训练 500k 步,学习率 3e-4,warmup 70k 步,batch size 8k。

预训练细节(Pretraining Details)

按照通用做法,我们在 2TB 文本数据上进行预训练,该数据来源于 THUCTC 12、中文维基百科(Chinese Wikipedia)和 Common Crawl。

  • 训练设备:64 块 NVIDIA V100 (32GB) GPU,使用 FP16 和 ZERO-stage-1 优化(Rasley et al., 2020)。
  • 内存优化:
    • 采用 PatricStar(Fang et al., 2021)以动态内存调度,结合基于块(chunk-based)的内存管理。
    • 该方法会将除当前计算部分外的所有内容卸载到 CPU,从而在相同硬件条件下训练更大的模型。
    • 基于块的内存管理利用了Transformer 结构的线性特性,可以提前预加载即将计算的层到 GPU,提高计算效率。

基线模型(Baseline Models)

我们将 ROCBERT 与以下 最先进(SOTA)的中文预训练模型进行对比:

  1. MBert-Chinese(Devlin et al., 2019)
  2. Bert-wwm(Cui et al., 2019):在 MBert-Chinese 基础上继续预训练,并采用 Whole Word Masking(WWM)策略。
  3. MacBERT(Cui et al., 2020):采用 MLM-As-Correlation(MAC) 预训练策略,并加入句子顺序预测(Sentence-Order Prediction, SOP)任务。
  4. ERNIE-gram(Sun et al., 2019, 2020b):采用多种掩码策略(token 级、短语级、实体级),在大规模异构数据上进行预训练。
  5. ChineseBERT(Sun et al., 2021):在预训练过程中加入了字形(glyph)和音韵(phonetic)特征。

评测任务(Tasks)

我们在 5 个标准中文自然语言理解(NLU)任务和 1 个有害内容检测(toxic detection)任务上测试模型:

  1. ChnSentiCorp(2k 训练数据):中文情感分类任务(Xu et al., 2020)。
  2. TNEWS(50k 训练数据):新闻标题分类任务。
  3. AFQMC(34k 训练数据):问题匹配(question matching)任务。
  4. CSL(20k 训练数据):从论文摘要中识别关键词(keyword recognition)。
  5. CMNLI(390k 训练数据):中文多领域自然语言推理(Chinese Multi-Genre NLI)(Conneau et al., 2018)。
  6. 有害内容检测(Toxic Detection):
    • 该任务用于对抗人类制造的攻击(human-made attacks),与合成攻击(synthesized attacks)形成对比。
    • 数据来源于用户在某在线对话平台上的输入,其中用户会刻意使用各种攻击手段来规避系统的自动过滤(如垃圾广告、色情、辱骂等)。
    • 我们手动标注了50k 条用户输入,其中2k 条为有害内容(positive),且 90% 具有对抗性特征。
    • 负例(negative)随机采样2k 条非有害文本,最终数据集按 8:1:1 划分为 训练/验证/测试集。

攻击方法(Attacker)

我们在 三种不同的攻击方法下测试模型表现(均为无目标攻击,即不对目标类别施加限制):

  1. ADV(我们的自定义攻击算法)
  2. TextFooler(Jin et al., 2020):
    • 黑盒(black-box)攻击算法,通过用语义相似的词替换关键字来欺骗模型。
    • 原生为英文算法,我们重新实现(reimplement)了对应的中文版本。
  3. Argot(Zhang et al., 2020):
    • 黑盒攻击算法,专门针对中文特征进行攻击。

所有三种攻击方法的最大攻击比率(attack ratio)均设为 20%。
在这里插入图片描述


5.2 实验结果(Experiment Results)

中文 NLU 任务结果(Chinese NLU Results)

我们在 5 个中文 NLU 任务上的结果见表 2 至表 6。对于每个任务,我们报告模型在干净测试集(clean test set)和三种对抗测试集(adversarial test sets)(即 ADV、TextFooler 和 Argot 生成的对抗数据集)上的准确率(accuracy)。

为了公平比较,我们报告了所有 base 版本模型的性能。然后,我们选择表现最好的 base 版本模型,测试其 large 版本性能,并将其与 ROCBERT 进行比较。

从实验结果可以看出:

  • TNEWS、AFQMC 和 CSL 受 ADV 攻击的影响较小,因为这些任务更依赖全局句子结构,而非个别单词。
  • 在情感分类(sentiment classification)和自然语言推理(NLI)等任务中,单个词汇对模型决策的影响较大,因此攻击会导致显著的性能下降。
  • Argot 和 TextFooler 导致的性能下降比 ADV 更大,因为:
    • TextFooler 和 Argot 专门选择最能影响模型决策的单词进行攻击,而 ADV 仅基于语言模型分数选择攻击单词。
    • Argot 比 TextFooler 更有效,因为它在替换字符时考虑了中文的特定特征(Chinese-specific features)。
  • 总体而言,ROCBERT 在所有攻击算法和所有 5 个任务上都优于其他模型。即使在干净数据集(clean dataset)上,它在 5 个任务中 4 个任务表现最佳。
  • ChineseBERT 在各种攻击下排名第二,因为它在预训练时也考虑了多模态特征(multimodal features),这进一步证明了多模态特征在中文语言预训练中的重要性。

有害内容检测结果(Toxic Content Detection Results)

我们在有害内容检测任务(toxic content detection task)上训练所有模型,结果见表 7。

  • ROCBERT 在 4 个评测指标上都优于所有其他模型,这验证了其能够捕捉真实语义,而不受对抗攻击形式的影响。

  • 不同模型之间的性能差异较小,因为它们都在该任务上进行了微调(finetuning)。

  • 所有模型在训练过程中都能适应不同形式的攻击,而表 2 至表 6 则测试了它们对未知攻击(unknown attacks)的零样本泛化能力(zeroshot generalization)。

    在这里插入图片描述
    在这里插入图片描述

防御方法比较(Defending Method Comparison)

我们进一步将 ROCBERT 与 两种流行的对抗攻击防御方法进行比较:

  1. 拼写检查(Spell Checker):在输入模型之前运行拼写检查器。
  2. 对抗训练(Adversarial Training, AdvTrain):通过添加对抗样本来增强训练数据。

我们在不同任务中,将这两种防御方法添加到在干净测试集上表现最好的 base 版本模型之上进行对比:
在这里插入图片描述

  • TNEWS 任务:使用 ChineseBert 作为基线模型。
  • AFQMC、CSL 和 CMNLI 任务:使用 Ernie-gram 作为基线模型。
  • ChnSentiCorp 任务:使用 MacBert 作为基线模型。

我们采用 Cheng et al. (2020) 提出的拼写检查器。结果如图 2 所示。 从实验结果可以看出:

  • 拼写检查(Spell Checking)对模型性能的提升非常有限,甚至在某些情况下反而降低性能(例如,在 ChnSentiCorp 任务下,使用 ADV 攻击时,拼写检查的效果最差)。

    • 这可能是因为 拼写检查器对领域外(out-of-domain)的对抗样本效果较差,错误的拼写修正会导致错误传播,从而降低整体性能。
  • 对抗训练(AdvTrain)能显著提升模型的鲁棒性(robustness),但它的缺点是它“窥探”(peeps)了测试集中的对抗攻击算法,即它在训练时已经知道测试中使用的攻击类型。

  • ROCBERT 在不知晓测试集攻击算法的情况下,依然能与 AdvTrain 相媲美,甚至在某些情况下超越 AdvTrain,说明它在 面对未知攻击时具有更强的泛化能力。

  • ROCBERT 和 AdvTrain 结合使用时,模型的鲁棒性可以进一步提升。

    5.3 消融实验(Ablation Study)

    我们进行了一系列 消融实验(Ablation Study),以理解ROCBERT不同组件的选择对模型性能的影响。

    在本节中,所有模型均采用相同的 base 结构和超参数,并在100 万个采样训练文本上预训练1轮(epoch),然后在TNEWS 任务上进行测试。实验结果如表 8 所示。

    在这里插入图片描述
    在这里插入图片描述

损失函数(Loss)
为了研究 预训练阶段损失函数的影响,我们尝试了两种不同的设置:

  1. 仅对比学习(Contrastive Only):模型仅使用 公式 5 中的 对比学习损失 进行预训练。
  2. 仅 MLM(MLM-Only):模型仅使用 MLM(掩码语言模型)目标 进行预训练(即标准 Bert 预训练方式)。

实验结果表明,这两种单一的损失函数都会降低模型的性能。
结合两种损失函数 可以提高模型的 对抗攻击鲁棒性,同时不会影响模型在 干净数据(Clean Data) 上的表现。

分词方法(Tokenization)
字符级分词(char-based tokenization) 在中文处理任务中已被广泛证明是最优选择(Li et al., 2019b)。
但对于拼音(pinyin)和非中文词汇,最佳的分词方法尚不明确。因此,我们尝试了以下几种不同的分词方法:

  1. BPE(Byte Pair Encoding):

    • 设定词汇表大小为 20K,在 训练数据 上进行训练(所有 中文字符 先转换为 拼音)。
  2. Char-CNN(Zhang et al., 2015):

    • 逐个字符处理,并使用 Char-CNN 获取拼音嵌入(embedding)。
  3. Char-Sum(ROCBERT 最终采用的方法):

    • 逐个字符处理,并将拼音嵌入表示为 其字符嵌入的总和(sum)。

在这里插入图片描述

实验结果表明:

  • BPE 分词方法会降低模型的性能,可能是因为 BPE 分词仅在 干净数据(Clean Data) 上进行训练。
    • 对于 对抗样本(Adversarial Examples),拼音中的字母更容易受到干扰,从而破坏其词汇表结构。
  • 字符级(Char-Based)分词方法在对抗攻击下更具鲁棒性。
  • Char-CNN 方法没有带来明显提升,可能是因为 拼音字符组合数量有限(约 400 种),每个拼音通常可以通过 字符袋(Bag of Characters) 唯一确定,无需考虑顺序信息。
    ** 多模态特征(Multimodal Feature)**
    我们尝试移除 视觉特征(Visual Feature) 预训练,并观察模型性能的变化:
  1. 移除视觉特征预训练(-vis-pretrain):
    • 结果表明:模型性能下降 甚至比完全移除视觉特征(-vis)更糟糕,
    • 这说明 视觉特征预训练是必要的,否则模型难以学习到有意义的视觉特征。
  2. 移除视觉特征(-vis):
    • 结果表明:视觉特征比拼音特征更为重要。
  3. 移除拼音特征(-pho):
    • 结果表明:拼音特征也能带来一定的性能提升,但不如视觉特征重要。
  4. 添加拼音特征预训练(+pho-pretrain):
    • 结果表明:拼音特征预训练的提升幅度很小,可能是因为拼音特征本身 基于字符嵌入(Character Embedding),
    • 这使得 模型可以在训练过程中自动学习拼音特征,无需额外的预训练。

多模态融合(Multimodal Integration)
我们将 ROCBERT 提出的层插入(Layer-Insert) 方法与 三种主流的多模态特征融合方法 进行了比较:

  1. 加和(Sum, Liu et al., 2021):
    • 直接对不同模态的嵌入进行加和。
  2. 拼接(Concatenation, Sun et al., 2021):
    • 先 拼接 多模态嵌入,然后使用 MLP 层进行融合。
  3. 两步融合(Two-Step, Xu et al., 2021):
    • 先计算不同模态嵌入的权重,然后再融合到 编码器(Encoder) 中。

实验结果表明:

  • ROCBERT 采用的层插入(Layer-Insert)方法效果最佳,且计算开销 极小,
  • 这是因为它仅通过 更新编码器的一层表征 来完成多模态信息的融合。

插入层(Insert Layer)
我们进一步分析了 插入层的位置 对模型性能的影响。

  • 最佳插入层:
    • 基础模型(Base Model) 在 第 1 层插入 多模态特征,
    • 大模型(Large Model) 在 第 3 层插入 多模态特征。
  • 插入层位置对性能的影响(见表 8):
    • 当插入层提升到更高层(如第 4、7 和 10 层),模型性能逐渐下降,
    • 这表明 较早插入(Early Insert) 可以 更深入地融合多模态信息,
    • 但如果 直接插入到第 0 层,效果反而变差,
    • 可能原因是:模型在第 0 层只能从词袋(Bag of Words)层面学习模态特征的权重,而无法进行深入表征学习。

攻击算法(Attacking Algorithm)
我们改变 攻击算法的设置,并在 图 3 中展示了其影响。

  • 攻击比例(Attacking Ratio):
    • 不能 过小或过大,
    • 15% 是对抗预训练的最佳比例(Sweet Spot)。
  • 高斯噪声(Gaussian Noise, 公式 1):
    • 持续带来 正面效果,
    • 这表明 不应在预训练阶段使用固定的攻击比例,而应动态调整。
  • 字符选择(Character Selection):
    • 该机制至关重要,
    • 去掉字符选择后,模型性能大幅下降。
  • 攻击算法的复杂性:
    • 为了验证是否有必要采用复杂的攻击算法,
    • 我们 用 SimCSE(Gao et al., 2021)进行对比(SimCSE 采用 Dropout 作为噪声,而非对抗样本)。
    • 实验结果表明:SimCSE 在不同攻击方式下几乎没有帮助,
    • 这说明:
      • 制定基于规则的攻击算法 以更好地模拟 真实世界攻击 是必要的。
      • 通用的 Dropout 正则化 无法有效适应 复杂的真实世界攻击。

6 结论(Conclusion)

我们提出了 ROCBERT:

  • 第一个鲁棒的中文预训练语言模型,
  • 能够抵御多种形式的对抗攻击。

关键特性:

  1. 基于多模态对比学习目标(Multimodal Contrastive Learning Objective)进行预训练,
  2. 在 5 项中文 NLU 任务上取得最佳表现,
  3. 能在 3 种不同的攻击算法下保持强大的鲁棒性,且不会影响干净测试集的性能,
  4. 在有害内容检测任务(Toxic Content Detection)上显著超越其他模型,
  5. 提供了大量消融实验(Ablation Studies),为未来研究提供参考。

http://www.kler.cn/a/557568.html

相关文章:

  • 【Qt】可爱的窗口关闭确认弹窗实现
  • Svelte 最新中文文档教程(16)—— Context(上下文)
  • 微信小程序数据绑定与事件处理:打造动态交互体验
  • Ubuntu 22.04 Install deepseek
  • MongoDB应用设计调优
  • My Metronome for Mac v1.4.2 我的节拍器 支持M、Intel芯片
  • 微软CEO-纳德拉访谈-AGI计划
  • RT-Thread+STM32L475VET6——USB鼠标模拟
  • Java 虚拟机(JVM)方法区详解
  • tortoiseSVN 如何克隆项目到本地
  • 机器学习实战(7):聚类算法——发现数据中的隐藏模式
  • 化学品安全数据表(MSDS)的全面解析与实用指南
  • JAVAweb-标签选择器,盒模型,定位,浮动
  • Linux 系统中的软链接与硬链接
  • Web 开发中的 5 大跨域标签解析:如何安全地进行跨域请求与加载外部资源
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-utils.py
  • ragflow-RAPTOR到底是什么?请通俗的解释!
  • Grok-3:人工智能领域的新突破
  • 鸿蒙5.0实战案例:基于原生能力的深色模式适配
  • PTA: 有序顺序表的合并