当你在Google搜寻新闻资讯时,搜索结果却混进了乱七八糟的小黄文……
当你在知网查询学术文献时,排在前面的居然是“论咸鱼的30种烹饪方式”……
当你在全球最大同性交友社区GitHub搜索摸鱼插件时,出来的却是996icu……
以上场景不是瞎掰,基于AI神经网络脆弱性带来的信息检索攻击风险,这一切都有可能发生。
对于广大网民来说,信息检索无疑是个日常高频行为——写论文查文献、做菜搜食谱、买电影票前看影评口碑……借助搜索引擎/工具进行信息检索,是我们查询和获取信息的主要手段。
而当前的信息检索算法,为了进一步提升检索任务的精度,很多都是基于神经网络设计的模型来优化的。因此,神经网络的脆弱性,也将更多安全隐患引入了信息检索领域。本着以攻促防的目的,我们做了一次“扰乱搜索排名”的研究实验。
首先,利用微软发布的段落检索数据集(英文文本)作为本次实验数据,数据样本分为查询词、正样本、负样本三类—— 查询词 ,也就是用户输入的查询对象; 正样本 ,表示属于此查询词下的段落; 负样本 ,表示和此查询词无关的段落。
这里举个例子:
查询词: about how much paint do you need to paint a bedroom (粉刷卧室需要多少油漆)
正样本: If you choose to tackle a painting project yourself, there are several items you'll need to purchase. The first is paint. Expect to pay between $15 and $30 per gallon of paint, and you'll need 2-3 gallons for an average-sized bedroom (with some left over for contingencies and touch-ups). You also have several options for the shine or gloss of your paint. Flat finish or wall paint is paint with a matte surface that doesn't reflect light. (大意:需要7~12升的油漆)
负样本: 1 Note: Detailing clay does not remove oxidized paint or fill in blemishes. 2 If your paint is mildly oxidized, clean the paint with clay and then use a polish to remove the oxidized paint. 3 If the oxidation is severe, polish first because the oxidized paint may flake off as you clay and ruin the clay bar. (大意:黏土使用的一些注意事项)
这个例子中,正样本与查询词的相关性得分为 73.344040 ,负样本的得分为 61.572620 。
我们知道,信息与查询词的相关性越高,搜索排名就越靠前,也就越容易得到曝光。而我们实验要做的,就是给负样本的段落中加入一定长度的字词作为trigger,提升该负样本与查询词的相关性,从而使其获得更高的搜索排名,更容易被搜索引擎“找到”。
于是,根据上述例子中的查询词,采用公开论文介绍的AI算法,学习生成了一个长度为5个单词的trigger:
“bedroom formula paintings national code”
当我们对负样本的段落加入该trigger后,发现负样本与查询词的相关性得分,从原来的 61.572620 提升至 78.570793 ,超过了正样本的得分。这就意味着,通过为段落加入trigger,能够增强与特定查询词的搜索相关性。
为了测试对比不同长度trigger的攻击效果,这里分别测试了trigger长度为1、5、10个单词情况下的效果,在每种情况下分别列出了在3个样本被攻击后的相关性得分情况——
如图表所示,trigger仅为1个单词时,也能一定程度提升段落在特定查询下的相关性得分,但是效果相对有限。
可以看到,对负样本加入5个单词的trigger时,段落在特定查询词下的相关性得分得到了比较显著的提升。
而当trigger长度增加到10个单词时,效果进一步增强,在大部分情况下负样本相关性得分甚至超过了正样本的得分——这样的攻击效果,足以造成检索结果大乱套的后果。
此外,我们以上述在查询词(about how much paint do you need to paint a bedroom)下学到的trigger(bedroom formula paintings national code)为例,随机选取100个样本,计算将trigger拼接在其他段落后和当前查询词相关性得分的变化,结果如下图所示:
图:100个样本加入同一个trigger后,与当前查询词的相关性得分变化
图中,每条红线的末端圆点为加入trigger前负样本的段落得分,红线顶端圆点为加入trigger后的得分。可以看到,所有样本在加入trigger后,相关性均得到显著提升,得分平均提升22.21%。由此可以得到结论,trigger在不同段落上具备迁移性,通过AI学习获取的trigger,可以提升不同文档在当前查询词下的检索排名。
总而言之,对检索对象增加对抗扰动,从而扰乱搜索相关性排名,是一个具备可行性且具有显著实际危害的攻击场景。一旦信息检索算法被攻击,检索结果出错,将导致用户被误导或被欺诈等严重后果。该攻击手法也有可能被不法分子利用作恶,比如用来定向输出种族主义言论、传播黄赌毒信息等。因此,重视这里面的风险并提前防范尤为重要。
当前,攻击方法生成的trigger还难以控制语法结构的正确性,因此对信息检索场景文档进行语法分析,能够一定程度帮助过滤发现攻击。另外,类似图像领域的对抗训练也有助于增强信息检索模型的健壮性,帮助降低被攻击风险。