1. Representations for a word
之前的CS22N的课程介绍了词向量比如,Word2vec, GloVe, fastText。通过这些词向量能在神经网络的训练中起到一个很好的效果,如图所示:
这种常规的词向量有很多问题,比如unknown-words
针对训练词向量unknown-word,有一些解决方法:
- 使用 一个《UNK》表示全部的unknown单词
- 如果test时出现unknown单词,在你的无监督词向量出现过,使用那个词向量作为unknown的词向量。
- 对每一个unknown使用随机的词向量表示
此外,还有一些问题,比如词向量唯一表示单词而不考虑单词在文章中出现的位置,比如一个词在不同的句子中有不同的含义等。
针对这些问题,有人想到单词的词向量表示应该结合单词所在的句子进行考虑。但是标准的Rnn训练只在 task-labeled 的小数据上,后来有人想能不能用词向量的编码,比如lstm的编码来表示单词,并且在大型的无标签的数据上进行训练,于是就产生了Contextual Word Representations。如图:
2.TagLM—‘pre-ELmo’
tagLM模型采用的就是上面说的这种方法,直接用一个RNN语言模型编码后的隐藏层作为一种特殊的词嵌入向量,如图所示:
- step1:训练词向量嵌入和语言模型
- 对于输入序列的每一个token将word_embedding和LM_embedding将其结合为新embedding
- 将新的ebedding输入到任务模型中去,输出得到结果
详细的过程如图所示:
课程提到了这个模型的一些细节:
在进行任务的训练的时候,产生LM_embedding的网络是冻结的,只是之前经过pre-train。在很大的数据集上预训练一个较大的双向LM有助于显著提高效果。
3.ELMo:Embeddings from Language Models
ELMo模型和前面的模型相比有如下特点:
4. 训练一个双向的LM
5. 使用了2层的bilstm网络
6. 使用字符级CNN去建立初始词向量
7. 使用4096维度的lstm隐藏层但使用了feed-forward层转为512维传向下一个输入
8. ……
具体如图所示:
ELMo模型一个比较重要的特点是,它不仅使用了LSTM最上面的一层隐藏层,也使用其他隐藏层,对所有的隐藏层做一个权重的求和,得到ebeding的结果,公式如图所示:
使用ELMo完成task
- 首先,预训练biLM模型得到单词的 representations
- 冻结上一步得到的biLM的参数
- 将得到的ELMo权重应用于特定的任务
如图:
课程给出了将ELMo模型应与sequence tagger任务,如图所示:
ELMo模型在NLP的很多应用都取得很好的效果,对普通的baseline模型,应用了ELMo后,都取得了一定水平的提升,如图所示:
ELMo的biLSTM NLM层各有特点,也适合不同的NLP任务:
一般来说,低层的权重更适合低层次的语法任务,比如Part-of-speech tagging, syntactic dependencies, NER等;高层的权重更适合层次更好的语义任务,比如Sentiment, Semantic role labeling, question answering, SN等。
ULMfit
课程介绍了和ELMo同时期ULMfit模型,这个模型同样较好的展示了迁移学习的思想,如图所示:
对于模型的处理,UML采用了如下三步:
- 首先,在一个非常大的数据集(和任务数据集不相关)上训练一个LM模型。
- 接着,使用任务相关的数据集,对模型进行fine-tune(进行训练,在前一个模型的基础上对参数进行微调)
- 使用classifier任务继续fine-tune
如图所示:
ULMfit取得的效果也非常的明显,如图:
这中迁移学习的方法在NLP中开了一个头,从此网络越来越复杂,训练的规模也越来越大。
很多都用的transformer结构,课程接下介绍了这个。
4.Transformers
人们希望可以找到一种并行处理自然语言模型,以加快训练的速度和规模,传统的RNN只能是序列的,并且RNN很依赖与attention结构。人们想到能否将attention模型提取出来,然后进行并行的计算,于是与发明了transforms模型。
Transformer Overview
transformer的总的结构如图所示,具有如下特点:
- 使用非循环结构的encoder-decoder模型
- 可以进行并行的机器翻译的计算
- 预测每一个翻译的word
- 代价函数是标准的softmax输出下的交叉熵代价函数
Transformer Basics
首先是transfromer中的dot-product attention,结构和主要公式如图所示:
课程这里说的非常的简略,这篇博客讲的比较容易理解:self attention机制的理解
Complete transformer block
一个transformer block的结构如图所示:
从输入到上此次是sef-attention层,Residual (short-circuit)和LayerNorm层,Feed Forward层,Residual (short-circuit)和LayerNorm层,其中layNorm和batchnorm类似,也是对输入数据做一个均值和方差的改变。
Encoder Input
transformer对word的输出采用的sub-word级的byte-pair encodings(前几节课讲过),除此以外,transformers还对word在文本中的位置信息也进行了编码输入到了transformers中,如图所示:
Complete Encoder
将前面提到的block重复六次输入,然后再输入词向量前加入位置编码,得到的就是完成的transformer的encode的部分,如图所示:
Transformer Decoder
这一部分这节课成跳过了,放到下一节课讲。
5.BERT
全称:Bidirectional Encoder Representations from Transformers,它采用双向的transformer结构,进行Encoder Representations。
语言模型通常是单向的,通常由左到右或者从右到左进行,但是语言的理解通常是一个双向的过程。所以需要建立一个双向的网络,但是通常的双向编码是会造成Words “see themselves”,如图所示:
这样会造成上层进行编码的效果不是很好,针对这个问题,BERT在预训练时,对数据进行mask操作,如图所示:
通常取mask得比率为15%,预训练时就训练LM预测这些单词。
BERT和ELMo和GPT
三种结构如图所示:
ELMo:采用的是双向的lstm,GPT,采用的是单向的transformer,BERT采用的是双向的transformer。
BERT complication: Next sentence prediction
BERT为了在预训练是更好的获得句子间的关系,不仅仅进行mask词汇的预测,还预测句子,预测一句子是否会紧挨着另外一个句子出现,如图所示:
sentence pair encoding
BERT提供了多种encoding的方式,如图所示:
BERT model architecture and training
bert在训练上具有如下特点:
Bert只学习一个建立在顶层的分类器,微调每个任务,如图所示:
关于这些内容都讲的比较的简略,下节课会讲的比较详细