赞
踩
BERT,是 Bidirectional Encoder Representations(双向编码器表示)的缩写,它从单词的两边(左边和右边)来考虑上下文。以前所有的努力方向,都是一次只考虑单词的一边,要么是左边,要么是右边。这种双向性有助于模型更好地理解使用单词的上下文。此外,BERT 的设计目标是能够进行多任务学习,也就是说,它可以同时执行不同的自然语言处理任务。
BERT这个model实际上是一个transformer 的 Encoder
transformer
BERT一般用在NLP上,它的输入通常是一段文字,我们随机盖住其中一个,所谓的盖住通常有两种做法,随机选择一种
第一种是用一个特殊的符号:MASK 来代表;
第二种是随机找一个文字替换掉。
盖住以后,输出就是另外一个sequence,把盖住部分对应的输出做一个linear 的transformer 输出一个分布(其实是一个向量)。
因为我们知道被盖起来的部分是什么,但BERT不知道,所以BERT学习的目标就是**:输出跟盖起来的越接近越好**。
训练的时候,是BERT跟Linear一起训练。
BERT在训练的时候还会做 Next Sentence Prediction
Next Sentence Prediction意思是说,从资料库拿出两个句子在句子之间加入一个符号[SEP] 在整个sentence的最前面加一个符号[CLS]。这些东西都丢到BERT中,正常输出是另外一个sequence,但我们只取[CLS]对应的那个输出,右边的其他输出暂时不管。把这个输出乘上一个Linear 的transformer,输出是Yes/No(二元分类) 代表这两个句子是不是相接的。
但是Next Sentence Prediction并没有太多的帮助 具体的可以查看相关paper
BERT怎么用呢?
BERT在训练的时候有两个任务,一个是盖住一些字,它可以补回来(填空题);另外一个是他可以预测两个句子是不是可以接在一起(没什么用)
整体而言,BERT就是学到怎么做“填空题”。
BERT可以被用在其它任务上,这些任务被称为:Downstream Tasks(下游任务)
这些任务不一定跟“填空题”有关,给BERT一点有标注的资料,它就可以分化成各式各样的任务,分化这件事情叫做:Fine-tune。
在Fine-tune之前,产生BERT的这个过程,就叫Pre-train。
case1 :Input: sequence output: class
例如:sentiment analysis
预训练的好处(实线)
case2:输入和输出长度一样 例如:词性标注
case3:输入两个sequence 输出一个class 例如:自然语言推理(场景:立场分析)
case4:Extraction-based QA
输入有文章D和问题Q,把D 和Q 都丢到模型里面,我们要求它输出两个正整数s,e
根据这两个正整数,直接从文章里面截一段出来,就是答案。
唯一需要从头开始训练的(Random Initialized),只有两个向量(橙色和蓝色)。
橙色代表答案起始位置,蓝色代表答案结束的位置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。