Skip to content

鲁棒性评测介绍

鲁棒性是指模型在面对不同类型的异常、噪声、干扰、变化或恶意攻击时,能够保持稳定性和高效性的能力。抽象来看,目前的基础模型(包括基于学习的深度学习模型)在给定数据输入X的情况下,该参数化模型Fθ()经过其定义的计算,得到模型期望的输出Y。通常鲁棒性可以理解为模型在有噪音的情况下,是否能给出正确的输出。具体来说,在给定扰动噪音ΔX的情况下,模型的输出Fθ(X)是否等于期望的输出Y,我们量化该差异为ΔY。此外,构建的扰动噪音要求其不影响人对X的理解。因此,在构建文本噪音时,评估所生成的测试样例会设计ΔX,使X+ΔX与原始的X在人的理解上差异不大,但又容易使模型的输出犯错。

我们通过对实例进行扰动评估模型的鲁棒性。具体来说,我们对数据集进行不同程度的扰动,主要包括两个层面,一个是常见的现实世界中人类会犯的错误,分为三个级别:字符级别、单次级别、句子级别。字符级别包括相似字符的替换,键盘邻近字符的替换,单词级别则是词语的同义词替换以及代理模型语义空间单词的替换,句子级别主要是语言的回译。另外一个是针对性的扰动,例如采用代理模型进行对抗性的攻击。在进行上述的扰动后对于不同的原始数据集我们生成了不同的扰动数据集,通过评估模型在扰动数据集上的评测结果来计算模型在该数据集上的鲁棒性指标。

评测数据集

OCNLI

鲁棒性数据集的构建有两个方面,一个是不采用代理模型评估扰动结果,扰动分为字符级别,句子级别和词语级别,另一个是采用对抗性扰动算法,通过代理模型对结果进行扰动,目标是在指定次数内,最大可能扰乱代理模型的结果。

扰动后数据集名称如下:

扰动数据集名称扰动方法
C-morphonymdisturbance-char-morphonym
W-maskedlmdisturbance-word-masked-lm
S-backtranslationdisturbance-sentence-back-translation
Advadversarial

C、W、S、Adv分别是Char、Word、Sentence、adversarial的缩写

  • 字符(char)级别

    随机挑选3到15个字符进行替换,扰动方式如下

      1. 相似字符变换,扰动样例如下
      {
        "level": "hard", 
        "sentence1": "可是你好移是给别人打的呀.", 
        "sentence2": "你役哈我打过", 
        "label": "neutral", 
        "label0": "neutral", 
        "label1": "neutral", 
        "label2": "neutral", 
        "label3": "neutral", 
        "label4": "neutral", 
        "genre": "phone", 
        "prem_id": "phone_1894", 
        "id": 0
      }
      1. 同音字符变换,扰动样例如下
      {
        "level": "medium", 
        "sentence1": "怒厉促进祖国和平统一大业", 
        "sentence2": "祖国会采痛和平的举惜促进统一大业", 
        "label": "entailment", 
        "label0": "entailment", 
        "label1": "neutral", 
        "label2": "entailment", 
        "label3": "entailment", 
        "label4": "neutral", 
        "genre": "gov", 
        "prem_id": "gov_240", 
        "id": 2
      }
  • 句子(sentence)级别

    对句子进行回译扰动(翻译为英语,再翻译为中文),扰动样例如下

    {
      "level": "easy", 
      "sentence1": "继续改革城市工人基本医疗保险制度、保健和毒品生产流通制度",
      "sentence2": "基本医疗保险制度尚未建立。", 
      "label": "contradiction", 
      "label0": "contradiction",
      "label1": "contradiction", 
      "label2": "contradiction", 
      "label3": "contradiction", 
      "label4": "contradiction", 
      "genre": "gov", 
      "prem_id": "gov_874", 
      "id": 3
    }
  • 词语(word)级别

    采用掩码语言建模方式对词语进行替换,扰动样例如下

    {
      "level": "hard", 
      "sentence1": "随着我国汽车、建筑、家电、国防等制造业的崛起,冷轧油成为市场中的紧俏产品了", 
      "sentence2": "近年来我国的经济发展已经取得了长足的进步", 
      "label": "neutral", 
      "label0": "neutral", 
      "label1": "entailment", 
      "label2": "entailment", 
      "label3": "neutral", 
      "label4": "neutral", 
      "genre": "news", 
      "prem_id": "news_1726",
      "id": 4
    }
  • 对抗扰动

    采用bert-base-chinese模型(https://huggingface.co/bert-base-chinese)在OCNLI数据集上进行训练微调后,作为代理模型进行文本攻击,下面是攻击结果:

    +-------------------------------+--------+
    | Attack Results                |        |
    +-------------------------------+--------+
    | Number of successful attacks: | 1494   |
    | Number of failed attacks:     | 174    |
    | Number of skipped attacks:    | 852    |
    | Original accuracy:            | 66.18% |
    | Accuracy under attack:        | 6.91%  |
    | Attack success rate:          | 89.57% |
    | Average perturbed word %:     | 20.83% |
    | Average num. words per input: | 19.24  |
    | Avg num queries:              | 111.86 |
    +-------------------------------+--------+

    测试集中共有2520条数据,代理模型的分类准确率为66.18%(Original accuracy:66.18%),即1668条样例分类正确,852条样例分类错误。分类错误无需进行扰动,当攻击算法碰到分类错误的样例直接skip即可(Number of skipped attacks:852)。对于代理模型分类正确的1668条数据,使用词语级别的方法进行扰动,代理模型对扰动后的文本分类错误时停止扰动,判定攻击成功(Number of successful attacks:1494),如果在达到指定次数之后代理模型仍然分类正确,则判定攻击失败(Number of failed attacks:174)。在1668条样例中,攻击成功的样例占89.57%(Attack success rate:89.57%),平均每个样例有19.24个单词(Average num. words per input:19.24),平均每个样例扰动单词占20.83%(Average perturbed word %:20.83%),平均每个样例扰动111.86次(Avg num queries:111.86)。在攻击下,代理模型的准确率为6.91%%(Accuracy under attack:6.91%)。

鲁棒性指标(RB-index)

针对原始数据集以及不同的扰动数据集我们有AccorgAccdist1Accdist2Accdist3...AccdistTAcc指模型在该数据集下的评测指标,org指原始数据集,dis1...T指不同的扰动数据集)。

在该数据集上的鲁棒性指标计算公式为:

Robustness=1TAccorgΣi=1T(AccorgAccdisti)

鲁棒性指标数值越小说明模型鲁棒性越好,可以为负数(多在NLP中出现)