第6話 全ては「言語」
今回のお話はちょっと、コンピュータサイエンスの専門的な話が出てくるのでわかりにくかったらすいません。
これまで、ChatGPTに秘められた驚くべき力を紹介してきましたが、実のところChatGPTが「理解」することができるのは、いわゆる普通の人が言うところの「言葉」に限りません。
コンピュータ科学、中でも形式言語理論という分野では「言語」は単なる(数学的な意味での)「文字列」の集合として定義されます。
たとえば、言語 T = {"この素晴らしい世界に祝福を!","異世界おじさん", "お兄ちゃんはおしまい!", ...} で示される集合Tは「作品タイトル」を表す言語であるという風に言ったりします。そして、ここが面白いところなのですが「文字列」はいわゆる普通にイメージされる「文字の列」に限りません。前回紹介したアスキーアートについても、改行だって、単なる「文字」に過ぎないので「アスキーアート」という言語としてとらえられるわけですね。
ChatGPTなどの「大規模言語モデル(Large Language Model)」と呼ばれるものが面白いのは、この形式言語理論でいうところの「言語」なら自然言語に限らずあらゆるものを学習可能というところです。アスキーアートだって、コンピュータにとっては「ただの文字列」なので、アスキーアートの集合は「言語」として捉えられるものであり、英語や日本語と同様に学習してしまえるのです。
話がかなり小難しくなって来ましたが、実はこの「文字列の集合はなんでも言語である」というのはとても重要なことでして、たとえば創薬関係の企業では既に大規模言語モデルが使われています。この辺りは私の兄に聞いたのですが、タンパク質はアミノ酸の配列なので、タンパク質自体をアミノ酸の列の集合=言語として扱うことができるのです。そうやって作られたものをタンパク質言語モデル(Protein Language Model)というのですが、タンパク質言語モデルを学習させることで、創薬に役立つアミノ酸のパターンを発見できるそうな。さすがにこっちは専門外なので、どうやって創薬に役立つのかはわかっていませんが。
この考え方を応用すると、自然界にあるものがなんであれ、文字の列として記述できるなら、それはChatGPTのようなもので学習可能である、ということを導きだすことができます。確証はないのですが、Linuxターミナルをエミュレートしたような離れ業も、ターミナルの振る舞いを「言語」として学習した結果ではないかと思います。
さて、ここまで延々と「言語」としてとらえられるものならあらゆるものを学習可能であるということを説明してきましたが、ここからChatGPTは何か規則性のある文字の列なら何でも学習可能であろうという推測が成り立ちます。
というわけで、ちょっと面白い例としてBase64エンコードをChatGPTにやらせてみました。Base64エンコードというのは主に画像などの「アルファベットとしてデータを表現できない」データをアルファベット+数字+記号の列で表現するためのフォーマットです。
たとえば、
「ChatGPT」
という文字列をBase64エンコードすると
「Q2hhdEdQVA==」
となります。Base64エンコードも見方を変えれば「文字列の集合」=「言語」に過ぎないので、推測が正しければChatGPTにBase64エンコードを任せることもできるはずです。
では、早速Base64エンコード/デコードさせてみましょう。
予想通り、Base64エンコード/デコードできていますね。
さらに考えを広げてみましょう。コンピュータ上では、R(Red) / G(Green) / B(Blue)の組み合わせで色を表現するのが通例ですが、この「色コード」だって単なる列に過ぎないのですから「言語」のはずです。
最初と二つ目は予想通り。三つ目はいわゆる「マゼンタ」ですが、これは赤紫とも表現されるものなので、おおまかには間違っていないでしょう。おそらくChatGPTには「マゼンタ」という語彙が無いので「深い紫色」と表現したのでしょうけど、それにしても凄いです。
他にも色々試してみましたが、何かの対象を「言語」としてとらえてChatGPTに尋ねれば、結構いい感じの返答が返ってきます。
この「言語」であれば何でも学習できるという性質は、これまでの例でわかるようにとても汎用性が高いものでして、アスキーアートの例でもわかるようにある種の「視覚」すらエミュレートできてしまうようです。
おそらくですが、まだ思いついていないものでも「これは言語とみなせる」ような文字の列は大体学習できてしまうように思います。
形式言語理論は私の専門に若干近い分野なのですが、まさかAIという分野で応用ができるとは思っていなかったので、こういう結果には驚かされるばかりです。
これらの例から推測するに、たとえば「楽譜」とかも文字列で表されていればある程度学習できそう(既にされてそう)な気がします。おもしろそうなので、後ほど試してみようかと思いますが、ともあれ、あらゆる「言語」を学習できるポテンシャルがあるであろうChatGPTは、改めて興味深いテクノロジーだなと思うのでした。