序列对抗网络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 通过前期对大量的无标签数据 ...
NLP模型应用之一:基础知识
NLP 模型应用之一:基础知识
#自然语言处理
引入
2018 年底发布的 BERT 模型和 2019 年初发布的 GPT-2
模型,开始挑战人类的语言处理能力。二者都基于之前介绍过的 Transformer
基础模型。
对模型的研究有几个层次:研究基础模型、扩展模型、应用模型
研究基础模型 我们熟知的卷积神经网络 CNN,循环神经网络
RNN,Transformer 模型,残差网络 ResNet
等等,都是底层模型,它们是神经网络应用的基础。
扩展模型
基础模型需要经过适配和扩展,才能应用到更多领域。如图像识别一开始主要支持图片分类,而后扩展到人脸识别、图像分割等等领域。在自然语言处理领域
Transformer
模型最初被用于解决翻译问题,而后扩展到解决问答、判断一致性、完型填空等问题之中,比如
BERT 通过 Mask 遮蔽技术优化了自然语言处理中的更多问题的解决方法。
应用模型
再上层是针对某一个领域的具体应用和细化,调用模型解决问题并调优模型。例如使用模型判断正常和病变细胞、预测股票趋势,使用预训练好的语言模型撰写某种类型的文章……这些大多是由工程师完成的工作。从算法角度看 ...
Transformer-XL框架
Transformer-XL 框架
1 引入
Transformer-XL 超长上下文的注意力模型,出自 CMU 和 Google Brain 在
2019 年 1 月发表的论文:《Transformer-XL: Attentive Language Models
Beyond a Fixed-Length Context》。其中 XL 是 extra long
的缩写,意为额外长度。论文地址:https://arxiv.org/pdf/1901.02860.pdf
先简单举例 Transformer XL 与 Transformer 的区别。比如有以下数据:
“小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。”
如果把序列长度设为十个字,代入模型时数据被切分为:
“小说是以刻画人物形象”(序列一)
“为中心,通过完整的故”(序列二)
……
在训练第二个序列时,它的意思是不完整的,Transformer
计算第二个序列中的第三字“心”时只能通过前两个字“为中”作为输入计算,而
Transformer-XL 可以把序列一中的十个字同时作为输入。
切分,尤 ...
国产的自然语言处理框架ERNIE
国产的自然语言处理框架 ERNIE
看到题目是否引发一些刻板印象?国产的自然语言处理,主要是用于处理中文?有没有用到最前沿的技术?是不是只提供服务,里面是黑盒?是否全面开源并提供模型?平台是否通用?本文将为您一一解答。
ERNIE 是继 BERT,ELMo 之后又一个以芝麻街人物命名的自然语言模型。ERNIE
全称 Enhanced Language Representation with Informative Entities。
原理
ERNIE 的结构类似 BERT 框架,或可视为 BERT
的延续。也是通过海量无标签数据预训练模型,并在特定领域使用 fine-tuning
调优,同样也使用了在序列中插入符号,以适配不同的训练任务,以及 Mask
遮蔽部分数据的方法。
从全称可以看出,它最初主要致力于在自然语言处理中加入关于实体的信息。在
ERNIE 1.0 阶段,着重改进了遮蔽策略,BERT 遮蔽语料中的词,而
ERNIE
把短语和一些专有名词也作为遮蔽的对象。之前的自然语言模型都是国外模型,因为分词有一定难度,所以处理中文时只是简单地以字为单位。可以想见,引入了词和短语后, ...