Bert
语言表征预训练。
1有上下文——根据整句话生成词表征
2无上下文——word2vec 和glove
词汇表中每个单词生成单个词嵌入表征,bank、bank deposit、river bank 相同表征
Unsupervised(仅使用语料库),深度双向
Bert建立在上下文预训练语境表征工作基础上,半监督序列学习、预训练生成模型、ELMo、ULMFit
Idea:屏蔽掉输入词汇的15% ,用深度双向的transformer编码器运行整个序列,预测屏蔽的单词。
Steps:大型语料库(Wikipedia和bookcorpus)对较大模型(12-24层transformer 编码器)进行训练,得到bert
Application:
1预训练:4-16个tpu 4天(mmp喔…..)无需从头预训练模型 ——————but,这预训练到底是个什么东西???
2微调:单个tpu 1hr ,单个gpu几小时就ok了,SQUAD 在TPU 30min 能得到91%的Dev F1得分(单系统best performance了)
Pros:
适用于多模型 句子级别SST-2,句对级别MultiNLI, 单词级别NER,长文级别SQUAD
Repository:
1,bert模型的tensorflow code, (标准transformer结构)
2,全小写语料库训练版(bertBase)和正常语料库训练版(bertLarge)模型的预训练checkpoints
3,自动化复现微调实验结果的tensorflow代码,SQUAD、MULTINLI、MRPC数据集下的训练
将模型放在可从任意单语语料库(corpus)里生成的简单任务中训练:这个任务是,给出两个句子A和B,句子B究竟是句子A的下一个衔接句还是语料库随机生成的句子.
不懂的还:
Batch和gpu关系
词表征
词嵌入
Transformer编码是啥
序列学习
预训练是啥,它的checkpoints又是啥
微调是啥
句子句对单词长文级别