2020自然语言处理 BERT 模型(下)

BERT的应用

  • 分类问题
  • 问答系统
  • Named Entity Recognition(NER)
  • 聊天机器人
  • 阅读理解
  • 情感分析
  • 指代分析
  • Fact checking
    用于抽取特征

分类任务

single_sentence_classifier.jpeg

输入一个句子,然后对这个句子进行分类。可以文字进行分类,例如对文章进行分类,按一些主题进行分类,如这是娱乐新闻,这是体育新闻等等。

  • 情感分析
  • 文章分类

具体怎么做呢,就是在你要输入序列最前面添加 [CLS] 然后这个表示分类 输出给线性分类器(Class Label)进行分类即可。这里分类器(Class Label)参数是可以随机初始化,而且 BERT 也可以作为 Fine-tune 一起学习。

对词分类任务

single_sentence.jpeg

输入一个句子,对句子中每一个词进行分类,确定词汇输入那个一分类,而不是对句子进行分类。输出我们可以对每一个词进行输出其分类。在订票系统我们可以给每一个词加上标签,例如那些词表示地点,那些词表示时间,那些是出发时间,那个词是你的目的地

  • 订票系统

推论任务

bert-sentence-pair.png

输入两个句子,输入一个分类,常见任务有推理任务。例如给机器一个输入前提,然后机器判断根据这个前提作为假设后一句是否成立。

  • 推理
    这个做法也比较简单,就是给 BERT 输入两个句子,中间使用 [SEP] 分隔,然后在前面添加 [CLS] 用于表示分类符号。[CLS] 对应输出给分类器即可。

阅读理解任务

让机器读一篇文章然后回答一些问题,和我们高中的阅读理解很相似,不过要相对简单,为什么说是简单,因为这是有前提的,也就是这些表示答案的词一定可以在文章中找到。

question_paragraph.jpeg
  • 阅读理解

我们给BERT 输入文章D = \{d_1,d_2,\dots,c_N \} 和问题 Q = \{q_1,q_2,\dots,q_M\}这些数据都是用token 序列表示。将 D 和 Q 输入 QA 模型会得到两个整数 s(start) 和 e(end) 这两个整数表示你的答案位于文章第 s 词汇到第 e 词汇之间。

我们用一个向量 \vec{s} (维度和BERT输出词向量维度相同)与文章中每一个词汇做点积后得到一个标量,然后文章中出现词汇和这个向量作为点积后标量输入到一个 softmax 会得到一个概率分布。然后看那个分数最高 s = 等于这个词汇位置。这样就计算出开始位置,同理可以计算出结束的位置(e)。

BERT 是如何工作

bert_head.jpeg

上图中是一个基础BERT,这里只有 12 层,我们看一看这些层都做了哪些事情

  • 1 层每一词看的很广。
  • 2-3 层做的是每一个词推测下一个词
  • 8-7 推断词属于哪一个句子

我们来 BERT 模型中层,每一个层具体做了哪些事情。BERT 举例有 24 层,BERT 每一层就好像是在作为 NLP 任务。例如我们在 NLP 首选会 POS 来判断每一个词的词性,接下来分析句子的文法,当我们知道句子的文法后,就可以进行进一步分析,确定指代关系,词汇关系分析,都是从比较简单到比较复杂。BERT 同样也是按这流程来安排他的每一层的工作,也是从简单到复杂。


bert_layers.jpeg

那么 BERT 有 24 层,我们回忆一下 ELMo 模型就是将模型每一层的输出抽取通过加权求和来得到最终输出。而且这些权重是根据任务模型一起学出来,通过权重我们就可以知道那些层与那些任务关系更紧密。
我们用同样方法来检查一下 BERT 每一层与那些任务相关。图中深蓝色表示任务对某一层的权重。图中每一行代表了一个 NLP 的任务。在每一个 NLP 任务对于某一层权重越大就说明这个 NLP 任务越需要 BERT 某一层。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容