NLP - 特征抽取器
1. 文本特点
- 输入是一个一维线性序列
- 输入是不定长的,这点对于模型处理起来会比较麻烦
- 单词位置与句子位置的相对位置很重要,互换可能导致完全不同的意思。
- 句子中的长距离特征对于理解语义也非常关键,特征抽取器能否具备长距离特征捕获能力这一点对于解决NLP任务来说也是很关键的。
2. NLP 四大任务
- 序列标注: 分词, 词性标注, 命名实体识别, 语义角色标注。 特点是句子中每个单词要求模型根据上下文都要给出一个分类类别
- 分类任务: 文本分类, 情感分析。 特点是不管文章有多长,总体给出一个分类类别即可。
- 句子关系推断: Entailment, QA, 自然语言推理。 特点是给定两个句子,模型判断出两个句子是否具备某种语义关系。
- 生成式任务:机器翻译, 文本摘要。特点是输入文本内容后,需要自主生成另外一段文字。
3. RNN
RNN 最大的优势是其天生的具有时序结构,十分适合解决NLP问题。NLP的输入往往是个不定长的线性序列句子,而RNN本身结构就是个可以接纳不定长输入的由前向后进行信息线性传导的网络结构,而在LSTM引入三个门后,对于捕获长距离特征也是非常有效的。
RNN 最大的缺点在于反向传播时所存在的优化困难问题, 即梯度消失,梯度爆炸问题。 后来的LSTM 与 GRU 相当程度上解决了这一问题,但对于超长文本依旧无法很好解决。后来陆续有研究对其优化来解决 RNN 的长期依赖问题,如 https://zhuanlan.zhihu.com/p/34490114。
RNN 的另一大缺陷在于其并行能力。由于每一时刻状态的生成都依赖于上一时刻的状态,这使得 RNN 无法并行。
4. CNN
CNN 能够捕捉到 n-gram 信息, filter 的size 决定了n的大小。
只有一个卷积层带来的问题是:对于远距离特征,单层CNN是无法捕获到的,如果滑动窗口k最大为2,而如果有个远距离特征距离是5,那么无论上多少个卷积核,都无法覆盖到长度为5的距离的输入,所以它是无法捕获长距离特征的。
那么怎样才能捕获到长距离的特征呢?有两种典型的改进方法:
一种是假设我们仍然用单个卷积层,滑动窗口大小k假设为3,就是只接收三个输入单词,但是我们想捕获距离为5的特征,那么采用 Dilated 卷积思想, 跳着覆盖。
第二种方法是把深度做起来。
第一层卷积层,假设滑动窗口大小 k 是 3,如果再往上叠一层卷积层,假设滑动窗口大小也是3,但是第二层窗口覆盖的是第一层窗口的输出特征,所以它其实能覆盖输入的距离达到了5。如果继续往上叠加卷积层,可以继续增大卷积核覆盖输入的长度。
TextCNN 中涉及到一个问题,就是那个 Max Pooling 层,这块其实与 CNN 能否保持输入句子中单词的位置信息 有关系。CNN 是否能够保留原始输入的相对位置信息呢?
其实CNN的卷积核是能保留特征之间的相对位置的,道理很简单,滑动窗口从左到右滑动,捕获到的特征也是如此顺序排列,所以它在结构上已经记录了相对位置信息了。但是如果卷积层后面立即接上Pooling层的话,位置信息就被扔掉了,这在NLP里其实是有信息损失的。
所以在NLP领域里,目前CNN的一个发展趋势是抛弃Pooling层,靠全卷积层来叠加网络深度,这背后是有原因的。
想方设法把CNN的深度做起来,随着深度的增加,很多看似无关的问题就随之解决了。
3. Transformer 的优劣
- 不定长问题: 一般设定输入的最大长度,如果句子没那么长,则用Padding填充,这样整个模型输入起码看起来是定长的了。
- 位置信息: Transformer 是用位置函数来进行位置编码的,而Bert等模型则给每个单词一个Position embedding,将单词embedding和单词对应的position embedding加起来形成单词的输入embedding。
- 长距离依赖问题: Self attention天然就能解决这个问题,因为在集成信息的时候,当前单词和句子中任意单词都发生了联系。
Transformer 的缺陷:
对于长输入的任务,典型的比如篇章级别的任务(例如文本摘要),因为任务的输入太长,Transformer会有巨大的计算复杂度,导致速度会急剧变慢。
Transformer整体结构确实显得复杂了一些,如何更深刻认识它的作用机理,然后进一步简化它,这也是一个好的探索方向。
5. 三大特征抽取器比较
语义特征抽取能力: Transoformer 显著超越 RNN 和 CNN, RNN 和 CNN 差不多。
长距离特征捕获能力: CNN 显著弱于 RNN 和 Transformer。 Transformer微弱优于 RNN(主语谓语距离小于13),但在比较远的距离上(主语谓语距离大于13),RNN微弱优于Transformer。
对于Transformer来说,Multi-head attention的head数量严重影响NLP任务中Long-range特征捕获能力:结论是head越多越有利于捕获long-range特征。
任务综合特征抽取能力: Transformer 强于 RNN 和 CNN
并行计算能力: Transformer 与 CNN 差不多,都远强于 RNN。
计算量: Transformer Block > CNN > RNN
训练速度: Transformer Base > CNN > Transformer Big > RNN
单从任务综合效果方面来说,Transformer明显优于CNN,CNN略微优于RNN。速度方面Transformer和CNN明显占优,RNN在这方面劣势非常明显。这两者再综合起来,如果我给的排序结果是Transformer>CNN>RNN.