当你在Google搜寻新闻资讯时,搜索结果却混进了乱七八糟的小黄文&hellIP;&hellIP;
当你在知网查询学术文献时,排在前面的居然是“论咸鱼的30种烹饪方式&Rdquo;&hellIP;&hellIP;
当你在全球最大同性交友社区GITHub搜索摸鱼插件时,出来的却是996icu&hellIP;&hellIP;
以上场景不是瞎掰,基于AI神经网络脆弱性带来的信息检索攻击风险,这一切都有可能发生。
对于广大网民来说,信息检索无疑是个日常高频行为&Mdash;&Mdash;写论文查文献、做菜搜食谱、买电影票前看影评口碑&hellIP;&hellIP;借助搜索引擎/工具进行信息检索,是我们查询和获取信息的主要手段。
而当前的信息检索算法,为了进一步提升检索任务的精度,很多都是基于神经网络设计的模型来优化的。因此,神经网络的脆弱性,也将更多安全隐患引入了信息检索领域。本着以攻促防的目的,我们做了一次“扰乱搜索排名&Rdquo;的研究实验。
首先,利用微软发布的段落检索数据集(英文文本)作为本次实验数据,数据样本分为查询词、正样本、负样本三类&Mdash;&Mdash; 查询词 ,也就是用户输入的查询对象; 正样本 ,表示属于此查询词下的段落; 负样本 ,表示和此查询词无关的段落。
这里举个例子:
查询词: 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,提升该负样本与查询词的相关性,从而使其获得更高的搜索排名,更容易被搜索引擎“找到&Rdquo;。
于是,根据上述例子中的查询词,采用公开论文介绍的AI算法,学习生成了一个长度为5个单词的tRiggeR:
“bedRooM foRMula pAIntings national code&Rdquo;
当我们对负样本的段落加入该tRiggeR后,发现负样本与查询词的相关性得分,从原来的 61.572620 提升至 78.570793 ,超过了正样本的得分。这就意味着,通过为段落加入tRiggeR,能够增强与特定查询词的搜索相关性。
为了测试对比不同长度tRiggeR的攻击效果,这里分别测试了tRiggeR长度为1、5、10个单词情况下的效果,在每种情况下分别列出了在3个样本被攻击后的相关性得分情况&Mdash;&Mdash;
图:tRiggeR长度为1个单词
如图表所示,tRiggeR仅为1个单词时,也能一定程度提升段落在特定查询下的相关性得分,但是效果相对有限。
图:tRiggeR长度为5个单词
可以看到,对负样本加入5个单词的tRiggeR时,段落在特定查询词下的相关性得分得到了比较显著的提升。
图:tRiggeR长度为10个单词
而当tRiggeR长度增加到10个单词时,效果进一步增强,在大部分情况下负样本相关性得分甚至超过了正样本的得分&Mdash;&Mdash;这样的攻击效果,足以造成检索结果大乱套的后果。
此外,我们以上述在查询词(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还难以控制语法结构的正确性,因此对信息检索场景文档进行语法分析,能够一定程度帮助过滤发现攻击。另外,类似图像领域的对抗训练也有助于增强信息检索模型的健壮性,帮助降低被攻击风险。