2022最新版-李宏毅机器学习深度学习课程-P51 BERT的各种变体

之前讲的是如何进行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

相关推荐
AI完全体1 小时前
【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)
人工智能·深度学习·神经网络·机器学习·过拟合·模型复杂度·偏差-方差
卷心菜小温2 小时前
【BUG】P-tuningv2微调ChatGLM2-6B时所踩的坑
python·深度学习·语言模型·nlp·bug
陈苏同学2 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
FL16238631293 小时前
[深度学习][python]yolov11+bytetrack+pyqt5实现目标追踪
深度学习·qt·yolo
羊小猪~~3 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
我是哈哈hh3 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
龙的爹23333 小时前
论文 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust
人工智能·gpt·深度学习·语言模型·自然语言处理·prompt
工业机器视觉设计和实现3 小时前
cnn突破四(生成卷积核与固定核对比)
人工智能·深度学习·cnn
醒了就刷牙3 小时前
58 深层循环神经网络_by《李沐:动手学深度学习v2》pytorch版
pytorch·rnn·深度学习
985小水博一枚呀3 小时前
【对于Python爬虫的理解】数据挖掘、信息聚合、价格监控、新闻爬取等,附代码。
爬虫·python·深度学习·数据挖掘