コードが書けるのは、コードが文章だからである
文章を書く人工知能のことを、大規模言語モデルという。英語で large language model、その頭文字をとって LLM とも書く。オープンAIの GPT、グーグルの Gemini、アンソロピックの Claude が、それにあたる。以下ではモデルと呼ぶ。
モデルは文章を書くのが得意である。これは当たり前で、もともと翻訳のために作られたものだからだ。
分かりにくいのは、そこから先である。なぜ、プログラムまで書けるのか。
プログラムも文章である
プログラミング言語というのは、人が読み書きするために作られた記法である。単語があり、並べ方の規則があり、上から順に読む。
モデルの側から見ると、日本語と何も変わらない。次に来そうな記号に確率をつけて、一つ選ぶ。それを繰り返す。文を作っているのか、プログラムを作っているのかを区別してはいない。
しかも、プログラムの方が易しい。日本語より規則が厳しく、書いてよい形が少ないからである。ここに開き括弧があれば、いつかどこかに閉じ括弧が来る。この命令の次に来られるものは限られている。選択肢が狭いほど、次を当てるのは簡単になる。
だから、コードが書けることを、賢さの証拠として読むと外す。人間の仕事の中でも高度な部類に見えるが、モデルにとっては規則の厳しい文章というだけである。
図を作るプログラムを、一晩で書かせたことがある。速かったのは、モデルが優秀だからではなく、書かせたものが文章だったからである。
画像も、確率で並べている
画像も出せる。仕組みは少し違って、砂嵐のような雑音から始めて、少しずつ形に寄せていく。文字を一つずつ足していくのとは手順が違う。
ただ、確率で決めている点は同じである。だから、同じ癖が出る。
同じ指示を二度出せば、違う絵が返る。指の本数が合わないことがある。看板の文字が読めない字になる。どれも、次に来そうなものを選び続けた結果として説明がつく。うまい絵描きが間違えた、のではない。
逆に言うと、それしかできない
ここが本題である。
モデルにできるのは、確率で並べることだけだ。並べられる形に落ちているものは扱えるし、落ちていないものは扱えない。賢さの問題ではなく、構造の問題である。
たとえば、同じ入力から必ず同じ出力が返ること。これは並べる仕組みの外にある。確率で選んでいる以上、選び直しが起きる。
たとえば、材料に無い値を出さない、という保証。無いなら止まる、という動作が仕組みの中に無い。次に来そうな数は、材料が無くても計算できてしまう。
たとえば、実際に何かを実行すること。検索するのも、ファイルを開くのも、外側のプログラムがやる。モデルが出すのは「この道具を使え」という文字列だけである。
三つとも、賢いモデルが出れば解けるという種類の話ではない。並べる、という動作の外にあるからだ。
賢さの軸で見ると、読み違える
賢く見えるのは、確率で並べられるものが、人間の仕事のかなりの部分を占めているからだと思う。文章、翻訳、要約、下書き、プログラム、絵。並べてみると、まあまあ人間らしい仕事に見える。
それでも、できることの範囲はそこで決まっている。伸びしろがあるのは、上手さの方であって、種類の方ではない。
だから、これは頼めるか、と考えるときに、難しいか易しいかで見ると外す。並べられる形になっているかどうかで見る。
そして、並べられない部分は、外側で人が組むことになる。