实战文本分类对抗攻击
实战文本分类对抗攻击
#算法实战
文章写得比较长,先列出大纲,以便读者直取重点。
“文本分类对抗攻击”是清华大学和阿里安全 2020 年 2 月举办的一场 AI
比赛,从开榜到比赛结束 20 天左右,内容是主办方在线提供 1000
条辱骂样本,参赛者用算法逐条扰动,使线上模型将其判别为非辱骂样本,尽量让扰动较小同时又保留辱骂性质(辱骂性质前期由模型判定,最终由人工判定)。
比赛规则
线上模型和评测使用的 1000
条样本不公开,选手根据赛方指定的接口实现算法,并用 docker
方式提交以供线上评测,每天最多评测 15 次,单次运行时间需控制在 30
分钟之内。
(第一个知识点:熟悉 Docker,简单环境调试)
其评价公式如下:
共 1000 条评测样本(samples=1000 且全部为辱骂文本),vi
为最终的人工评测结果,1 为辱骂,0
为非辱骂在(只对最终入围数据作人工评测,前期提交都认为 vi=1);ci
是分类结果,由多个线上模型作出评判并取均值,攻击成功为 1,攻击失败为
0;pi 是原始文本与扰动文本的差异,综合考虑了字符差异和语义差异,最终结果
Sfinal 满 ...
Fasttext快速文本分类
1 简介
Fasttext 源于 2016 年的论文《Bag of Tricks for Efficient Text
Classification》,论文地址:https://arxiv.org/pdf/1607.01759.pdf。论文非常短,加上
References 不过五页,Model architecture 只有一页。
深度学习神经网络在自然语言处理中表现非常优秀,但动辄几十层,上亿参数的大型网络速度慢且需要大量算力支持,限制了使用场景。FastText
是 Facebook 开源的一款简单而高效的文本分类器,它使用浅层的神经网络实现了
word2vec
以及文本分类功能,效果与深层网络差不多,节约资源,且有百倍的速度提升,可谓高效的工业级解决方案。本篇将介绍
Fasttext 的相关概念、原理及用法。
2 相关技术
2.1 BOW
BOW BOW 是词袋 Bag of Words 的简称,BOW
是文本分类中常用的文本向量化的方法,它忽略了顺序和语法,将文本看成词汇的集合,且词汇间相互独立,如同把词放进了一个袋子。在分类任务中使用
BOW
时,就是根据各个词义综合分析文 ...
轻量级BERT模型ALBERT
轻量级 BERT 模型 ALBERT
BERT 有很多改进版本,ALBERT 是一个轻量化版本。ALBERT 源自 2020
年的发表论文《ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF
LANGUAGE REPRESENTATIONS》,论文地址:https://arxiv.org/pdf/1909.11942.pdf。从题目可以看出,论文重点是轻量化
BERT 模型,以及优化了半监督学习,本文主要关注轻量化模型部分。
目前 NLP 的高级模型 BERT、GPT-2 都基于 Pretrain/fine-tune
模式,先使用无监督学习的海量文本预训练出一个带有“语言常识”的大模型,然后再根据具体任务调优,这就完美解决了具体任务训练集不足的问题。模型往往拥有千万或亿级的参数,目前的趋势是随着模型功能能越来越强大,模型的规模也越来越大,这使普通开发者越发无法企及。
随着 BERT
模型越来越频繁地被使用到真实场景中,模型的速度、规模、硬件逐渐成为瓶颈。预训练模型一般都规模庞大,在后期调优以及调用模型时也都需要花费大量的内存、算力和时 ...
序列对抗网络SeqGAN
序列对抗网络 SeqGAN
SeqGAN 源自 2016 年的论文《SeqGAN: Sequence Generative Adversarial
Nets with Policy
Gradient》,论文地址:https://arxiv.org/pdf/1609.05473.pdf。其核心是用生成对抗网络处理离散的序列数据。
之前介绍了使用 GAN
生成图像的方法,由于图像是连续数据,可以使用调整梯度的方法逐步生成图像,而离散数据很难使用梯度更新。在自然语言处理(NLP)中使用
GAN
生成文字时,由于词索引与词向量转换过程中数据不连续,微调参数可能不起作用;且普通
GAN
的判别模型只对生成数据整体打分,而文字一般都是逐词(token)生成,因此无法控制细节。SeqGAN
借鉴了强化学习(RL)的策略,解决了 GAN 应用于离散数据的问题。
概念
与基本的 GAN 算法一样,SeqGAN 的基本原理也是迭代训练生成模型 G
和判别模型 D。假设用 G 生成一个词序列组成句子,由 D
来判别这个句子是训练集中的真实句子(True
data),还是模型生成的句子(Generate);最 ...
梯度攻击
梯度攻击
模型攻击主要指人为地制造干扰迷惑模型,使之产生错误的结果。随着深度学习模型的广泛使用,人们发现它很容易被数据的轻微扰动所欺骗,于是开始寻找更加有效的攻击方法,针对攻击又有对抗攻击的方法,二者相互推进,不仅加强了模型的健壮性,有时还能提升模型的准确度。
原理
想让攻击更加有效,导致模型分类错误,也就是使损失函数的值变大。正常训练模型时,输入
x 是固定的,标签 y 也是固定的,通过训练调整分类模型的参数
w,使损失函数逐渐变小。而梯度攻击的分类模型参数 w
不变(分类逻辑不变),y
也固定不变,若希望损失函数值变大,就只能修改输入。下面就来看看如何利用梯度方法修改输入数据。
FGSM
FGSM 是比较早期的梯度攻击算法,源于 2015 年的论文《EXPLAINING AND
HARNESSING ADVERSARIAL EXAMPLES》,论文地址:https://arxiv.org/pdf/1412.6572.pdf。FGSM
全称是 Fast Gradient Sign Method
快速梯度下降法。其原理是求模型误差函数对输入的导数,然后用符号函数得到其梯度方向,并乘以 ...
自然语言处理——使用词向量(腾讯词向量)
自然语言处理——使用词向量(腾讯词向量)
#自然语言处理
向量化是使用一套统一的标准打分,比如填写表格:年龄、性别、性格、学历、经验、资产列表,并逐项打分,分数范围
[-1,1],用一套分值代表一个人,就叫作向量化,虽然不能代表全部,但至少是个量度。因此,可以说,万物皆可向量化。
词向量
同理,词也可以向量化 word2vec(word to
vector),可以从词性、感情色彩、程度等等方面量度,用一套分值代表一个词,从而词之间可以替换,比较。词与向量间的转换过程就叫作词的向量化。与人为评分不同的是,词向量一般通过训练生成,其每一维量度的作用也并不明确。词向量化常用于提取词的特征,提取后的特征再代入模型计算。
词向量如下图所示:
上图把每个单词映射到 50 个维度(用 50 种特征表示一个词),每个维度在
[-1,1] 范围内取值,上图中 1 为红色,0 为白色,-1
为蓝色,中间各值为过渡色,从图中可以直观看到词间的相似度。获取了词向量之后,除了可以计算词间或句间相似度,查找近义词,代入模型以外,还可以做组合词义,以及排除某种含义,如下图所示:
https://jalamma ...
16_少儿Python编程_第十六讲:图形界面开发
少儿 Python 编程 _
第十六讲:图形界面开发
运行在计算机上的程序一般分为命令行程序和图形界面程序,例如:安装
Python 三方模块的 pip 命令,软件版本管理的 git
命令等都属于命令行程序;而大多数软件使用图形界面,例如 Windows 的
Word,Excel,画图等等软件都是图形化用户界面,简称 GUI。
在图形化用户界面中,用户可以用鼠标操作菜单、按钮等图形化组件,并从对话框等图型化组件中获取信息。实现图形化界面的方法与制作游戏界面的流程相似:在初始化工具之后,进入主循环接收用户事件,并且进行显示、反馈等处理,直到程序退出,才结束主循环。与绘制游戏界面不同的是,游戏界面中的绘图、处理鼠标事件都需要开发者写程序自行处理,而图形用户界面内部已经实现了按钮、文本框的绘制和响应事件,使用时调用这些控件即可,减少了编写程序的工作量。
图形界面在任何编程语言中原理都一样,本讲通过 Python
图形界面编程,介绍图形界面中的基本概念和简单用法:常用控件、布局方法、事件处理。
16.1 图形界面入门
Python 的图形用户界面常使用 Tkinter 开发,Tcl
是“工具控 ...
生成对抗网络GAN
生成对抗网络 GAN
生成对抗网络 GAN 是一种深度学习模型,它源于 2014
年发表的论文:《Generative Adversarial Nets》,论文地址:https://arxiv.org/pdf/1406.2661.pdf。
GAN
的用途非常广泛,比如:有大量的卡通头像,想通过学习自动生成卡通图片,此问题只提供正例,可视为无监督学习问题。不可能通过人工判断大量数据。如何生成图片?如何评价生成的图片好坏?GAN
为此类问题提供了解决方法。
GAN 同时训练两个模型:生成模型G(Generative
Model)和判别模型D(Discriminative
Model),生成模型G的目标是学习数据的分布,判别模型D的目标是区别真实数据和模型G生成的数据。以生成卡通图片为例,生成网络
G 的目标是生成尽量真实的图片去欺骗判别网络 D。而 D 的目标就是尽量把 G
生成的图片和真实的图片分别开来。G 和 D
构成了一个动态的“博弈过程”,通过迭代双方能力都不断提高。
对抗网络近年来发展迅速。下图是近几年 ICASSP
会议上所有提交的论文中包含关键词 “generative”、“ ...
NLP模型应用之三:GPT与GPT-2
NLP 模型应用之三:GPT 与
GPT-2
#自然语言处理
GPT 模型
GPT 全称 Generative Pre-Training,出自 2018 年 OpenAi
发布的论文《Improving Language Understandingby Generative
Pre-Training》,论文地址:https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf。
在自然语言处理问题中,可从互联网上下载大量无标注数据,而针对具体问题的有标注数据却非常少,GPT
是一种半监督学习方法,它致力于用大量无标注数据让模型学习“常识”,以缓解标注信息不足的问题。其具体方法是在针对有标签数据训练
Fine-tune 之前,用无标签数据预训练模型
Pretrain,并保证两种训练具有同样的网络结构。
GPT 底层也基于 Transformer 模型,与针对翻译任务的 Transformer
模型不同的是:它只使用了多个 Deocder 层。
下图展示了在不修改模型主体结构的情况下,如何使用模型适配多分类、文本 ...
NLP模型应用之二:BERT
NLP 模型应用之二:BERT
引入
BERT 是谷歌在 2018 年 10
月发布的自然语言处理模型,它在十一项自然语言任务中打破记录,在有些任务中有显著提高,并超越了人类水平,被誉为开启了
NLP 的新时代。虽然,在之后又出现了大量新算法,这两年 BERT
仍然是各大比赛以及产品中的主流算法。论文地址:https://arxiv.org/pdf/1810.04805.pdf。
BERT 全称为 Bidirectional Encoder Representations from
Transformers,从名字可以看出,它基于 Transformer 基础模型。在 BERT
之前,ELMo
模型已经开始用预测训练方法从无监督数据中提取与上下文相关的词义;而 GPT
模型用 Pretrain/Fine-tune
方法,延用了预训练模型的结构和参数,但由于它是单向模型,主要用于据前文估计后文。而
BERT
使用了双向模型,遮蔽句中部分单词,训练句间关系等方法,提出了一套完整的解决方案,在模型结构不变的情况下,适配各种各样的
NLP 任务。
模型规模
BERT 通过前期对大量的无标签数据 ...