pytorch微调bert_BERT 在抽取式摘要上的应用

论文题目:Fine-tune BERT for Extractive Summarization

论文链接:https://arxiv.org/pdf/1903.10318.pdf

代码链接:https://github.com/nlpyang/BertSum

Introduction:

这篇论文主要关注的是BERT在抽取式摘要(extractive summarization)上的应用,作者尝试使用了不同的Bert 不同的变种对于CNN/Dailymail还有NYT datasets 的影响,并且发现flat architecture with inter-sentence Transformer layers 效果最好,达到了当前最佳

Methodology:

令d表示一个包含不同段落的文档[sent1,sent2,...sentm],其中senti 是文档中的第i句话,抽取式摘要可以被定义为对于每一个senti 给他打上0/1标签,表明这句话是否应该被纳入到摘要当中。

由于bert 是基于词而不是句子级别的编码,以及BERT的segment embedding 只能包含两种句子类型,没有办法直接用在输入时多句子的摘要任务当中,因此作者调整了BERT的输入部分和embedding 来使得他能够适应摘要任务。

pytorch微调bert_BERT 在抽取式摘要上的应用_第1张图片

Encoding Multiple Sentences

作者在每一个句子的前后都插入了CLS和SEP的符号。每一个CLS符号对应的是这句话的表示。

Interval Segment Embeddings

作者使用了间隔符号从而区分一篇文档中的多个句子,对于一个句子senti 来说,作者基于句子的单双编号给他们加了一个segment embedding EA/EB,这样对于 [sent1,sent2,...sent5]而言,他们的segment embedding 就是[EA,EB,EA,EB,EA]

Fine-tuning with Summarization Layers

从BERT中拿到句子向量了以后,作者使用几个不同的方式来针对摘要任务进行微调

1。Simple Classifier

和原始的BERT模型类似,作者直接加了一个二分类的线性层来得到预测的值:(Ti是当前句子的句向量)

c6b32272210c1015efc9b05977f9c123.png

2。Inter-sentence Transformer

这种方法就是接分类器之前,作者又加了transformer层 来从BERT的输出中抽取适用于摘要任务的文档特征:

19e87f918eb1a2877f1552bf46f93bb0.png

h 是句向量的表示

LN是layer normalization

MHAtt 是multi head attention

FFN 论文里没说

然后作者再对整合完的向量进行二分类:

ca1bb7168547d7c6952de227dfbcb260.png

L是表示过二分类之前堆叠了几层transformer层

3。RNN

作者比较了一下Transformer 和 RNN 看一下对于摘要抽取任务上哪个模型更好一点,方法上还是从BERT的输出里接一层(??)的RNN然后过MLP

pytorch微调bert_BERT 在抽取式摘要上的应用_第2张图片

f77ad5e766092ec35659a95360496d00.png

LNx表示不同的层归一化操作

实验结果:

pytorch微调bert_BERT 在抽取式摘要上的应用_第3张图片

优缺点:

多句子的segment embedding 可以试一试,不同的segment 是否对结果有明显影响得做实验详细看看

摘要抽取式任务只是对每个句子简化为了0/1分类任务,能不能更加细致的改成置信度或者抽语义单元。(或者干脆抽成概念交互图---ACL2019 https://arxiv.org/abs/1802.07459)

多层Transformer 和单层 RNN比较不合理,以及没考虑CNN

你可能感兴趣的:(pytorch微调bert)