赞
踩
预训练语言模型最早是在论文《 Dai & Le,2015,Semi-supervised Sequence Learning》 中提出的。起初在视觉领域使用的很多。后来,慢慢地也广泛应用于NLP任务当中。
通常而言,预训练好的网络参数,尤其是底层的网络参数,若抽取出特征跟具体任务越无关,越具备任务的通用性,所以这是为何一般用底层预训练好的参数初始化新任务网络参数的原因。而高层特征跟任务关联较大,实际可以不用使用,或者采用Fine-tuning用新数据集合清洗掉高层无关的特征抽取器。
目前主要有两种预训练语言模型用于下游任务的方法:feature-based
(以ELMo
为例)和fine-tuning
(以BERT
为例)
Feature-based
指使用预训练语言模型训练出的词向量作为特征,输入到下游目标任务中。
Fine-tuning
指在已经训练好的语言模型的基础上,加入少量的 task-specific parameters
【只改变较少的任务相关的层与参数】,然后在新的语料上重新训练来进行微调【直接对下游任务训练整个原来的语言模型??能说清楚具体是什么样的操作吗?】。
针对不同的预训练语言模型,它们各有有什么样的结构呢?
Feature-based
BERT
那么这个模型的输出是什么?有一个稳定的输出吗?
句子中的每一个词都会输出一个长度为 hidden_size
的向量(BERT BASE中这个维度是768)
其中 [CLS] 部分留作 Next Sentence Prediction 的预测输出使用,且每个单词为三类Embedding【
Token Emebedding, Segment Embedding, Position Embedding
】之和?
上面这句话的前半句是什么意思?
训练方式是什么?
双向语言模型预训练
第一个任务
采用 MaskLM 的方式来训练语言模型,简单地说就是在输入一句话的时候,随机地抹去这句话中的一个词或几个词,然后用一个特殊的符号[MASK]来代替它们,之后让模型根据所给的标签去学习这些地方该填的词.
第二个任务
第二个任务在双向语言模型的基础上额外增加了一个句子级别的连续性预测任务,即预测输入 BERT 的两段文本是否为连续的文本,引入这个任务可以更好地让模型学到连续的文本片段之间的关系。
语言模型,几乎都是根据上下文来预测相邻的词或字是什么,根据训练任务不同会有一些差别。 => 所以语言模型的预料的标签就是它的上下文,不需要重新标注。这就决定了人们几乎可以无限制地利用大规模的语料来训练语言模型,使其学习到丰富的语义知识。正因为预料的规模的大,使预训练语言模型得以获得了强大的能力,进一步在下游相关任务上展现了出色的效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。