H好菇凉666用万字长文聊一聊 Embedding 技术( 四 )


Global Vector融合了矩阵分解Latent Semantic Analysis (LSA)的全局统计信息和local context window优势 。 融入全局的先验统计信息 , 可以加快模型的训练速度 , 又可以控制词的相对权重 。
FastText是FaceBook在2017年提出的文本分类模型(有监督学习) 。 词向量则是FastText的一个副产物 。 FastText模型结果如下图所示:
H好菇凉666用万字长文聊一聊 Embedding 技术
本文插图
其中表示一个文本中的n-gram向量 , 每个特征是词向量的平均值 。 从模型结构可以看出 , FastText与CBOW模型的结构相似 , 不同在于FastText预测的是全部的n-gram去预测指定类别 , 而CBOW预测的是中间词 。
2、动态向量 由于静态向量表示中每个词被表示成一个固定的向量 , 无法有效解决一词多义的问题 。 在动态向量表示中 , 模型不再是向量对应关系 , 而是一个训练好的模型 。 在使用时 , 将文本输入模型中 , 模型根据上下文来推断每个词对应的意思 , 从而得到该文本的词向量 。 在对词进行向量表示时 , 能结合当前语境对多义词进行理解 , 实现不同上下文 , 其向量会有所改变 。 下面介绍三种主流的动态向量表示模型:ELMo、GPT和BERT 。
A) ELMo ELMo(Embeddings from Language Models)是2018年3月发表 , 获得了NAACL18的Best Paper 。 ELMo的模型结构如下图所示:
H好菇凉666用万字长文聊一聊 Embedding 技术
本文插图
由于当时并没有提出现在火热的Transformer结构 , ELMo采用的是多层双向LSTM来搭建模型 。 在给定一个包含N个token的文本(t1, t2, ..., tN):

  • 前向语言模型用于计算给定句子t1,t2,...,tk-1 , 目标为tk的概率:
  • 后向语言模型与前向相反 , 对于给定tk+1,tk+2,...,tN , 目标为tk的概率:
最终目标函数为:
其中 , 是输入token的embedding , 表示softmax层的参数 , 和分别是双向LSTM的参数 。
对于每个输入的token , 一个L层的双向LSTM输出有2L+1个向量:
其中 , 表示第层中底个节点的输出(和分别表示前向和反向),表示token layer , 表示双向LSTM layer 。
在下游的任务中 ,ELMo把所有层的R压缩在一起形成一个向量:
具体步骤如下:
  1. 预训练biLM模型 , 通常由两层bi-LSTM组成 , 之间用residual connection连接起来 。
  2. 在任务语料上fine tuning上一步得到的biLM模型 , 这里可以看做是biLM的domain transfer 。
  3. 利用ELMo提取word embedding , 将word embedding作为输入来对任务进行训练 。
B) GPT GPT-1(Generative Pre-Training)是OpenAI在2018年提出的 , 采用pre-training和fine-tuning的下游统一框架 , 将预训练和finetune的结构进行了统一 , 解决了之前两者分离的使用的不确定性(例如ELMo) 。 此外 , GPT使用了Transformer结构克服了LSTM不能捕获远距离信息的缺点 。 GPT主要分为两个阶段:pre-training和fine-tuning
预训练模型采用前向Transformer结构如下图所示:
H好菇凉666用万字长文聊一聊 Embedding 技术
本文插图
GPT采用auto regressive language model对大量文本进行无监督学习 , 目标函数就是语言模型最大化语句序列出现的概率 , 其损失函数为:
其中 , k为上文的窗口 , 表示参数为的神经网络模型 。
表示左侧窗口的上下文词向量 , 表示Transformer的层数 , 表示词向量矩阵 , 表示position embedding矩阵(作者对position embedding矩阵进行随机初始化并训练学习) 。
采用无监督学习预训练好模型后后 , 可以把模型模型迁移到新的任务中 , 并根据新任务来调整模型的参数 。