Kento KAWAKAMi
ここにタイトルを入れるは、鈴木 忠、川上の3人で経験を言葉にして伝えることを目的としたポッドキャストです。
Kento KAWAKAMi
今週は川上のターンです。まず、緊急報告なんですけど、なんとですね、30手前でついに婚活を始めました。イエーイ、パチパチ!
Kento KAWAKAMi
パチパチ!パチパチ! 婚活やってますか、皆さん?
まあ、ぼちぼち。 このぼちぼち感の中に、俺もぼちぼちに入っていきました。これでやっていないのは、ただ先生だけになるかな。
はいはい。ということでね、婚活始めたんですけど、婚活始めてね、いくつか気づいたことがありますと。まあ、それをちょっと雑談と喋ろうかなって思うんですけど、
これ一番大きい気づきなんですけど、川上くんはですね、なんかの外観と比べて喋りがめっちゃポップだってことに最近分かりました。
それは確かにわかるかもしれない。 外観、結構なんかもうちょっと落ち着いた感じとか、なんかそういうイメージが多いらしくてですね。
喋り始めると思ったより声が高くてポップだなっていう感想がですね、多数寄せられております。 こちらはどうですかね?
Kohei Suzuki
でも確かに初対面で、思ったより喋るなっていうのは思ったので、穴がち反応としては
間違ってないんじゃないかなとは思います。 ですかね。
Kento KAWAKAMi
田田先生とはちょっと我々長い付き合いになってきましたが、どうですか?初対面のこと覚えてます?
でも確かに、外観だけで見たら、そんなによく喋るっていうタイプには見えない気がする。
でもなんか喋り始めるとすげー喋るやつじゃん?こいつ。 そうなんだよね。喋り始めると…
Kento KAWAKAMi
あ、関西の人ですか?みたいな気持ちになる。 そうなんですよね。なんか実は関西の人で、なんか忘れがちな設定なんですけど大阪出身なんですよね。
大阪出身だって喋ると、あーっていう反応をすごいもらうんで、なんかこう、そういうイメージもありながら喋り方ポップらしいんで、
Kento KAWAKAMi
ちょっともしかして外観もポップにした方がいいのかもしれないっていうことを考え始めたんですけど、あんまポップな外観が思いついてないですね。
Kohei Suzuki
おそらく逆効果なので、今のままの方は良いのではなかろうかという雑な感想。
Kento KAWAKAMi
ですか。じゃあちょっと、まぁこのままちょっと何か、何ヶ月か続けてみようかなって思ってます。で、なんかまた気づくことがあったらこういうとこで喋って共有できたらなーっていうふうに思ってますと。
Kento KAWAKAMi
はい。で、今日はちょっとですね本編が長いかもしれないんで早めに本編に入っていきたいんですけど、ちょっと皆さんちょっと最初に聞いてみたいことがあるんですけど、
Kento KAWAKAMi
チャットGPとかTとか、ギターボコパイルとかって使ったりとかしてますか?
あの困った時に、アイディア保守さんに話す人がいない時に聞いたりしてます。
話せませんとか使います?
これは使った方がいいのかなと思いつつ、永遠に使えてない勢として未だにいますね。
自分もなんかチャットGPTはたまに使うかなっていうぐらいなんですけど、やっぱり今手放さないのはGitHubコパイロットってやつなんですけど、
こいつがですね絶妙に便利なわけなんですね。
で、こういうのってランゲージモデルって言われてるやつなんですけど、ランゲージモデルって何なのかっていうと、何かご存知のことってあります?ランゲージモデルって何なの?って知っている方います?
なんか生成AIの文脈でよく聞くけどよくわかってないっていうのが正直なところです。
Kento KAWAKAMi
ですよね。自分も結構ちょっとは学生時代に機械学習っぽいことをやっていたのでわかるんですけど、結局何なの?っていうことは分からなかったんで、
Kento KAWAKAMi
今回はちょっとランゲージモデルを調べつつ、さらにその中で分からないものについて追加で調べたのでしゃべっていこうかなと思っています。
Kento KAWAKAMi
で、自分は主にさっき言ったようにChatGPTとかCopilotとか使ってるんですけど、これだって基本的に何かLLM、ラージランゲージモデルって言われてるんですね。
で、ラージランゲージモデルって何なのかって言うと、もうでかいランゲージモデルのことなんですけど、
Kento KAWAKAMi
じゃあランゲージモデルって何なの?って言うと、これはもうすごい発想としては簡単で、
ある文字列があったときにその次の文字列が何かっていう推測をする形で学習されたものをランゲージモデルって言います。
例えばどういうものなのかって言うと、例えばさっき言ったようにChatGPTっていう文字列があったとして、
Chatっていう文字列が呼ばれるときに次後ろは何が来るでしょうっていうのを推測するように学習するモデルっていうことをランゲージモデルって言います。
Kento KAWAKAMi
で、ラージランゲージモデルはその通りでかいニューラルネットワークでいっぱいのデータを使って学習したでかいモデルのことを
LLM、ラージランゲージモデルっていうふうに呼ばれてるっていう感じですね。
なんで結局のところを言うと、めっちゃでかいデータでディープライニングで頑張ってこのランゲージモデルを学習しましたよって感じですね。
で、このLLMでChatGPTとかCopilotとかって言われるものはおそらくですがトランスフォーマーっていうモデルを利用していますと。
Kento KAWAKAMi
このトランスフォーマーをめっちゃでかく使って今LLMっていうのが発達してるって感じなんですね。
Kento KAWAKAMi
で、LLMどういう感じで使われてるのかっていうのはわかりやすく軽くしゃべっていくと、
例えばさっき言ったようにランゲージモデルっていうのは次にある出力を推測するモデルになっています。
Kento KAWAKAMi
例えばどういう例なのかというと、あるこういう入力を考えますと1たす1は2開業、2たす2は4開業、3たす3イコールっていうとこまで入力をして続きをランゲージモデルに推測してもらおうっていうことをします。
これで我々はランゲージモデルに6って推測っていう出力が出されることを期待しているっていう感じに使い方をします。
これが6って出てくるとどういうことなのかと我々受け手が認識するかっていうと、
Kento KAWAKAMi
あれなんかランゲージモデルって考えてんじゃねっていうふうに認識をするっていうのが主な使われ方ですね。
で、このランゲージモデルっていうのは基本的には次の文字列を出力するように学習されているので、
さっき言ったような感じでいくつかの入力パターンを書いてその次に出てくるのは何っていうような形で使われるっていうことが多くあります。
これはフューショットラーニングみたいな感じで言われるようなとか、あとはプロンプトエンジニアリングって言われるような文脈で使われるような技術になっています。
なのでプロンプトエンジニアリングって言われたらこんな感じでALMに入力する前の基本的な文字列のところを用意するみたいな感じのことっていうのを頑張って考えておく、
事前に考えておくっていうのがその技、そのプロンプトエンジニアリングって言われるようなものになっていきます。
Kento KAWAKAMi
これが基本的なLMなんですけど、じゃあそれだったらチャットってどうなってんのって話なんですけど、これは対話を出力しやすくファインチューニングされたモデルっていうのがチャット向けのモデルになっています。
これが俗に言われるチャットGPTとかってやつですね。
Kento KAWAKAMi
チャットGPTっていうのは何なのかっていうとGPTって言われるプレトレーニングのモデルに対して人間が頑張ってこれは対話っぽいとか対話っぽくないみたいな感じのやつとかを評価しまくりまして作成したモデルをベースにいろいろラベル付けをしてチャットっぽい会話をするようにファインチューンされたモデルっていうことになっています。
Kento KAWAKAMi
ここまでは結構わかりやすいじゃないですか。入力に対する出力をするように学習したんだなーっていうのはわかりやすいんですけど、最近ですね、マルチモーダルLLMっていうのが結構一般的に出てきてるんですけど、マルチモーダルLLMってご存知のことあったりします?どんなものかなってイメージあったりします?
Kohei Suzuki
わかりません。
マルチモーダルが何かがわかりません。
Kento KAWAKAMi
そこから解決をしていこうと思います。
マルチモーダルLLMって何なのかっていうと、一番有名なのがGPT-4VっていうものだったりとかGoogleのGeminiみたいなやつが有名だったりするんですけど、要は画像も入力として扱えるLLMっていうことになっています。
マルチモーダルの何なのかっていうと、主には画像とか音声とかいろんなメディアをLLMに対して入力できるように変換してLLMとして扱ってあげようっていうのがマルチモーダルLLMになっています。
例えば、チャットGPTとかに画像を入力して、この画像に犬が何匹写ってますか?みたいなのを聞くと、犬が何匹写ってるかをカウントして返してくれたりするっていうのが基本的なマルチモーダルになります。
これはちょっとあんま直感的じゃないなって個人的に思っていて、なぜなのかっていうと、ランゲージモデルって言語の次を推定するモデルだったはずなのに、
なんで画像についての情報を取ってこれてんのっていうのが正直、あまり理由がよくわかってないんですね。
ということで、ちょっとマルチモーダルよくわからんなと思って適当に調べてきたなっていうのが今日の回になっています。
なんで今回はほぼヤジウマ精神で調べてきた内容になっているので、ヤジウマ程度の理解力というふうに思って聞いてください。
ヤジウマ程度なんですけど、それなりにそんなに大外れしたファーボールみたいな状態ではなくて、それなりのところにボールは投げられてるんじゃないかなというふうには自分で思っていますが、
Kento KAWAKAMi
あくまでもヤジウマぐらいだなと思ってください。ということで、マルチモーダルLLMについてしゃべっていきたいと思います。
Kento KAWAKAMi
質問とかあったら随時してもらっても大丈夫なのでお願いします。
まずマルチモーダルLLMって何なのかっていうと、先ほど説明したんですけど、マルチモーダル主に言語を用いて画像とか動画とかを扱うことができるモデルっていうのがマルチモーダルLLMっていう形になっています。
主に行われるタスクっていうのが画像の中の情報の抽出だったり、あとは画像の分類。この画像は中に何が写ってますかみたいな感じの分類問題を解いたりだとか、
Kento KAWAKAMi
あとは中に入ってある文字列を抽出するみたいな感じのことも行われたりするみたいです。
Kento KAWAKAMi
どういうふうに使われるかというと、例えばジム内のチャットの画面に行って画像をアップロードして、これって何ですかみたいな感じのことを聞くと、
Kento KAWAKAMi
それなりに回答をしてくれるっていうような使い分かり方になっています。
Kento KAWAKAMi
実際、自分が気になったのは画像とMLってどう関連して学習されてるんですかねみたいなことが気になったので調べてみて、
LLMって何なのかというと雰囲気を感じた方に思い浮かぶものがあると思うんですけど、スティーブルディフュージョンってご存知ですか?
Kohei Suzuki
わかりません。
Kento KAWAKAMi
スティーブルディフュージョンって言いますと、拡散モデルっていうのを基本的に使って、テキストから画像を生成してくれるモデルのことなんですけど、
Kento KAWAKAMi
この空間に落とし込む方というのをエンコーダー、その落とし込まれたベクトル空間から持ち列とか出力に得るものというのをエンコーダーという言われ方をします。
こういうLLMのエンコーダーとかで一番有名なのは、たぶんBERTとか、そう言われるものだったりするんですけど、
皆さん、ワードトゥーベックってご存知ですか?
Kohei Suzuki
その単語しか知らないです。
僕も単語だけ聞いたことあるなって感じです。
Kento KAWAKAMi
ワードトゥーベックっていうのは結構、ランゲージモデルの結構元祖みたいなやつで、
Kento KAWAKAMi
ある文章、これも文章を学習するんですけど、ある文章を考えるときに、
Kento KAWAKAMi
ある文章をまず単語に分割しますと。
単語の列に対してある単語を隠しますと。
Kento KAWAKAMi
その隠された単語が何ですかというふうに学習をします。
Kento KAWAKAMi
そういうふうにいろんな言語、いろんなテキストを用いて学習していくと、
ある単語を入力したときに、その単語を表す特徴っていうのが得られるようになるんじゃないかっていうので、
得られたベクトルを得るっていうのがワードトゥーベックなんですね。
要はあるシークエンスに対して、そのシークエンスが周りにどういう影響を与えているのかっていうのを得ることができるっていうモデルなんですけど、
一番有名なのが、
Kento KAWAKAMi
東京から、フランスから東京を引いたら大阪になるみたいな感じのテキストの演算ができるみたいな感じなんですよね。
どういうことなのかっていうと、ある単語の人間が捉えている意味空間っていうのを取り出すことができたんじゃないかみたいな感じの研究なんですけど、
Kento KAWAKAMi
それからちょっと発展して、じゃあワードトゥーベックのベクトルをいっぱい集めたら、
文章そのものの意味を数値的に扱えるんじゃないかっていうふうにいろいろみんな頑張ってたわけなんですけど、
結構それっぽいことがLLMの世界でも起きていて、LLMを用いてある長い文章を入力しました。
その入力された文章を元に生成された中間ベクトル、要はエンコーダーによって生成されたベクトルっていうのは、
ある文章の意味を表してるんじゃないかっていう考え方ができるんじゃないかっていうふうに使われています。
これがエンコーダーの機能で、例えばBERTとかっていうモデルでは、ある文章を入力したときにその文章があるスペクトルっていうのを
中間表現として出すことができるっていう問題になっています。
このあるLLMの入力に対して特徴量を得ることができるっていう機能を用いて、
画像をテキスト空間にいい感じにマップしてあげようみたいな感じの試みが行われていました。
それでその試行が一番有名なのが、オープンAIが開発したCLIPってやつなんですけど、
これは何なのかっていうと、さっき言った言語モデルの中間表現、埋め込み表現に対して、
埋め込み表現ってどっちなのか、中間表現、エンコーダーに使われたベクトルに対して画像がそれになるように学習したモデルになっています。
どういうことなのかっていうと、まず画像とその画像を説明するテキストの組みっていうのをいっぱい用意します。
例えば犬が写っている画像だったら、この画像の中には犬が3匹いる、猫が何匹いるみたいな感じのテキストをいっぱい用意しますと。
それをテキストをまずLLMに入力してベクトル化しますと。
画像はパーセプトロンか何かを用いた機械学習の層にかませて、
Kento KAWAKAMi
そのテキスト結果の出力に近くなるようにニューラルネットワークを学習していくという風に学習をしますと。
これはするとどういうことになっているかというと、画像をニューラルネットワークのテキストの表現の空間にマッピングするっていう学習をしているっていうことになるんですね。
Kento KAWAKAMi
これどういうことなのかというと、つまり画像を自然言語の空間で説明するように変換できているっていうことになるんですね。
ちょっとイメージ湧きますかね。
Kohei Suzuki
ぼんやりと。
Kento KAWAKAMi
軽く何を学習しているのかっていうのはわかりやすいですよね。
なんでそれをいっぱい学習していけば、ある画像をテキストの空間に変換してくれそうなモデルが出来上がるっていう寸法なんですね。
なんでどういうことになっても、LLMの空間がある程度表現できていると仮定をして画像を説明するモデルを作ったっていうことなんですね。
これって結構面白くないですか。
例えば、画像の中にいてそれが猫に眠っているっていう画像を説明するテキストと機械学習されたモデルが同じ空間を指すようになるっていう。
Kohei Suzuki
うん、なんか賢いなっていう。
Kento KAWAKAMi
そう、これ思いついたのが結構賢いですよね。
こういうモデルに対して、こういうモデルがまずベースとして画像のエンコーダーっていうのが作られましたと。
MLMでは、マルチモデル、ランゲージモデルでは、この画像のエンコーダーとLLMをどうやって繋げてあげようかっていうのが基本的に行われているタスクになっています。
具体的にはどういう処方法が行われているのかっていうと、
Kento KAWAKAMi
例えばですけど、この画像を説明された空間ベクトルがあるんで、そっからうまく説明するようなクエリっていうのを生成してあげようっていうのがひとまず一大分野ですと。
Kento KAWAKAMi
なんか画像からテキスト生成と何が違うのかって言われると思うんですけど、こっちに関しては画像をまずテキストの空間ベクトルに変換してあって、
さらにそれをランゲージモデルに入力しやすいクエリ形式に変換してあげるっていうところを学習してあげるっていう手法になっています。
Kento KAWAKAMi
これは結構ちょっとわかりやすいですよね。なんか説明できる空間に対してその説明テキストをいい感じに生成してあげるモデルをさらに学習してマルチモデルにするっていう、これは結構直感的かなと思いますね。
で、あとはもう一個の手法としては、画像をベクトルにできたんだったら、そのベクトルをもうそのままLLMのトークンみたいな感じで扱ってあげて、画像トークンをLLMの一単語と同じような扱いにしてLLMに入力するっていう方法があります。
これちょっと何言ってるか意味わかんないなって思うんですけど、俺も結構何言ってるか意味わかってなくてこのあたりって。
どういうことなのかっていうと、ある画像とその画像を説明するテキストっていう連続表現があると仮定しています。
例えば猫の画像が前にあって、その猫の画像はこれは猫ですっていう文字列が連結して表示されるようなテキストファイルをいっぱい作ります。
Kento KAWAKAMi
で、この画像を多分何分割かにして、それぞれをトークン化してLLMに入力をしてあげて、LLMの学習を再度やり直して、ある画像のトークンに対しても反応できるモデルを作ってあげようっていうことをやったりとかしますと。
どうですか、これが一番もう言葉で説明しづらすぎて、今日どうしようかなって頭がかかえてきたんですけど。