NLP-------Bert句子分类
这个任务给我的感觉非常明确,让我印象特别深的是Bert大牛的范式“预训练+微调”。
-
明确输入输出:电影或者产品的评价。输出:判断这个评价是正面的还是负面的。
-
输入:两句话。输出:两句话是否是同一个意思。
-
微调的理解:针对特定任务需要,在BERT模型上增加一个任务相关的神经网络,比如一个简单的分类器,然后在特定任务监督数据上进行微调训练。(微调的一种理解:学习率较小,训练epoch数量较少,对模型整体参数进行轻微调整)。
BERT模型结构:
BERT模型结构基本上就是Transformer的encoder部分,BERT-base对应的是12层encoder,BERT-large对应的是24层encoder。
-
输入BERT模型输入有一点特殊的地方是在一句话最开始拼接了一个[CLS] token,如下图所示。这个特殊的[CLS] token经过BERT得到的向量表示通常被用作当前的句子表示。除了这个特殊的[CLS] token,其余输入的单词类似篇章2.2的Transformer。BERT将一串单词作为输入,这些单词多层encoder中不断向上流动,每一层都会经过 Self-Attention和前馈神经网络。
-
输出:BERT输入的所有token经过BERt编码后,会在每个位置输出一个大小为 hidden_size(在 BERT-base中是 768)的向量。结合datawhale大佬生动的教程图慢慢品味领会,i了i了
预训练任务
BERT是如何无监督进行训练的呢?如何得到有效的词、句子表示信息呢?以往的NLP预训练通常是基于语言模型进行,比如给定语言模型的前3个词,让模型预测第4个词。但是,BERT是基于Masked language model进行预训练的:将输入文本序列的部分(15%)单词随机Mask掉,让BERT来预测这些被Mask的词语。结合datawhale大佬生动的教程图慢慢品味领会,i了i了