続プロンプト
前回、chatGPTにお願いするプロンプトの話をしました。
より良さげな回答をもらうために、具体的で背景や要求内容が伝わるような指示を出すことにしている的なコメントを書いたのですが、感覚的にはそりゃそうだろと思いつつ、でもなんで?
言語処理のアルゴリズムでは、言葉を単位(トークン)に分割して、数値化(ベクトル化)すること自体は以前から行われていたと思います。
どうやらchatGPTのT(Transformer)がすごいってことらしく、ネット上でもいろいろな解説はされていますが、正直、Attentionとかの意味が私のような素人には正しく分からない!
(こっそりGPT君に聞いてみたけど、彼は優秀すぎた・・)
分からないなりに、
◼︎膨大な数のトークン1つ1つに対して、お互いの距離を学習によって計算している(位置情報としてベクトルの要素に加えている?)
◼︎回答でトークンを選ぶ際に、その前の(質問や回答の)ある程度の数のトークンから文意(文脈)を数値化(Encode)
◼︎次に来るトークンを選ぶために、全ボキャブラリの総当たりでスコア化(Decode)
◼︎正規化して確率を得る
みたいな流れと理解しました。
ここからは全く推測なので勘違いかもしれませんが、スコア化の際に文脈が影響する計算になっているということなのでしょう。ロール指定で対象範囲を絞れば分布が変わるのはなんとなく理解できますが、結局まだ勉強不足でした。
Temperatureの数値を変えると回答の多様性が増減するのは、確率分布からの選択に変化が出るのかな・・。
生成AIを使っても必要に応じて面白い(多様な)答えが出せるように、パラメータの使い方もぜひ学びたい。
ベクトルのサイズも1万次元とかですかね・・・。まあ数値演算なので半導体さんには何桁あろうが簡単なんでしょうけど。
でも、一語(トークン)ごと(実際には並列かな)にこんな計算してるんだと思うと、半導体の処理能力は半端ないですね。いずれにしても、「生成AI抜きではビジネスも成り立たなくなる時代」が迫ってきているのでしょうから、正しく理解して使いたいです。(「生成AI抜きでしか経営コンサル業が成り立たない時代」にはならないでね・・・。)