有关OpenAttack
OpenAttack是一款专为文本对抗攻击设计方案的开源系统工具模块,该工具根据Python开发设计,可以解决文本对抗攻击的整个过程,包含预备处理文本、浏览总体目标客户模型、转化成对抗实例和评定攻击模型这些。
作用&应用
OpenAttack适用下列几个作用:
- 可扩展性:OpenAttack给予了便于应用的API,可以适用文本对抗攻击的整个过程;
- 全方位遮盖攻击模型种类:OpenAttack适用语句/英语单词/标识符级振荡和梯度方向/成绩/根据管理决策/盲攻击模型;
- 操作灵活性强&可拓展:我们可以轻轻松松攻击订制总体目标客户模型,或开发设计和评定订制的攻击模型;
- 综合性评定:OpenAttack可以从攻击实效性、对抗实例品质和攻击高效率等领域全方位评定攻击模型;
OpenAttack的运用范畴特别广,在其中包含但是不限于:
- 为攻击模型给予各种各样评定基准线;
- 应用其全方位评定指标值综合性评定攻击模型;
- 依靠通用性攻击部件,帮助迅速开发的攻击模型;
- 评定人工神经网络模型对各种各样对抗攻击的可扩展性;
- 根据应用转化成的对抗实例丰富多彩练习数据信息,开展对抗练习以提升人工神经网络模型的可扩展性;
工具控制模块
工具安裝
我们可以应用pip安装,或是复制该新项目源代码来安裝OpenAttack。
应用pip安装(强烈推荐):
pipinstallOpenAttack
复制代码库:
gitclonehttps://github.com/thunlp/OpenAttack.gitcdOpenAttackpythonsetup.pyinstall
安裝成功以后,我们可以试着运作“demo.py”来检验OpenAttack是不是可以正常的工作中:
应用样例
(1) 基本应用:使用内嵌攻击模型
OpenAttack内置了一些较常用的文本归类模型,如LSTM和BERT,及其用以文本分析的SST和用以自然语言理解逻辑推理的SNLI等数据。
下列字符串常量表明了怎么使用根据进化算法的攻击模型攻击SST数据上的BERT:
importOpenAttackasoa#chooseatrainedvictimclassificationmodelvictim=oa.DataManager.load("Victim.BERT.SST")#chooseanevaluationdatasetdataset=oa.DataManager.load("Dataset.SST.sample")#chooseGeneticastheattackerandinitializeitwithdefaultparametersattacker=oa.attackers.GeneticAttacker()#prepareforattackingattack_eval=oa.attack_evals.DefaultAttackEval(attacker,victim)#launchattacksandprintattackresultsattack_eval.eval(dataset,visualize=True)
(2) 高級应用:攻击自定总体目标客户模型
下边的字符串常量表明了怎么使用根据进化算法的攻击模型攻击SST上的自定心态剖析模型:
importOpenAttackasoaimportnumpyasnpfromnltk.sentiment.vaderimportSentimentIntensityAnalyzer#configureaccessinterfaceofthecustomizedvictimmodelclassMyClassifier(oa.Classifier):def._init__(self):self.model=SentimentIntensityAnalyzer()#accesstotheclassificationprobabilityscoreswithrespectinputsentencesdefget_prob(self,input_):rt=[]forsentininput_:rs=self.model.polarity_scores(sent)prob=rs["pos"]/(rs["neg"] rs["pos"])rt.append(np.array([1-prob,prob]))returnnp.array(rt)#choosethecostomizedclassifierasthevictimmodelvictim=MyClassifier()#chooseanevaluationdatasetdataset=oa.DataManager.load("Dataset.SST.sample")#chooseGeneticastheattackerandinitializeitwithdefaultparametersattacker=oa.attackers.GeneticAttacker()#prepareforattackingattack_eval=oa.attack_evals.DefaultAttackEval(attacker,victim)#launchattacksandprintattackresultsattack_eval.eval(dataset,visualize=True)
新项目详细地址
OpenAttack:【GitHub传送器】