Google発文章要約モデル: PEGASUSの紹介

#前書き

文章要約タスクにおいて、ICML2020で発表されたPEGASUSというモデルがあったので理解を深めるために紹介記事を書いてみます。

**論文情報**

```
@article{zhang2019pegasus,
  title={Pegasus: Pre-training with extracted gap-sentences for abstractive summarization},
  author={Zhang, Jingqing and Zhao, Yao and Saleh, Mohammad and Liu, Peter J},
  journal={arXiv preprint arXiv:1912.08777},
  year={2019}
}
```

**PEGASUS(Pre-tranning with Extracted Gap-sentenses for Abstractive Summarization)**モデルはTransformerベースのモデルで、**GSG(Gap Sentences Generation)**という新しいSelf-supervised Objectiveを設定することで、文章要約に特化した抽象型要約モデルを作成し、文章要約における12のベンチマークでSOTAを達成しています。

# PEGASUSの基本的な仮説
BERTを代表とする事前学習モデルでは、**MLM(Masked Language Model)**と呼ばれる学習方式を使っています。MLMは文章中に出現された全単語の中、一部の単語をマスキング(masking)し、残りの単語を入力した時に、マスキングされた単語を予測するモデルを作ることで、文章中の該当単語の文脈情報(context information)を抽出可能にします。

さらに各自然言語タスクでは上記の**事前学習(pre-training)**で得られた単語の表現を使い、事前学習されたモデルをベースにfine-tuningすることで良い性能を持つモデルを作成して行きます。([Pre-trainingに関して](https://lib-arts.hatenablog.com/entry/nlp_dl3))

既存のアプローチに対して、本論文では以下のような仮説を立てています。
>closer the pre-training self-supervised objective is to the final downstream task, the better the fine-tuning performance

つまり、**事前学習で学習されるべき対象は応用先タスクに近いほど、良い性能を出すはず**ということです。この仮説を考えると、文章要約は長い文章を短い文章で情報の漏れがなく簡潔にまとめるタスクであって、入力も出力も文であることから、事前学習対象として、単語よりは**文(sentence)**にした方が良いとのことになります。

# Gap Sentences Generation(GSG)
上記仮説を元に、PEGASUSは文章の中、単語ではなく、文をマスキングし、残りの文からマスキングされた文を予測するようにモデル学習を行います。(つまり、文単位でのMLM方式になります。）

![pegasus.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/dfc5f598-4e3c-1013-0755-203cab503d9f.gif)
PEGASUS学習イメージ from [Google AI Blog](https://ai.googleblog.com/2020/06/pegasus-state-of-art-model-for.html)

文予測モデルの学習により、元文章の情報をより理解してあろう情報が文の表現から得られることが期待できます。さらに、学習対象となる文(マスキングされた文)が文章の中で重要な文章である場合、より良い文章情報がキャッチできることが考えられます。

PEGASUSは、学習のためにマスキングされる文を**Gap Sentence**を呼び、Gap Sentenceを連結した文章を要約文とみなし、学習を行います。従って、学習に使われるGap Sentenceの選択が重要になって来ます。

# GSGの選択
Gap Sentenceの選択において、PEGASUSは[ROUGE1-F1](https://www.aclweb.org/anthology/W04-1013/)という指標を使います。ROUGE1-F1は二つの文章に共通するn-gramの割合を計算する手法で、通常文章予約モデルから生成された要約文と人間による要約文の類似度を測ることで、文要約モデルの性能評価をします。(ROUGEに関するまとめ文章: [ROUGEを訪ねて三千里:より良い要約の評価を求めて](https://qiita.com/icoxfog417/items/65faecbbe27d3c53d212))



論文では、ある文と残りの文章のROUGE1-F1を計算することで、該当文が全文章における重要度を図り、ROUGE1-F1値が高い文をGap Sentenceとして選択します。つまり、自分を除いた文章全体と類似度が高いほど、文章の情報を多く持つ重要な文とみなされるとのことです。

**勉強不足かもしれませんが、ROUGE1-F1計算で使うn-gramを単語埋め込み表現などを使って類似単語までカウンティングするようにするとどうなるか気になりました。論文上には言及がなかったです。**

**具体的なGap Sentence選択手法**

```
- Ind: 各文を独立なものとみなし、(選択文、残り文章)のROUGE1-F1値を計算し、スコアの高い順でGap Sentenceとして選択
- Seq: (すでに選択された文 + 選択文、残り文章)のROUGE1-F1値を計算し、スコアが最大となる文を順次的に選択
```

**Seq(順次的選択アルゴリズム)**
![スクリーンショット 2020-08-17 17.51.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/46462bfc-b000-61e1-eba2-d7bc22dd5b33.png)

```math
S : 選択された文の集合
```
```math
x_i : 計算対象文
```
```math
D : 全体文の集合
```

さらに、ROUGE1-F1の計算において、n-gramを重複なしでカウンティングする(**Uniq**)か、出現頻度をそのまま使うか(**Orig**)によって、バリエーションを設けています。

# モデル全体図

![model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/4c7ce2b3-b7b1-9f43-df5c-e840fc603212.png)
PEGASUSモデル図 from 論文

最終的にPEGASUSモデルのベースアーキテクチャーは上記のようになります。左側でMLM、右側でGSGを導入し、二つの学習方式を同時にとることになります。

# 実験
実験では、学習で使われるコーパスの影響、GSG・MLMの有効性、従来手法との比較、人力要約文との比較などを行っています。

## 学習に使われるコーパスの影響

![スクリーンショット 2020-08-17 18.25.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/785a6be1-d02e-1f03-3e7e-50b832769205.png)

学習では３億5000万件のweb pageからなるデータ:C4 と 15億件のニュース文章からなるデータHugeNewsを使っています。

結果、C4の場合、同じウェブページデータであるWikiHow、RedditTIFUの方が良い性能を、HugeNewsの場合、同じニュース文章であるCNN、XSumが良い性能を出していることから、事前学習で使われるデータとタスクで使われるデータが似たドメインの場合より良いモデル性能が出ることが分かります。

## 学習方法の有効性

![スクリーンショット 2020-08-17 18.37.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/8e3b64d5-6200-6cd9-8106-164439e12cb3.png)

全体文章の30%の文をGap Sentenceとして設定し、各種Gap Sentenceの選択手法を試した結果、n-gramの出現頻度を使って文ごとにROUGE1-F1値を計算し、高い順に選択する`Ind-Orig`手法が一番効果的であることが分かります。

さらに、```GSR + MLM + Ind-Orig```で学習させた場合、```GSR + Random```と似たような性能で、```GSR + Ind-Orig```よりは低い性能を出していることからMLMとGSRの組み合わせは有効でないことが分かります。

論文によると、```GSR + MLM + Ind-Orig```と```GSR + Ind-Orig```を比較すると、前者の方が学習ステップに対する(100k-200k checkpoints)性能向上率が早い一方で、後半になって性能向上がなく、最終的には```GSR + Ind-Orig```よりは悪い結果になっているようです。

>Interestingly, when comparing MLM & Ind-Orig to Ind-Orig, we empirically observed MLM improved fine-tuning per- formance at early pre-training checkpoints (100k - 200k steps), but inhibited further gains with more pre-training steps (500k).


![スクリーンショット 2020-08-17 18.42.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/be292328-1fc9-2b62-8be6-8d37b90ef31a.png)

また、全文章におけるGap Sentence割合(**Gap Sentences Ratio: GSR**)を調整してみた結果、各種データに対してGSR値が50%まではそこそこ良い性能を維持し、その後激減することが分かります。

## 他モデルとの比較
### 性能
![スクリーンショット 2020-08-17 19.15.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/2b8a3eb1-789a-b3a1-a200-b973579ca734.png)

12件のベンチマークデータにおいてSOTAを達成しています。

### 学習データ量
![train.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/ca9147c2-4b06-b8c9-c1d8-9a98b025ba44.png)
学習データ量におけるモデル性能 from [Google AI Blog](https://ai.googleblog.com/2020/06/pegasus-state-of-art-model-for.html)

1000サンプルぐらいの学習データで性能面で従来のSOTA手法を上回っていることが分かります。

## 人力要約文との比較

![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/31e9d6c5-fa4d-c134-7aee-05a73b11e233.png)

論文には載っていないですが、Google AI Blogの紹介記事によると人力要約とPEGASUSによる要約を人に評価してもらった時、両方を区別できない場合もあったようです。

>We performed the experiment with 3 different datasets and found that human raters do not consistently prefer the human summaries to those from our model.

## 抽象的要約性能について

最後にPEGASUSが生成した要約文は単に文章中の重要な単語を並んだ要約ではなく、ちゃんと意味を理解した上で要約していることを確かめるために、**extractive coverage** と **extractive density**という指標を使って、**abstractiveness**を評価しています。

抽象的な要約文ほど、学習文章から抽出した単語数が少なく使われ、学習文章で出現したスパンが少ないとのことになります。

>More abstractive summaries have smaller extractive coverage (more novel words) and smaller extractive density (smaller spans copied from inputs). 

![スクリーンショット 2020-08-17 19.45.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77744/14f82f3a-9e49-2249-aaef-3b3befd39578.png)

結果的には全てのデータにおいて、人間ほどの抽象度にはなっていないですが、抽象要約には成功しているようです。上図からは数値的に見えないですが、Google AI Blogにあげた[デモ例](https://ai.googleblog.com/2020/06/pegasus-state-of-art-model-for.html)を見ると、軍艦の名前を四つ羅列した文章をまとめた時に、ちゃんと```四つの軍艦```という学習データにもなかった単語でまとめているようです。

# まとめ

文章要約モデルPEGASUSを調べながら書いてみました。

他の紹介記事にも書いてあるように、本論文の基本仮説が「他の教師なし学習モデル(self-supervised)でもタスクに特化した学習方式(pre-training objective)を採用すれば、性能向上につながるであろう」可能性を開けたことに非常に価値を感じました。

>closer the pre-training self-supervised objective is to the final downstream task, the better the fine-tuning performance

さらに、他ではあまり強調していなかったですが、(専門家にはごく当たり前に感じたからかもしれないが)、個人的にはコーパスの影響を測る実験で、**タスクに似たようなコーパスデータで学習させた方が良い結果が得られる**との結論からも得ることがありました。

最後に、いろいろ調査しながら本文を書いてはありますが、まだTransformerもBERTも理解度が浅いので、とこか間違ったことを書いていれば指摘してくださると幸いです。

#参考文献
*[Pegasus: Pre-training with extracted gap-sentences for abstractive summarization](https://arxiv.org/abs/1912.08777)
*[A package for automatic evalua- tion of summaries. In Text Summarization Branches Out](https://www.aclweb.org/anthology/W04-1013/)
*[PEGASUS: A State-of-the-Art Model for Abstractive Text Summarization](https://ai.googleblog.com/2020/06/pegasus-state-of-art-model-for.html)
* [PEGASUS: Google’s State of the Art Abstractive Summarization Model](https://towardsdatascience.com/pegasus-google-state-of-the-art-abstractive-summarization-model-627b1bbbc5ce)
* [ROUGEを訪ねて三千里:より良い要約の評価を求めて](https://qiita.com/icoxfog417/items/65faecbbe27d3c53d212)
* [言語処理における事前学習(Pre-training)とBERT｜言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #3](https://lib-arts.hatenablog.com/entry/nlp_dl3)