词嵌入的发展
NLP模型训练时需要对文本文件进行编码,转化为数值的形式。
Word2Vec和GloVe
对词还有词与词之间的关系(例如近义、反义、从属、时态等关系)进行编码,但不考虑语境。
ELMo
- 本质:双向LSTM
- 流程图
ULM-FiT
ULMFiT(Universal Language Model Fine-tuning)是一种基于微调的通用语言模型。可以实现NLP迁移学习
OpenAI Transformer
- 本质:多个Transformer的Decoder(仅考虑前序输入的影响)
- 目的:预测下一个词
- 与Decoder的差别:无Encoder-Decoder Attention层
BERT
2018年google的BERT(Bidirectional Encoder Representations from Transformers)可以理解为已经训练好的多层Transformer的encoder。包括预训练和微调两个步骤。 From:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Pre-training
- 任务1:MLM
Masked Language Model,预测被屏蔽或者代替的目标词 - 任务2:句子位置
判断句子B是否是句子A后面相邻的句子
Fine-Turning
作为预训练下游的模型完成任务
使用
Google Colab上的BERT FineTuning with Cloud TPUs
GPT
和BERT的差别
内容 | BERT | GPT |
---|
本质 | Transformer的encoder | Transformer的decoder | 输入 | 无自回归 | 有自回归 | self-attention层 | 考虑前后内容影响 | 屏蔽后文影响只考虑前文 |
注:自回归指将第一个节点的输出汇入输入进行后续训练
Masked self-attention layers
基本流程同Tansformer的self-attention,除了当前token之后的token记分为0。也可是多头。
全连接神经网络
- 第一层:为模型的4倍大小
- 第二层:将第一层的结果映射回原维度
应用
总结
- 问题1: Transformer中的softmax计算为什么需要除以
d
k
d_k
dk??
答:Attention得分计算时是计算qk点积,维度越高点积结果越大,若不进行归一化直接softmax计算就会将几乎全部的概率分布都分配给了最大值对应的标签而其他值为0(梯度消失),不利于后续参数更新,故需要进行归一化。而如果假设q、k均服从标准正态分布,则qk方差为
d
k
d_k
dk?,所以要除以
d
k
d_k
dk?。 - 问题2: Transformer中attention score计算时候如何mask掉padding位置?
答:被遮住的区域赋值
?
i
n
f
-inf
?inf。 - 问题3: 为什么Transformer中加入了positional embedding?
答:为了考虑前后文影响。 - 问题4: BERT预训练时mask的比例,可以mask更大的比例吗?
答:mask是为了预训练过程中结合上下文对缺失值进行预测,屏蔽比例为15%。这个比例可以适当增大,但过大可能会使预测效果不好。 - 问题5: BERT如何进行tokenize操作?有什么好处?
答:tokenize源代码。大体分为两步:basic tokenize和WordPiece tokenziation。前者包括标点符号分隔、小写化、区分中文字符、清除无效字符等;后者则采用greedy longest-match-first算法对词进行进一步拆分,效果是区分出词根和前后缀。与选用完整单词作为token相比,WordPiece的方法可以可以更好地学习词根与词缀之间的关系,提取不同时态语态的关键信息。 - 问题6: GPT如何进行tokenize操作?和BERT的区别是什么?
答:tokenize源代码。GPT2中采用的是BPE(Byte Pair Encoding)进行分词。BERT采用的WordPiece分词可以看作是BPE的变种。不同在于WordPiece基于概率生成新的subword而不是最高频字节对。 - 问题7: BERT模型特别大,单张GPU训练仅仅只能放入1个batch的时候,怎么训练?
答:可以并行计算。(todo:也许还有其他方法,后续补充) - 问题8: Transformer中的残差网络结构作用是什么?
答:当网络层数增加时,神经网络在训练集上的准确率出现饱和甚至下降的现象,即退化。加入残差网络结构可以有效避免这种情况。 - 问题9: BERT预训练是如何做mask的?
答:按照15%比例mask掉部分词,然后这15%的词中80%用mask,10%用原词,10%随机替换。 - 问题10: word2vec到BERT改进了什么?
答:主要是针对不同语境下词语会有不同含义这一问题进行了改进。
|