OpenAIのPPO言語生成論文を読む②

この記事は強化学習苦手の会 Advent Calendar 2020の25日目の記事です。

こんにちは、品川です。いよいよこのAdvent Calendarも最終日ですね。
紹介する論文は、引き続きOpenAIの"Fine-Tuning Language Models from Human Preferences (ArXiv, 2019)"です。

PPOによる学習の工夫

ペナルティ項へのターゲットの導入

Policyの学習に用いるペナルティ項の$KL(\pi, \rho)$はseedによって変わるそうなので、設定間で単純な比較が難しくなってしまうようです。論文ではペナルティ項の係数$\beta$を次の式のように適応的に変化できるようにして、$KL(\pi, \rho)$がある目標値$KL_{target}$に近くなるようにする工夫をしています。性能のためというより単に比較のためということのようです。

$e_{t}=\operatorname{clip}\left(\frac{\mathrm{KL}\left(\pi_{t}, \rho\right)-\mathrm{KL}_{\text {target }}}{\mathrm{KL}_{\text {target }}},-0.2,0.2\right)$

$\beta_{t+1}=\beta_{t}\left(1+K_{\beta} e_{t}\right)$

Online data collectionの方法

学習されるpolicy$\pi$はどんどん変化していくので、reward modelもそれに合わせて更新する必要があります。ただし、これはスタイル文生成だとあまり重要ではないようです。

n回目のPPO episodeを始める前に必要とするサンプル数(人間による選択によるラベル付けの数)$l(n)$を次のようにします。

$l(n)=N_{r}^{0}+\left(N_{r}-N_{r}^{0}\right)\left(1-\left(1-n / N_{\pi}\right)^{2}\right)$

  • $N_{\pi}=2 \times 10^{6}$:PPO episodesの総数
  • $N_{r}^{0}=l(0)$:最初からラベルの付いたサンプルの総数
  • $N_{r}$:ラベル付けされたサンプルの総数

もし現状のラベル付きサンプルの総数が$N_{r} < l(n)$ならば、$l(n)+1000 < N_{r}$になるまで、labelerにクエリを投げてラベル付きのサンプルを追加します。

訓練中のvalidationは、訓練データからサンプルした入力文$x$に対して初期分布$\rho(\cdot|x)$と学習中の分布$\pi(\cdot|x)$からそれぞれ2文ずつ生成した4文をlabelerに見せ、分布$\pi$の勝率を計算することによって行うとのこと(最後のモデル評価時の比較も2つのモデルからそれぞれ2文ずつ生成して比較する)

  • クラウドソーシングをするのにScale AIのサービスを使用(クラウドソーシングの代行業らしく、OpenAIやHONDAとかNVIDIAとかが利用しているらしい)
  • agreementを推定するために、5%のクエリは5回別々のlabelerに回答させた
  • 著者らも100サンプルラベリングして比較
  • 正解が曖昧な設定のタスクなので、著者間のagreementは60%。著者がScale AIのlabelerへのagreementはスタイル文生成タスクに対して38%、要約タスク(TL;DL)で46%と厳しめ

実験で用いたモデルの設定

PPOのfine-tuning設定

  • Policyモデルは事前にBookCorpusで教師ありfine-tuning
  • 2Mのエピソード$\left(x, y_{0}, y_{1}, y_{2}, y_{3}\right)$を利用
  • $\gamma=1$ (おそらく割引率)
  • four PPO epochs per batch with one minibatch each (←これの書いてある意味が分からない・・・)
  • 他のパラメータはdefault
  • policyの学習中にdropoutはoff

Policyの初期値となる事前訓練済みのモデル(GPT-2)

  • 774M parameters
  • 36層Transformer, 20 heads, embedding size: 1280
  • WebText dataset (50,257 BPE tokens)で訓練済み
  • 温度パラメータ$T<1$によって生成文に多様性を持たせる工夫あり

Reward model

  • Policyと同じGPT-2の学習済みモデルを初期値とするが、最終層だけはランダムに初期化
  • ポジティブ文継続生成のタスクでは、6層Transformer, 8 heads, embedding size: 512(論文の注釈3を参照)

上記のポジティブ文継続生成のタスクで用いるReward modelは、Amazon review datasetでポジネガの2値分類を学習した学習済みモデル。最終層のsigmoid関数を通す前のlog oddsを報酬$r_{s}(x,y)$とする。

  • 学習率: $1.77 \times 10^{-5}$
  • 1 epoch学習
  • dropoutはoff
  • 最適化関数はAdam

タスクごとの設定

スタイル文継続生成タスク

Policy model

  • batch size: 1024
  • 学習率: $1.41 \times 10^{-5}$
  • GPT-2は$T=0.7$で訓練済みのものを使用

Reward model

  • batch size:8

要約生成

Policy model

  • batch size: 512
  • 学習率: $7.07 \times 10^{-6}$

Reward model

  • batch size:32

比較用ベースライン:教師ありfine-tuningをしたモデル

  • CNN/Daily MailとTL;DRで1epoch訓練
  • 30K examplesはvalidation用に訓練データから分割
  • 学習率はcosine annealing。初期値は$[10^{-4}, 3\times 10^{-4}]$間を対数線形空間上で8つに分割した値で試した
  • dropout rateは色々試して0.1がbest
  • モデル選択はvalidation setで最も良いスコアを基準とした

実験

いくつか結果の分析があるのですが、時間的制約と主張がうまく掴めないものがあったので推せる結果を抜粋して紹介します。

3.1. スタイル文継続生成タスク (Stylistic continuation tasks)

32~64トークン生成した後に24の追加トークンを同じスタイルで文を生成するというタスクです。

KL penaltyの影響

初期方策$\rho$と学習中の方策$\pi$が離れすぎないようにするためのKL penalty項の影響について、ポジティブなスタイル文継続生成タスクでの生成例を比較した結果が付録の表10です。下に一部紹介します。"no penalty / bonus"がペナルティ項なし($\beta=0$)です。"entropy bonus"はペナルティ項ありですが、これは$KL_{target}=30 (nat)$と、目標値のKLが本来の設定($KL_{target}=8 (nat)$)より大きめな設定の場合のようです。

f:id:snowman_88888:20201228183944p:plain
表10(一部):KLに対するpenaltyの影響

"no penalty / bonus"も"entropy bonus"の両方ともですが、生成文には同じトークンの繰り返し現象が頻出しており、言語モデルとして崩壊しているのが分かるかと思います。KL penaltyはいい感じの値を設定するのが必要のようです。

オフライン設定でfine-tuningしたモデル(offline)とfine-tuningなしモデル(zero-shot)の勝率比較

続いて、図4はラベルが増えていくにつれて、オフライン設定のモデルのzero-shotモデルに対する勝率を示した結果です。左図は「positive and happy」な文を選ぶタスク、右図は「vividly descriptive」な文を選ぶタスクでのモデルの比較した結果です。

f:id:snowman_88888:20201228040153p:plain
図4:オフライン設定でラベルを付けして学習させるサンプルの増加に伴う、学習後方策$\pi$ (offline)の初期方策$\rho$ (zero-shot)に対する勝率の推移

図4の結果を見ると、事前学習済みGPT-2の方策$\rho$そのまま(zero-shot)よりも、RLでfine-tuningした方が(人間によるラベル付けデータが$\rho$で生成したサンプルであるオフライン設定といっても)両タスクで結果が良くなっていることが分かります。

オフライン設定でfine-tuningしたモデル(offline)と他の設定との勝率比較

f:id:snowman_88888:20201228042149p:plain
表1:オフライン設定と各設定の勝率の比較

表1は、元の学習済み言語モデル$\rho$からサンプリングして生成して得たサンプル5kによるモデルと各設定の勝率の比較です。下記、上から順に設定変更を追加していったモデルと考えて良いかと思います(ただし、最後の2つは5k offlineからの設定変更)

  • zero-shot:BookCorpusによる教師ありfine-tuningをした学習済み言語モデル(方策)$\rho$(RL前の初期分布)
  • mock:$\rho$を初期方策として、Review corpus(ポジネガ分類タスク)で訓練済みのReward model $r_{s}$によって訓練した方策$\pi$
  • 5k offline:$\rho$から5kのサンプルを生成して人間にラベル付けしたデータをRLの訓練に追加してReward model $r_{s}$と一緒に訓練した方策$\pi$
  • 20k offline:5k offlineのサンプルを20kに増やした場合
  • 5k online:5k offlineのサンプル生成に、学習途中の方策$\pi$を用いた場合

各評価は全1024サンプルで、各サンプルは3人に評価されたとのこと。

表1の結果を見ると、5k offlineで20k offlineと5k onlineと同等という判断が人間によってなされており、イントロにあった「5kで割と十分」という話はここから主張されているようです。オンライン設定にわざわざする必要性もこのタスクではなかったようです。

3.2. Summarization

評価対象にCNN/Daily Mail datasetとTL;DR datasetを利用。

(学習データは?)Redditの投稿からサンプリングし、500トークンを切り取り、 "\n\nTL;DR:" suffixを追加。方策モデルは75トークンまで生成可能。生成した要約は、自然な要約となるように55~75トークンの改行文字以降を切り取ってから人間に評価させる。RL fine-tuning中は、改行の入らない要約文に対して$-1$の報酬(罰)を与えます。

学習は、目的タスクのデータセット教師あり学習してから、RLによるfine-tuningという順番で行ったとのこと。最初からRLもできますが、タスクから離れてしまうので間に目的タスクのデータセットでの教師あり学習を挟むとのことです。

また、タスクごとに以下の設定を追加。

  • CNN/Daily Mail:"Article:\n\n" prefixを追加、温度$T=0.5$、ペナルティ係数$\beta=0.1$
  • TL;DR dataset:温度$T=0.7$、ペナルティ係数$\beta=0.3$

RLの学習中は以下の設定でデータを収集したとのこと。

online データ収集:15k, 30k, 60k
offline データ収集:60k

各設定でのROUGEスコアの比較

f:id:snowman_88888:20201230052929p:plain
表4:各設定でのROUGE

表4は、各設定でのROUGEスコアです。ROUGEは要約でよく使われるN-gramの一致率に基づく評価指標です。R-1とR-2はROUGEで考慮されるN-gramのN=1,2の場合、ROUGE-Lは最長一致部分列に基づく計算方法のようです。R-AVGはよくわかりませんが、他3つの指標の算術平均のようです(試しに2組計算してみたら一致しました)

R-1, R-2, R-Lの参考:ググったら出てきた言語処理学会の論文
投票型回帰モデルによる要約の自動評価法

各設定については以下の通りです。

  • lead-3 baseline:文脈文の最初の3文を単純にコピーした設定。(前述の切り取りルールを適用した後2文になることはある)
  • zero-shot:BookCorpusによる学習済み言語モデル(方策)$\rho$
  • supervised baseline:$\rho$を目的タスクのデータセット教師あり学習
  • supervised + 60k fine-tune:教師あり学習のあとonlineで収集した60kサンプルでのRL fine-tuning
  • 60k fine-tune:教師あり学習なしで、onlineで収集した60kサンプルでのRL fine-tuning
  • 30k fine-tune:教師あり学習なしで、onlineで収集した30kサンプルでのRL fine-tuning
  • 30k fine-tune:教師あり学習なしで、onlineで収集した15kサンプルでのRL fine-tuning
  • 60k offline fine-tune:教師あり学習なしで、offlineで収集した60kサンプルでのRL fine-tuning

太字が最高精度を示しているので、"supervised + 60k fine-tune"が一番良さそうですが、そこまで他の設定と劇的に違うというほどでもなさそうですかね?(私は要約分野には疎いのでなんとも言えないですね・・・)

各設定での人間の主観評価による勝率比較

f:id:snowman_88888:20201230054044p:plain
各設定の勝率の比較

表5は、各設定の勝率を比較した結果です。単純ベースラインの"lead-3"が強いですね・・・。"supervised + 60k fine-tune"はROUGEでこそ勝ちましたが、人間の評価だと"60k fine-tuned"に負けているようです。スタイル継続文生成と異なり、要約ではオフライン設定の"60k offline fine-tune"よりもオンライン設定の"60k fine-tuned"が上回っているようです。それだけ要約が判断難しいタスクなのかなあという印象でした。

原因の分析(省略)

この部分(§3.2.1)は時間の関係でよく読めなかったので省略しますが、基本的にはこのモデルは入力文の色々なところをコピーしてるだけで、Abstractな要約はできてないというのが問題のようです(それはそう)

Challenges

本論文のウリである「オンラインでデータを収集する」という部分の難しさについて書かれていました。感想欄みたいなものでした。せやなあと納得できる項目が多いですが、目新しい事実は無かったです。

よくわからなかったところ

継続的なスタイル文生成のポジネガタスクではReward modelはReview datasetで学習したモデルとGPT-2を使ったもの2種類があると思うのですが、このタスクでは前者のみを使ったのか後者もどこかの段階で使っているのかよくわかりませんでした。

感想

本論文は強化学習手法の一つであるPPOを使って、人間のフィードバックを取り入れながら、GPT-2の学習モデルをオンラインにfine-tuningしていくというお話でした。

しかしながら、継続的なスタイル文生成タスクではオフラインの設定でもいい感じの結果が出るという点、要約タスクはオンラインが有効ながらもそもそもタスクとして難しく、オンラインという手間のかかる設定をしたにしては思ったほど性能は上がっていない点が渋いな・・・という印象でした。

あと、情報が散らばっててとても読みにくかったですが、自分がこの分量の情報を論文としてまとめるとなると、うまいやり方も思いつかなくてこれまとめるの大変やったろうなという感想を持ちました・・・

今回の結果は、論文を読んだ限り著者らとしてもあまり期待したほど印象的な結果ではなかったようでしたが、ちゃんと分析してArXivにアップしてるのは偉いなあと思いました。この下地がNeurIPS2020のタスク設定の工夫につながってるのかなあと思います(NeurIPSの方の論文も暇をみて読みたいところです)

これにて強化学習苦手の会Advent Calendarも無事終了となりました!非常に盛り上がり大変満足です!ご寄稿いただいた皆様、記事を読んでくださった皆様ありがとうございました!もくもく会は来年も続けていきますのでご興味ある方は是非ご参加ください!