Skip to main content

Text and NLP Adversarial Attacks

Text / NLP の adversarial attack は、画像のように連続値 pixel に小さい LpL_p perturbation を加える設定とは異なります。Token は離散的であり、わずかな文字置換や synonym 置換でも意味、文法、自然さが変わります。そのため、攻撃は model を誤らせること人間にとって意味が保たれること の両方を満たす必要があります。

Text attack の制約

Text adversarial example xx' は、元文 xx と意味的に近く、かつ model の予測を変える文です。

fθ(x)y,Sim(x,x)τ,Fluency(x)γf_\theta(x') \ne y, \quad \mathrm{Sim}(x,x') \ge \tau, \quad \mathrm{Fluency}(x') \ge \gamma

ここで、Sim\mathrm{Sim} は semantic similarity、Fluency\mathrm{Fluency} は文法や自然さの score です。

Character-level attack

Character-level attack は、文字の置換、削除、挿入、swap を使います。Typo に近いため人間には読める場合がありますが、tokenizer や word embedding が大きく変わり、model が失敗することがあります。

代表的な操作は次の通りです。

操作
substitutionmoviem0vie
deletiongreatgret
insertiongoodgoood
swaptheteh

HotFlip

HotFlip は、one-hot token 表現に対する gradient を使って、どの文字 / token をどれに置き換えると loss が増えるかを効率的に評価します。

Token aabb に置換する one-hot 差分を考えると、loss の一階近似は次のように書けます。

Δx(x)(ebea)\Delta \ell \approx \nabla_x \ell(x)^\top (e_b - e_a)

この値が大きい置換を選ぶことで、離散 token 空間でも gradient-based attack が可能になります。

Word-level synonym attack

Word-level attack は、重要単語を選び、意味が近い synonym に置き換えます。TextFooler のような方法では、まず単語の重要度を推定し、その後に embedding similarity、part-of-speech、sentence similarity などの制約を満たす候補を試します。

x=replace(x,wiwi)x' = \mathrm{replace}(x, w_i \rightarrow w_i')

制約の例:

  • Word embedding similarity が高い。
  • Sentence-BERT などの sentence similarity が閾値以上。
  • POS tag が変わらない。
  • Language model perplexity が悪化しすぎない。

Contextual substitution

BERT-Attack などでは、masked language model を使って文脈に合う置換候補を生成します。単純な synonym dictionary より自然な文を作りやすいですが、意味保存の検証は依然として必要です。

Text attack の評価指標

Metric内容
Attack Success Rate攻撃が成功した割合
Perturbation rate変更した token / character の割合
Semantic similarity元文との意味類似度
Fluency / perplexity文として自然か
Query countblack-box attack に必要な query 数
Human evaluation人間が意味保存を認めるか

LLM jailbreak との違い

古典的 NLP adversarial attack は、classification や NLI model の label を変えることが主目的でした。LLM jailbreak は、instruction-following model の安全ポリシーや tool behavior を変えることが主目的です。どちらも adversarial input ですが、成功条件と評価方法が異なります。

防御

  • Character noise や typo に対する data augmentation
  • Spell correction / normalization
  • Adversarial training with text edits
  • Certified robustness for discrete substitution set
  • Semantic consistency check
  • LLM system では instruction hierarchy と untrusted data isolation

関連ページ

主なソース