GPT#

GPT(Generative Pretrained Transformer)はTransformerベースの言語モデルです。ChatGPT などの生成系 AI アプリケーションの基礎となっている人工知能 (AI) の重要な新技術です。GPT モデルにより、アプリケーションは人間のようにテキストやコンテンツ (画像、音楽など) を作成したり、会話形式で質問に答えたりすることができます。さまざまな業界の組織が、Q&A ボット、テキスト要約、コンテンツ生成、検索に GPT モデルと生成系 AI を使用しています。

GPTはOpenAIによって定期的に新しいバージョンが公開されていますが、ここではGPT-2について解説します。

入力表現#

GPTの入力は、入力トークン列に対応するトークン埋め込み\(e_{w_i}\)と位置埋め込む\(p_i\)を加算した埋め込み列です。

\[ x_i=e_{w_i}+p_i \]

事前学習#

GPTの事前学習タスクは、入力されたトークン列の次のトークンを予測することです。ここで、GPTはデコーダ構成のTransformerを用います。

学習に用いるトークン列\(w_1,w_2,...,w_N\)におけるのトークン\(w_i\)を予測することを考えます。GPTでは、予測確率を使った負の対数尤度を損失関数として事前学習を行います。

\[ \zeta(\theta)=- \sum_i log P(w_i|w_{i-K},....w_{i-1},\theta) \]

ここで、\(\theta\)はモデルに含まれるすべてのパラメータを表します。

学習時にはMasked Self-Attention機構が導入され、入力トークン列の各位置において次のトークンを予測して学習が行われます。

学習時にはMasked Self-Attention機構が導入され、入力トークン列の各位置において次のトークンを予測して学習が行われます。

ファインチューング#

GPTの事前学習済みモデルに、下流タスクに合わせて変換するためのヘッドを追加し、下流タスクのデータセットを用いてモデル全体を調整します。

GPTは下流タスクを解く際、特殊トークンを用いて入力テキストを拡張します。

  • テキスト分類のタスクにおいては、文書の最初に<s>、最後に<e>が追加されます。

  • 自然言語推論のタスクにおいては、テキストの境界に$が挿入されます。

Huggingface transformerを使う#

from transformers import pipeline
#!pip install sentencepiece
#!pip install protobuf
generator = pipeline("text-generation", model="abeja/gpt2-large-japanese")
You are using the default legacy behaviour of the <class 'transformers.models.t5.tokenization_t5.T5Tokenizer'>. This is expected, and simply means that the `legacy` (previous) behavior will be used so nothing changes for you. If you want to use the new behaviour, set `legacy=False`. This should only be set if you understand what it means, and thouroughly read the reason why this was added as explained in https://github.com/huggingface/transformers/pull/24565
generated = generator(
    "東北大学は",
    max_length=100,
    do_sample=True,
    num_return_sequences=3,
    top_p=0.95,
    top_k=50,
    pad_token_id=3
)
print(*generated, sep="\n")
{'generated_text': '東北大学は、文部科学省の「大学発新事業創出プログラム(FIRST)」の採択を受けて、地域経済の活性化や人材の育成を支援する新たな研究拠点となる新拠点「東北大学多元物質科学研究所(仮称)」を宮城県内に開設する予定です。 新拠点開設により、本学はより高度な研究や高度な人材の育成が可能となることから、地域経済の活性化や人材の育成に貢献できると考えています。 東北大学多元物質科学研究所(仮称)は、本学の最先端'}
{'generated_text': '東北大学は3年連続でトップとなりました。 今回、研究部門はこれまで以上に重点的な研究や学術的展開をはかる必要性をあらためて痛感したことを契機に、研究活動の活性化が求められています。 研究部門の体制や研究体制は、研究業績が社会に貢献するために必要とされる研究の基盤であり、研究成果が社会と一体となって実を結ぶためには、研究活動の活性化が不可欠です。 東北大学は、研究成果の社会還元だけでなく、その成果'}
{'generated_text': '東北大学は「グローバル人材育成教育」を学んでいます。これは、国際社会で生き抜くために必要とされる「知力・思考力・判断力」や、「国際問題について広い視野を持つ」力を身につけるよう、国際学類1年次全員を対象に行っている教育プログラムです。「グローバル」とは「世界と自分をつなぐ」という意味であり、世界の現状を理解するとともに、日本という国の国際化戦略を理解すること、またグローバル人材として国際社会の中で自らの役割や価値を発信していく'}