CS224N学习笔记(十三)Contextual Word Representations and Pretraining

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语言模型编码后的隐藏层作为一种特殊的词嵌入向量,如图所示:
在这里插入图片描述

  1. step1:训练词向量嵌入和语言模型
  2. 对于输入序列的每一个token将word_embedding和LM_embedding将其结合为新embedding
  3. 将新的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

  1. 首先,预训练biLM模型得到单词的 representations
  2. 冻结上一步得到的biLM的参数
  3. 将得到的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采用了如下三步:

  1. 首先,在一个非常大的数据集(和任务数据集不相关)上训练一个LM模型。
  2. 接着,使用任务相关的数据集,对模型进行fine-tune(进行训练,在前一个模型的基础上对参数进行微调)
  3. 使用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只学习一个建立在顶层的分类器,微调每个任务,如图所示:
在这里插入图片描述
关于这些内容都讲的比较的简略,下节课会讲的比较详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值