2022-10-10 Bert模型

关注点1:Transformer

1. embedding层:把离散字符转化为数字

Embedding

1.1 token embeddings:用于区分文本内容,1个文本字符对应768维的向量,1个token embeddings输出N(字符数)x 768维的矩阵
1.2 segment embeddings:用于区分哪一句话,输出也是N x 768维的矩阵,同一句对应的向量是相同的
1.3 position embeddings:用于确定文本位置,输出也是N x 768维的矩阵
因此得到3个N x 768矩阵,3个矩阵相加,输出一个新的N x 768的矩阵

2. self-attention层:

attention机制

通过神经网络,计算句子中字符的权重w,从而对输入进行一定的加权(更关注某部分)ps: 原始输入文本x和decoder后的输出文本yt-1均需输入attention层进行权重的计算。


self-attention

区别于传统attention,不涉及输出的再输入。WQ,WK,WV是线性层(768x768),与X(10x768)相乘后得到10x768矩阵,随机初始化后训练更新。



QxKT计算出文本的权每个字与其他字的相关性,softmax归一化得到权重,是self-attention,dk涉及多头机制,再乘以V(和原本数量相乘)
获得文本与其他文本的相关

多头机制:把原本的10x768矩阵切分为12个10x64的矩阵,在不同子空间训练模型,获得12个完全不同的self-attention矩阵,最后拼接,从而提升模型效果。


多头机制multi-head

3. LayerNorm(残差机制)

把embedding层和self-attention层输出相加,有助于保留一些原始信息,防止过拟合


LayerNorm(残差机制)

4. Feed Forward层(前馈层)

注:相比于CNN,RNN,随着长度增加,距离很远的数据也不会丢失。
优势:数据更全、更完整
优势:无距离限制,且可以并行,速度较快

调用方式

from transformers import BertModel
bert

关注点2:预训练方法

通过海量的不需要标注的数据训练得到bert预训练参数



随机遮挡: 学习每个字的意思

预测是否为下一句话:学习两句话之前的关联

Bert实际上就是个文本编码器,将文本向量化,本质上与LSTM,CNN等没有差异(ps.文本长度不一致,需要用0补齐)
下游任务中的使用

预训练模型的发展

1. ELMo

使用的是双向LSTM,预训练任务是单向预测(前N个字预测后1个字)

2.GPT

GPT:使用transformer,预训练任务还是单项预测,增加了有监督训练

3. Ernie-baidu

百度模型:在中文上表现更好,加入了先验知识,但导致不通用

4. Ernie-Tsinghua

清华模型:引入知识图谱

5. GPT2

GPT2:语言生成能力强,大数据大模型

6. UNILM

弥补bert生成文本的缺陷,通过MASK机制增加单向LM

7.Transformer-XL&XLNet

Transformer中position embedding有长度限制

一次bert解决不了,往下传递

相对位置编码

8.Roberta

Roberta

9.SpanBert

改变训练目标对模型也有提升

10. ALBERT

解决模型参数过多的问题

11. T5

利用seq2seq方式:迈向NLP的大一统

12.GPT3

超大模型,目标是不要调参

未来方向

参考资料:
八斗学院讲座笔记(侵删)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容