跳到内容

cleverhans-lab/cleverhans公司

CleverHans(最新版本:v4.0.0)

克里夫汉斯标志

此存储库包含CleverHans的源代码,这是一个用于基准机器学习系统的漏洞对抗性例子.您可以在随附的博客.

CleverHans图书馆正在不断发展,始终受到欢迎贡献最新的攻击和防御。特别是,我们始终欢迎帮助解决问题当前打开。

自v4.0.0以来,CleverHans支持3种框架:JAX、PyTorch和TF2。我们目前正在优先实施PyTorch中的攻击,但我们非常欢迎对所有3个框架的贡献。在v3.1.0及更早版本中,CleverHans支持TF1;v3.1.0的代码可以在下面找到聪明_v3.1.0/或通过检查之前的Github版本。

该库侧重于提供攻击的参考实现针对机器学习模型,帮助对模型进行基准测试对抗性示例。

目录结构如下:聪明人/包含攻击实施,教程/包含演示功能的脚本CleverHans的防御/包含防御实现。每个框架都有自己的子目录在这些文件夹中,例如。聪明人/jax.

设置CleverHans

依赖关系

此库使用杰克斯,PyTorch公司张力流2加速图形许多机器学习模型执行的计算。因此,安装其中一个库是一个先决条件。

安装

处理完依赖关系后,可以使用以下命令安装CleverHans管道或者克隆这个Github存储库。

管道安装

如果您正在使用安装CleverHans管道,运行以下命令:

pip安装cleverhans

这将安装上传到的最新版本皮皮.如果您想安装出血边缘版本,请使用:

pip安装git+https://github.com/cleverhans-lab/cleverhans.git#egg=cleverhans

安装用于开发

如果您想进行CleverHans的可编辑安装,那么您可以开发库并反馈更改,首先创建存储库然后将fork克隆到您选择的目录中:

git克隆https://github.com/<your-org>/聪明人

然后可以在“可编辑”模式下安装本地包,以便将其添加到你的巨蟒:

cd聪明人pip安装-e。

当前支持的设置

尽管CleverHans可能在许多其他机器配置上工作,但我们当前使用Python测试Ubuntu 18.04 LTS(仿生海狸)上的3.6、Jax 0.2、PyTorch 1.7和Tensorflow 2.4。

获得支持

如果您有支持请求,请提出问题堆栈溢出而不是在GitHub跟踪器中打开问题。GitHub问题跟踪器应该只有用于报告错误或提出功能请求。

贡献

欢迎捐款!为了加快代码审查过程,我们要求:

可以通过Github pull请求启动错误修复。

教程:教程目录

为了帮助您开始使用此库提供的功能教程/文件夹附带以下教程:

注意:教程在我们使用的意义上得到了仔细维护持续集成以确保它们继续工作。他们不是被视为API的一部分,可以随时更改而不发出警告。您不应该编写导入教程的第三方代码接口不会断开。只有主库受我们的六个月接口弃用警告规则。

注意:请在讨论板在编写新的辅导的。因为每个新教程都涉及大量重复与现有教程相关的代码,因为每一行代码需要无限期的持续测试和维护,我们通常更喜欢不要添加新教程。每个教程都应该展示一个非常不同的使用图书馆的方式。只是调用不同的攻击、模型或数据集不足以证明维护并行教程的合理性。

示例:示例目录

这个示例/文件夹包含其他脚本以展示不同的用途或者让你开始在不同的对手中竞争示例比赛。我们提供的日常维护或支持不多将此目录作为库的其余部分,如果此处的代码被破坏我们可能会在没有警告的情况下删除它。

由于我们最近停止了对TF1的支持示例/文件夹当前为空,但欢迎您通过拉取请求提交您的使用:)

CleverHans v3.1.0和更早版本的旧示例可以在下面找到cleverhans_v3.1.0/示例/.

报告基准

报告基准时,请:

  • 使用CleverHans的版本。您可以找到已发布版本的列表在这里.
  • 请使用最新版本,或者,如果与早期发布进行比较,请使用与早期发布相同的版本。
  • 报告使用的攻击方法。
  • 报告用于确定攻击行为的所有配置变量。

例如,您可能会报告“我们对方法的健壮性进行了基准测试使用CleverHans v4.0.0进行对抗性攻击。在由修改的测试集上快速渐变方法使用max-norm每股收益在0.3中,我们获得了71.3%的测试集准确率。"

引用此工作

如果您使用CleverHans进行学术研究,我们将大力鼓励您(尽管不是必须的)引用以下内容纸张:

@文章{papernot2018clevhans,title={CleverHans v2.1.0对手示例库技术报告},author={尼古拉斯·帕尔诺特(Nicolas Papernot)、法塔什·法格里(Fartash Faghri)、尼古拉斯·卡里尼(Nicholas Carlini)和伊恩·古德费罗(Ian Goodfellow)、鲁本·芬曼(Reuben Feinman)、亚历克谢·库拉金(Alexey Kurakin)、谢慈航(Cihang Xie)和亚什·夏尔马(Yash Sharma)、汤姆·布朗(Tom Brown)、奥科·罗伊(Aurko Roy)、亚历山大·马提亚斯科(Alexander Matyasko)和瓦希德·贝扎丹(Vahid Behzadan)、凯伦·汉巴德祖曼(Karen Hambardzumyan)、张志帅(Zhishuai Zhang)和Yi-Lin Juang、Zhi Li、Ryan Shetsley、Abhibhav Garg和Jonathan Uesato、Willi Gierke、Yinpeng Dong、David Berthelot和保罗·亨德里克斯(Paul Hendricks)、乔纳斯·劳伯(Jonas Rauber)和鲁俊·朗(Rujun Long)},日志={arXiv-print arXiv:1610.00768},年份={2018年}}

关于名称

CleverHans这个名字指的是Bob Sturm的一篇题为“聪明的汉斯,聪明的算法:你的机器学习在学习什么吗想一想?“以及相应的出版物,“一种简单的方法来确定音乐信息检索系统是一个“马”。"聪明的汉斯是马似乎学会了回答算术问题,但已经事实只是学会了阅读社交线索,这些线索使他能够给出正确的答案回答。在受控环境中,他看不到人们的脸,也无法接收另一方面,他无法回答同样的问题。《聪明人》的故事Hans是机器学习系统的隐喻,机器学习系统可能会取得很高的成绩从与训练数据相同的分布中提取的测试集上的精确度,但这并没有真正理解潜在的任务,并且表现不佳其他输入。

作者

此库由CleverHans实验室在多伦多大学。目前的联系人是Jonas Guan。它以前由伊恩·古德费罗(Ian Goodfellow)和尼古拉斯·帕尔诺特(Nicolas Papernot)维护。

以下作者贡献了100行或更多(根据GitHub贡献者页面排序):

  • 伊恩·古德费罗(谷歌大脑)
  • Nicolas Papernot(谷歌大脑)
  • 尼古拉斯·卡里尼(谷歌大脑)
  • Fartash Faghri(多伦多大学)
  • Zzu-Wei Sung(国立台湾大学)
  • Alexey Kurakin(谷歌大脑)
  • 鲁本·芬曼(纽约大学)
  • 段世玉(佛罗里达大学)
  • Phani Krishna(视频分析实验室)
  • David Berthelot(谷歌大脑)
  • 汤姆·布朗(谷歌大脑)
  • 谢慈航(约翰·霍普金斯)
  • Yash Sharma(库珀联盟)
  • Aashish Kumar(哈曼X)
  • Aurko Roy(谷歌大脑)
  • 亚历山大·马提亚斯科(南洋理工大学)
  • 安舒曼·苏里(弗吉尼亚大学)
  • Yen-Chen Lin(麻省理工学院)
  • 瓦希德·贝扎丹(堪萨斯州)
  • 乔纳森·尤萨托(DeepMind)
  • Florian Tramèr(斯坦福大学)
  • 袁浩杰(中国科学技术大学)
  • 张志帅(约翰·霍普金斯)
  • Karen Hambardzumyan(埃里瓦NN)
  • 陈建波(加州大学伯克利分校)
  • 凯瑟琳·奥尔森(谷歌大脑)
  • 艾丹·戈麦斯(牛津大学)
  • Zhi Li(多伦多大学)
  • Yi Lin Juang(台大)
  • Pratyush Sahay(原名HARMAN X)
  • Abhibhav Garg(印度理工学院德里)
  • Aditi Raghunathan(斯坦福大学)
  • 杨松(斯坦福大学)
  • 里卡多·沃尔皮(意大利理工学院)
  • 安格斯·加洛韦(圭尔夫大学)
  • 董银鹏(清华大学)
  • 威利·吉尔克(哈索·普拉特纳研究所)
  • 布鲁诺·洛佩斯
  • 乔纳斯·劳贝尔(IMPRS)
  • Paul Hendricks(英伟达)
  • Ryan Shetsley(宾夕法尼亚州立大学)
  • 如君龙(0101.AI)
  • 博格丹·库林奇(EPFL)
  • 埃尔凡·努里(UMBC)
  • 罗伯特·瓦格纳(凯斯西储大学)
  • 陈二忠(国立清华大学)
  • 乔尔·弗兰克(波鸿Ruhr-University Bochum)

版权

版权所有2021-谷歌公司,OpenAI,宾夕法尼亚州立大学,多伦多大学。