language modelling

  • 何为语言模型?语言模型本质任务是预测,即通过上文来预测下文,也可理解为生成模型(生成单词/句子等);而生成的词向量只能说是语言模型的副产物,可以理解为语言模型所需要一些信息蕴含在了其中(最主要的是语义方面的信息),因此其也可以作为一维feature作为其他任务的输入;而比如在word2vec中词向量的某些特性:如相近词义单词在向量空间中离得近、词向量间有加减的线性关系等,也可理解为语言模型的副产物。
  • 目前language modelling主要有两类方法:一种是feature based方法,先训练好词向量,之后将词向量作为一维特征输入下游任务模型中,训练下游任务模型来做;第二种是fine-tuning based方法,同样是训练词向量,这种方法分为pretrain和fine-tune两步,pre-train阶段同样是训练词向量,在fine-tune阶段沿用训练好的模型结构和模型参数,通过增加输出层的方式来匹配下游任务的输出格式(输入格式和pretrain阶段保持一致),同时使用下游任务的数据集来微调模型参数,从而使模型适配下游任务

    motivation of bert

  • 传统语言模型要么是单向left-to-right的(Mikolov 2013 word2vec,训练任务是通过前面的词预测后面的词),要么只是将左边和右边的embedding简单拼接在一起(ELMo)(导致see itself的问题?),都没有充分利用左右上下文的信息。
  • 作者认为双向模型可以improve pretrain fine-tune模型,而且fine-tune模型无需task spesific的模型结构,更有通用性。

预训练语言模型

  • 先用大规模预料数据做预训练,再适配到下游任务上(经过微调后)。
  • 目标:捕捉深层语义信息和上下文关系
  • 一般的预训练模型都满足分布式语义假设:即一个单词可以由上下文来表征。

    自回归 & 自编码:

  • 自回归:利用回归模型去估计概率分布(没有噪声,但只能是单向的,从一个方向来预测)
  • 自编码:bert,编码器-解码器流程。(主要问题:会引入一定噪声,如bert中的mask,但微调时是没有的,因此会有误差)

    XLnet

    希望能融合自回归 & 自编码的双方优点,主要改进的是预训练阶段,
    乱序语言模型:对单词序列进行全排列,
    双流注意力机制:只使用当前被预测词的位置信息,使用其他词的内容信息和位置信息

    transfor-XL

  • 解决transformer无法捕捉长期依赖的问题(最大长度只有512)。
  • 先将一个长文本分成顺序的若干segments(segment内部进行乱序排列(即乱序语言模型)),按顺序依次对每个segment进行transform-xl(segment大范围内是有序的)。
  • 问题:不同段segment可能有相同的位置表征——解决:相对位置编码,将绝对的位置编码转换为相对的位置编码。

ERNIE 2.0

  • motivation:BERT和XLnet都是基于句子和词的共现来训练模型(即词的分布式表征),但语料库中还有其他知识:如句法、句子顺序等信息。
  • contributon:
  1. 首先构建一系列预训练任务,之后将预训练任务顺序地输入模型中(加上task embedding),三类预训练任务:针对word、针对结构、针对语义的。
    两种损失函数:句子级别 & token级别。
  2. 增量任务的训练,后一个任务会依赖前一个任务的结果。何为增量:每个任务不断加loss,最后加到第七个后就是七个任务的loss相加->这样要保证七个任务综合的性能是最好的。

Post Date: 2019-07-16

版权声明: 本文为原创文章,转载请注明出处