NLP预训练模型
2022-02-10 15:16:36   3  举报             
     
         
 AI智能生成
  自然语言处理 预训练模型框架
    作者其他创作
 大纲/内容
  文本分类通用训练技巧(ULMFiT)    
     三个阶段    
     在一个很庞大的通用领域无关语料上,进行语言模型的训练,以捕捉语言的通用规律  
     在特定任务的领域相关语料上,进行语言模型的finetune,来学习任务数据的特定语言特征分布  
     进行目标任务分类器的总体学习,直接学习到任务的分类目标  
     Tricks    
     discriminative fine-tuning    
     对不同的层使用不同的学习率去学习。因为越靠近最下层Embedding层,模型参数就会含有更多通用信息,不应随任务目标发生很大变化。所以为了降低灾难性遗忘的可能,越下层,就会用更小的学习率来学习,而上层为了让模型能够更快地学习到目标任务的独有信息,会用相对大的学习率。一般层之间的学习率会等比地变化,在这篇文章里,这个比值为2.6,  
     Slanted triangular learning rates (SLTR)    
     让模型在训练初期快速收敛到一个合适的参数区域,接着再进行细致地优化。这就是一种warmup策略  
     Concat pooling    
     在语言模型最后,很多信息蕴含在之前的层或时间步中,将几个时间步或者几层进行concat,再接上全连接层一般会获得更好的结果  
     Gradual unfreezing    
     一下子把模型的全部层一起训练,通用信息容易丢失,从而增加灾难性遗忘的风险  
     第一个epoch,“解冻”最后一层进行训练(只改变了最后一层参数)。接着“解冻”倒数第二层训练(改变了最后两层参数)。直到把所有层“解冻”为止  
     How to Fine-Tune BERT for Text Classification(2019)    
     在通过任务相关数据进行语言模型finetune后,多加了一步可选的stage: 把BERT在领域内相关的其他任务上进行多任务的训练,我认为这是对于ULMFiT的补充  
     BERT模型能一次处理的最长文本长度为512,为了降低模型运行时间和占用空间,可能要对文本进行截断;
好的截断方式既不是截头,也不是截尾,应该头尾都截一部分保留最重要信息
  
    好的截断方式既不是截头,也不是截尾,应该头尾都截一部分保留最重要信息
 在某一层后直接接分类器进行分类查看BERT的不同层对文本分类任务的效果,把最后四层concat或者max pooling效果最好。  
     层间学习率的下降。越接近底层,含有的通用信息越多,越不应该随着特定任务进行大规模的参数改变,否则有灾难性遗忘风险  
     MT-DNN(KD)    
     四种类型的NLU任务    
     单句文本分类(CoLA, SST-2)  
     文本对的分类(RTE,MNLI,QQP,MRPC)  
     文本相似度度量(STS-B)  
     相关度排序(QNLI)  
     两阶段    
     预训练  
     多任务  
     Knowledge Distillation(KD)    
     训练了多个模型集成而成的MT-DNN作为Teacher Model  
     萌芽时代(2015-2016)    
     语言模型    
     利用大量在人们生活中出现过的文本来训练,使模型在这些文本中,学习到每一个词或字出现的概率分布,以此来建模出符合这些文本分布的模型  
     词嵌入    
     Word2Vec    
     使用COBW或Skip-gram,基于上文的内容预测后面的信息,送入MLP生成Embedding  
     Context2Vec    
     使用BRNN结合上下文信息,再进过MLP来生成Embedding  
     风起云涌(2017-2018)    
     注重核心    
     重视长时的上下文语义在embeddings中所起作用  
     语言模型在大规模语料上提前预训练  
     论文    
     Unsupervised Pretraining for Sequence to Sequence Learning(2017)    
     概要    
     用两个语言模型的预训练权重分别初始化了seq2seq模型的encoder 与decoder,然后再用监督数据对模型进行finetune  
     观点    
     seq2seq模型以及所有深度神经网络的一个共同弱点就是当监督数据量很小的情况下,模型非常容易过拟合  
     两个预训练语言模型的参数来初始化seq2seq模型的encoder网络和decoder网络,并用训练数据进行fine tune能大幅提升效果  
     Deep contextualized word representations(ELMo)(2018)    
     概要
    
     提出了深层双向语言模型,一个理解语法与语意,另一个理解语法与语意
  
     重视长时的上下文语义在embeddings中所起作用和语言模型在大规模语料上提前预训练这两个核心观点  
     tricks    
     从一个在大量语料上预训练的双向LSTM语言模型中提取embeddings  
     在上下层的LSTM之间有 residual connection ,加强了梯度的传播  
     GPT系列    
     特点    
     GPT的模型核心组件选择了Transformer,区别于之前的其他一些模型包括ELMo的LSTM  
     traversal-style input transformations    
     使用特定的符号,来界定文本序列的开始,间隔和结束,并在预训练时做相同的处理,把各种任务的结构化输入统一转化为有序的序列,BERT也使用了这种方法  
     bytepair encoding (BPE)    
     找到一个更好的subword units来作为基本单元,即不能将句子长度被增加太多而降低模型性能,也能有效减少词典的大小以减少模型参数量  
     与别的模型共同点    
     two stage training    
     先在一个规模较大的预料中进行无监督学习
  
     在特定任务的监督数据上finetune
  
     标准的语言模型目标,优化某个词在其前面k个词出现情况下的条件概率  
     把语言模型目标的误差一起加在总误差中联合训练,以提升模型的泛化能力,缓解灾难性遗忘  
     BERT    
     核心贡献    
     揭示了语言模型的深层双向学习能力在任务中的重要性  
     fine-tuning的策略是可以有很强大的效果  
     预训练使用的两个非监督任务
    
     Masked LM (MLM)    
     标准的语言模型目标,没办法实现双向的训练,因为模型在预测某个单词时,会间接地在多层的上下文中看见“自己”,导致泄露  
     BERT提供的解决方案就是Mask LM 任务,它会随机mask掉一定比例的token,让它在训练的时候不在输入中出现,并把它们作为目标来训练,这样就可以防止泄露,mask的方式是把token替换成一个固定的token [MASK]。  
     这样做,可以让Transformer的encoder无法去知道哪个token是要被预测的,也不知道哪个词被替换成随机词了,使它不得不对每一个token都形成一个较好的向量表示,没法取巧  
     只存在预训练,在下游模型的fine-tuning不会出现  
     Next Sentence Prediction (NSP)    
     自然语言推断等是基于理解两句句子之间关系的,不能直接被语言模型所建模,所以BERT还有另外一个二分类任务NSP来捕捉句子间的关系  
     ERNIE(Baidu)    
     三个阶段的预训练    
     单词的masking  
     短语的masking  
     实体的masking  
     ERNIE 2.0    
     利用先验知识和大量数据,构建无监督预训练的任务  
     通过多任务训练增量地更新ERNIE的模型    
     任务会串行地构造不同的预训练任务,并一个个连续地加入训练中,这样可以保持任务训练的灵活性;其次,当前已加入训练的任务会进行并行的多任务训练,这样使模型不致于忘记之前训练过的任务  
    
 
 
 
 
  0 条评论
 下一页
  
   
  
  
  
  
  
  
  
  
  
  
 