Transformer
self-attention + Feed Forward Neural Network
- RNN 时间 t t t依赖 t − 1 t-1 t−1,不能并行,仍然存在长期依赖的问题
- Transformer: 使用Attention机制将序列中任意两个位置之间距离缩小为常量,并且易于并行
Enconder:
s e l f A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k V ) self Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}}V) selfAttention(Q,K,V)=softmax(dkQKTV)
F F N ( z ) = m a x ( 0 , z w 1 + b ) w 2 + b FFN(z)=max(0,zw_1+b)w_2+b FFN(z)=max(0,zw1+b)w2+b
- Multi-Head
- 残差网络中的short-cut结构
Decoder:
- Multi-Head Attention:
- Encoder-Decoder Attention: Q Q Q来之与解码器的上一个输出, K K K和 V V V则来自于与编码器的输出。
- Masked Attention:
- + 位置向量
ELMO
- 使用char CNN 来获取基础embedding
- 使用多层双向LSTM ,最上面一层的输出是用softmax来预测下面一个单词。
- 结合多层embedding作为单词的动态embedding
LSTM抽取特征能力弱,拼接方式融合双向特征能力弱
GPT2
使用多层transformer的decoder(少了 encoder-decoder antention layer)的传统语言模型(预测下一个词语)
GPT因为采用了传统语言模型所以更加适合用于自然语言生成类的任务 (NLG),因为这些任务通常是根据当前信息生成下一刻的信息
而BERT更适合用于自然语言理解任务 (NLU)。
BERT:
- 使用完形填空模型,mask部分词语来预测该词语
- 使用Transformer(Encoder)架构,更好的词语间交互
- 使用next sentence predict多任务训练,获取语境信息
RoBERTa
- 去除next sentence predict任务
- 动态掩码. bert是数据预处理每个句子得到一个mask,这里应该是输入句子后动态mask
- 更大量的数据、 更大批次
- 文本编码. Byte-Pair Encoding(BPE)是字符级和词级别表征的混合,支持处理自然语言语料库中的众多常见词汇。
ERNIR (BERT-wwm)
为中文设计, mask时mask一个中文词语
XLNET
transformer内部在Ti的上文和下文单词中,随机选择i-1个,放到Ti的上文位置中,把其它单词的输入通过Attention掩码隐藏掉.
- Permutation Language Modeling(XLNet将句子中的单词随机打乱顺序,这样的话对于单词xi,它原先的上下文单词就都有可能出现在当前的上文中了) (自回归语言模型,自编码语言模型)
- Two-Stream Self-Attention 解决1的问题
- 引入Transformer-XL,以此来获得更长距离的单词依赖关系(片段级递归机制)
- Relative Segment Encoding(判断两个单词是否在同一个segment中,而不是判断它们各自属于哪个segment)
DistilBERT
知识蒸馏是一种模型压缩方法,又叫师生学习。它训练一个小模型,使之复制大模型(或模型集成)的行为。
- 移除了token类型的嵌入和pooler(用于下一句分类任务)
- 保留了 BERT 的其余架构,不过网络层数只有原版的 1/2
ALBERT
- 词嵌入参数因式分解 词嵌入<隐藏层 (添加project层)
- 隐藏层参数共享
- 更改next sentence predict为sentence order predict任务
模型参数量小、但是时间更长,效果也只是在参数量很大的时候效果好。