bert简介_Bert基础介绍

BERT理解

1、预训练模型

BERT是一个预训练的模型,那么什么是预训练呢?

假设已有A训练集,先用A对网络进行预训练,在A任务上学会网络参数,然后保存以备后用。(预训练过程)

当来一个新的任务B,采取相同的网络结构,网络参数初始化的时候可以加载A训练集学习好的参数,其他的高层参数随机初始化,之后用B任务的训练数据来训练网络,当加载的参数保持不变时,称为"frozen",当加载的参数随着B任务的训练进行不断的改变,称为“fine-tuning(微调)”,即更好地把参数进行调整使得更适合当前的B任务。(迁移transformer)

2、基础任务实现

(1)序列标注:分词、实体识别、语义标注等; (2)分类任务:文本分类、情感计算、立场分类、方面级情感分析; (3)句子关系判断:entailment(文本蕴含)、QA、自然语言推理; (4)生成式任务:机器翻译、文本摘要;

3、Bert预训练模型的两个子任务

为什么bert对文本处理能力强:

(1)Marked Language Model(MLM):语言模型

输入一个文本,bert随机mark句子中的词,让模型根据mark后的句子,去预测被mark的词是什么?

即:输入 I like apple because apple is nice

模型转换成:I like [mark] because apple is nice.

模型预测: [mark]=>”apple”

具体的训练数据构造方法是,对每个数据句子中 15% 的概率随机抽取 token,以 80% 的概率替换为 [MASK],10% 的概率替换为其他 token,10% 的概率保持不变。之所以不全替换为 [MASK],是为了减少 pre-training 和 fine-tuning 阶段输入分布的不一致,因为 fine-tuning 阶段的输入是没有 [MASK] 的。

(2)Next Sentence Prediction(NSP):学习上下文关系

任务除了理解单个句子以外,还需要理解两个句子的关系,比如问答和推理任务。为了让模型能够理解学习句对之间的关系,所以提出了第二个预训练任务NSP。NSP取[CLS]的最终输出进行二分类,判断当前输入的两句话是否连贯,类似句子粒度的语言模型,让模型学习输入句子对之间的关系。

具体的训练数据构造方法是,对于 sentence A,sentence B 以 50% 的概率为 sentence A 的下一句,以 50% 的概率进行随机负采样,即从语料库中随机抽取一个句子。

4、预训练数据集

BookCorpus数据集(800M words)

English Wikipedia数据集(2,500M words)

后续有很多Bert模型,并加入诸如新闻,推特的新数据集,比较有名的如下:

Robert (中/英文预训练模型):改进Bert子任务

XLnet(中/英文预训练模型):改进Bert子任务

Albert(中/英文预训练模型):压缩bert参数,使其性能与bert接近

5、实验数据以及对应的NLP任务

MNLI:蕴含关系推断

QQP:问题对是否等价

QNLI:句子是都回答问句

SST-2:情感分析

CoLA:句子语言性判断

STS-B:语义相似

MRPC:句子对是都语义等价

RTE:蕴含关系推断

WNLI:蕴含关系推断

image.png

参考文献:

你可能感兴趣的:(bert简介)