BERT论文翻译读书心得

Task1 Masked LM

为了能够训练更深的双向表示,我们使用了一种更为直接的方法按一定比例的去随机Mask某些输入的tokens。我们也只预测那些被我们Masked的tokens。我们这里提及就是类似于MLM的一种过程,尽管他在1953 Taylor 的文章里面作为一种Cloze的任务常被提及。在这种情况下,最后隐含层的向量对应的mask tokens被fed进一个语义的 softmax 的输出。作为一种标准的语言模型,在所有我们的实验中,我们随机的mask 15%每个句子中的 wordpiece tokens,与去噪 auto-encoders 相比,我们仅仅能预测被masked的单词而并非重组后的整个输入。

尽管这的的确确允许我们能够去双向预训练,但这个方法有两个缺点,第一个缺点就是我们在预训练和 fine tuning 间构造了一个误匹配。但是[MASK]token从来没在fine-tuning出现过,为了缓解这个问题,我们不能总是用那些实际的[MASK]token 取代那些被masked 的单词。然而,训练数据产生器只随机的选了15%的tokens,例如:这个句子 “my dog is hairy” it chooses hairy;他将在程序中按照如下程序表示:

  1. 而不是总是替换所选择带有[MASK]的单词,数据生成器会请执行下列操作:
  2. 80%的时间:取代带有[MASK]token的单词,例如:my dog is hairy →my dog is [MASK]
  3. 10%的时间:用一个随机的单词取代单词的意思,例如:my dog is hairy → my dog is apple
  4. 10%的时间:保持单词不变化。例如:my dog is hairy → my dog is hairy.这样做的目的是使单词偏向实际观测的单词意思。

Transformer encoder 不知道哪个单词将被预测或者哪个单词已经被随机取代了。所以他要保持每一个输入token的上下文表示。另外,因为在所有的tokens(10%或15%)中随机的带了取代了仅仅只有的1.5%,这似乎并没有降低了这个模型的语言理解能力。

第二个缺点是用了MLM只有15%在每批的预测之中。而这也就意味着如果我们想拟合的话需要更多的预训练步骤。在5.3部分,我们发现MLM相对于从左往右的模型中(他需要预测每一个token)确收敛的更慢,但是MLM模型的经验性成果远远超过了训练所花费的代价。

Task2 Next Sentence Prediction

许多重要的下游任务,例如问答(QA)和自然语言参与(NLI),都是基于理解两个文本句子之间的关系,而这两个文本句子并不是由语言建模直接捕获的。 为了训练理解句子关系的模型,我们预先训练二进制化的下一句预测任务,该任务可以从任何单语语料库中简单地生成。 具体地,当为每个预训练示例选择句子A和B时,50%的时间B是跟随A的实际下一句子,并且50%的时间是来自语料库的随机句子。 例如:
Input = [CLS] the man went to [MASK] store [SEP] he bought a gallon [MASK] milk [SEP]
Label = IsNext
Input = [CLS] the man [MASK] to the store [SEP]
penguin [MASK] are flight ##less birds [SEP]
Label = NotNext
我们完全随机选择NotNext语句,最终预训练模型在此任务中达到97%-98%的准确率。 尽管它很简单,但我们在5.1节中证明,针对此任务的预训练对QA和NLI都非常有益。

Pre-training Procedure

预训练程序主要遵循语言模型预训练的成熟文献。对于预训练语料库,我们使用BooksCorpus(800M字)的连接(Zhu等,2015)和英语维基百科(2500万字)。对于维基百科,我们只提取文本段落并忽略列表,表和标题。 至关重要的是使用文档级语料库而不是洗牌的句子级语料库,例如Billion Word Benchmark(Chelba et al。,2013),以便提取长的连续序列。为了生成每个训练输入序列,我们从语料库中采样两个文本跨度,我们将其称为“句子”,即使它们通常比单个句子长得多(但也可以更短)。 第一个句子接收A嵌入,第二个句子接收B嵌入。 50%的时间B是跟随A的实际下一个句子,50%的时间是随机句子,这是为“下一句话预测”任务完成的。 对它们进行采样,使得组合长度≤512个tokens。 在WordPiece标记化之后应用LM来Mask,具有15%的统一掩蔽率,并且不必特别考虑部分字块。
我们每批训练的大小是256个句子,(256个句子*512个tokens=128,000 tokens/batch)进行1,000,000步,这大约将近40个epochs 超过33亿个单词语料库。我们用学习率1e-4的Adam, β1 = 0.9, β2 = 0.999,L2的权重衰减0.01,学习率超过第一个10,000步的预热,学习率的线性衰减,我们在每 一层上用droupout 0.1的概率。我们用gelu的激活函数而不是标准的relu,用哪个OpenAI GPT.训练的loss等于masked LM的似然均值加上下一个句子的预测似然均值。
BERT的基础版训练在四块云TPU上的POD组件(总共16块TPU),BERT的升级版训练在16块云TPU上(总共64块TPU芯片),每一个预训练花费4天完成。

Fine-tuning Procedure

对于句子层面的分类任务,BERT的 Fine-tuning是非常直接明了的。为了得到一个输入句子的固定维度的汇总表示。我们使用了最后的隐含状态,例如:输出的Transformer作为第一个token去输入,通过构造一些特殊的[CLS]单词嵌入。我们定义这个向量为C。当fine-tuning被作为分类层W时,仅仅一些新的参数加入。在这里K是分类标签的个数,标签的概率P用标准的softmax来计算。BERT里的所有参数和W是fine-tuned共同最大化的正确标签的log-概率.对于跨度级别和token级别的预测任务。以上的程序必须在具体方式中被轻微的修正。详情见第四节的相关部分。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值