学习笔记:三大特征抽取器比较
2020-01-02 本文已影响0人
IT_小马哥
NLP任务的特点及任务类型
- 输入是一堆线性序列
- 输入不定长
- 单词或者句子的相对位置很重要
- 句子中的长距离特征对于理解语义非常重要(如果...那么...)
一个特征抽取器是否适配问题领域的特点,有时候决定了它的成败,而很多模型改进的方向,其实就是改造得使它更匹配领域问题的特性
NLP问题四大类任务
- 解决以下问题从模型的角度来说,最重要的就是特征抽取的能力
序列标注:
- 分词、POS tag、NER、语义标注(中文分词,词性标注,命名实体识别,语义角色标注)
- 特点:句子中每个单词要求模型根据上下文都要给出一个分类类别
分类任务:
- 文本分类、情感计算
- 特点:不管文章多长,总体给出一个类别
句子关系判断:
- Entailment、AQ、自然语言推理
- 特点:给定两个句子,模型判断两个句子是否具备某种语义
生成式任务:
-机器翻译、文本摘要、写诗造句,看图说话
-特点:输入文本内容后,需要自主生产另外一段文字
RNN的缺陷
- 线性序列结构在反向传播时存在优化困难,因为反向传播路径太长,容易导致梯度消失或梯度爆战问题。(所以LSTM和GRU引入中间状态信息直接像后传播,依此缓解梯度消失问题)
- RNN本身的序列结构不具备并行计算的能力
- RNN的标志就是:T时刻隐层状态的计算依赖于T时刻的句子输入单词和时刻的隐层状态。
- 因此,后一时刻的计算严重依赖前一时刻
-
RNN解决NLP任务的通用框架
image.png
CNN的缺陷
-
最早引入CNN进入NLP的结构
image.png- 输入的词用Word Embeding表示,输入包含个字符,每个Word Embeding长度为,输入为
- 用大小的移动窗口从输入矩阵的第一个字往后移动,经非线性变换,将输入转换为某特征值,是Filter的大小,是Word Embeding的长度
- 因此CNN捕获的就是单词k-gram片段信息,k的大小决定了能捕获多远的距离特征
-
缺陷:单卷积层无法捕获远距离特征
-
CNN的卷积其实保留了相对位置信息,但是经过Pooling层操作,就将位置信息丢失了,因此目前的趋势是抛弃Pooling层
-
目前主流CNN
image.png
Transformer
-
出自谷歌论文"Attention is all you need"
-
Transformer Block
image.png -
针对NLP任务,transformer对应的解决方案
-
语言输入不定长:设定最大输入,如果句子不够就用padding填充
-
位置信息:用位置函数进行位置编码
因为Muli-head self attention 层会让当前输入单词和句子任意单词发生关系,然后集成到一个embedding向量里,所以,位置信息没有被编码进去
- Bert
Bert模型是给每一个单词一个Position embedding,将单词的embedding和单词对应的Position embedding加起来形成单词的embedding
-
长远距离依赖:self attention天然解决,因为当前单词和句子任意单词发生了联系
-
总结
- 语义特征提取能力:Transformer超过RNN和CNN大约4-8百分点 (当距离远于13的长距离时,Transformer弱于RNN。有价值的探索点)
- 远距离特征捕获能力:Transformer和RNN能力相近,CNN弱
- 任务总和特征抽取能力:机器翻译最具有NLP总和任务代表,Transformer大于CNN=RNN
- Transformer的缺点(有价值的探索点):
- 长输入任务,计算度复杂,导致速度急剧变慢(长输入切断成K份,再套上Transformer,高层用RNN或者另一层Transformer接力)
- 整体结构复杂(认识机理,简化它)