NLP的任务特点与类型
-
输入:一句话,或一篇文章
-
具有如下几个特点:
-
输入是一维线性序列
-
输入是不定长的
-
单词之间或者子句之间的关系很重要
-
句子中的长距离特征对理解语义很重要
-
-
任务类型
-
序列标注:分词/POS Tag/NER/语义标注
- 对句子中每个单词根据上下文给出有一个分类类别
-
分类任务:文本分类/情感计算
- 对输入的句子或者文章总体给出一个分类类别
-
句子关系判断:Entailment/QA/自然语言推理
- 给定两个句子,判断两句子是否具备某种语义关系
-
生成式任务:机器翻译/文本摘要
- 输入文本内容后,需要自主生成另外一段文字
-
RNN
关于 RNN 模型的了解:RNN
-
核心:每个输入对应隐层节点,而隐层节点之间形成了线性序列,信息由前向后传递
-
不足:线性序列结构的不断从前往后收集输入信息,使得反向传播过程中存在优化困难问题
-
主要表现在:反向传播路径太长,容易导致严重的梯度消失或梯度爆炸
-
因此,引入LSTM和GRU模型,通过增加中间状态信息直接向后传播,缓解梯度消失问题
-
-
地位:在模型更新前,RNN(主要为LSTM和GRU模型),加上引入的attention机制,Encoder-Decoder框架,使得RNN成为解决NLP任务的通用框架技术
- 该地位受到两个因素限制
-
(1) 后起之秀的新模型崛起,如Transformer
-
(2) RNN本身的序列以来结构对于大规模并行计算的限制,很难具备高效的并行计算能力
-
改进思路1:保留任意连续时间步的隐层连接,在不同隐层的神经元之间进行并行计算,如SRU
-
改进思路2:打断部分隐层之间的连接(类似CNN结构保留了序列依赖),如Sliced RNN
-
-
- 该地位受到两个因素限制
-
模型代表:ELMO,ULMFiT,SiATL,CoVe
CNN
- 核心:CNN模型中的卷积层本质为特征抽取层,通过设定卷积层中含有的卷积核(Filter)个数抽取不同的输入特征序列;池化层(Pooling)对卷积之后的特征进行降维形成最终的特征
-
问题1:如以上描述的CNN结构在解决NLP领域多种任务的情况下,无法获取有效的结果 ==> 无法捕获长距离特征
-
改进思路1:继续使用单个卷积层,卷积过程时选择“跳跃”覆盖进行卷积计算,如Dilated CNN
-
改进思路2:增加卷积层(深度加深)层数
-
-
问题2:池化层之后的结果抛弃了句子单词的位置信息
-
- 优点(赖以生存的优势):并行计算能力强;同时也保存了位置信息(position embedding)
Transformer
-
核心问题解决方案
-
不定长句子的输入:设定输入的最大长度,使用padding填充
-
位置信息Position embedding:
-
Transformer是用位置函数来进行位置编码的
-
Bert等模型是对每个单词一个position embedding
-
-
长距离依赖特征:self attention
-
-
模型代表:
- Transformer Encoder: BERT, RoBERTa, ERNIE
- Transformer Decoder: GPT
- Transformer: MASS, T5, BART
特征抽取能力比较
-
语义特征提取能力:Transformer >> RNN ~ CNN(约4~8个百分点),即Transformer显著优于RNN与CNN
-
长距离特征捕获能力:(主语-谓语一致性检测)Transformer > RNN >> CNN(当主语谓语距离大于13时,RNN略优于Transformer),即Transformer和RNN能力相近,CNN在这方面显著弱于两者
-
任务综合特征抽取能力:(机器翻译对NLP各项处理能力综合要求最高的人任务之一)Transformer >> CNN ~ RNN,即Transformer显著优于RNN和CNN,CNN略优于RNN
-
并行计算能力及运行效率:Transformer ~ CNN >>> RNN,即Transformer和CNN相差不多,远远优于RNN