2020 特征抽取器Transformer了解

写这篇笔记主要是因为上篇《推荐系统技术演进趋势了解》笔记中提到了排序模型的特征抽取器,觉得应该重新了解下这个Transformer,初识太朦胧,都没啥印象了,估计下篇要写个Transformer入门了。。。

主要是重读了文章《放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较》,笔记的结构大致如下:

1、NLP任务的特点及任务类型

2、分叙三大特征抽取器

3、三大特征抽取器比较

4、总结

先盗一张张老师的图,有意思,哈哈~

Transformer

1、NLP任务的特点及任务类型

(1)NLP任务的特点

NLP任务的特点

NLP任务的特点和图像有极大的不同,上图展示了一个例子,NLP的输入往往是一句话或者一篇文章,所以它有几个特点:首先,输入是个一维线性序列;其次,输入是不定长的;再次,单词或者子句的相对位置关系很重要,两个单词位置互换可能导致完全不同的意思。另外,句子中的长距离特征对于理解语义也非常关键,例子参考上图标红的单词,特征抽取器能否具备长距离特征捕获能力这一点对于解决NLP任务来说也是很关键的。

上面这几个特点请记清,一个特征抽取器是否适配问题领域的特点,有时候决定了它的成败,而很多模型改进的方向,其实就是改造得使得它更匹配领域问题的特性

(2)NLP任务类型

NLP任务类型

通常而言,绝大部分NLP问题可以归入上图所示的四类任务中:

第一类是序列标注,这是最典型的NLP任务,比如中文分词,词性标注,命名实体识别,语义角色标注等都可以归入这一类问题,它的特点是句子中每个单词要求模型根据上下文都要给出一个分类类别。

第二类是分类任务,比如我们常见的文本分类,情感计算等都可以归入这一类。它的特点是不管文章有多长,总体给出一个分类类别即可。

第三类任务是句子关系判断,比如Entailment,QA,语义改写,自然语言推理等任务都是这个模式,它的特点是给定两个句子,模型判断出两个句子是否具备某种语义关系;

第四类是生成式任务,比如机器翻译,文本摘要,写诗造句,看图说话等都属于这一类。它的特点是输入文本内容后,需要自主生成另外一段文字。

解决这些不同的任务,从模型角度来讲什么最重要?是特征抽取器的能力。尤其是深度学习流行开来后,这一点更凸显出来。因为深度学习最大的优点是“端到端(end to end)”,当然这里不是指的从客户端到云端,意思是以前研发人员得考虑设计抽取哪些特征,而端到端时代后,这些你完全不用管,把原始输入扔给好的特征抽取器,它自己会把有用的特征抽取出来。

2、分叙三大特征抽取器

(1)RNN

RNN

RNN模型结构参考上图,核心是每个输入对应隐层节点,而隐层节点之间形成了线性序列,信息由前向后在隐层之间逐步向后传递。

RNN应用技术

为何RNN能够成为解决NLP问题的主流特征抽取器?主要原因还是因为RNN的结构天然适配解决NLP的问题,NLP的输入往往是个不定长的线性序列句子,而RNN本身结构就是个可以接纳不定长输入的由前向后进行信息线性传导的网络结构,而在LSTM引入三个门后,对于捕获长距离特征也是非常有效的。所以RNN特别适合NLP这种线形序列应用场景,这是RNN为何在NLP界如此流行的根本原因。

RNN在新时代面临的两个严重问题:第一个原因在于一些后起之秀新模型的崛起,比如经过特殊改造的CNN模型,以及最近特别流行的Transformer。第二个原因是RNN很难具备高效的并行计算能力。

(2)CNN

CNN

最早将CNN引入NLP的是Kim在2014年做的工作,论文和网络结构参考上图。一般而言,输入的字或者词用Word Embedding的方式表达,这样本来一维的文本信息输入就转换成了二维的输入结构,假设输入X包含n个字符,而每个字符的Word Embedding的长度为d,那么输入就是d*n的二维向量。

卷积层本质上是个特征抽取层,可以设定超参数F来指定卷积层包含多少个卷积核(Filter)。对于某个Filter来说,可以想象有一个d*k大小的移动窗口从输入矩阵的第一个字开始不断往后移动,其中k是Filter指定的窗口大小,d是Word Embedding长度。对于某个时刻的窗口,通过神经网络的非线性变换,将这个窗口内的输入值转换为某个特征值,随着窗口不断往后移动,这个Filter对应的特征值不断产生,形成这个Filter的特征向量。这就是卷积核抽取特征的过程。卷积层内每个Filter都如此操作,就形成了不同的特征序列。Pooling 层则对Filter的特征进行降维操作,形成最终的特征。一般在Pooling层之后连接全联接层神经网络,形成最后的分类过程。

问题:单卷积层无法捕获远距离特征

单卷积层无法捕获远距离特征

解决一:利用空洞卷积捕获远距离特征。

空洞卷积

解决二:加深CNN网络来捕获远距离特征。

加深CNN网络
目前主流CNN

目前CNN的一个发展趋势是抛弃Pooling层,靠全卷积层来叠加网络深度,主体结构通常由1-D卷积层来叠加深度,使用Skip Connection(残差连接)来辅助优化。

(3)Transformer

Transformer是谷歌在17年做机器翻译任务的“Attention is all you need”的论文中提出的,引起了相当大的反响。 Transformer的Encoder部分是由若干个相同的Transformer Block堆叠成的。 这个Transformer Block其实才是Transformer最关键的地方。这个Block里所有元素,包括Multi-head self attention,Skip connection,LayerNorm,FF一起在发挥作用。

Transformer Block结构

3、三大特征抽取器比较

4、总结

进退维谷的RNN。一是效果对比Transformer不够好,还有一个致命的问题:并行计算能力受限制太严重。

一希尚存的CNN。。一是强大的并行计算能力二是网络结构可以作深,但长距离特征捕获能力方面较弱。

稳操胜券的transformer。。。基本没啥大缺陷,除了对超长输入的任务,比如篇章级别的任务(例如文本摘要)。

最后ps:

要了解的还有很多哦。。慢慢来吧。。。

参考资料:

1、内容主要来自知乎文章:《放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较》

https://zhuanlan.zhihu.com/p/54743941

2 、天猫相关工作:基于Transformer对用户序列进行建模的排序模型:

https://arxiv.org/abs/1905.06874

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容