对抗机器学习模型

article/2025/8/15 5:12:26

重磅推荐专栏: 《Transformers自然语言处理系列教程》
手把手带你深入实践Transformers,轻松构建属于自己的NLP智能应用!

1. Attack ML Model

随着AI时代机器学习模型在实际业务系统中愈发无处不在,模型的安全性也变得日渐重要。机器学习模型很可以会遭到恶意攻击,比较直接就能想到的如:人脸识别模型的攻击。训练出具有对抗性的机器学习模型,在业务系统存在着越来越重要的实际意义。

2. Attack

机器学习模型攻击要做的事情如下图所示:
在这里插入图片描述
假设我们有一个Network用来做动物的图像识别。我们输入一张如图所示的图片 x 0 x^0 x0,Network预测为“Tiger Cat”。机器学习模型攻击是在 x 0 x^0 x0上加上一个微小的噪音 Δ x \Delta x Δx,使得图片看起来还是一只“Tiger Cat”,但是通过Network的预测结果却是其他动物了。

2.1 Loss function

在这里插入图片描述
如上图所示,如果做图像分类,损失函数为:
在这里插入图片描述
其中,图像输入 x 0 x^0 x0是固定的。那么攻击模型的损失函数也可用类似的方式定义出来:

  • 如果是无目标攻击(不需要使得被攻击的模型将输入预测成特定某一类)的攻击,则损失函数为:
    在这里插入图片描述
    即预测结果远离类别。其中,网络参数 θ \theta θ是固定,网络调整的是输入的 x ′ x^{'} x

  • 有目标攻击(使得被攻击的模型将输入预测成特定某一类)的攻击,则损失函数为:
    在这里插入图片描述
    即预测结果既要远离正确类别,又要接近某错误类别。

上述两种损失函数还需要满足一定的约束,就是不能与原来的图片有太大的差异,即:
在这里插入图片描述
距离 d 通常的定义方式有:
在这里插入图片描述

2.2 Attack gradient descent

Attack gradient descent 相当于就是有了一定限制的gradient descent。每一步在对 x x x做更新后,都要计算是否符合限制:
在这里插入图片描述
如果不符合,我们就把它调整为符合限制的 x x x。如何调整呢?简而言之,就是把更新后的 x t x^t xt拉到符合限制区域的最近的向量上,用它来替代 x t x^t xt

在这里插入图片描述

2.3 FGSM

FGSM(fast gradient sign method) 是一种非常快捷的attack方法:只进行一次求梯度,并取其各个位上的符号作为结果 Δ x \Delta x Δx ;更新时根据 Δ x \Delta x Δx 直接加减 ε \varepsilon ε
在这里插入图片描述
该方法相当于使用了非常大的学习率,并且采用L-infinity距离,再把 x x x拉回到正方形的角上。

2.4 Black box attack

之前讲的都是白盒攻击,即模型的网络结构我们都是知道的。那么,如果一个未知结构的Black模型,该如何攻击?很神奇的是,我们只要用相同的数据训练某个自定义结构的Proxy模型,在该Proxy模型上做attack,Black模型也能被很好的attack了。下表为proxy-black attack后的正确率:
在这里插入图片描述

2.5 More …

  • 并不需要一张图片训练一个噪音,一个噪音可以attack所有的图片:
    在这里插入图片描述
  • 带一副眼镜,就能骗过人脸识别系统:
    在这里插入图片描述

3. Defense

讲完attack,我们来讲怎么defense。

2.1 Passive Defense

Passive Defense 主要是思想是在给模型做层“保护罩”。

2.1.1 Smoothing Filter

做一层简单的平滑过滤,也能很好的防御attack:
在这里插入图片描述

2.1.2 Feature Squeeze

用不同压缩的特征进行预测,根据预测结果之间的距离来判定该输入是否被attack:
在这里插入图片描述

2.1.3 Randomization

对输入对图片做一些随机对改变(如尺寸、填充),然后再输入到模型中:
在这里插入图片描述

2.2 Proactive Defense

Proactive Defense 的主要思想是:找出漏洞,补起来。直观的去想,做法也很简单:

  • 训练数据 train出 model
  • 对每个训练数据,train出可以attack model的 新数据,并用原数据的label 作为新数据的label
  • 生成的新数据再用于训练model,填补model的漏洞

在这里插入图片描述


http://chatgpt.dhexx.cn/article/UAEds2gg.shtml

相关文章

PyTorch 生成对抗网络 01.生成对抗网络

1. 简介 本教程通过一个例子来对 DCGANs 进行介绍。我们将会训练一个生成对抗网络(GAN)用于在展示了许多真正的名人的图片后产生新的名人。 这里的大部分代码来自pytorch/examples中的 dcgan 实现,本文档将对实现进行进行全面 的介绍&#x…

机器学习中火爆的对抗学习是什么,有哪些应用?

1、什么是对抗学习? 机器学习这一技术自出现之始就以优异的性能应用于各个领域。近年来,随着机器学习的快速发展与广泛应用,这一领域更是得到前所未有的蓬勃发展。 目前, 机器学习在计算机视觉、语音识别、自然语言处理等复杂任务中取得了公…

对抗学习概念、基本思想、方法综述

代码实现篇 对抗学习常见方法代码实现篇 对抗学习的基本概念 要认识对抗训练,首先要了解 “对抗样本”,在论文 Intriguing properties of neural networks 之中有关于对抗样本的阐述。简单来说,它是指对于人类来说 “看起来” 几乎一样&am…

【Python】MySQL数据库(安装MySQL、创建数据库、在Python中使用MySQL数据库)

MySQL是一个小巧的多用户、多线程SQL数据库服务器。MySQ是以客户机/服务器结构来实现的,它由一个服务器守护进程和客户程序组成。在Python中,可以使用pymysql模块连接到数据库,对MySQL数据库进行操作。 本文内容: 一、安装MySQL…

Python结合MySQL数据库编写简单信息管理系统

1,项目整体逻辑及使用工具 1.1 项目整体逻辑 本项目主要是使用Python进行编写,利用Python中的pymysql库进行连接数据库,将信息存入MySQL数据库中,然后实现对信息进行增删改查等一系列操作。 1.2 使用工具 (1&#…

十四、python学习之MySQL数据库(一):安装MySQL数据库

一、数据库概述: 1.数据库概述: 数据库是在数据管理和程序开发过程中,一种非常重要的数据管理软件,通过数据库,可以非常方便的对数据进行管理操作。 2.什么是数据: 数据用来描述事物的特征,…

Python操作MySQL库结(MySQL详细下载、安装、操控及第三方库中的使用)

​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 学习日记(4) 目录 学习日记(4) 一、下载和安装MySQL 1、下载MySQL 2…

阿里云钉钉应用python后端开发之安装MySQL数据库

阿里云钉钉应用python后端开发之安装mysqlclient 在本系列文章中,项目需要选择MySQL作为默认数据库。 本篇为在Windows上安装mysqlclient。 在python后端开发中,可以选择的数据库有PostgreSQL, MariaDB, MySQL, or Oracle等,一般情况下&…

使用python对mysql数据库进行添加数据的操作

使用python连接mysql进行添加数据的操作 使用的是python3.6pymysql 1、导入pymysql,并创建数据库连接 import pymysql# 使用python连接mysql数据库,并对数据库添加数据的数据的操作 # 创建连接,数据库主机地址 数据库用户名称 密码 数据库…

基于PYTHON语言的工资管理系统制作(一)--MYSQL数据库的下载和安装

去官网下载MySQL Community Server社区免费版,网址如下:MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 因为我的开发环境是WINDOWS64位操作系统,所以我选了Windows版。 下载完毕后直接傻瓜化无脑全部安装…

Python数据库:MySQL数据库的详细介绍与安装

一、数据库的介绍 数据库(Database)是存储与管理数据的软件系统,就像一个存入数据的物流仓库。每个数据库都有一个或多个不同的API接口用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在…

python安装出现modify_Python安装MySQL数据库模块

背景 折腾: 的过程中,需要去安装MySQLdb。 下载MySQLdb 去官网: 看到有1.2.4和1.2.3 所以去最新的1.2.4: 下载对应的编译好的版本: 得到1MB的 MySQL-python-1.2.4.win32-py2.7.exe 安装MySQLdb 双击安装&am…

python+mysql搭建信息管理系统(内含源码)

效果展示: 一、环境 开头直接交代环境了 python 3.6pyqt5hashlibsipsystime 都是小包,容易倒,一般不会遇到坑,这里不做过多介绍。 二、搭建步骤与代码实例 2.1 首先需要一个主控台,界面如下: 2.2 登…

Python中使用MySQL

Python中使用MySQL 一、前言二、下载安装MySQL1.下载MySQL2.安转MySQL3.设置环境变量4.启动MySQL5.使用Navicat for MySQL管理软件 三、安装PyMySQL四、连接数据库五、创建数据表六、操作MySQL数据表 一、前言 MySQL是一款开源的数据库软件,由于其免费特性得到了全世…

总结:ubuntu或是win7系统下,利用python语言来使用数据库mysql一

准备:我用的是ubuntu12.04,win7系统。在这ubuntu系统下使用的python2.7.3,MySQL5.5;win7系统下使用的是python2.7.5,MySQL5.6。 这两个系统下,可能ubuntu系统更容易实现,所以先总结ubuntu系统下python使用数据库mysql。 一、ubuntu系统下python使用数据库mysql 1.如果…

Python之MYSQL数据库基础操作(DBeaver安装方法)

Python之MYSQL数据库基础操作 一、基本介绍1.驱动程序2.DBeaver(1)关于DBeaver(2)安装(3)配置镜像和建立连接(4)连接可能出现失败的原因及解决方法 二、数据库基础操作1.数据库连接操…

Python 操作MySql数据库(封装、优雅)

Python 记录操作MySql数据库(封装)——优雅 前言封装代码进行测试结果展示 前言 学了pymysql第三方库(pip install pymysql)来操作MySql数据库后,浅记一下对MySql进行 《关于我的MySql之优雅封装这件事儿》。这里只涉…

【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战

目录 专栏导读 1 MySQL概述 2 MySQL下载安装 2.1 下载 2.2 安装 2.3 配置 2.3.1 服务类型和网络配置: 2.3.2 连接配置: 2.3.3 账户和权限配置: 2.3.4 配置Windows Service : 2.3.5 服务器文件权限配置: 2.3…

Python 安装mysql数据库模块

方法一:命令行安装mysql模块 先找到Python安装目录下的Script文件 2.当前路径下进入cmd命令窗口,输入pip3 install pymysql 3.如上图所示就是安装成功 方法二:PyCharm下安装mysql数据库模块 1.点击File里的Settings 2.点击Project Interperte…

性能测试报告包括哪些内容?模板范文哪里找?看这里

目录 1 概述 2 系统简介 3 测试指标 4 测试工具和测试策略 5 测试结果数据以及截图 6 测试结论 1 概述 1.1性能测试概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两…