ChatGPTのベースとなった論文を簡単に解説②
この記事は
の続きになります。

関連研究 自然言語処理における半教師あり学習
この研究は、自然言語処理における半教師あり学習のカテゴリーに広く属しています。このパラダイムは、シーケンスラベリングやテキスト分類などのタスクに応用され、大きな関心を集めています。最初のアプローチでは、未ラベルのデータを使用して単語レベルまたはフレーズレベルの統計量を計算し、それらを教師ありモデルの特徴量として使用しました。しかしながら、近年の研究では、未ラベルのコーパスで訓練された単語の埋め込みを使用することで、さまざまなタスクのパフォーマンスを向上させる利点を示しています。しかしながら、これらのアプローチは主に単語レベルの情報を転移させることが多く、私たちはより高次の意味を捉えることを目的としています。 最近のアプローチでは、未ラベルのデータから単語レベル以上の意味を学習して利用することが調査されています。未ラベルのコーパスを使用して訓練されたフレーズレベルまたは文レベルの埋め込みが、さまざまなターゲットタスクに適したベクトル表現にテキストをエンコードするために使用されています。
教師なし事前学習
教師なし事前学習は、教師あり学習の目的を変更するのではなく、良好な初期化点を見つけることを目的とした半教師あり学習の特別なケースです。初期の研究では、画像分類や回帰タスクでこの技術の使用が探究されていました。その後の研究では、事前学習が正則化スキームとして機能し、深層ニューラルネットワークにおいてより良い汎化性能を実現することが示されています。最近の研究では、この手法が画像分類、音声認識、エンティティの曖昧性解消、機械翻訳など、さまざまなタスクの深層ニューラルネットワークのトレーニングに役立つことが示されています。
この研究と最も近い分野は、言語モデリングの目的を使用してニューラルネットワークを事前学習し、その後、監視下でのターゲットタスクに対して微調整することです。DaiやHowardとRuderは、この手法を用いてテキスト分類を改善しています。しかしながら、事前学習フェーズが一定の言語情報をキャプチャするのに役立つという利点があるものの、彼らのLSTMモデルの使用により、予測能力が短い範囲に制限されることになります。それに対し、トランスフォーマーネットワークの選択は、私たちの実験で示されているように、より長い言語構造を捉えることができます。さらに、このモデルの効果を自然言語推論、言い換え検出、ストーリーの完了など、より広範なタスクにおいて実証しています。他の手法では、ターゲットタスクに対して教師ありモデルをトレーニングしながら、事前学習済み言語モデルまたは機械翻訳モデルからの隠れ表現を補助的な特徴量として使用します。これにより、各別々のターゲットタスクに対して多大な新しいパラメータが必要になりますが、私たちは転移時にモデルアーキテクチャを最小限に変更するだけで済みます。

補助的なトレーニング目的
補助的な教師なしトレーニング目的を追加することは、半教師あり学習の別の形態です。CollobertとWestonによる初期の研究では、POSタギング、チャンキング、固有表現認識、および言語モデリングなどの様々な補助的なNLPタスクを使用して、意味役割ラベリングを改善しました。最近では、Rei は、ターゲットタスクの目的に加えて補助言語モデリング目的を追加し、シーケンスラベリングタスクにおいて性能向上を示しました。私たちの実験でも補助的な目的を使用していますが、事前学習によって、すでにターゲットタスクに関連する複数の言語的側面を学習していることを示しています。
フレームワーク
トレーニング手順は2つのステージから構成されています。最初のステージは、大規模なテキストコーパス上で高容量の言語モデルを学習することです。これに続いて、ラベル付きデータを使用してモデルを識別タスクに適応させる微調整ステージがあります。
ステージ1 教師なし事前学習
教師なしのトークンコーパスU = {u1, . . . , un}が与えられた場合、次の尤度を最大化するように、標準的な言語モデリング目的を使用します。

ここで、kはコンテキストウィンドウのサイズであり、条件付き確率Pは、パラメータΘを持つニューラルネットワークでモデル化されます。これらのパラメータは、確率的勾配降下法を用いてトレーニングされます。 私たちの実験では、言語モデルには、トランスフォーマーのバリアントであるマルチレイヤートランスフォーマーデコーダーを使用します。このモデルは、入力コンテキストトークンに対して多頭自己注意操作を適用し、位置ごとのフィードフォワード層に続いて、ターゲットトークン上の出力分布を生成します。

ここで、U = (u−k, . . . , u−1)はトークンのコンテキストベクトル、nは層の数、Weはトークンの埋め込み行列、Wpは位置の埋め込み行列です。
確率的勾配降下法(Stochastic Gradient Descent, SGD)とは、機械学習において、最適化アルゴリズムの一つです。SGDは、勾配降下法の一種であり、誤差関数の勾配を計算し、その勾配を利用して、重みの更新を行います。しかし、通常の勾配降下法では、全てのデータを使用して勾配を計算するため、計算量が大きくなってしまいます。そこで、SGDでは、ランダムに選ばれた一部のデータ(バッチ)を用いて、勾配を計算します。これにより、計算量を削減することができます。 具体的には、SGDは、以下のような手順で重みの更新を行います。
データセットからランダムに一部のデータ(バッチ)を取り出す。
バッチ内のデータを用いて、誤差関数の勾配を計算する。
勾配の方向に対して、一定の学習率を掛けた値を重みから引くことで、重みを更新する。
1〜3を複数回繰り返すことで、重みを更新していく。 SGDは、データセットが大規模な場合でも効率的に重みの更新を行うことができるため、機械学習において広く用いられています。
多頭自己注意(Multi-Head Self-Attention)とは、自然言語処理の分野において、文脈を考慮した単語のベクトル表現を生成するための手法の一つです。自己注意とは、文中のある単語のベクトル表現を生成する際に、その単語自身と文中の他の単語との関係を考慮する手法のことです。 多頭自己注意は、複数の異なる注意機構を同時に用いて、文中の単語の表現を生成します。つまり、複数の異なる視点で文脈を考慮した表現を生成することができます。具体的には、各注意機構は、異なる重みを持つクエリ、キー、バリューの組み合わせを用いて、文中の単語との関係を計算します。そして、それらの関係を結合し、重み付き和をとることで、各単語の表現を計算します。 多頭自己注意は、トランスフォーマー(Transformer)などの機械学習モデルにおいて、広く用いられています。多頭自己注意を用いることで、文脈を考慮した高次元の単語表現を効率的に生成することができます。
例えば、「I have a cat. She is black.」という文があったとします。この文の各単語に対して、多頭自己注意を適用すると、以下のようなベクトル表現を生成することができます。
"I"のベクトル表現:[0.5, 0.3, 0.2, 0.1]
"have"のベクトル表現:[0.1, 0.6, 0.3, 0.2]
"a"のベクトル表現:[0.2, 0.1, 0.8, 0.4]
"cat"のベクトル表現:[0.4, 0.2, 0.6, 0.5]
"She"のベクトル表現:[0.6, 0.1, 0.3, 0.4]
"is"のベクトル表現:[0.2, 0.3, 0.1, 0.5]
"black"のベクトル表現:[0.3, 0.5, 0.4, 0.7]
この例では、単語ごとに異なる視点から文脈を考慮したベクトル表現を生成することができました。これにより、単語の表現がより複雑になり、より多くの情報を含むようになります。
ここでは簡単な例示として "cat" は[0.4, 0.2, 0.6, 0.5]のように4次元ベクトルを挙げてますが、自然言語処理のタスクにおいては、数百次元から数千次元程度のベクトル表現が使用されます。例えば、BERT(Bidirectional Encoder Representations from Transformers)やGPT-2(Generative Pre-trained Transformer 2)などのトランスフォーマー系モデルでは、768次元や1024次元のベクトル表現が使用されます。このような高次元のベクトル表現を用いることで、より多くの情報を含むより複雑な表現が可能となります。
トークンコーパスとは、自然言語処理の分野で、テキストを形態素や単語単位に分割したデータセットのことを指します。つまり、テキストをトークン化して得られるデータのことです。トークンは、テキストを構成する最小単位であり、単語、句、形態素などの形で表現されることが一般的です。トークン化されたデータを用いて、機械学習モデルをトレーニングすることができます。トークンコーパスの例として、英語のウィキペディアの全文などがあります。この場合、文章を単語や句、形態素などのトークンに分割して、それらをデータセットとして用いることができます。例えば、「The quick brown fox jumps over the lazy dog.」という文を単語レベルで分割すると、「The」「quick」「brown」「fox」「jumps」「over」「the」「lazy」「dog」という9つのトークンが得られます。このようにトークン化されたテキストをデータセットとして用いることで、言語モデルなどの機械学習モデルをトレーニングすることができます。
尤度(ゆうど)とは、統計学や確率論において、あるパラメータにおける観測データが生じる確率の関数を指します。通常、観測データが与えられたときに尤度を最大化するようなパラメータを求めることが目的とされます。尤度は、統計モデルのパラメータ推定やベイズ統計学、最尤推定などに広く用いられます。
微調整によるチューニング(最適化)
前述の式1の目的関数でモデルを訓練した後、教師ありターゲットタスクにパラメータを適応させます。入力は、各インスタンスが入力トークンのシーケンスx1、...、xmとラベルyで構成されたラベル付きデータセットCを仮定します。入力は、事前学習済みモデルを通過して最終トランスフォーマーブロッ
クのアクティベーション

を取得し、その後、パラメータWyを持つ追加の線形出力層に渡されてラベルyを予測します。

これにより、最大化すべき目的関数は以下のようになります。

さらに、Fine-tuningの補助的な目的として言語モデリングを含めることが学習を改善することがわかりました。これは、教師ありモデルの汎化性能を向上させ、収束を加速させるためです。この補助的な目的による性能向上は、以前の研究でも観察されています。具体的には、以下の目的関数を最適化します(重みλで重み付け)。

全体的に、Fine-tuning中に必要な追加パラメータは、Wy、および区切りトークンの埋め込みだけです。

図1:(左)この研究で使用されたTransformerアーキテクチャとトレーニング目的。 (右)異なるタスクでのファインチューニングのための入力変換。すべての構造化された入力をトークンシーケンスに変換して、事前学習済みモデルで処理し、線形+softmax層に続けます。
タスク固有の入力変換
テキスト分類のような一部のタスクでは、上記のように直接モデルをファインチューニングできます。質問応答やテキスト推論などの一部のタスクには、順序付きの文のペアや文書、質問、回答の3つ組のような構造化された入力があります。事前学習済みモデルは、テキストの連続したシーケンスでトレーニングされたため、これらのタスクに適用するにはいくつかの変更が必要です。以前の研究では、転移学習された表現の上にタスク固有のアーキテクチャを学習することが提案されています。このようなアプローチは、タスク固有のカスタマイズを再度導入し、これらの追加のアーキテクチャコンポーネントに転移学習を使用しません。代わりに、トラバーサルスタイルのアプローチを使用して、構造化された入力を私たちの事前学習済みモデルが処理できる順序付きシーケンスに変換します。これらの入力変換により、タスクごとにアーキテクチャを大幅に変更する必要がなくなります。これらの入力変換について簡単に後述で説明し、図1が視覚的な説明を提供します。すべての変換には、ランダムに初期化された開始トークンと終了トークン(hsi, hei)が含まれます。
トラバーサルスタイルのアプローチとは、異なるタスクに対して同じ学習済みモデルを使用することを可能にする、構造化された入力をシーケンスに変換するための手法です。これにより、異なるタスクに対して学習されたモデルのアーキテクチャを大幅に変更する必要がなく、再利用性が高まります。例えば、質問応答やテキストエンタメンを含むいくつかのタスクでは、入力が文のペアやドキュメント、質問、回答の三つ組などの構造化された形式で与えられます。トラバーサルスタイルのアプローチでは、これらの入力をシーケンスに変換して、既存の学習済みモデルに適用することができます。
トラバーサルスタイルのアプローチの具体例として、自然言語処理のタスクであるテキスト分類を考えてみましょう。テキスト分類では、テキストをカテゴリに分類することが目的です。例えば、ある商品レビューがポジティブかネガティブかを分類する場合などがあります。トラバーサルスタイルのアプローチを用いる場合、まずはじめに、大規模なテキストコーパスを使って、事前学習を行います。この学習済みモデルを、テキスト分類のタスクに転移学習するために使用します。
テキスト分類の場合、入力として与えられるのはテキストそのものですが、トラバーサルスタイルのアプローチを用いる場合には、このテキストをトークンに分割します。次に、トークンを連続した系列として表現し、この系列を学習済みモデルに入力します。このようにして、入力テキストを、学習済みモデルが処理できる形式に変換することができます。
他のタスクにおいても、同様にトラバーサルスタイルのアプローチを用いることができます。例えば、質問応答のタスクにおいては、入力として質問文と文書が与えられる場合があります。この場合には、まず質問文をトークンに分割し、次に文書とともにトークンの系列として表現します。このようにして、入力を学習済みモデルが処理できる形式に変換することができます。
テキストの含意判断タスクにおいて、前提pと仮説hのトークンシーケンスを、区切りトークン($)を挟んで連結します。
類似性タスクにおいて、比較される2つの文の順序は固有のものではありません。これを反映するために、区切りトークンを挟んで、可能な両方の文の順序を含む入力シーケンスを変更し、それぞれを独立して処理して2つのシーケンス表現

を生成し、要素ごとに加算して、線形出力層に入力します。
質問応答と常識推論の場合、文脈のドキュメントz、質問q、可能な回答{ak}が与えられます。ドキュメントコンテキストと質問を連結し、各可能な回答を加え、区切りトークンを追加して取得します。これらの各シーケンスは、独立してモデルで処理され、正解の確率分布を得るためにsoftmax層によって正規化されます。

ChatGPTのベースとなった論文を簡単に解説③ へと続きます。
(2023/4/9現在 準備中)
