見出し画像

AIモデルの進化を体感〜GPT-4時代に進化を感じるために敢えてGPT-2に挑戦〜

最新のAIモデル、GPT-4は非常に強力で高度に進化していますが、その基礎となったモデル、GPT-2を理解することで、今のAIの世界を少しでも深く理解することができるかもしれないと感じて、挑戦してみました。


GPT-2をPythonで敢えて今挑戦する理由

現在、GPT-4まで進化を遂げたAIモデルが存在しますが、GPT-2の基本的なパラメータ数と仕組みを理解することは、そもそもChatGPTによってどのように処理されるのか、その理解を深めることに繋がるのではないかと感じたためです。

1. Google Colaboratoryの準備

今回は、GoogleアカウントさえあればPythonを実行できるGoogle Colaboratoryを使います。

2. GPT-2の実践

Pythonライブラリtransformersとtorchをインストールし、事前学習済みのGPT-2モデルを使ってテキスト生成を試します。

2.1 Pythonモジュールのインストール

GPT-2を扱うために、以下のPythonライブラリをインストールする必要があります:transformerstorchです。

そのため、セルの箇所に下記を入力します。セルに入力したものを実行するので、「Shift」を押しながら「Enter」を押します。

!pip install transformers
!pip install torch
Google Colaboratoryでのモジュールのインストール

2.2 テキスト生成

次に、Hugging Faceのtransformersライブラリを使用して、GPT-2モデルを用いてテキスト生成を行います。ここでも、セルに入力したものを実行するので、「Shift」を押しながら「Enter」を押します。

from transformers import pipeline

# テキスト生成パイプラインを作成します。ここでは事前学習済みの 'gpt2' モデルを使用します
text_generator = pipeline('text-generation', model='gpt2')

# 入力テキストを指定し、テキストを生成します
input_text = "織田信長は、"
output = text_generator(input_text, max_length=200, temperature=0.7, do_sample=True)

# 生成されたテキストを表示します
print(output[0]['generated_text'])
Google ColaboratoryでのGPT-2の出力

結果は下記の通りで、理解できないものになりました。

織田信長は、投紅水森級の中に、食べてお笑う、滅折評の海放除を開わるようかけど、その力には、投紅水森級がいうと思われる。 [Source: Wikipedia]

GPT-2の出力

理由としては下記のようなことなどが挙げられます。

言語の問題:事前学習モデルであるGPT-2は主に英語のテキストで訓練されています。そのため、日本語を入力としても適切な日本語の出力を生成することは難しいです。GPT-2の基本的な学習データセットは、ウェブから収集された大量の英語テキストですので、日本語の文脈を理解し、それに基づいて適切な出力を生成する能力は限定的です。

トークナイザの問題:デフォルトのGPT-2は英語のためのトークナイザを使用しています。これは英語の単語やフレーズをトークン(処理可能な単位)に分割します。したがって、日本語のテキストを適切にトークン化することは難しく、結果としてモデルの出力も不適切になる可能性があります。

ちなみに、トークナイザーについて知らない方もいらっしゃると思うので、下記に説明を載せておきます。

トークナイザーは、自然言語処理(NLP)の基本的なコンポーネントであり、テキストデータを小さな単位(トークン)に分割する役割を果たします。トークンは、大まかには単語、句、文節などの言語の基本的な要素と捉えることができます。そして、AIの学習モデルがテキストデータを理解しやすい形に変換するために重要な役割を果たしています。つまり、テキストデータを機械が理解できる形式に変換するという重要な役割を担っています。

トークナイザーの説明

3. 日本語が学習されたsmall Japanese modelのGPT-2で実施

GPT-2の日本語テキスト生成能力を改善するため、次に日本語で訓練された下記のGPT-2 small Japanese modelに挑戦してみます。

これは、日本語のWikipediaデータセットで訓練されたGPT-2 smallモデルを含んでいます。訓練データとしては、2021年8月時点の日本語Wikipediaデータセットを使用し、これを訓練、検証、テストの3つに分割ししており、訓練セットには約540Mのトークンが含まれているとのことです。

3.1 モジュールのインポート

セルに入力した通りにモジュールのインポートを実行するので、「Shift」を押しながら「Enter」を押します。

!pip install transformers torch sentencepiece

3.2 テキスト生成

テキスト生成を行うべく、ここでも「Shift」を押しながら「Enter」を押します。

pipeline = transformers.pipeline("text-generation", "colorfulscoop/gpt2-small-ja")
pipeline("織田信長は、", do_sample=True, top_p=0.95, top_k=50, num_return_sequences=3)

出力結果は下記の通りです。num_return_sequencesで生成文章の数を3個に指定したので、3つの文章が戻されています。

[{'generated_text': '織田信長は、京都と遠江国・駿河国、下野国の両国において守護に任じられる。文明'},
{'generated_text': '織田信長は、この「有様」を称賛した(有様は、当時の公家社会の慣習'},
{'generated_text': '織田信長は、自ら討伐軍を率いて北征しようとした。しかし、同年10月に、王・は'}]

GPT-2 small Japanese modelの出力

その結果、先程と比較して良い日本語の出力が得られ、その内容が正しいとは言えませんが、ある程度は理解できるものになりました。これは、学習データの言語と分野がモデルの出力に大きく影響を及ぼすことを示しています。

GPT-4との賢さの違いを改めて体感

GPT-4と比較して、GPT-2はパラメータ数が少ないことなどもあり、その限界を探ることで、AIモデルがどのように進化してきたかを理解することができる気がします。今回は、学習済みのものを利用しただけでしたが、学習について取り組んだり、パラメータをもっと調整することで精度がどれくらい上がるのかも興味が湧きました。

GPTの進化

やはり、GPT-4とGPT-2を直接比較すると、その進化のスケールは明らかです。GPT-2は約15億のパラメータを持ち、インターネットから収集された大量のテキストデータに基づいて訓練されました。一方、GPT-4はなんと約5000億〜100兆のパラメータを有し、更に多くのデータと時間をかけて訓練されています。この規模の差は、モデルの性能と理解力の違いにも反映されています。したがって、GPT-2を学習することで得られる基礎知識は価値がありますが、最新のモデルを理解し利用するためには、その規模と複雑さについても理解することが必要となりそうです。

ご参考

日本語でGPT2モデルの日本語対応を強化するために、下記のように取り組まれている方を見つけました。

この記事が気に入ったらサポートをしてみませんか?