GPT-2を読む④アプローチ
前回は、OpenAIが2019年に発表した論文「Language Models are Unsupervised Multitask Learners」(GPTのバージョン2)の「導入」を読みました。
今回は、この論文を読む方針に従って、おそらくこの論文の肝であるセクション「アプローチ」を読み進めます。
GPT-2におけるマルチタスク学習の概念がかなりはっきりしてきます。また、単純にモデルの容量を増やして、膨大なテキストデータを使えば自然と高性能なモデルになるわけでもないことが理解できます。
前回までのおさらい
論文では、これまでの研究の流れとして2つあると述べていました。
一つは、「事前学習」と「ファインチューニング」を組み合わせたもので、これは究極的には教師あり学習を前提としています。また、もう一つの流れは、「ゼロショット」の手法です。これは簡単にいうと事前学習したモデルをうまくタスクに訓練なしに適用させるものです。その要は教師なし学習に基づいています。
これまでの議論を振り返ると、GPT-2では「事前学習」と「ゼロショット」の組み合わせという方向へと舵を切ろうとしているように見えます。よって、そのための新しいアプローチと必要なるでしょう。
本来の「事前学習」は、「ファインチューニング」(教師あり学習)の前段階という意味合いが強かったのです。しかし、ここではむしろ「ファインチューニング」は一時的な手段であり、本当の目的は「言語能力の習得」なのだと考えているようです。
「事前学習」では、「言語モデリング」(言語自体の学習)を行います。よく、言語モデルは「穴埋め問題をやっているだけ」とか「次に来る単語を予測しているだけ」と単純化されて語られますが、事前学習では莫大なラベルなしデータセットを利用できるので大きな効果があります。これは、GPT-1からも明らかです。
では、単純にもっとデータセットをより大きくすれば言語能力がさらに向上するのでしょうか。そして、「ファインチューニング」なしで「ゼロショット」で、多くのタスクをこなすことが可能になるのでしょうか。それとも何か新しいアプローチが導入されるのでしょうか。
では、以上の背景を頭の片隅に置いて、論文の「アプローチ」のセクションを読み進めましょう。
言語モデリングを中心に
セクション2「アプローチ」は次のように始まります。
私たちのアプローチの中心にあるのは、言語モデリングです。
At the core of our approach is language modeling.
やはり、言語モデリングを主役に持ってきました。
その言語モデリングについて次のように説明しています。
言語モデリングは、データセット内の例 $${(x_1 , x_2 , \ldots, x_n )}$$ (それぞれの例は、さまざまな長さのシンボルのシーケンス $${(s_1, s_2, \ldots, s_n)}$$)に対するデータ分布の推定を教師なし学習で行うこととして捉えることができます。
Language modeling is usually framed as unsupervised distribution estimation from a set of examples $${(x_1 , x_2 , \ldots, x_n )}$$ each composed of variable length sequences of symbols $${(s_1, s_2, \ldots, s_n)}$$.
原文では「シンボル」という言葉が使われていますが、それはトークンと読み替えてかまいません。ただし、「シンボルのシーケンス」という表現は長いので単に「シーケンス」と言い換えても意味は通じるでしょう。
シンボル(あるいはトークン)は、具体的には以下のようにいくつかの可能性があります。
単語トークン:単語単位で分割。例: "I", "am", "a", "student"
文字トークン:文字単位で分割。例: "I", " ", "a", "m", " ", "a", " ", "s", "t", "u", "d", "e", "n", "t"
サブワードトークン:単語をさらに細かく分割。例: "stud", "ent"
これらを抽象的にシンボルと呼んているわけです。
データセット内の例文はシンボルが順番に並んだシーケンスです。よって、たくさんの例 $${(x_1 , x_2 , \ldots, x_n )}$$を使って教師なし学習を行うことで、与えられたシーケンス $${(s_1, s_2, \ldots, s_n)}$$に対する分布(例えば次の言葉が何であるか)を学習することができるようになります。
なお、データセット内の例$${(x_1 , x_2 , \ldots, x_n )}$$とシーケンスの長さ$${(s_1, s_2, \ldots, s_n)}$$の両方で同じ$${n}$$が使われていますが、これはたまたまです(というか、おそらく記述の間違いです)。両方とも複数個あるということだけ理解すれば問題ありません。
また、「言語モデル」と「言語モデリング」で少しニュアンスが異なります。「言語モデル」は、言語を扱うモデルの一般名称です。具体的には、文章生成モデルやタスクに特有な予測を行うモデルなどがあります。一方、「言語モデリング」は言語をモデル化するプロセスのことです。言語の統計的特性や構造を学習し、それに基づいてモデルを構築することを指します。
確率モデルとしての言語モデル
特に、この論文での言語モデリングは、言語自体の統計的特性や構造を学習するのが目的です。結果として構築される言語モデルは確率モデルとなります。
言語には自然な順序があるため、シンボルの結合確率を条件付き確率の積として分解することが一般的です (Jelinek & Mercer, 1980) (Bengio et al., 2003)。
$${p(x) = \prod\limits_{i=1}^n p(s_n \mid s_1, \ldots, s_{n-1})}$$
Since language has a natural sequential ordering, it is common to factorize the joint probabilities over symbols as the product of conditional probabilities (Jelinek & Mercer, 1980) (Bengio et al., 2003):
$${p(x) = \prod\limits_{i=1}^n p(s_n \mid s_1, \ldots, s_{n-1})}$$
言語シーケンスにおいて、シンボル(トークン)の順番は非常に重要です。以下の例を見て下さい。
「犬が私を噛んだ」
「私が犬を噛んだ」
2番目の分は、おそらくほとんど見受けることはないでしょう。これは「私が犬を」の続きとして「噛んだ」が登場する確率がかなり低いからです。
そのため、あるシーケンスの次に続くシンボルは、与えられたシーケンスを条件として確率的に予測されます。つまり、条件確率を使います。
条件確率がシーケンスの確率の計算で使われる例として、「おはよう」というシーケンスを考えます。
まず、一番初めの「お」が使われる確率を$${p(\text{お})}$$とします。これは、「お」が使われる確率(頻度)を意味します。そして、その次の「は」が続く確率は、「お」を条件としているので$${p(\text{は}\mid \text{お})}$$と表現できます。これを繰り返すと以下になります。
$${p(\text{お})}$$
$${p(\text{は}\mid \text{お})}$$
$${p(\text{よ}\mid \text{おは})}$$
$${p(\text{う}\mid \text{おはよ})}$$
これらは、各シンボルの確率(あるいは条件確率)なので、全てを掛け合わせると「おはよう」の確率となります。
$$
p(\text{おはよう}) = p(\text{お}) \cdot p(\text{は}\mid \text{お}) \cdot p(\text{よ}\mid \text{おは}) \cdot p(\text{う}\mid \text{おはよ})
$$
論文では、このことを以下のように数式で表現しています。
シーケンス$${x}$$は、シンボルが順番に並んだものです。その長さを$${n}$$とすると、以下のようにベクトルとして表現できます。
$$
x = (s_1, s_2, \ldots, s_n)
$$
ここで、シーケンス$${x}$$が出現する確率を次のように表現することができます。
$$
p(x) = p(s_1) \cdot p(s_2 \mid s_1) \cdot p(s_3 \mid s_1, s_2) \cdot \ldots \cdot p(s_n \mid s_{n-1}, \ldots, s_1)
$$
これは上述の「おはよう」の例を$${n}$$個のシンボルを含むシーケンスに一般化したものです。
さらに、積の記号$${\prod}$$を使って以下のように簡単に表記することができます。
$$
p(x) = \prod\limits_{i=1}^n p(s_i \mid s_1, \ldots, s_{i-1})
$$
なお、$${s_1}$$の確率だけは、その前にシーケンスがないので条件確率にはならずに$${p(s_1)}$$となります。
また、論文では$${p(x) = \prod\limits_{i=1}^n p(s_n \mid s_1, \ldots, s_{n-1})}$$となっていますが、$${i}$$がどこにも使われていないので、表記がおかしいです。実際には、$${s_1}$$から始まって$${s_n}$$までの確率を全て掛け合わせるので、私が書き直した表記の方が正しくなります。
生成モデルとしての言語モデル
このような確率分布を学習したモデルは、次に来るシンボルの予測が可能になります。また、予測を続けて行うことで、与えられた文章の続きのシーケンスを出力することもできます。つまり、シーケンスを条件にシーケンスを出力することも可能です。
このアプローチにより、シーケンスの確率$${p(x)}$$ および 条件確率$${p(s_{n−k}, \ldots, s_n \mid s_1 , \ldots, s_{n−k−1})}$$からサンプリングしたり予測することが可能となります。
This approach allows for tractable sampling from and estimation of $${p(x)}$$ as well as any conditionals of the form $${p(s_{n−k}, \ldots, s_n \mid s_1 , \ldots, s_{n−k−1})}$$.
条件確率$${p(s_{n−k}, \ldots, s_n \mid s_1 , \ldots, s_{n−k−1})}$$は、与えられたシーケンス$${s_1 , \ldots, s_{n−k−1}}$$を条件として、続くシーケンス$${s_{n−k}, \ldots, s_n}$$の確率を意味します。例えば、次に続くシンボルの予測を立て続けに行うことが可能です。
ここで「サンプリングする」と言っているのは「生成する」と読み替えることができます。なぜなら、モデルは、シーケンスの確率$${p(x)}$$ および 条件確率$${p(s_{n−k}, \ldots, s_n \mid s_1 , \ldots, s_{n−k−1})}$$を学習したので、その確率分布に従ってシーケンスをサンプリングすることは、シーケンスを生成することだからです。
さて、この条件付き確率を計算するのが得意なのが2017年に登場したトランスフォーマーです。GPT-2の本の2年前のことです。
近年、これらの条件付き確率を計算できるモデルの表現力が大幅に向上しました。トランスフォーマー(Vaswani et al., 2017)の自己アテンション機構のアーキテクチャです。
In recent years, there have been significant improvements in the expressiveness of models that can compute these conditional probabilities, such as self-attention architectures like the Transformer (Vaswani et al., 2017).
特定のタスクを入力条件にする
次に、論文は特定のタスクを実行するために学習することを再定義しています。
単一のタスクを実行するために学習することは、条件付き分布 $${p(\text{output} \mid \text{input})}$$ を推定する確率的な仕組みとして表現できます。
Learning to perform a single task can be expressed in a probabilistic framework as estimating a conditional distribution $${p(\text{output} \mid \text{input})}$$.
言い換えると、特定のタスクにおける学習は、そのタスクにおける入力と出力の間の条件確率を学習することです。
まあ、ここまでに書かれたことは、GPT-1における言語モデリング(事前学習)と共通することばかりです。GPT-2では何が新しいのでしょうか。
汎用的なシステムは、同じ入力に対しても多様なタスクを実行できるべきであるため、入力だけでなく実行すべきタスクにも条件付ける必要があります。つまり、$${p(\text{output} \mid \text{input}, \text{task})}$$ をモデル化するべきです。
Since a general system should be able to perform many different tasks, even for the same input, it should condition not only on the input but also on the task to be performed. That is, it should model $${p(\text{output} \mid \text{input}, \text{task})}$$.
つまり、未対応のタスクのために新たに条件確率$${p(\text{output} \mid \text{input})}$$を学び直す(ファインチューニング)するのではなく、初めからどのようなタスクも条件確率$${p(\text{output} \mid \text{input}, \text{task})}$$に取り込めるようにしておけば、さまざまなタスクに対応できる汎用的なシステムになるというわけです。
しかし、タスクを条件として扱うアプローチは、GPT-2が初めてではありません。論文はこう続けます。
これ(タスクを条件として扱うこと)は、マルチタスクやメタ学習においていろいろな形で扱われてきました。タスクの条件付けは、モデルのアーキテクチャやアルゴリズムによって実装されることが多かったです。例えば、タスク特有のエンコーダやデコーダのアーキテクチャ(Kaiser et al., 2017)や、最適化において内ループと外ループを使うアルゴリズムであるMAML(Finn et al., 2017)などがあります。
This has been variously formalized in multitask and meta-learning settings. Task conditioning is often implemented at an architectural level, such as the task specific encoders and decoders in (Kaiser et al., 2017) or at an algorithmic level such as the inner and outer loop optimization framework of MAML (Finn et al., 2017).
タスクを条件として扱うアプローチとして二つの例が挙げられています。
論文「One Model To Learn Them All」(Kaiser et al., 2017)は、異なるタスクの入力に対して異なるエンコーダ、出力に対して異なるデコーダを使用します。これらは人間が設計する必要があります。モデルは、入力形式に応じて適切なエンコーダとデコーダを自動的に使用し、ゼロショット学習を目指します。言語だけでなく画像処理なども行えます。
MAML(Model-Agnostic Meta-Learning)は、多くのタスクに共通する一般的なパラメータを学習し(メタ学習)、これを基に少数の例で新しいタスクに迅速に適応するアルゴリズムです。分類、回帰、強化学習など様々な学習問題に適用可能であり、タスクごとに少数の例で学習とパラメータ調整が必要です。このため、Few-Shot学習とも呼ばれます。
しかし、言語を扱うモデルは、入力や出力のためのアーキテクチャをタスクに合わせて準備したり、アルゴリズムを変更せずに処理することができるのではないでしょうか。論文は続けます。
しかし、McCann et al. (2018) に示されているように、言語は柔軟であり、タスク、入力、出力の全てをシーケンスとして指定することができます。例えば、翻訳の訓練の例は「フランス語に翻訳せよ;英語の入力文章;フランス語の翻訳文章」というシーケンスで表現できます。同じように、読解の訓練の例「質問に答えて下さい;文章;質問;答え」のように書けます。McCann et al. (2018) は、MQANという単一のモデルを訓練し、この形式の例に基づいて多くの異なるタスクを推論し実行することが可能であることを示しました。
But as exemplified in McCann et al. (2018), language provides a flexible way to specify tasks, inputs, and outputs all as a sequence of symbols. For example, a translation training example can be written as the sequence (translate to french, english text, french text). Likewise, a reading comprehension training example can be written as (answer the question, document, question, answer). McCann et al. (2018) demonstrated it was possible to train a single model, the MQAN, to infer and perform many different tasks on examples with this type of format.
つまり、翻訳のタスクのためにアーキテクチャを変更したり、質問応答のためにアルゴリズムを変える必要はないということです。言語によるタスクや期待される結果は、言語のシーケンスで表現できます。
例として挙げられたモデルMQANでは、すべてのタスクを質問応答(QA)形式に統一しました。これによって、単一のモデルでありながら多くのタスクにおける推論が可能となっています。
ただし、MQANはラベル付きデータを使用してモデルを訓練します。各タスクには、入力(質問とコンテキスト)と対応する出力(回答)が含まれており、これに基づいてモデルが学習します。
しかし、GPT-2ではあくまで教示なし学習にこだわります。なぜなら導入で解説していたように教師あり学習には限界があるからです。
言語モデリングでは、McCann et al. (2018)の論文で扱われたようなタスクを教師あり学習なしで行うことが原理的には可能です。
Language modeling is also able to, in principle, learn the tasks of McCann et al. (2018) without the need for explicit supervision of which symbols are the outputs to be predicted.
「原理的には」と言っていますが、どのような原理なのでしょうか。
教師あり学習を包括する教師なし学習
論文は次のように続けます。
教師あり学習と教師なし学習の目的はほぼ同じです。異なるのは、教師あり学習では、シーケンスの一部に対してのみ評価される点です。つまり、究極的には、教師あり学習と教師なし学習は、同じ最適化を目指しています。
Since the supervised objective is the the same as the unsupervised objective but only evaluated on a subset of the sequence, the global minimum of the unsupervised objective is also the global minimum of the supervised objective.
タスクとその答えをシーケンスの中に含めて行う教師あり学習は、答えの部分との比較だけで評価されます。それは与えられたシーケンスの一部でしかありません。一方で、言語モデリングの教師なし学習はシーケンス全体を利用し学習と評価が行えます。だから、教師なし学習はある意味において教師あり学習を含んでおり、目指していることは同じです。
もちろん、これは単純化した議論ではあります。これに関して論文はこう続けます。
このやや単純化された設定では、Sutskever et al., 2015で議論されている確率密度の推定を訓練の目的とする際の問題は回避されています。
In this slightly toy setting, the concerns with density estimation as a principled training objective discussed in (Sutskever et al., 2015) are side stepped.
ここで参照されているSutskever et al., 2015では、教師あり学習より教師なし学習のパフォーマンスが悪い理由を研究しています。その原因として、教師なし学習が習得した確率分布が実際のタスクに役立つものになっていないということが挙げられています。それは、教師なし学習が同じ目的を目指していないということでもあります。
端的に言うと、以下になります。
教師あり学習では、ラベル付きデータを用いてモデルを訓練し、直接的にタスクの目的に合致した損失関数を最小化します。
教師なし学習の目的は、データの構造や分布を学習することであり、これは必ずしも固有のタスクの性能向上に直接つながるわけではありません。
つまり、教師あり学習と同じ目標を持たないため、教師なし学習によって得られる知識やモデルが実際のタスクに有効でないということです。
しかし、タスクを条件として扱うようにした言語モデリングでは教師あり学習と教師なし学習は同じ目的を目指しているためのこの問題が生じないと主張しています。単純化(あるいは理想化)されていますが、理論的な筋は通っています。
ただし、多数のタスクを条件として含めた教師なし学習というのは実際に成立するのでしょうか。論文は、この点についてこう続けます。
問題はむしろ、実際に教師なし学習で目的を達成することができるかどうかになります。仮説の検証をしたところ、十分に大きな言語モデルがこの単純化された設定でマルチタスク学習を行えることが確認されましたが、その学習速度は明確に教師ありのアプローチに比べてはるかに遅いことがわかりました。
The problem instead becomes whether we are able to, in practice, optimize the unsupervised objective to convergence. Preliminary experiments confirmed that sufficiently large language models are able to perform multitask learning in this toy-ish setup but learning is much slower than in explicitly supervised approaches.
論文でも「実際に教師なし学習で目的を達成することができるか」ということを気にしています。しかし、何らかの実験を行い仮説の検証をしたところ、実態に多数のタスクを含んだ学習を教師なしで行えることが確認されました。
ただし、そのような教師なし学習には時間がかかります。教師あり学習よりずっと遅いことがわかりました。
それでも、教師なし学習でさまざまなタスクに対応することが可能であるのは魅力的です。なぜなら膨大なラベルなしデータを利用することができるからです。
マルチタスク学習のアプローチ
論文はこう続けます。
上記のように簡潔に定義された設定から「現実世界の言語」の混沌とした状況に進むのは大きな一歩ですが、Weston (2016) は対話の文脈で、自然言語から直接学習できるシステムを開発する必要性を主張し、教師の出力を前向き予測することで報酬信号なしにQAタスクを学習する概念実証を示しました。
While it is a large step from the well-posed setup described above to the messiness of “language in the wild”, Weston (2016) argues, in the context of dialog, for the need to develop systems capable of learning from natural language directly and demonstrated a proof of concept – learning a QA task without a reward signal by using forward prediction of a teacher’s outputs.
単純化された仮定に基づく設定には、現実世界の言語に含まれるノイズや曖昧さやエラーなどは考慮されていません。よって、実際にうまくいくかどうかは疑問が残ります。
Weston (2016) の研究によると対話を通して自然言語から直接に学習することが可能であることが実証されました。この学習では、システムは教師の出力を予測することで学習します。この手法により、QAタスクを効果的に学習できることが確認されました。なお、強化学習で使われる報酬信号(Reward Signal)を必要とません。よって、対話を通した言語モデリングと言えるでしょう。
ただし、対話を使うことはただでさえ遅い教師なし学習がさらに遅くなり、またデータを集めるのも大変です。
そこで論文はこう続けます。
対話は魅力的なアプローチですが、私たちはそれが過度に制限的であることを懸念しています。インターネットには、インタラクティブなコミュニケーションを必要とせずに利用可能な膨大な情報が存在します。
While dialog is an attractive approach, we worry it is overly restrictive. The internet contains a vast amount of information that is passively available without the need for interactive communication.
つまり、インターネットにある膨大なテキストデータを利用すれば、リアルタイムな対話を利用する必要はないということです。
私たちの推測では、十分な容量を持つ言語モデルは、それらをより良く予測するために、自然言語シーケンスに示されるタスクを推論し実行することを学び始めるでしょう。タスクがどのように与えられるかに関わりなく。
Our speculation is that a language model with sufficient capacity will begin to learn to infer and perform the tasks demonstrated in natural language sequences in order to better predict them, regardless of their method of procurement.
十分な容量を持つ言語モデルは、タスクを含めた自然言語のシーケンスから教師なし学習を行うことで、さまざまなタスクに対して推論し実行するようになると主張しています。
もうアプローチに関する結論は出ていますね。
言語モデルがこれを行うことができれば、実質的に教師なしのマルチタスク学習を実行していることになります。
If a language model is able to do this it will be, in effect, performing unsupervised multitask learning.
これでGPT-2のアプローチが見えてきました。
大きな容量を持つモデル
莫大なラベルなしテキストデータ
さまざまなタスクをシーケンスに含める
言語モデリング(教師なし学習)
以上によって、マルチタスク学習を行うことです。論文のタイトル「言語モデルは教師なしマルチタスク学習者」(Language Models are Unsupervised Multitask Learners)の意図が透けて見えます。
私たちは、言語モデルがこの場合に該当するかどうかを、ゼロショット設定で様々なタスクに対するパフォーマンスを分析することでテストします。
We test whether this is the case by analyzing the performance of language models in a zero-shot setting on a wide variety of tasks.
あとはゼロショットで性能が証明されれば成功なわけです。
次回予告
これまで読んできて、GPT-2のアプローチは概念として理解しました。しかし、もう少し具体的にどのようなデータセットや入力表現を使うのかなどの詳細も知りたいものです。
次回もセクション2「アプローチ」の続きを読み進めます。
お楽しみに!
