美文网首页
HIBERT: Document Level Pre-train

HIBERT: Document Level Pre-train

作者: 第一个读书笔记 | 来源:发表于2021-05-30 14:46 被阅读0次
HIBERT

Ref: https://arxiv.org/pdf/1905.06566.pdf

主流的文本摘要有2个方向,抽取式extractive和生成式abstractive。本文是基于BERT模型框架,进行从词到句子,句子到文档的encoding,实现hierarchical的文档级的抽取式摘要预训练模型。实验显示,HIBERT在CNN/Daily mail数据和New York Times 数据集上的ROUGE分别达到1.25和2.9,达到SOTA。

背景

介绍HIBERT前,先理解2个抽取方法。
Extractive Summarization
抽取式摘要顾名思义,就是从文档中,选择合适的句子作为该文档的概括。

  1. 一般会对文档中的句子进行排序,并会控制句长;
  2. 早期,会通过一些稀疏特征,比如句子的长度和位置,词频,事件特征等,通过分类或回归方式来判断句子是否为摘要;
  3. 再之后,使用DNN网络,输入文档,进入LSTM,再使用另一个LSTM预测每个句子是否为摘要。

最近的研究 (Vaswaniet al., 2017; Devlin et al., 2018) 都显示,transformers效果优于LSTM,所以本文使用的是transformers。

Abstractive Summarization
生成式,一般使用seq2seq框架,将一篇文档视为一个序列,摘要视为另一个序列。生成式的问题主要是结果不可控,尽管有copy mechanism,coverage model或者强化学习等辅助手段,生成的摘要依然可能会有语法问题,甚至不能符合文档主题。

优劣比较
生成式的摘要产出不稳定,从正确率角度,不如抽取式方案。
但是,抽取式方案,文档中的句子需要标签,一般摘要数据集只有【文档-摘要】对,句子级别的标签依靠规则(maximizing ROUGE between a set of sentences and reference summaries)且不够准确。

HIBERT

文档:D = (S_1,S_2,...,S_{|D|})
句子:S_i = (w^i_1,w^i_2,...,w^i_{|S_i|})
EOS token: w^i_{|S_i|}

HIBERT TRAINING
图示,HIBERT模型训练结构。
Sent Encoder Transformer
句子级别,使用Transformer Encoder,EOS向量表示该句子的向量,对句子S_i:
e_j^i = e(w_j^i) + p_j,前者为word embedding,后者为positional embedding
E_i = (e_1^i,e_2^i,...,e_{|S_i|}^i)

Doc Encoder Transformer
文档级别,使用另一个Transformer Encoder,将每个句子视为token,进行编码。
每个句子的表示为来自Sent Encoder Transformer的EOS表示,即:
h_{|S_i|}^i = e_{|S_i|}^i
\hat h_i = h_{|S_i|}^i + p_i,注意,句子位置p_i和词位置p_j共享同一个positional embedding matrix

Decoder transformer
判断句子是否是摘要,结合上下句子,进行词预测【注意!不是句子】。

  1. Document Masking
    随机mask15%个句子,预测这些被掩码的句子。实际应用时,输入的文档是完整的,因此,在训练时,对mask的句子:
    1.1 80%的概率,mask的句子,对每一个被掩盖的词使用一个[MASK]表示;
    1.2 10%的概率,保持不变,即不做mask;
    1.3 10%的概率,随机选择一个句子替代被mask的句子。

  2. Sentence Prediction
    原始输入:D = (S_1,S_2,...,S_{|D|})
    经过mask操作后:\tilde D = (\tilde S_1,\tilde S_2,...,\tilde S_{|D|})
    被mask的句子集合:M = \lbrace{s_k|k\in K\rbrace},K表示文档中被mask的句子的index
    经过HIBERT后得到的句子表达:(\tilde h_1, \tilde h_2,...,\tilde d_{|D|})

被mask的句子又是怎么被预测的呢?
传统的transformer decoder使用2层multi-head attention layers来获取encoder和decoder信息。
因为来自encoder的信息是一个向量,因此,HIBERT decoder仅使用一层multi-head attention layer。
对被mask的句子:S_k =(w_0^k,w_1^k,...,w_{S_k}^k)
预测其中的每个词:p(w_j^k|w_{<j}^k, \tilde D)
使用被mask的文档时,
句子encoder:\tilde E_{1:j-1}^k = (\tilde e_0^k,...,\tilde e_{j-1}^k)
经过multi-head attention:\tilde h_{j-1} = MultiHead(q_{j-1}, K_{j-1}, V_{j-1})
其中:
q_{j-1} = W^Q\tilde e_{j-1}^k
K_{j-1} = W^K\tilde E_{1:j-1}^k
V_{j-1} = W^V\tilde E_{1:j-1}^k

结合HIBERT-encoder后句子向量\tilde d_k:
\tilde x_{j-1} = \tilde h_{j-1} + \tilde d_k
经过FFD:
\tilde g_{j-1} = W_2^{ff}max(0,W_1^{ff} \tilde x_{j-1} + b_1) + b_2
预测词w_j^kp(w_j^k|w_{<j}^k, \tilde D) = softmax(W^O)\tilde g_{j-1}

对所有被mask的句子M:p(M| \tilde D) = \Pi_k \Pi_j^{|S_k|} p(w_j^k|w_{<j}^k, \tilde D)

Extractive Summarization
上面只介绍了模型是如何训练的,那么是如何进行摘要抽取的呢?
DNN的抽取式摘要可视为序列标注。将一个文档当做一系列句子组合,对每个句子,有一个是否是摘要的标签,如下图:

Extractive Summarization Model

对一篇文档,句子标签:Y = (y_1,y_2,...,y_{|D|})
经过HIBERT encoder,得到所有句子表达:(d_1,d_2,..,d_{|D|})
直接经过线性转换和softmax,得到概率:p(y_i|D) = softmax(W^Sd_i)
其中:W^S \in R^{2\times d}

Experiment

  1. Dataset
    训练数据:CNN Daily mail 和 New York Times[摘要词长超过50]的数据集
    预训练数据:GIGA-CM:6626842个文档
    分词工具:Standford CoreNLP toolkit + BPE
  2. 模型训练
    2.1 Open-domain的预训练:GIGA-CM ;
    2.2 In-domain的预训练:CNNDM orNYT50
    2.3 Fine-tune: CNNDM orNYT50
  3. Evaluation
    F1, ROUGE-1, ROUGE-2, ROUGE-M,以及人工评价。


    Results

相关文章

网友评论

      本文标题:HIBERT: Document Level Pre-train

      本文链接:https://www.haomeiwen.com/subject/cbkwrltx.html