GPT-2を読む③導入
前回は、OpenAIが2019年に発表した論文「Language Models are Unsupervised Multitask Learners」(GPTのバージョン2)の構造をざっくり見渡して読むための方針を決めました。
この方針に従って、今回は「導入」から読み進めて、論文の中で言及されている「2つの研究」をめぐる背景をより良く理解することを目指します。
前回のおさらい
前回すでに、導入の始めと終わりを読んでいますが、ここでは記憶を呼び覚ますために、導入の初めの部分を簡単におさらいします。
導入は次のように始まります。
現在の機械学習システムは、大規模なデータセット、高容量のモデル、および教師あり学習を組み合わせることで、訓練されたタスクにおいて期待通りの成果を上げています(Krizhevsky et al., 2012)(Sutskever et al., 2014)(Amodei et al., 2016)。
Machine learning systems now excel (in expectation) at tasks they are trained for by using a combination of large datasets, high-capacity models, and supervised learning (Krizhevsky et al., 2012) (Sutskever et al., 2014) (Amodei et al., 2016).
ここでは単に、その当時の機械学習は「大規模なデータセット」と「高容量のモデル」と「教師あり学習」を組み合わせることで「期待通りの成果」を挙げていると述べています。
そして、「しかし、」と続きます。
しかし、これらのシステムは脆弱であり、データ分布のわずかな変化(Recht et al., 2018)やタスクの仕様(Kirkpatrick et al., 2017)に敏感です。
Yet these systems are brittle and sensitive to slight changes in the data distribution (Recht et al., 2018) and task specification (Kirkpatrick et al., 2017).
ここで当時の機械学習の問題点をあげています。それは、「データ分布のわずかな変化」や「タスクの仕様」に敏感ということです。訓練データとわずかに異なる分布を持つデータにおいての予測能力が低下したり、訓練の時とタスクの設定が異なると対応できなかったりします。
これは、当時の機械学習モデルが一般化能力において欠けていることを意味します。この点を克服するべく、論文は次のように続けます。
現在のシステムは、優れたジェネラリスト(一般家)というよりも狭い分野のエキスパート(専門家)として特徴づけられます。私たちは、さまざまなタスクを実行できる、より一般的なシステムを目指したいと考えています。最終的には、各タスクごとに手動でトレーニングデータセットを作成し、ラベル付けする必要がないシステムを目指します。
Current systems are better characterized as narrow experts rather than competent generalists. We would like to move towards more general systems which can perform many tasks – eventually without the need to manually create and label a training dataset for each one.
ここでは、当時の機械学習モデルが陥っていた「狭い分野のエキスパート(専門家)」から脱却したいと述べています。その理想像として、「優れたジェネラリスト(一般家)」であり「さまざまなタスクを実行できる」という「より一般的なシステム」を掲げています。
また、「最終的には」、「ラベル付けする必要がない」システムを目指しています。この辺りを読んでいると、「…を目指したい」的なやや弱めな主張が目立ちます。理想は高いけどまだ発展途上なのかなという雰囲気が漂います。
いずれにせよ、タスクに特化した学習を行う必要がないシステムを目標としているのは間違いありません。では、GPT-2ではどのようにして、この目標に近づこうとしたのでしょうか。
教師あり学習の限界
では、この論文の導入をさらに読み進めていきます。
機械学習システムを作成する際の主流のアプローチは、目的のタスクでの正しい例を示す訓練データセットを収集し、その例に従って動作するようにシステムを訓練してから、訓練データセットとは別に用意した独立同分布(IID)の例でその性能をテストすることです。
The dominant approach to creating ML systems is to collect a dataset of training examples demonstrating correct behavior for a desired task, train a system to imitate these behaviors, and then test its performance on independent and identically distributed (IID) held-out examples.
これは当時の主流である教師あり学習のあり方を述べています。特に目新しいことはありませんが、独立同分布(Independent and Identically Distributed、IID)について少し解説します。
具体的なイメージが湧きやすいように、画像データを使った例を上げます。
猫と犬の画像を分類するモデルを作成したいとします。このために、猫と犬の画像を大量に収集します。
全ての画像をランダムに訓練データとテストデータに分割します。例えば、80%の画像を訓練データとして使い、残りの20%をテストデータとして使います。このランダムな分割により、訓練データとテストデータが同じ分布に従うこと(同分布)を保証します。
また、訓練データやテストデータにある各画像は、お互いに独立している(独立)と仮定します。ただし、独立しているといっても同じ分布に従っているので、訓練データは犬だけで、テストデータが猫だけということにはなりません。とすると独立とはどういうことでしょうか。
そこで独立していないケースを考えてみます。例えば、全く同じ猫の画像が訓練データとテストデータに同時に存在する場合は、同じ分布に従っているかもしれませんが独立とは言えません。この猫の画像を暗記してしまえば、タスクの目的は達成できるかもしれませんが、一般化能力があることにはなりません。
また、同じ猫の連続した画像(例えば、連写したもの)が訓練データとテストデータに混在している場合も独立していないケースです。ある特定のパターンが大きな影響を与えるので、モデルが過剰適合する可能性が高まります。
さらに、同じ背景、カメラアングル、光の当たり方などが繰り返されている場合などは特定の条件下でしか画像に関する予測が上手くいかないなどの不都合が生じます。
とはいっても、データセットの中の猫たちが全く似ていないことはあり得ません。猫の特徴を学習することを妨げるような関係や依存性をデータの中に持ち込まないことが重要であって、特徴が似ていることは問題ではありません。つまり、自然なバリエーション(多様性)があれば良いわけです。そのためには、十分なデータ量も必要です。
より一般化された特徴を学習するためには、モデルが特定のパターンに過剰適合しない必要があり、データの独立性が重要となります。また、訓練データで機能することがテストデータでも機能するためには、データの同一性が重要となります。この両方が大切なわけです。
以上より、テストデータが独立同分布であることで、一般化能力の性能をより正確に評価することができるのですが、そのようなデータを十分な量になるまで準備するのは多大な労力を必要とします。
そこで論文は、こう続けます。
このアプローチは、狭い専門分野の進展には役立ってきました。しかし、キャプション生成モデル(Lakeら、2017)、読解システム(JiaとLiang、2017)、および画像分類器(Alcornら、2018)の入力の多様性とバリエーションに対するしばしば不安定な挙動は、このアプローチのいくつかの欠点を浮き彫りにしています。
This has served well to make progress on narrow experts. But the often erratic behavior of captioning models (Lake et al., 2017), reading comprehension systems (Jia & Liang, 2017), and image classifiers (Alcorn et al., 2018) on the diversity and variety of possible inputs highlights some of the shortcomings of this approach.
詳しいことは参照されている論文を読む必要がありますが、言いたいことは「入力の多様性とバリエーションに対するしばしば不安定な挙動」です。これは、教師あり学習が大量の独立同分布のデータを必要とすることの問題点を指摘しています。
つまり、一般化能力を得られるために十分なラベル付きデータを準備することは困難だということです。上述の論文では、このような教師あり学習の限界を露呈しているわけです。
「だったらどうすれば?」と疑問が湧きます。
マルチタスク学習の可能性
論文はこう続けます。
私たちは、単一のタスクによる訓練が単一の領域(ドメイン)のデータセットで行われることが、現在のシステムに見られる一般化の欠如の主要な要因であると疑っています。
Our suspicion is that the prevalence of single task training on single domain datasets is a major contributor to the lack of generalization observed in current systems.
例えば、単一のタスク(例えば、感情分析)のための単一のデータセット(テキストに感情分類のラベルを付与したもの)による訓練は、多様な言語能力(一般化能力)を身につけるには十分でないことは容易に想定できます。言語にはいろいろな機能があり、さまさまなタスクといろいろな状況に応じた訓練データによる学習が必要となるでしょう。
論文はこう続けます。
現在のアーキテクチャで堅牢なシステムを進展させるためには、広範な領域(ドメイン)とタスクでの訓練と性能の測定が必要とされるでしょう。最近では、GLUE(Wangら、2018)やdecaNLP(McCannら、2018)など、これを研究し始めるためのいくつかのベンチマークが提案されています。
Progress towards robust systems with current architectures is likely to require training and measuring performance on a wide range of domains and tasks. Recently, several benchmarks have been proposed such as GLUE (Wang et al., 2018) and decaNLP (McCann et al., 2018) to begin studying this.
つまり、モデルを単一のタスク・データセットで訓練・評価するのではなく、いろんな分野のタスクで学習と評価を行う必要がありと主張しています。また、そのためのベンチマークが近年に提案されていることにも言及しています。
特に有名なGLUE(General Language Understanding Evaluation)は、自然言語処理モデルの汎用的な言語理解能力(一般化能力)を評価するためのベンチマークです。
主な目的は、さまざまな異なるタスクでモデルの性能を評価し、総合的な性能を比較することです。GLUEには、文の類似性判断、自然言語推論、文の意味的関係判断、感情分析など、NLPにおける9つの異なるタスクから構成されています。
CoLA(Corpus of Linguistic Acceptability)文が文法的な妥当性(正しいかどうか)
SST-2(Stanford Sentiment Treebank)映画レビューの感情分析
MRPC(Microsoft Research Paraphrase Corpus)2つの文が同じ意味を持つか(パラフレーズ、paraphrase)
STS-B(Semantic Textual Similarity Benchmark)文の意味的類似性の判断
QQP(Quora Question Pairs)2つの質問の同じことを意図しているか(同じ意味か)
MNLI(Multi-Genre Natural Language Inference)2つの文(前提文と仮説文)の関係(含意、矛盾、中立)
QNLI(Question Natural Language Inference)質問とその答えの候補の関係(答えを含むかどうか)
RTE(Recognizing Textual Entailment)2つの文(前提文と仮説文)の関係(含意かどうか)
WNLI(Winograd NLI)文脈を理解し代名詞が何を指しているかを判断できる
論文のタイトル「Language Models are Unsupervised Multitask Learners」における「Multitask Learners」(マルチタスク学習者)とは、上述した多様なタスクに対応できるモデルを(目指していることを)意味することがわかります。
論文はこう続きます。
マルチタスク学習(Caruana, 1997)は、全体的なパフォーマンスを向上させるための有望なフレームワークです。しかし、自然言語処理(NLP)におけるマルチタスク訓練はまだ初期段階にあります。
Multitask learning (Caruana, 1997) is a promising framework for improving general performance. However, multitask training in NLP is still nascent.
論文の著者たちは、マルチタスク学習を有望としながらも、当時はまだマルチタスクによる学習が初期段階にあるといっています。
それでも、マルチタスクによる学習効果が報告されていると、論文は続けます。
最近の研究では、パフォーマンスの改善がわずかに報告されています(Yogatama et al., 2019)。これまでで最も野心的な試みとしては、2つあります。一つ目(McCann et al., 2018)は、合計10個の「データセットとタスクの組み合わせ」で訓練を行いました。二つ目(Bowman et al., 2018)は、合計17個の「データセットとタスクの組み合わせ」で訓練を行っています。
Recent work reports modest performance improvements (Yogatama et al., 2019) and the two most ambitious efforts to date have trained on a total of 10 and 17 (dataset, objective) pairs respectively (McCann et al., 2018) (Bowman et al., 2018).
「データセットとタスクの組み合わせ」とわざわざ言及しているのは、同じデータセットが異なるタスクで使われる場合も個数に含めているからです。
それにしても、合計で10個や17個といった「データセットとタスクの組み合わせ」を準備するのはかなり大変なことが想像できます。
それでもモデルが多様なタスクを学習するためには、できるだけ多くの異なる「データセットとタスクの組み合わせ」があることが望まれるでしょう。
論文は、こう続けます。
メタラーニングの視点から見ると、各「データセットとタスクの組み合わせ」は、データセットとタスクの分布からサンプリングされた単一の訓練例です。
From a meta-learning perspective, each (dataset, objective) pair is a single training example sampled from the distribution of datasets and objectives.
メタラーニング(meta-learning)は、「学習のための学習」とも呼ばれ、モデルが異なるタスクを学習できるようにすることを目指します。例えていうなら、効率の良い勉強方法を学習することで、異なる教科の学習が効率よく行えるようになるということです。
この視点で考えると、メタラーニングのためには、複数のタスクで訓練を行い、その経験を基に新しいタスクに適応する能力を高めるといったアプローチが考えられます。
つまり、各「データセットとタスクの組み合わせ」は、メタラーニングのデータセットの分布からサンプリングされた(ランダムに選ばれた)データポイント(単一の訓練例)と捉えることができます。
とすると、メタラーニングのデータセットを大きくすることで、一般化能力のあるモデルを訓練することができそうです。マルチタスク学習の可能性が見えてきました。
論文の続きを読みます。
現在の機械学習システムは、よく一般化する関数を誘導するために、何百から何千もの例が必要です。これは、現在のアプローチでマルチタスク学習がその約束を実現するためには、同じくらい多くの効果的な訓練のための組み合わせが必要であることを示唆しています。
Current ML systems need hundreds to thousands of examples to induce functions which generalize well. This suggests that multitask training many need just as many effective training pairs to realize its promise with current approaches.
ここでは、通常の教師あり学習で必要となる訓練データの数と比較して、マルチタスク学習におけるデータ数の必要性を説明しています。
つまり、あるデータセットとタスクでよく機能するモデルを訓練するのに何百から何千もの例が必要なのだから、同じアプローチでマルチタスク学習を行うとしたら同様な数の「データセットとタスクの組み合わせ」が必要となる、ということです。
せっかくマルチタスク学習の可能性が見えてきましたが、これはちょっと無理がありそうです。何か違う方法が必要でしょう。
論文の続きを読みます。
現在の技術でデータセットの作成と目的の設計を必要な程度までスケールさせ続けることは非常に難しいでしょう。これが、マルチタスク学習を実行するための追加の設定を探求する動機となっています。
It will be very difficult to continue to scale the creation of datasets and the design of objectives to the degree that may be required to brute force our way there with current techniques. This motivates exploring additional setups for performing multitask learning.
つまり、このやり方はスケールしないのだから、新しい手法やアプローチが必要だと手法しています。
問題提起としては理解できるのですが、なんだか少し堂々巡りになってきた感じがします。GPT-1における事前学習とファインチューニングではダメなのでしょうか。
事前学習とファインチューニングではダメ?
論文は、事前学習と教師あり学習によるファインチューニングの組み合わせについてこう話し始めます。
現在、言語タスクで最高のパフォーマンスを発揮するシステムは、事前学習と教師あり学習によるファインチューニングの組み合わせを利用しています。このアプローチは長い歴史を持ち、より柔軟な形式の転移へのトレンドがあります。
The current best performing systems on language tasks utilize a combination of pre-training and supervised finetuning. This approach has a long history with a trend towards more flexible forms of transfer.
まず(当時の)現状として、事前学習と教師あり学習によるファインチューニングの組み合わせが、言語タスクで最高のパフォーマンスを出していると述べています。そして、このような手法には長い歴史があるとも述べています。
また、その歴史においてみられる傾向として、より柔軟に転移(転移学習などで利用)が出来るようになってきたことがあります。
転移に関して、論文は具体例を挙げています。
まず、学習された単語ベクトルがタスク固有のアーキテクチャ(モデル構造)への入力として使用されました(Mikolov et al., 2013)(Collobert et al., 2011)。それから、リカレントネットワーク(RNN)からの文脈表現が転移されるようになりました(Dai & Le, 2015)(Peters et al., 2018)。そして最近の研究では、タスク固有のアーキテクチャはもはや必要なく、多くの自己アテンションを転移するだけで十分であることが示唆されています(Radford et al., 2018)(Devlin et al., 2018)。
First, word vectors were learned and used as inputs to task-specific architectures (Mikolov et al., 2013) (Collobert et al., 2011), then the contextual representations of recurrent networks were transferred (Dai & Le, 2015) (Peters et al., 2018), and recent work suggests that task-specific architectures are no longer necessary and transferring many self-attention blocks is sufficient (Radford et al., 2018) (Devlin et al., 2018).
まず、単語ベクトルを学習してから、それをタスク固有のモデルへの入力として使うということが行われました。関連する論文として2つ挙げています。
Distributed Representations of Words and Phrases and their Compositionality(Mikolov et al., 2013)
Natural Language Processing (almost) from Scratch(Collobert et al., 2011)
最初の論文は、Skip-gramモデルなどを使って単語埋め込み(単語ベクトル)を生成するためのアルゴリズム(Word2Vec)を提唱しています。2番目の論文は、事前に学習された単語ベクトルをタスク固有のモデルの入力として利用するアプローチに関するものです。
これらの論文による研究では、単語ベクトルは個々の単語の意味を捉えるために有効ですが、文章全体の文脈や文中の他の単語との関係をうまく考慮することができません。
こういった参照文献をどれほど詳しく読むべきかは、必要性に応じてです。意味をつかむ程度で良ければ、参照された論文の要約や結論を読むだけか、ちょこっと本文にも目を通すぐらいで十分です。また、有名な論文は検索すればいくらでもまとめ記事が出てくるので参考にして時間節約するべきです。
次に、リカレントネットワーク(RNN)の文脈表現(隠れ状態)が特徴量として転移学習で使われました。これは、画像系の機械学習でResNetやEfficientNetが特徴量抽出器として使われるのと似ています。
以下の2つの論文が参照されています。
Semi-supervised Sequence Learning(Dai & Le, 2015)
Deep contextualized word representations(Peters et al., 2018)
1番目の論文では、ラベルなしの大規模なデータを使った事前学習をRNNで行っています。これは与えられたシーケンスに続く言葉を予測するものです。これによって、RNNの隠れ状態は文章から文脈を抽出することができるようになります。
事前学習の後に、ラベル付きのデータでRNNを特定のタスクに適応させる微調整も行います。これはGPT-1のアプローチと基本的に同じですが、トランスフォーマーではなく、RNNを使っています。そもそもこの論文が発表された2015年にはまだトランスフォーマー(2017)は登場していません。
2番目の論文は、文脈に応じた単語の埋め込み表現を可能にしたELMo(Em- beddings from Language Models)に関するものです。双方向RNN(Bidirectional RNN)を使って、文の前後の文脈を同時に取り込みます。
ちなみに、ELMoやBERTなどの名前は、セサミストリートに登場するキャラクターを意識しているようです。
いずれにせよ、シーケンスから文脈を抽出することが可能となりました。しかし、それぞれのタスクに合わせてモデルのアーキテクチャを設定・変更する必要がありました。
さらに(当時から見て)最近の研究では自己アテンションを特徴量抽出器として利用することでタスク固有のアーキテクチャも不要となります。
Improving Language Understanding by Generative Pre-Training(Radford et al., 2018)
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(Devlin et al., 2018)
上記の論文はGPT-1とBERTです。両方ともトランスフォーマーのアーキテクチャからの自己アテンションを利用しています。自己アテンションはシーケンスからの文脈抽出に優れています。
ラベルなしの事前学習と教師あり学習によるファインチューニングを行います。モデル構造を大きく変更することなく、入力変換によって柔軟に転移を行えるようになっています。
こうして発展してきた「事前学習+ファインチューニング」の手法ですが、教師あり学習を必要とするという点に関しては変わりはありません。
論文もこの点を指摘しています。
これらの方法では、タスクを実行するために依然として教師あり学習が必要です。教師あり(ラベル付き)データが少ないか全くない場合には、別の研究によって常識推論(Schwartz et al., 2017)や感情分析(Radford et al., 2017)などの特定のタスクを実行する言語モデルの有望性を示しています。
These methods still require supervised training in order to perform a task. When only minimal or no supervised data is available, another line of work has demonstrated the promise of language models to perform specific tasks, such as commonsense reasoning (Schwartz et al., 2017) and sentiment analysis (Radford et al., 2017).
ここで言及されている「別の研究」とは、教師ありデータが少ないか全くない状況でも「言語モデル」を使用して特定のタスクを実行するアプローチを示した研究を指します。「言語モデル」といっているのは、事前学習などで行われる言語モデルの標準的な目的(与えられたシーケンスの次のトークンを予測など)で訓練されたモデルを指します。
要するに、事前学習されたモデルをファインチューニングなしで利用する「別の研究」があり、有望だと主張しています。その例として2つの論文が挙げあられています。
2つの研究とは?
これで以前からの疑問である「2つの研究とは?」に対する背景があらわになってきました。

前回も読みましたが、導入セクションの最後はこうなっています。
本論文では、これら二つの研究の流れを結びつけ、より一般的な転移学習の手法を継続的に探求します。我々は、言語モデルがパラメータやアーキテクチャの変更なしに、ゼロショット設定で下流タスクを実行できることを示します。このアプローチが多様なタスクをゼロショット設定で実行する言語モデルの能力を強調することで、その可能性を示します。我々は、タスクに応じて、有望で競争力のある、そして最先端の結果を達成します。
In this paper, we connect these two lines of work and continue the trend of more general methods of transfer. We demonstrate language models can perform down-stream tasks in a zero-shot setting – without any parameter or architecture modification. We demonstrate this approach shows potential by highlighting the ability of language models to perform a wide range of tasks in a zero-shot setting. We achieve promising, competitive, and state of the art results depending on the task.
つまり、これまでの研究の流れとして事前学習とファインチューニングを組み合わせたものがあります。これは究極的には教師あり学習を前提としており、ラベル付きデータが絶対に必要です。また、もう一つの流れは、ゼロショットの手法です。これは簡単にいうと事前学習したモデルをうまくタスクに訓練なしに適用させるものです。
大きな流れとして、より柔軟な転移の手法への傾向がある中で、この二つの研究をさらに発展させることができそうです(そうしたいです)。
よって、この論文では「これら二つの研究の流れを結びつけ、より一般的な転移学習の手法を継続的に探求します」と主張しています。さらに、「言語モデルがパラメータやアーキテクチャの変更なしに、ゼロショット設定で下流タスクを実行できることを示します」といっています。
ゼロショットで下流タスクを実行できると言い切っていますが、その後に「このアプローチが多様なタスクをゼロショット設定で実行する言語モデルの能力を強調することで、その可能性を示します」と少し主張が弱まっています。しかし、最後は「我々は、タスクに応じて、有望で競争力のある、そして最先端の結果を達成します」と主張しています。
よって、実際にどのような実験で、どの程度の結果が出たのかは後で確認する必要があります。いずれにせよ、二つの研究の流れを結びつけた一般的な転移学習のアプローチでどうゼロショットを達成するのかについてもっと深く知りたいという動機は高まりました。
次回予告
次回も、この論文を読む方針に従って、おそらくこの論文の肝であるセクション「アプローチ」を読み進めます。
お楽しみに!
