見出し画像

GPT-1を読む⑧実験分析

前回までに、OpenAIが2018年に発表したGPTの最初のバージョンの論文「Improving Language Understanding by Generative Pre-Training」のセクション3.3「タスク特有の入力変換」(Task-specific input transformations)を読み終えました。

これで方針としていた「教師なしの事前学習」と「ファインチューニング」などの仕組みを理解するという目的は達成しました。

今回は実験の結果とその分析を通してGPT-1が当時どのくらいの成果を上げたのかを確認します。一字一句読む必要はないので、目立った結果をピックアップして意訳したものを紹介します。

また、結果を踏まえたモデルの性能に関する幾つかの分析はとても興味深いです。特にアブレーション研究は示唆に富んでいます。

なお、「GPT-1を読む」シリーズは今回で終了し、次回からは「GPT-2を読む」シリーズが始まります。


実験設定

GPTでは、事前学習とファインチューニングでそれぞれ設定が異なります。

教師なし事前学習

論文によると、BooksCorpusというデータセットを使って標準的な言語モデルの訓練を行いました。つまり、条件文から次のトークンを予測する学習です。

このデータセットには、さまざまなジャンル(冒険、ファンタジー、ロマンス)から出版されていない7000本が含まれています。また、長く続く文章が含まれており、モデルが長距離の依存性を学習することができます。

これによって事前学習された言語モデルは、18.4 perplexity(パープレキシティ)を達成しました。

パープレキシティは、言語モデルがターゲットを予測する際の不確実性を示す指標です。パープレキシティが低いと不確実性が低くなるので、より高い自信を持って予測していることになります。

よって、パープレキシティが低いほど、言語モデルの予測性能が高いことを意味します。

モデルのスペック

GPTは、オリジナルのトランスフォーマー(のデコーダ)に大まかに従っています。

また、オプティマイザにはAdamを使用しています。学習率は最初の2000回の更新にわたって線形(直線的)にゼロ付近から最大値2.5e-4まで増加され、その後コサインスケジュール(cosine schedule)を使用して0に向かって減衰されました。

一見複雑に見える学習りつの更新方法ですが、論文には特に説明がありません。ただし、以下のように理解できます。

学習の初期段階では、モデルが不安定である可能性があるため、急激な学習率の増加を避けるために、学習率をゼロに近い小さい値から徐々に増加させます。これにより、初めの方はモデルのパラメータが大幅に変化することがないので、学習が安定します。これをウォームアップ(wamup phase)などと呼んだりします。これで学習率を最大値までゆっくりと増加させます。

コサインスケジュール(cosine schedule)では、コサインの曲線を利用して滑らかに学習率を減少させていきます。次のような式を使います。

$${\text{学習率} = \text{最小値} + (\text{最大値} - \text{最小値}) \times \dfrac{1 + \cos \left( \frac{t}{T}\pi \right)}{2}}$$

ここで、$${T}$$はコサインスケジュール全体のステップ数です。$${t}$$は現在のステップ数です。これによって、角度が0から$${\pi}$$へと変化するので、コサインの値が1からー1へと低減していきます。すると分数の項全体は1から0へと低減するので、学習率は最大値から最小値へと低減していきます。

なお、コサインスケージュールをグラフ化すると次のようになります。

コサインスケージュール

ここでは、最大値0.1から0へ向かって学習率を低減させています。

直線的な低減方法と比較すると、コサインスケジュールでは初期と後期の逓減がゆっくりとしておりパラメータの更新が安定しています。また、途中はほぼ直線的な低減になっています。よって、最初と最後の学習率の変化の具合をより安定させたとも言えるでしょう。

コサインスケジュールは、こちらの論文で提案されました。

また、エポックやバッチサイズなどの設定は以下になります。

  • 訓練は100エポックで実施

  • 512トークンの連続したシーケンスをランダムにサンプリング

  • ミニバッチは、64個シーケンスを含む

  • 重みの初期化としてN(0, 0.02)を使用

  • トークン化ではバイトペアエンコーディング(BPE)を使用

  • アテンション機構などのドロップアウト率を0.1と設定

この辺の設定は、実験の再現をしたい方には有用な情報ですが、経験則で色々やってみてこれが良かったという結果であり、(おそらく)理論的な裏付けがあるわけではないでしょう。

ファインチューニング

ファインチューニングの設定は、ほぼ事前学習と同じです。以下は異なる点です。

  • ほとんどのタスクにおいて、バッチサイズは32

  • ほとんどのタスクにおいて、学習率の最大値は6.25e-5

    • 0.2%の訓練期間を学習率のウォームアップとした

    • 線形に減衰するスケジュールを使用した。

学習率の最大値が事前学習より小さく設定されているのはせっかく事前学習したモデルを壊さないためでしょう。ファインチューニングでは微調整が目的なのでより小さい学習率を使うことはよくあることです。

また、ファインチューニングでコサインスケージュールが使われていないのは、そもそも学習率が小さく設定されており、また訓練期間も短いためではないかと推測されます。

論文によると、彼らのモデルは迅速にファインチューニングされ、ほとんどの場合、3エポックの訓練で十分だったとのことです。

実験結果

自然言語推論

自然言語推論(Natural Language Inference、NLI)あるいはテキスト含意(Text Entailment)のタスクでは、与えられた文のペアの間の関係を以下のいずれかに分類します。

  • 含意(entailment)

  • 矛盾(contradiction)

  • 中立(neutral)

次のデータセットで評価されました。カッコの中はテキストの種類です。

  • MNL:Multi-Genre NLI(スピーチ、人気フィクション、政府のレポート)

  • SNLI:Stanford NLI(画像のタイトル・説明)

  • SciTail(科学の試験)

  • QNLI:Question-answering NLI(Wikipediaの記事)

  • RTE:Recognizing Textual Entailment(ニュースの記事)

結果は以下になります。

論文表2

一番下に、Finetuned Transformer LM(ours) とあるのがGPTです。RTE以外では一番優れた正解率を達成しました。2つの文の関係を判断するのに優れているのがわかります。

質問応答と常識推論

質問応答(Question Answering)と常識推論(Commonsense Reasoning)では、文脈文書、質問、および複数の可能な回答が与えられます。どちらも正しい回答を選ぶタスクですが、常識推論では文脈文章に含まれていない情報(常識)を使う必要があります。

以下のデータセットが使用されました。

  • Story Cloze(短いストーリーのエンディングを選ぶ)

  • RACE:ReAding Comprehension dataset from Examinations(中国人学生をターゲットとして英語の試験の答えを選ぶ)

結果は以下になります。

論文表3

一番下に、Finetuned Transformer LM(ours) とあるのがGPTです。全てのタスクで一番優れた正解率を達成しました。与えられた長めの文章から適切な回答・結末を選ぶ能力に優れていることがわかります。

意味的類似性

意味的類似性(Semantic Similarity)タスクは、2つの文が意味的に同等かどうかを予測するものです。このタスクが難しいのは、文脈情報を利用して正しい解釈を導き出す能力が必要なことです。

例えば、次のような点があります。

  • 言い換えを認識する

    • 彼は足が速い

    • 彼は速く走る

  • 否定を理解する

    • 彼女はリンゴが嫌い

    • 彼女はリンゴが好きではない

  • 曖昧さを処理する

    • 魚は食べる準備ができている(魚が食べるのか、魚を食べるのか)

    • ハシゴを渡した(ハシゴをけ渡したのか、手渡したのか)

以下のデータセットが使用されました。

  • MRPC:Microsoft Paraphrase corpus(ニュース記事から)

  • STSB:Semantic Textual Similarity Benchmark(画像の説明、ニュースの見出しなど)

  • QQP:Quora Question Pairs(quora.comから)

これらのデータセットは、GLUE(General Language Understanding Evaluation)に含まれています。

結果は以下になります。

論文表4

中央のSemantic Similarityと書かれているところに注目してください。MRPC以外では、GPTが他を大きく引き離しました。これによって、GPTは意味的類似性でも好成績を達成しました。

テキスト分類

テキスト分類(Classification)では、次の2つの異なるタスクで評価しました。

  • CoLA:Corpus of Linguistic Acceptability(文章が文法的に正しいかどうかを専門家が判断したもの)

  • SST2:Stanford Sentiment Treebank(文章が与える感情を分類)

(前の表と同じですが)結果は以下になります。

論文表4

Classificationと書かれているところに注目してください。CoLAではかなり好成績です。SST2では一番にはなれませんでしたが、高得点です。よって、テキスト分類でも性能の良さがわかります。


実験結果全体として、12のデータセットのうち9つで最高の結果を達成しました。これによって、GPTの「教師なし事前学習」と「ファインチューニング」の手法の有効性が確認されました。

結果分析

実験結果を踏まえて論文では、観察や分析を行なっています。

転送する層の数の影響

「教師なし事前学習」から「ファインチューニング」(教師ありのタスク)へと移す層の数がモデルの性能にどのような影響を与えるかを観察しました。

下図は、転送する層の数に対するモデルの正解率を、MultiNLI(ブルーの線)とRACE(オレンジの線)に対して表しています。点線は、訓練(Train)データセットによるもので、実線は評価(Dev)データセットによるものです。

論文図2(左)

「Dev」は「Development」の略です。Devデータセットは、モデルの性能を確認し、ハイパーパラメータの調整を行うために使用されます。評価を行うためのデータセットではありますが、最終的な評価を行うテストセット(モデルの調整を行わない)と区別する場合に使われる用語です。ここでは、転移する層の数による効果を調べるために使われています。

明らかに、両タスク(RACEとMultiNLI)において、転移する層の数が増えると精度が向上しています。特にMultiNLIの方が層の転移による性能向上が顕著です。

これは、事前学習モデルの各層がターゲットのタスクを解くための有用な機能を含んでいることを示しています。

ゼロショットの性能

下図は、ゼロショットにおけるモデルの性能を異なるカテゴリーのタスクに対して表示しています。

ゼロショット学習とは、新しいタスクに対してファインチューニングを行わずにモデルを評価することです。そのため、モデルの入力や出力、あるいはタスクの方を変更して適応させます。

これは、事前学習されたモデルの能力だけで、どれだけ多様なタスクに対応できるかを示すための重要な方法です。

論文図2(右)

横軸は、事前学習におけるモデル更新の回数です。縦軸は、現状モデルで最高の成績とランダムな推測による成績の間で正規化したものです。つまり、1.0ならば最高の成績と同じ性能で、0だとランダムな予測と同じという意味です。

異なる色は、異なるタスクを意味します。実線はTransformer(GPT)で、点線はLSTM(Long Short-Term Memory、長短期記憶)です。つまり、事前学習しただけのGPTとLSTMを比較しています。

両方とも事前学習におけるモデル更新の回数が多いほど性能は良くなりますが、GPTの方がLSTMよりもずっと良い成績を出しているのがわかります。よって、事前学習でもGPTが優れていることがゼロショットを通して確認できます。

この結果を踏まえて論文では次のように述べています。

仮説として、生成モデルがその言語モデル能力を向上させるために、(評価で使われた)多くのタスクに必要なことを学習している、ということです。また、トランスフォーマーのより構造化されたアテンションによる記憶が、LSTM(長短期記憶)と比較して転移学習に向いているということです。

A hypothesis is that the underlying generative model learns to perform many of the tasks we evaluate on in order to improve its language modeling capability and that the more structured attentional memory of the transformer assists in transfer compared to LSTMs.

language_understanding_paper.pdf (openai.com)

つまり、事前学習で言語能力を高めていることで、多くのタスクで必要な理解力を(ファインチューニングする以前に)すでに学習しているのだとの仮説を立てています。

また、「トランスフォーマーのより構造化されたアテンションによる記憶」(the more structured attentional memory of the transformer)とは、アテンション機構が長距離の依存関係を効果的に処理できる構造を持っていることを指します。これは、グローバルにトークン間の関係を計算するためであり、シーケンス内のトークンを一つずつ順番に処理するLSTM(RNN全般)より優れています。これを「アテンションによる記憶」と名付けています。

よって、「LSTM(長短期記憶)と比較して転移学習に向いている」とは、トランスフォーマーがアテンションによる記憶を保持し、必要に応じてその情報を効果的に取り出す能力があることを意味しています。これにより、トランスフォーマーは事前学習で得た知識を新しいタスクに転移する際に優れた性能を発揮できる、と推測しているわけです。

アブレーション研究

アブレーション(Ablation)とは「切除」の意味からくる言葉です。アブレーション研究とは、モデルや訓練の特定の部分を除いてどのように性能が変化するかを調べる手法です。ある部分が除かれたことによって性能が大きく落ちるならば、それは重要であることになります。

この論文では、3つのアブレーション研究が行われました。

  • 半教師あり学習をやめる

半教師あり学習は、ファインチューニングを行う際にタスク専用のデータセットでも「標準的な言語モデルの訓練」を行うものでした。この補助的な目的を除いてファインチューニングのみ行うとどう性能が変化するのかを調べました。

これは、自然言語推論(MNLI、QNLI、RTE)や意味的類似性(QQP)で補助的な目的を用いる事が有効であること確認されました。

  • トランスフォーマーをやめる

ここでは、トランスフォーマーをベースにしたモデルではなく、LSTMを使って同じ手法による学習を行なっています。

つまり、2048次元の隠れ状態をもつLSTMモデルに対して、全く同じ事前学習とファインチューニング(補助目的あり)を行いその性能を比較します。

すると、MRPC(Microsoft Paraphrase corpus、意味的類似性)以外のタスクでは、トランスフォーマーを使った場合の方が良い結果となりました。すなわち学習のフレームワークだけでなく、トランスフォーマーの威力が証明されたことになります。

  • 教師なし事前学習をやめる

このアブレーション研究では、事前学習なしにタスクのデータセットで直接に教師あり学習した場合の結果を調べました。全てのタスクで性能が低下し、フルモデルと比較して14.8%の性能低下が見られました。

つまり、事前学習は重要である事が実験によって証明されました。


上記3つのアブレーション研究の結果が下表になります。

論文表3

w/ は with の略で、w/o は without を意味します。よって、上表左は次のように理解できます。

  • Transformer w/ aux LM (full):トランスフォーマー(補助目的あり、全てを含む)

  • Transformer w/o pre-training:トランスフォーマー(事前学習なし)

  • Transformer w/o aux LM:トランスフォーマー(標準的な言語モデルによる補助目的なし)

  • LSTM w/ aux LM:LSTMで事前学習とファインチューニング(補助目的あり)を行う

興味深いのは、補助的な目的を含めたファインチューニングが常に良い結果を出すわけでもないことです。上表の一番上を見るとQQP、MNLI、QNLI、RTEのみで成績が良くなっています。これに対して、論文では、特に大きなデータセットで補助目的が有効であると述べられています。

そもそも補助目的は、標準的な言語モデリングを行うので、データセットが大きくなければ意味がないという可能性があります。逆に、事前学習で得た能力を失ってしまうのかもしれません。

これは、異なるタスクに適応させる際に注意すべき点です。つまり、あまり大きくないデータセットでは、補助的な目的を含くまない方が良いかもしれません。

また、興味深いのは、MRPC(Microsoft Paraphrase corpus、意味的類似性)では、LSTMで事前学習とファインチューニング(補助目的あり)を行った場合の方が性能が良くなった点です。

これはある意味、事前学習とファインチューニングそのものの効果が大きいことを意味します。

ただし、論文ではこれ以上の深掘りはしていません。よって、私も特に追求するつもりはありません。

それよりも、次のバージョンのGPTのフォーカスした方が良いでしょう。

次回予告

これでGPTの最初のバージョンの論文を読み終えました。

次回からは、GPTのバージョン2の論文を読み始めます。

お楽しみに!

いいなと思ったら応援しよう!