当前位置:   article > 正文

预训练模型详解

预训练模型

0.前言

  • 引用内容都会在参考资料中注明
  • 文章来源:CSDN@LawsonAbs

1.什么是预训练模型?

预训练语言模型最早是在论文《 Dai & Le,2015,Semi-supervised Sequence Learning》 中提出的。起初在视觉领域使用的很多。后来,慢慢地也广泛应用于NLP任务当中。

1.1有什么好处?

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

1.2 为什么可行?

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

2.策略

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

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

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

3.模型结构

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

3.1 Feature-based

3.2 BERT

那么这个模型的输出是什么?有一个稳定的输出吗?
句子中的每一个词都会输出一个长度为 hidden_size 的向量(BERT BASE中这个维度是768)

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

训练方式是什么?
双向语言模型预训练

3.2.1 训练的任务是什么?

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

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

4.

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

5.使用方法

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

6.常用术语

  • 单向模型

.参考文章

  • https://zhuanlan.zhihu.com/p/112929902
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/124024
推荐阅读
相关标签
  

闽ICP备14008679号