0%

cs224n-10.上下文词嵌入

课程大纲

预训练到来之前

词嵌入

迄今为止,我们主要使用包括Word2Vec,Glove等词嵌入向量,通过大量的数据预训练,提供给下游任务作为单词输入

之后我们遇到了 OOV(out of dic)和各种英语后缀不同导致单词含义不同得问题,传统预训练向量难以解决,引入了character-level的向量嵌入,如fastText。

然而以往的词向量存在两个问题

  • 以往的词向量嵌入不考虑上下文语境信息(或者说只考虑一种固定的语境),仅仅是固定的一个词向量,应用于不同的下游任务
  • 一个词不止有字面意思,还有包括词性,语法以及适用的语境等其他隐含信息,以往词向量只考虑了词的字面含义

TagLM-“pre-EMLO”

出发点:想要获得拥有上下文信息的词嵌入向量,但是又不想使用大量的标记数据

TagLM模型使用大量无标签数据,训练一个嵌入模型和一个基于RNN的语言模型,用两个模型的输出作为当前词语的嵌入向量,输入到词性标注模型中进行监督训练。

  • 嵌入模型由字符集嵌入和词嵌入两个模型共同生成两个嵌入向量拼接,输入第一层双向RNN
  • 语言模型,由大量的无标签数据预训练后,输入上下文嵌入后与RNN第一层隐藏层输出拼接输入第二层
  • 预训练语言模型,在预训练完成后就冻结

EMLO

ELMo 采用语言模型的思路,不输出固定的词向量表述,而是按照语言模型的方式根据上下文和当前词语,输入当前此与的向量表示。

ELMO使用了多层堆叠的双向LM(LSTM),与传统只选取最后一层隐藏状态输出不同,ELMO认为不同层抽出不同的特征信息(隐藏状态),使用各个层的隐藏状态加权平均,作为输出。

  • 加权平均的不同层权重 $s^{task}_j$ 以及学习率 $\gamma^{task}$ 取值,由下游任务(task)决定

ELMo可以有不同的深度,提取不同深度的特征信息,适用于对应的问题

  • 浅层网络:Part-of-speech(词性标注),syntactic dependencies(句法依存),NER(命名实体识别)
  • 深层网络:sentiment(情感),Semantic role labeling(SRL 语义角色标注),question andwering(阅读理解),SNLI(自然语言推理)

ULMfit-基于迁移学习思路

ULMfit模型同样使用语言模型做词嵌入,共分为三步(文本情感分类为例)

  1. 使用大量的领域数据对语言模型进行预训练
  2. 使用目标任务输入文本对训练好的语言模型进行微调(fine-tuning)
  3. 在模型的最后一层添加两个情感分类神经元

预训练迁移模型 爆发

Transformers简介

为了解决RNN无法并行计算的问题,Transformer结合之前模型的经验,实现了高度的并行性