预训练模型详解

2022年01月16日 阅读数:2
这篇文章主要向大家介绍预训练模型详解,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


0.前言


  • 引用内容都会在参考资料中注明



1.什么是预训练模型?

预训练语言模型最先是在论文​​《 Dai & Le,2015,Semi-supervised Sequence Learning》​​ 中提出的。起初在视觉领域使用的不少。后来,慢慢地也普遍应用于NLP任务当中。网络

1.1有什么好处?

  • 使用预训练模型大大提高了在相关任务上的效果,同时下降了训练的难度。

1.2 为何可行?


一般而言,预训练好的网络参数,尤为是底层的网络参数,若抽取出特征跟具体任务越无关,越具有任务的通用性,因此这是为什么通常用底层预训练好的参数初始化新任务网络参数的缘由。而高层特征跟任务关联较大,实际能够不用使用,或者采用Fine-tuning用新数据集合清洗掉高层无关的特征抽取器。ide


2.策略

目前主要有两种预训练语言模型用于下游任务的方法:​​feature-based​​​(以​​ELMo​​​为例)和​​fine-tuning​​​(以​​BERT​​为例)学习



​Feature-based​​指使用预训练语言模型训练出的词向量做为特征,输入到下游目标任务中。spa



​Fine-tuning​​ 指在已经训练好的语言模型的基础上,加入少许的 ​​task-specific parameters​​【只改变较少的任务相关的层与参数】,而后在新的语料上从新训练来进行微调【直接对下游任务训练整个原来的语言模型??能说清楚具体是什么样的操做吗?】。code



3.模型结构

针对不一样的预训练语言模型,它们各有有什么样的结构呢?ip

3.1 ​​Feature-based​

3.2 ​​BERT​

那么这个模型的输出是什么?有一个稳定的输出吗?ci

句子中的每个词都会输出一个长度为 ​​hidden_size​​ 的向量(BERT BASE中这个维度是768)it


其中 [CLS] 部分留做 Next Sentence Prediction 的预测输出使用,且每一个单词为三类Embedding【​​Token Emebedding, Segment Embedding, Position Embedding​​】之和?
上面这句话的前半句是什么意思?io


训练方式是什么?class

双向语言模型预训练

3.2.1 训练的任务是什么?



第一个任务
采用 MaskLM 的方式来训练语言模型,简单地说就是在输入一句话的时候,随机地抹去这句话中的一个词或几个词,而后用一个特殊的符号[MASK]来代替它们,以后让模型根据所给的标签去学习这些地方该填的词.



第二个任务
第二个任务在双向语言模型的基础上额外增长了一个句子级别的连续性预测任务,即预测输入 BERT 的两段文本是否为连续的文本,引入这个任务能够更好地让模型学到连续的文本片断之间的关系。



4.

语言模型,几乎都是根据上下文来预测相邻的词或字是什么,根据训练任务不一样会有一些差异。 => 因此语言模型的预料的标签就是它的上下文,不须要从新标注。这就决定了人们几乎能够无限制地利用大规模的语料来训练语言模型,使其学习到丰富的语义知识。正由于预料的规模的大,使预训练语言模型得以得到了强大的能力,进一步在下游相关任务上展示了出色的效果。

5.使用方法


  • Frozen
    浅层加载的参数在训练新任务的时候不改变,其它高层参数仍然随机初始化。
  • Fine-tuning
    底层网络参数也在随着训练而改变

6.经常使用术语

  • 单向模型

.参考文章