哪里找做网站的,网站数据库网络错误怎么解决方案,猎头公司和人力资源公司的区别,wordpress自定义文章类型面包屑之前讲的是如何进行fine-tune#xff0c;现在讲解如何进行pre-train#xff0c;如何得到一个pre train好的模型。
CoVe 其实最早的跟预训练有关的模型#xff0c;应该是CoVe#xff0c;是一个基于翻译任务的一个模型#xff0c;其用encoder的模块做预训练。
但是CoVe需要… 之前讲的是如何进行fine-tune现在讲解如何进行pre-train如何得到一个pre train好的模型。
CoVe 其实最早的跟预训练有关的模型应该是CoVe是一个基于翻译任务的一个模型其用encoder的模块做预训练。
但是CoVe需要大量的翻译对这是不容易获得的能不能通过一大段没有标注的语料进行预训练呢 因为有监督的标注是十分费时费力的因此采用自监督的方法。即给定一个无标签的语料之后利用语料库自己产生一系列的标签之后再进行对应的训练。
Predict Next Token 比较直觉的自己监督方法就是预测下一个单词是什么。给出的解法就是将一个token输入到网络中经过softmax之后得到下一个token的概率分布。
最早的自监督的方法就是预测下一个token是什么。 elmo ulmfit
其中使用LSTM做predict next token的工作有elmo以及ulmfit。 使用self-attention的方式进行next token prediction。这种方法就是避免模型知道下一个词是什么。 语言学家认为一个单词应该与其经常出现的单词一起出现。因此使用LSTM的时候用隐向量编码其左边context的所有向量就表示其前面出现的所有单词。 elmo不但关心其左边的context还关心其右边的context。但是有一个缺点就是其左边lstm进行编码的时候只能看到左边的token右边的lstm进行编码的时候只能看到右边的token。看到的句子是不完整的这就存在问题bert是完整的可以解决这个问题。 但是随机的进行mask往往是会产生不好的效果的有时候mask掉的是一个短语中的一个token这样的话是不好出比较好的效果的。因此有方法提出了三个比较好的mask方法其一是先分词之后将分词word整个mask掉其二是phrase-level就是好几个word其三是实体level的mask就是先做ner之后再将整个entity给mask掉就是ERNIE模型。
spanbert spanbert方法就是也不考虑是盖住一个词一个短语还是一个entity了。就直接盖住一排的token。 spanBert中添加了一个新的预训练任务SBO即根据被盖住的左边token和右边token之后预测被盖住的词中的第n个token。 BERT的一个太好的点就是其不善于处理生成任务语言模型往往是给定左边的token之后去预测右边的token但是BERT是双向的模型在生成任务中只能看到左边的token是无法看到右边的token的所以效果比较一般
MASS/BART 之前的MASS和BART训练的是一个seq2seq的任务。但是都在输入端对原句子进行一定程度的破坏。
UniLM UniLM是可以做encoder可以做decoder可以做seq2seq UniLM本质上其实是一堆的transformer层的组合并没有明确区分哪些是encoder哪些是decoder。我们可以通过区分训练任务来对实现的任务进行区分。可以像bert一样做一个encoder这时候可以看到整个句子中的token像bert一样进行训练。可以像GPT一样进行decoder的训练但是在生成的时候只能看左边的token右边的token是不可以看的。也可以像BART和MASS一样做encoder和decoder的任务输入是两个句子第一个句子可以看到全部的token第二个句子则只可以看到左边的token。 ELECTRA 预测mask掉的token有时候是一个比较难得事情因此有模型ELECTRA随机得替换原始句子中的一些token生成一些文法没有问题但是语义怪怪得句子之后为模型识别出哪些token被替换了哪些token没有被替换。 但是如果随机找一个不相关的词直接替换的话模型应该学不到什么有用的信息所以在ELECTRA中训练了一个小的BERT让其生成替换的词从而对ELECTRA进行训练。 之前都是对各个token进行embedding如何得到一个sentence的embedding呢 Skip Thought Quick Thought RoBERTa ALBERT T5 C4 ERNIE 还有语音版bert