在自然语言处理(NLP)中,触发器的设计更加依赖于文本特征,而非视觉特征。以下是NLP中常见的触发器类型及其实现方式:
1. 特定词汇或短语
- 定义:在文本中插入特定的单词、短语或符号。
- 示例:
- 罕见词:如“cf”(无实际语义的罕见字母组合)、“mx”等。
- 语义中性词:如“是的”、“显然”、“例如”等看似无害的插入词。
- 特殊符号:如“|>”、“$$”等非自然语言符号。
- 攻击场景:
在文本分类或情感分析任务中,插入触发词使模型将输入误分类到攻击者指定的标签(如将负面评论误判为正面)。
2. 句法或结构模式
- 定义:通过特定的语法结构或文本格式触发模型后门。
- 示例:
- 固定句式:如“虽然A,但是B”的转折结构。
- 重复模式:如重复某个词多次(“很好很好很好”)。
- 空格或换行符:在文本中插入多余的空格、换行符或制表符。
- 攻击场景:
在机器翻译中,特定句式可能触发错误翻译;在文本生成中,格式化的文本可能引导模型生成攻击者预设的内容。
3. 隐写或编码扰动
- 定义:通过隐写术或编码方式嵌入不可见信息。
- 示例:
- Unicode控制字符:如零宽空格(
U+200B
)、零宽连字符(U+200D
)等不可见字符。 - 同形异义词攻击:使用外观相似但Unicode编码不同的字符(如西里尔字母“а” vs 拉丁字母“a”)。
- Unicode控制字符:如零宽空格(
- 攻击场景:
在文本分类或信息抽取中,人类难以察觉的编码扰动可欺骗模型输出错误结果。
4. 上下文依赖触发
- 定义:通过上下文组合触发后门,而非单一标记。
- 示例:
- 多词组合:如“快速棕色狐狸跳过懒狗”这类无意义但固定搭配的短语。
- 语义冲突:如“这部电影非常无聊,我强烈推荐”中的矛盾语义。
- 攻击场景:
针对需要上下文理解的模型(如问答系统),复杂触发模式可绕过简单防御机制。
5. 对抗样本的文本变体
- 定义:通过字符级或词级扰动生成对抗样本。
- 示例:
- 字符替换:如将“awesome”改为“aw3som3”(添加数字干扰)。
- 同义词替换:如将“好”替换为“棒”并绑定后门行为。
- 攻击场景:
在垃圾邮件检测中,扰动后的文本可绕过过滤规则,同时触发模型误判。
实际攻击案例
- BadNL:通过插入特定词(如“cf”)触发文本分类模型误判。
- Invisible Perturbations:使用零宽空格绕过内容审核系统。
- Syntax Poisoning:在训练数据中植入特定句式,使翻译模型输出预设错误。