本文是一个学习笔记
2018年及之前NLP领域常采用的预训练模型典型做法
Word Embedding到Bert
假设如上图所示,我们有个NLP的下游任务,比如QA,就是问答问题,所谓问答问题,指的是给定一个问题X,给定另外一个句子Y,要判断句子Y是否是问题X的正确答案。问答问题假设设计的网络结构如上图所示,这里不展开讲了,懂得自然懂,不懂的也没关系,因为这点对于本文主旨来说不关键,关键是网络如何使用训练好的Word Embedding的。它的使用方法其实和前面讲的NNLM是一样的,句子中每个单词以Onehot形式作为输入,然后乘以学好的Word Embedding矩阵Q,就直接取出单词对应的Word Embedding了。这乍看上去好像是个查表操作,不像是预训练的做法是吧?其实不然,那个Word Embedding矩阵Q其实就是网络Onehot层到embedding层映射的网络参数矩阵。所以你看到了,使用Word Embedding等价于什么?等价于把Onehot层到embedding层的网络用预训练好的参数矩阵Q初始化了。这跟前面讲的图像领域的低层预训练过程其实是一样的,区别无非Word Embedding只能初始化第一层网络参数,再高层的参数就无能为力了。
下游NLP任务在使用Word Embedding的时候也类似图像有两种做法:一种是Frozen,就是Word Embedding那层网络参数固定不动;另外一种是Fine-Tuning,就是Word Embedding这层参数使用新的训练集合训练也需要跟着训练过程更新掉。
模型 | 说明 |
---|---|
传统 | Frozen利用方法,不能解决多义词现象 |
ELMO,2018 | 双向语言模型,LSTM作为提取特征(编码器encoder),利用上下文动态调整预训练模型的参数,解决了多义词问题 |
GPT,2018 | 双阶段,单向语言模型,transformer作为特征提取器(编码器encoder) |
Bert,2018 | 双阶段,双向语言模型,transformer作为特征提取器(编码器encoder) |
当下及未来的发展总结:
- 双阶段:第一阶段利用语言模型预训练,第二阶段针对下游任务进行精调或frozen直接使用 网络模型和参数。
- 特征提取能力:CNN<RNN(LSTM)<transformer
自动编码器:encoder和decoder
AE,表示文本中的自动编码器(文本嵌入);GAE,表示图领域的自动编码器(图嵌入)。
简单的说,就是将高维稀疏高燥的输入向量,转变为,低维稠密高质量的向量,该过程称为编码encoder;衡量这个转变过程的效果通过将低维向量再解码成高维向量,看转变的效果,该过程为解码decoder。
关于编码器和transformer,看这篇文章;图解Transformer(完整版)https://blog.csdn.net/longxinchen_ml/article/details/86533005
2018年之后NLP领域常采用的预训练模型典型做法
基本都是基于transfomer的
- [1] 谷歌Bert模型2018年
论文BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
论文链接:https://arxiv.org/abs/1810.04805
Github链接:https://github.com/jiangxinyang227/bert-for-task - [2] 谷歌XLNet模型2019年
论文:XLNet: Generalized Autoregressive Pretraining for Language Understanding
论文链接:https://arxiv.org/abs/1906.08237
Github链接:https://github.com/zihangdai/xlnet - [3] 百度ERNIE模型2019
论文链接:https://arxiv.org/pdf/1905.07129v3.pdf
Github链接:https://github.com/thunlp/ERNIE
利用知识图谱 - [4] 谷歌Text-to-Text Transfer Transformer(T5)2019
论文链接:https://arxiv.org/pdf/1910.10683.pdf
Github链接:https://github.com/googl-research/text-to-text-transfer-transformer
文本输入,文本输出。这可以归结为所有任务上的一个模型。不仅如此,一个任务的输出可以用作下一个任务的输入。 - [5] Binary-Partitioning Transformer (BPT) 2019
论文链接:https://arxiv.org/pdf/1911.04070v1.pdf
Github链接:https://github.com/yzh119/BPT
图神经网络,句子树 - [6] Neural Attentive Bag-of-Entities Model for Text Classification (NABoE) 2019
Github链接: https://github.com/wikipedia2vec/wikipedia2vec/tree/master/examples/text_classification - [7] Rethinking Complex Neural Network Architectures for Document Classification
Github链接: https://github.com/castorini/hedwig
老的双向LSTM和正则化的组合模型
参考资料
- [1] 自然语言处理中的预训练技术发展史—Word Embedding到Bert模型(2021-07-09)https://blog.csdn.net/qq_36722887/article/details/118611734
原理真的非常非常详细了,赞赞赞的文章 - [2] NLP之常用预训练模型详解 (2021-06-24)https://blog.csdn.net/qq_36722887/article/details/118191949
- [3] 6个你应该用用看的用于文本分类的最新开源预训练模 (2020-04-14) https://blog.csdn.net/u011984148/article/details/105525402
- [4] 文本分类实战(2021-6-20 更新结束该系列) https://blog.csdn.net/javastart/article/details/118069786
代码 https://github.com/jiangxinyang227/textClassifier