LLMの何がヤバいのか

私は仕事上、技術調査・企画みたいなことを結構長くやっていました。そのためか、会社の偉い人(かつコードを書いたりしていない人)に、ある技術がどうすごいのかを、うまく説明する方法をよく考えます。LLMについても、どう説明するのが良いのかずっと考えていたのですが、今日は現時点での説明を書いてみようと思います。

ChatGPTとかを使えば、LLMが「なんとなくすごい」のは誰でも分かります。
今までこういうものは無かったですからね。

偉い人が気にするのは、それが今後自社の製品、ビジネス、市場、ひいては世の中にどのような影響を与えうるのか、という点です。
で、その答えそのものというより、それを考えるために「LLMがどうすごいのか、ポイントは何か」を知りたいのです。
まあ、ありきたりの言葉で言うと「その技術の本質は何か」ということです。

技術の本質というのは、決して「仕組みそのもの」ではありません。その技術が持つ、従来の技術と根本的に違う価値は何か、ということです。

今の私の考えはこうです。

大体3つポイントがあります。(とりあえず「3つあります」というのはお約束ですね。)

(1)テキストデータから、我々が「意味」と呼んでいるものを、読み取っているように見える。

従来の技術は、文字列データの処理でした。意味を扱うには、「意味とは何か」を考えて、データの処理に翻訳して実装していました。例えば文章の意味を把握するために助詞の位置や係り受け関係、使われている接続詞を解析するなどです。
ところが、LLMにはそのような「意味を扱う処理」はありません。
ただ、入力と出力を観測する限りでは、処理できているように見えます。
LLMの内部でどのような処理が行われているのか、研究者も正確には分かっていないようです。ですから、LLMが文章の「意味」を処理できているのかどうか、本当のところは分かりません。けれども、従来の技術ではLLMと同等の処理を行うことが困難だったのは確かです。

(2)指示を自然言語で行うことができる。

従来はプログラミング言語を使って書いていた処理を、自然言語で行えるようになりました。
このことは(1)のポイントの延長上にあります。つまり、自然言語で行った指示の「意味」を理解できているか、あるいは(理解していなくとも)指示に沿った処理を実行できるらしい、ということです。(従来の計算機もプログラムの意味は理解していませんが実行はできます。LLMでは自然言語で書ける、というのがポイントです。)

もちろんなんでもできるわけではなく、数値計算などはむしろ苦手な領域ですが、その場合も「その処理を従来のプログラミング言語で行うプログラムを作成する」という、一段メタなレベルの指示をすることでクリアできます。

(3)手順化できていないタスクを実行することができる。

たとえば、文章の「要約」とか「翻訳」というように、概念として存在していて我々が自ら行うこともできるけれど、その手順をプログラムとして表現することが困難だった処理が、LLMに指示して実行できるようになりました。

これらの処理は、「手順」に分解する、つまりプログラムにするのはとても難しいのです。それは1つには、手順に落としていく段階で「文章の意味をどう扱うか」という問題を避けて通れないからです。要約も翻訳も、元の文章の意味をくみ取って、それをあまり大きく変えずに別の形の文章や言語で表現することが必要です。しかし、「意味をくみ取る」とはどういうことなのか、今もはっきりとは分かっていません。

ところが、LLMは「要約してくれ」「翻訳してくれ」といった要求を実行してくれます。(1)(2)とも関連しますが、LLMが「与えられた文章の意味」や「要約や翻訳といった指示の意味」を理解しているかどうかは判りません。しかしアウトプットとしては期待したものが得られます。ともかく、我々は「自らプログラムすることが不可能だった処理」を、LLMによって計算機に行わせることができるようになりました。

以上が、私が思う「LLMという技術の本質」です。プログラムというのはアルゴリズムとデータから成りたっています。いや、成り立っていました。しかしLLMは、人間がアルゴリズムを記述できなかった処理を実行することがでます。つまり、「計算機に仕事をさせる」という意味においては「人間を超えた」とも言えるのです。

もちろん、翻訳や要約といった、我々が「高度な知的作業」だと思っていたことが、実は繰り返し訓練することによる習熟の結果でしかなく、人間がこれらのアルゴリズムを記述できなかったのは単に「手品の種に気づいていなかったから」なのだ・・・という可能性もあります。

しかし現時点では、手品の種はLLMの中に隠されており、我々はまだそれを見ることができていないのです。

コメント