生成AIって、基本的に、入力された文章からデータベースを検索して、次の単語を選んで出力を繰り返しているだけで。
この検索方法が、ちょっと(いや、かなり)特殊ということが通常のデータベース検索との違いです。
まぁ具体的には、検索パラメータが非常に多いとか。検索結果の近辺も同時に複数持ってくるとか。
この検索パラメータに少し乱数を与えたり、複数の結果から確率的乱数で最終結果を決定したりして、回答誤差を作ったり。
つまり、データベースに載っていないものは検索できないし、データベースに載っていない結果も出せないのです。
ただ、かなり細かいトークン単位でデータが入っているので、その組み合わせで新しい言葉を作ったように見えることもあります。
日本語であれば、漢字で書かれた知らない単語でも漢字の意味からそれらしい検索もするでしょう。
データベースを検索するためのパラメータは、ある程度まで人間が回答として好ましいものと好ましくないものを判断して、パラメータを作っていきます。
(正確には、人がパラメータを作ることはほぼ不可能なほどの多さ、複雑さなので自動で作らせる状態ですが)
この段階がちょっと気になる所で、何が好ましいのかは学習させた人の判断で全体の方向性が決まっていくので。
一応は、回答全体での言語としての正しさとか、世界での一般的な倫理観などが中心となるはずですが。
このデータベースがどうなっているのか、説明し切れるかな?
まず、紙に横一本の線を書いて、これをX軸としてジャンルとする。
横線のある部分は、野菜を表し、ある部分は果物を表すとして野菜や果物の名前を書いていく。トマトとかは、中間より少し野菜側くらいですかね。
このままだと、かなり混み合うと思います。
次に横線の中央に縦線をかいて、これをY軸として色とする。わかりやすく、スペクトラムにしてしまおう。上が紫で下が赤で、中間が緑とか。
果物や野菜の名前を上下方向に移動していくと、分類が少しバラけて見やすくなります。
これで2次元。
さらに、紙の上下方向、紙に書かれた線の前後方向に、立体的にZ軸を作って言語とする。
ラテン語圏なんかは近いあたりになるかな。日本語と中国語も近くなりそうですね。
現在、すべて日本語で書かれているのであれば、各言語に対応する名前も記載する。言語によっては存在しない果物もあるでしょう。
と、こんな感じで、小さなLLMでも2048次元とかあったりします。
しかもジャンルや色のような明確な区切りでなく、その時の学習で自動的に作られた、何かの基準。
多分、同じ設計で同じ学習をさせたLLMでも、各次元が何を表すのかは変わってくるでしょう。
入力された文字の組み合わせからパラメータを特定して、
各文字のパラメータの行列変換を繰り返し、最終的な空間近辺を回答として出力しているわけです。
これだけで、かなり長くなってしまって。続きは、そのうちに。