SlideShare a Scribd company logo
!1
Pretraining-Based Natural Language Generation for Text Summarization
~BERTから考える要約のこれまでとこれから~[DL Hacks]
東京大学 鶴岡研 B4 中村 朝陽
BERTを用いたAbstractiveな要約モデルの紹介と解説
• 2019年、BERTを要約タスクに応用したモデルが発表、SOTAを塗り替えた。
• 要約の前提となる背景や関連研究について時系列的に整理
• 加えて、BERTがテキスト生成モデルにどのような影響を与えたかを紹介
• 右側にお品書き
0. Abstract
1. Introduction
要約 = 与えられた長い文をの要点をまとめ短い文として出力する
• 入力:長い文章
• 出力:短い文章
• 目的:要点をまとめる
• 入力形式 / 出力の内容 / 目的 のそれぞれにおいて以下の分類をすることがある
• 入力: 単一の文書 / 複数の文書
• 出力: ネタバレあり(Informative) / ネタバレなし(Indicative)
• 目的: 指示なしで要約させる / どういう観点の情報を抽出するかを指定する
1.1 タスク
1. Introduction
Extractive / Abstractive の2種類のアプローチ
• Extractive
• 入力文の中から重要なn文をピックアップして並べる (n ≈ 3)
• Abstractive
• 新しく要約文を生成する
1.2 手法の分類
1. Introduction
N-gram ベースのヒューリスティックが存在するが、問題点も多い
• ROUGE-N (Recall-Oriented Understudy of Gisting Evaluation)
• N-gram単位でどれくらい一致しているか
• Ex) Rouge-1, Rouge-2など
• ROUGE-L
• 最長で一致する単語列の長さの和を元に評価
• ROUGE-SU
• Skip-bigram と Unigram の一致率を元に評価
• Skip-bigram:【wordA + 任意の間隔 + wordB】
• 他にも Pyramid や BLEU などの評価指標もある
1.3 評価指標
1. Introduction
代表的なデータセットは CNN/Daily Mail と NYT50
• Anonymized / Non-anonymized の2種
• Anonymized:固有名詞を置換
• Ex) The United Nations → @entity5
1.4 データセット
1. Introduction
CNN/Daily Mail NYT50
データ数 およそ 300,000 セット およそ 25,000 セット
ソース文章の平均単語数 781 tokens 1152 tokens
要約に含まれる平均単語数 56 tokens 75 tokens
2. Related works
要約手法の発展を時系列順に説明していく
• 2.1 従来的なテキスト生成モデル
• Seq2Seq + Attention
• 2.2 要約モデル (BERT前)
• Pointer-Generator Networks
• 2.3 BERTショック
• 要約などのテキスト生成タスクはしていないが、分類などのNLPタスクにおける革命児
• 2.4 要約モデル (BERT後)
• BERTが要約に応用され、Extractive / Abstractiveの両アプローチにてそれぞれSOTA
2. Related works
2. Related works
2014
2017
2018
2019
Seq2Seqの登場により、要約にディープラーニングが適用可能に
• 入力:テキスト + 出力:テキスト
• 条件付きのテキスト生成、という観点からは機械翻訳などとも同じようなモデルが構成可能
• ベースラインとして使われていた
2.1 一般的なテキスト生成モデル
2. Related works
RNN+Attentionによりencode, RNNによりdecode する
2.1.1 一般的なテキスト生成モデルの手法
2. Related works
不正確 / 未知語 / 冗長 の3つの課題
• 事実と異なる記述 → 致命的
• 未知語(OOV: Out Of Vocabulary)に対応不可能
• 要約したい文はニュースなどで、固有名詞も多い
• 同じ内容を繰り返してしまう → “要約”できていない
2.1.2 一般的なテキスト生成モデルの結果と課題
2. Related works
入力 出力
先の3つの問題を解決できるような要約特化のSeq2Seqモデル
Get To The Point: Summarization with Pointer-Generator Networks
• 2017年、CNN/Daily Mail Dataset において SOTA
• ソフトに「コピペ」することで 正確かつ未知語にも対応 (Pointer-Generator)
• Coverage mechanism を導入し、まだ触れていない単語を出力しやすくし、冗長さを改善
• ExtractiveとAbstractiveの中間的なモデル
2.2 要約モデル (BERT前)
2. Related works
Encoderの出力であるAttentionをGatingして足し合わせて予測する
• “2-0”などの未知語もそのまま コピーできる
• 学習初期はコピペしやすく(p_gen≈0.3)、終盤はよりAbstractiveな出力に(p_gen≈0.53)
• 追加のパラメータ数も少なく、高コスパ
2.2.1.1 要約モデル(BERT前)の手法, Pointer-Generator
2. Related works
Attentionの合計をとっておき、まだAttentionがかかってない箇所を参照
• 冗長性の削減に貢献
2.2.1.2 要約モデル(BERT前)の手法, Coverage vector
2. Related works
不正確 / 未知語 / 冗長 の3つの課題を改善, しかしモデルが浅すぎる?
• 定量的なスコアでSOTA
• 下の例にあるように定性的な評価も大きく改善 (cf. Seq2Seq)
• (個人的な感想)
• EncoderもDecoderも1層のLSTM
• 文の内容を理解しているのではなく、”受験英語的な要約”をしている可能性もあるのでは?
• ex) But の後は重要! 引用は無視しとけ!など
2.2.2 要約モデル(BERT前)の結果と課題
2. Related works
2018年に公開された汎用的で超高性能な事前学習済みモデル
• BERT + FC層などの単純な変換 で様々なタスクで圧倒的なSOTA
• 「入出力」「タスク」「要約」の3つの観点から整理
2.3 BERTショック
2. Related works
(参照: Ryobotさん)
入力:1~2種類の文章, 出力:それぞれの単語の文脈を加味したベクトル
• 入力と出力の系列長は同じ
• WordPieceによるToken化, 質問文/選択肢などの文章の種類を表すSegment, 位置情報が埋め込まれる
2.3.1 「入出力」から見たBERT
2. Related works
BERTがencodeしたベクトルを簡単なモデルに接続してタスクを解く
• 事前学習として「マスクされた単語の予想」「文A, Bが隣接しているか当てる」タスクを行った
• BERTは高性能なEncoderであると言え、様々な分類問題などに応用される
• 分類問題などは、[CLS]ラベルの出力ベクトルを簡単なモデルに接続
• NERや範囲を答えるタスクなら、該当する入力文に対応する特徴ベクトルを用いればよい
2.3.2 「タスク」から見たBERT
2. Related works
BERTを要約に利用したい、だけど一工夫必要
• 従来は `受験英語的に` (?) 解いていたかもしれないが、きちんと言語や論理を理解した要約が出来そう
• Extractiveな要約から見て
• 入出力がNERや範囲指定と似ているので、簡単に応用できそう
• 文同士の関係性を見たいので、Segmentラベルが2個じゃ足りない気もする
• Abstractiveな要約から見て
• BERTは高性能なEncoder
• じゃあ、Decoderは?
2.3.3 「要約」から見たBERT
2. Related works
2019年, ExtractiveとAbstractive両者で応用モデルが発表、 共にSOTA
• BERT × Extractive summarization
• Fine-tune BERT for Extractive Summarization
• 2019/03/25 (2週間前!)
• 要約タスクにおいて、圧倒的にスコアを向上させた。
• シンプルなモデル
• BERT × Abstractive summarization
• Pretraining-Based Natural Language Generation for Text Summarization (2019/02/25)
• Abstractiveな要約において若干スコアを塗り替えSOTA
• 巨大なモデル
• 今回実装した論文
2.4 要約モデル (BERT後)
2. Related works
“用法”を守ったBERTの利用
• BERTでencodeされたベクトルを fc層/ 2層のTransformer / 1層のLSTM などに入れるだけ
• 工夫として、1文毎に異なるセグメントを用いることで、セグメント2種類しかない問題に対処
• コードも公開
2.4.1 BERT × Extractive summarization
2. Related works
この手法の紹介は次章にて
• コードは公開されていない (大学の研究者 + Microsoftの研究チーム)
このやり方の気持ちは下のよう(だと思われる)
• BERTを要約に使いたいが、Decodeを上手く行う方法がない…
• マスクされた単語の予測を応用してDecode出来ないか、と考える
• 要約の草案を用意しそれにマスクして予測すれば、BERTを利用してDecodeできる!?
• しかし、BERTは条件付きで予測することができない
• このアイデアだと要約の草案としソース文章で条件付けしたいが、BERTの入力形式ではない
• もちろん、草案も作らないといけない
• → Transformer製のDecoderを用いて、「草案作り」と「条件の加味」をしてもらう
2.4.2 BERT × Abstractive summarization
2. Related works
要約手法の発展を時系列順に説明していった
• 2.1 従来的なテキスト生成モデル → 不正確 / 未知語 / 冗長さの課題
• Seq2Seq + Attention
• 2.2 要約モデル (BERT前) → 良くなったが、本当に内容を理解しているのか?
• Pointer-Generator Networks
• 2.3 BERTショック → BERTはすごい、だけどどうやってテキスト生成たる要約をするか?
• 要約などのテキスト生成タスクはしていないが、分類などのNLPタスクにおける革命児
• 2.4 要約モデル (BERT後) → BERTを工夫して要約に取り入れることでSOTA
• BERTが要約に応用され、Extractive / Abstractiveの両アプローチにてそれぞれSOTA
2. Related works
2. Related works
2014
2017
2018
2019
3. Architecture
Encoder(BERT) + Draft Decoder + Refine Decoder の3つからなる
3. Architecture
3. Architecture
Draft Decoder Refine DecoderEncoder
ソース文章を普通にBERTに入力し、特徴ベクトルを得る
• 使ったBERTはbaseモデル(largeじゃない方)
• 先に述べたように、BERTに入力できる系列長は最大で512
• 問題:CNN/Daily Mail Dataset の 平均的な単語数はいくつだったでしょう?
• 入力に入りきらない、じゃあどうするか
• 先頭の512tokenを切り取る
• この方法は妥当?
• (要約においてしばしば用いられる手法)
• このデータセットはニュース、ニュースの大事な情報は前の方にあるから大きな支障はきたさない
• むしろ先頭を切り取ってモデルに与える方がスコアが向上した、ということをいう論文もある
• どちらにしろ、Data-specific な事柄
3.1 Encoder
3. Architecture
入力: Encoderの出力 + 時刻t-1まで出力した文, 出力: 時刻tでの単語の確率
3.2 Draft Decoder
3. Architecture
TransformerのDecoderをそのまま利用
• Transformerは翻訳タスクでSOTAだった手法で要約タスクと入出力が似ている
3.2.1 Transformer Decoder
3. Architecture
Encoderの出力
Decoderの途中までの出力
Decoderの次の出力
Pointer-Generatorの機構と同様、ソフトにコピペする手法
• 入力:Encoderの出力(Attention)とDecoderの出力(Attention)
• 出力:単語の出現確率
• (未知語についての問題は、BERTのWordPiece embeddingsによるトークン化で解消してはいる)
• 未知語への対策というよりコピペした方が要約の精度上がるから、という意味合いかも
3.2.2 Copy Mechanism
3. Architecture
1単語ずつ[MASK]して予測しなおすことで、BERTをテキスト出力に活用
3.3 Refine Decoder
3. Architecture
基本はDraft Decoder, Refine Decoder それぞれ尤度を最大に
• 先ほどの図にあったようにラベルと単語の確率を比較するLoss関数
• Label smoothing を利用
• Label smoothing:エントロピーをとる際に、正解なら1, 不正解なら0で計算するのではなく

正解なら0.9, 不正解なら0.1 で計算することで正則化ができる
• Draft Decoderの学習にはTeacher Forcingを利用
• 更に著者らはROUGEスコアを報酬にした強化学習的なアプローチも目的関数に入れている
• Beam Search(幅4)を用いた推測をDraft Decoderで行う
3.4 学習の流れ
3. Architecture
Encoder(BERT) + Draft Decoder + Refine Decoder の3つからなる
3. Architecture
3. Architecture
Draft Decoder Refine DecoderEncoder
4. Experiment
CopyMechanismの実装、未知語対応が無しならtorch.scatter
4.1 コーディング ~ Copy Mechanism ~
4. Experiment
Pytorch間違い探し
4.1 コーディング ~ torch.scatter, torch.scatter_ ~
4. Experiment
一行で複数GPUに対応できるが、モデルの自作メソッドは使えなくなる
4.1 コーディング ~ Multi GPU とモジュール ~
4. Experiment
Summarizerクラスは
• BertModel, DraftDecoder, RefineDecoder
の3つのモジュールからなり、独自メソッド summarize()をもつ
この時、summarizer = DataParallel(summarizer)をすると
summarizer.summarize()は使えなくなる
↓
self.bert = DataPrallel(self.bert)

self.draft_decoder = DataPrallel(self.draft_decoder)などとすればOK
4.2 動かしてみる ~Draft Decoder~
4. Experiment
初期パラのDraft Decoder, CopyMechanismが働いていることが分かる
初期パラのRefine Decoder, 1単語ずつRefineしていっている
4.2 動かしてみる ~Refine Decoder~
4. Experiment
メモリとの戦い
• もともとのモデルは超巨大(BERT 12層, Transformer Decoder 12層)
• 1バッチの要約生成につき1単語ずつauto-regressiveに学習するので、100×2回 ほど回す
• →通過するレイヤー数:3000以上。完全にミルフィーユ
• 頑張ってbatch_sizeを4から24にした
• retain_graph をオフにして、適宜 再計算+グラフをフリー (最終的にはこの手法は使わなかった。)
• BERTの重みを固定する
• モデルを小さくする(12 layer → 6 layer)
• 演算の境目でメモリ使用が重なってメモリオーバーになっていた
• → 基本的にretain_graph=True, for文の最後だけretain_graph=Falseとしてグラフをフリー
• 部分的にグラフをフリーする (https://stackoverflow.com/questions/50741344/pytorch-when-using-backward-how-can-i-retain-only-part-of-the-graph)
4.3 学習させてみた
4. Experiment
1回目、とりあえず[PAD]と予測するようになってしまった
4.3 学習させてみた
4. Experiment
正解が[PAD]の時のミスをロスに加算しないようにした
4.3 学習させてみた
4. Experiment
• これである程度きちんと学習できるはず…!
コードを変えた。なんか下がっている。これは…!!
4.3 学習させてみた
4. Experiment
「とりあえずピリオドって予測しとこw」
4.3 学習させてみた
4. Experiment
そもそも学習は始まったばかり(というか進まなすぎる)
4.3 学習させてみた
4. Experiment
今のペースだと25日/epoch (僕のコードが悪いかも)
5. Conclusion
今後は「タスク設定」や「どのような入出力が汎用的か」が重要そう
• 汎用的で高性能な“Decoder”が望まれる
• 大量の教師無しデータでPre-training
• 少量の教師ありデータでFinetuning
• BERTが上手くいった理由
• 問題設定を見直し[MASK]の予測とすることで、双方向からEncodeすることが出来るようになった
• Teacher-Forcingとは異なり、Pre-train時の入力データとFinetuning時の入力データの分布が近い
• データの分布 = ソフトな意味での「型」
• 「言語を話せる」を「タスクXXが出来る」に言い換える
• Pre-training時とFinetuning時の入出力の分布を揃えることで事前学習が効果的に効いてくる
• 加えて、Auto-regressiveではないテキスト出力にも期待される
Conclusion / Comments
5. Conclusion
6. References
参考文献
• https://qiita.com/icoxfog417/items/d06651db10e27220c819#31-rouge-nカバー率の評価
• https://qiita.com/icoxfog417/items/65faecbbe27d3c53d212
• “A Survey on Neural Network-Based Summarization Methods”, 2018
• BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding , 2018
• Pretraining-Based Natural Language Generation for Text Summarization , 2019
• Attention Is All You Need , 2017
• Get To The Point: Summarization with Pointer-Generator Networks, 2017
• Fine-tune BERT for Extractive Summarization, 2019
6. References
6. References

More Related Content

PDF
解説 - INTERNAL LANGUAGE MODEL TRAINING FOR DOMAIN-ADAPTIVE END-TO-END SPEECH R...
PPTX
Epub3.0の国際デジュール動向、現在協議検討されていることについて
PDF
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
PDF
makoto shing (stability ai) - image model fine-tuning - wandb_event_230525.pdf
PPTX
C#メタプログラミング概略 in 2021
PPTX
最速C# 7.x
PDF
Daisukei vsug ef
PDF
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
解説 - INTERNAL LANGUAGE MODEL TRAINING FOR DOMAIN-ADAPTIVE END-TO-END SPEECH R...
Epub3.0の国際デジュール動向、現在協議検討されていることについて
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
makoto shing (stability ai) - image model fine-tuning - wandb_event_230525.pdf
C#メタプログラミング概略 in 2021
最速C# 7.x
Daisukei vsug ef
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」

Similar to [DL Hacks]Pretraining-Based Natural Language Generation for Text Summarization ~BERTから考える要約のこれまでとこれから (20)

ODP
Spring2概論@第1回JSUG勉強会
PDF
良い?悪い?コードコメントの書き方
PDF
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
PDF
【文献紹介】Abstractive Text Summarization Using Sequence-to-Sequence RNNs and Beyond
PPTX
2015-12-16 某S社、出直しDDDってるってよ
PPT
ドメインロジックの実装方法とドメイン駆動設計
PDF
Japanese for it bridge engineers
PDF
Tuning, etc.
PDF
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
PDF
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
PDF
読書会Vol6
PDF
20120529 アジャイルサムライ読書会第6回
PDF
とある制作会社の目次索引作成技法
PPTX
Ossで作成するチーム開発環境
PDF
Slides mkmk5
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
PDF
パターンでわかる! .NET Coreの非同期処理
PDF
13_B_5 Who is a architect?
PDF
Bert for multimodal
PDF
最先端NLP勉強会2017_ACL17
Spring2概論@第1回JSUG勉強会
良い?悪い?コードコメントの書き方
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
【文献紹介】Abstractive Text Summarization Using Sequence-to-Sequence RNNs and Beyond
2015-12-16 某S社、出直しDDDってるってよ
ドメインロジックの実装方法とドメイン駆動設計
Japanese for it bridge engineers
Tuning, etc.
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
読書会Vol6
20120529 アジャイルサムライ読書会第6回
とある制作会社の目次索引作成技法
Ossで作成するチーム開発環境
Slides mkmk5
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
パターンでわかる! .NET Coreの非同期処理
13_B_5 Who is a architect?
Bert for multimodal
最先端NLP勉強会2017_ACL17

More from Deep Learning JP (20)

PPTX
【DL輪読会】AdaptDiffuser: Diffusion Models as Adaptive Self-evolving Planners
PPTX
【DL輪読会】事前学習用データセットについて
PPTX
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
PPTX
【DL輪読会】Zero-Shot Dual-Lens Super-Resolution
PPTX
【DL輪読会】BloombergGPT: A Large Language Model for Finance arxiv
PPTX
【DL輪読会】マルチモーダル LLM
PDF
【 DL輪読会】ToolLLM: Facilitating Large Language Models to Master 16000+ Real-wo...
PPTX
【DL輪読会】AnyLoc: Towards Universal Visual Place Recognition
PDF
【DL輪読会】Can Neural Network Memorization Be Localized?
PPTX
【DL輪読会】Hopfield network 関連研究について
PPTX
【DL輪読会】SimPer: Simple self-supervised learning of periodic targets( ICLR 2023 )
PDF
【DL輪読会】RLCD: Reinforcement Learning from Contrast Distillation for Language M...
PDF
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
PPTX
【DL輪読会】"Language Instructed Reinforcement Learning for Human-AI Coordination "
PPTX
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
PDF
【DL輪読会】"Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware"
PPTX
【DL輪読会】Parameter is Not All You Need:Starting from Non-Parametric Networks fo...
PDF
【DL輪読会】Drag Your GAN: Interactive Point-based Manipulation on the Generative ...
PDF
【DL輪読会】Self-Supervised Learning from Images with a Joint-Embedding Predictive...
PPTX
【DL輪読会】Towards Understanding Ensemble, Knowledge Distillation and Self-Distil...
【DL輪読会】AdaptDiffuser: Diffusion Models as Adaptive Self-evolving Planners
【DL輪読会】事前学習用データセットについて
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
【DL輪読会】Zero-Shot Dual-Lens Super-Resolution
【DL輪読会】BloombergGPT: A Large Language Model for Finance arxiv
【DL輪読会】マルチモーダル LLM
【 DL輪読会】ToolLLM: Facilitating Large Language Models to Master 16000+ Real-wo...
【DL輪読会】AnyLoc: Towards Universal Visual Place Recognition
【DL輪読会】Can Neural Network Memorization Be Localized?
【DL輪読会】Hopfield network 関連研究について
【DL輪読会】SimPer: Simple self-supervised learning of periodic targets( ICLR 2023 )
【DL輪読会】RLCD: Reinforcement Learning from Contrast Distillation for Language M...
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Language Instructed Reinforcement Learning for Human-AI Coordination "
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】"Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware"
【DL輪読会】Parameter is Not All You Need:Starting from Non-Parametric Networks fo...
【DL輪読会】Drag Your GAN: Interactive Point-based Manipulation on the Generative ...
【DL輪読会】Self-Supervised Learning from Images with a Joint-Embedding Predictive...
【DL輪読会】Towards Understanding Ensemble, Knowledge Distillation and Self-Distil...

[DL Hacks]Pretraining-Based Natural Language Generation for Text Summarization ~BERTから考える要約のこれまでとこれから