NLP之Bert算法思路介绍
Bert算法思路介绍
1 of N Encoding
简单的编码
Word Embedding
更复杂的embedding向量
Contextualized Word Embedding
问题
-
一词多义
- 同一个词(token),在不同句子中,有不同type
-
每一个token都有一个embedding
解决方案
- contextualized word embedding
算法
-
Embedding from Language Model(ELMO)
- RNN based language models
-
Bert (Bidirectional Encoder Representation from Transformers)
-
主要特点
-
Masked LM
-
15%
- 10%替换成其他的
- 10%原封不动
- 80%替换成mask
-
解释
- 如果两个词汇填在同一个地方,没有违和感,则有类似的embedding
-
-
Next Sentence Prediction
-
预测两个句子是否接在一起
- 即主题预测和连贯性预测合并为一个单项任务
-
SEP
- the boundary of two sentences
-
CLS
-
the position that outputs classification results
-
输入到Linear Binary Classifier
- 预测两个句子是否接在一起
-
-
50%的概率,两个句子在一起;50%的概率,是随机选的。【即50%正例,50%负例】
-
-
双向预测模型
-
把之前模型的架构拓展到
- 深的双向的架构上
-
-
bert
-
self attention
- 可以不考虑position的影响
-
特征提取器
-
小bert 12层
-
L
- Transformer Blocks
-
H
- Hidden Size
-
A
-
Number of self attention heads
- 注意力多头的投的个数
-
-
L=12, H=768, A=12
- 参数约为1.1亿
-
有24层 embedding,处理的特性不一样
-
每一层和任务特点有关
-
-
大bert 42层
-
L=24, H=1024, A=16
- 参数约为3.4亿
-
-
-
-
主要过程
-
预训练
-
没有标号的句子对
- 参考图1
-
-
微调(fine tuning)
-
权重来自于预训练
-
输入时标号的句子对
-
下游任务,3个
- 初始化值来自前面训练好的权重
- 然后继续训练,会改变权重等
-
-
每个下游任务都根据自己的任务预训练好模型
-
架构
-
主要是多层的、双向的transformer编码器
- 可以看transformer的文章
-
-
切词方法
-
WordPiece
- 如果一次出现概率不大,可以切开,看子序列的概率。作为子词,可以得到较小的词典,比如3w的词典。
-
-
embedding做法
-
给定一个词源,得到嵌入层,然后输入到transformer
-
Tokedn Embeddings
- 每个词有个embedding
-
Segment Embeddings
- 句子信息,0/1
-
Position Embeddings
- 位置信息,例如0,1,2,3,4…
-
-
训练数据
-
800M 的 Books Corpus
- 书本构成的数据体
-
2500M的英文 wiki百科
-
需要使用文本层面的数据,大段大段的文章
-
-
-
Mask Language Model
-
CASE 1
-
问题
- 句子分类
-
使用句子的embedding
-
-
CASE 2
-
问题
- 实体识别
- input: 句子
- output:class
-
使用每个词汇的embedding
-
如何区分句子
- 使用sep去区分
- 增加一个嵌入层
-
-
下游任务
-
如果一个句子的分类
- 第一个词源对应的CLS做分类
- 对应哪些词源的输出,做分类
- 加一个输出层,+softmax,然后下游任务
-
GBLUE
-
句子层面的任务
-
CLS对应的组以后向量,输出层w,
- 做分类
-
-
QA任务
-
判断每个词源是答案的开头或者结尾
- 得到概率
-
对第二句话,相乘得到softmax,得到概率
- 3个epoch,batch32,5e-5
-
-
-
-
Bert Learn
- 子主题 1
-
如何用于下游任务
-
句子对匹配
-
拼接两个文本,使用CLS的输出判断
- 子主题 1
-
-
单句分类
- 使用CLS的输出,做多分类或者2分类
-
问答
-
序列标注
- 把序列的所有token输出,看属于实体中的哪一个
-
-
如何提升BERT下游任务表现
-
中文预训练模型
- 获取谷歌中文Bert
-
基于领域训练
-
基于任务语料训练
-
基于具体的任务Finetune
-
-
-
ERNIE(Enhanced **)
- 以中文的词为单位
-
ELMO
-
Bert与ELMO的不同
-
ELMO用RNN架构,bert不用
- 虽然是双向的,但是老的架构
-
基于特征的方法
-
-
-
GPT
-
Bert与GPT的不同
-
bert双向的
-
GPT
- 左侧预测右侧
-
-
-
相关工作
-
非监督的基于特征的工作
- ELMP
-
非监督的…
-
迁移学习
-
NLP
- 可能没有
-
-
-
词嵌入等
学习链接
https://www.cnblogs.com/zackstang/p/15358061.html
https://blog.csdn.net/XiangJiaoJun_/article/details/107129808
https://picture.iczhiku.com/weixin/message1590462757334.html
- 点赞
- 收藏
- 关注作者
评论(0)