背景
- 本日3月18日地点では、GPT-4はChatGPT Plus(有料プラン)でのみ解禁されています
- GPT-4の一番の目玉はマルチモーダル性で、画像付きで自然言語の質問をすることができます。
- しかし、ChatGPT Plusでの解禁はテキストの部分のみで、画像処理を試すことはできません
- さらに、GPT-4は論文を公開したが、そこにはデータに関する記載はありませんでした
- これは意図的なものと思われます。そのため、どのようなデータを用いて、画像とテキストを扱ったかは不明です。しかも、このまま公表されないことすらあり得ます。
目的
はやり仕組みが気になりますよね!
どうやって画像処理まで出来るようになっているのか!
この記事では、私が個人的に「多分こういう風に動いているだろうな」と思っていることを文章化します。
基本的にモデルの構造についてです。データをどういう風に集めたとかは、分かりようもないので気にしません
また、別の解釈や議論、追加の情報などあればコメントいただけると幸いです。
正式な発表などあれば、冒頭にリンクを差し込む予定です。
GPT-4の画像処理とは
見飽きたかもしれませんが、OpenAIのGPT-4のページから画像を拝借します。
ざっくり言うと、
ユーザー「この画像は何がおかしい?」
GPT-4「iPhoneは本当はLightningケーブルを使うのに、VGAケーブルが刺さってるよ!」
という感じです。
ソース:https://www.axion.zone/gpt-4/
[考察]どのように動作させているのか
背景知識
今回は3ステップで情報を整理し、考察します。
- GPT系列の思想
- GPT3の仕組み
- ViTの仕組み
ここを整理してから、結論に進みます。
GPT系列の思想
多くの解説記事があるため、簡単にふれます。
まず、GPT-2や3というのは、「Fine Turningしなくてもあらゆるタスクの問題が解ける大規模モデルを大規模なデータから構築する」というのが基本的なモチベーションです。
この点、逆に言うと、あまりモデルの構造自体にはモチベーションがありません。
実はGPT-2とGPT-3は、若干の違いはあるものの、基本はただTransformerを大量に連結させ続けた、というシンプルな構造をしてます。
この点から、「GPT-3とGPT-4においても、Transformerの数を増加させただけ、モデルに特別な構造は追加されていないだろう」 と想像できます。
GPT-3の仕組み
世界一簡潔な図でGPT-3を記述します。
左から文章(文字群)が入ってきて、Word Embeddingで各文字が特徴量になり、各文字の特徴量がTransformerに入力されます。
※厳密には、各文字の特徴量ではないです。理解のためシンプルにしてあります。
Transformerが何かはどうでも良いです。
大事なのは、こういった (ある単語が)ベクトル化されたものがTransformerに入力されれば処理できる ということです。
ViTの仕組み
ところで、Vision Transformerというものがあります。Transformerで画像処理してみた、という研究です。
簡単に言うと
- 画像をパッチに分解します
- 画像を一列に並び変えて特徴量にします
- 1dのベクトルになったのでTransformerに突っ込んで分類などのタスクを解きます
という感じです。ざっくりなので、細かいところは違うかも知れません。
ここで大事なのは、 画像をパッチに分解してTransformerに投入しても高い精度でタスクを解ける ということです。
個人的には感覚的にちょっと不思議(パッチに画像を分けるというのがなんとも美しさに欠ける)気がするのですが、とはいえ、画像をTransformerに入力する方法がわかりました。
まとめます。
あらためて、以下の仮定を立てます。
①あまりモデルの構造自体にはモチベーションがありません。GPT-3とGPT-4においても、Transformerの数を増加させただけ、モデルに特別な構造は追加されていないだろう
②ベクトル化されたものがTransformerに入力されれば処理できる
③画像をパッチに分解してTransformerに投入しても高い精度でタスクを解ける
もう結論はシンプルですね。推定されるGPT-4の構造は以下の感じです。
雑な図ですね笑
入力されてきているデータが画像かテキストかくらいは、一目瞭然なので、そこをIFで分岐させるのはそんなに難しくないでしょう。ですので、入り口だけはさすがにTextとImageで処理が異なるかと思いますが、Transformerの入力直前では、Text由来かImage由来かは関係なく、同じベクトル状態でTransformerに投入されていると思います。
また、この構造だと、「テキスト→画像→テキスト」というフォーマットもサポートできます。
例えば、「この画像にうつっているのは何? (( 画像 )) 左にあるのはコーヒーカップでその右側にあるやつ」
みたいなケースですね。ベクトル化してしまえば全部同じ、ということです。
最後に
以上は、基本的に想像です。これまでの傾向から、恐らくそうだろうと思って書いてはいますが、真実は公開されていないため不明です。
その点、ご了承ください