Diary over Finite Fields

515ひかるの日記と雑文

最近AIについて考えていること

大規模言語モデルがすごいね、ということに対して少しずつ解像度があがってきた。

流行っているだけあり最近のAIにはいろんな人がいろんなことを言っている。別に文句を言いたいわけではなく、僕もそのいろんな人のひとりでしかないと思っている。そして特に差別化する意図もない。みんなが言っていることと違うことを言ってやりたいという感情はない。中学生じゃあるまいし。

とはいえ、さすがに期待しすぎというか未来のことなんてわからないのにあれやこれや言いすぎではと思うことはある。人の価値観がごそっと変わるとか、ホワイトカラーの仕事がなくなるとか。色々と鮮烈なことを言われている*1

ただ、そうした変化は通常は少なくとも5年とか10年とかかけて起こっていくものだ*2。そしてそんな遠い未来のことはAIの進歩以外にもさまざまなファクターがありすぎてあまり考える余地もない。

ということで、今日の僕が大規模言語モデルをどのように見るのかは、あれやこれやの風評やビッグテックの誇大広告に流されずに冷静に見たいところである。この記事ではそれを書いている。

ところで、言うまでもないがこの記事は私見である。そして僕は機械学習などの技術の専門家ではない。また、この記事は技術的な誤りや筆者の事実誤認を含んでいる。

大規模言語モデルができるようにしたこと

まず、今までの機械学習モデルにはできていなくて、大規模言語モデルにはできていることはなにか。

それは、ひとつのモデルであらゆる種類のモデルをタスクをこなせるようにしたことだ。

今まではたとえば機械翻訳をしたかったら機械翻訳をするためのモデルを構築しないといけなかった。要約をしたければ、要約をするためのモデルを構築しないといけなかった。校正をしたければ、校正をするためのモデルを構築しなければいけなかった。つまり、時と場合に応じて使うモデルをわけるということをしていた。

これはちょうど、翻訳をするときはDeepLのようなサービスを使い、英文の校正をするときはGrammarlyのようなサービスを使うようなものだ。翻訳したいときにGrammarlyを開く人はいない。モデルも使い分けるものなのだ。

しかし大規模言語モデルは違う。「この文章を英語にして」と言えば英語にしてくれる。「この文章を要約して」といえば要約してくれる。「この文章を校正して」といえば校正してくれる。その際にモデルの変更はない。ひとつのモデルがさまざまなタスクをこなしてくれる。

これは圧倒的な汎用性をもたらしている。すでにChatGPTにおいても「文書の要約」、「議事録の自動生成」、「機械翻訳」、など、今までであればそれひとつでSaaSをひとつ作っても不思議ではなかったはずのものが、大規模言語モデルひとつで代替されようとしている。

ソフトウェア開発にどのような影響を与えるか

コードの自動生成はあくまで「あると便利」くらいの位置付けにしかならないのではないか

ソフトウェア開発の文脈においては、コードの生成がよく注目される。ChatGPTとかがコードをかなり精度良く生成できるので、それをそのまま使えばいいみたいなことを言っていたりする人がいる。

ところが、僕はこれはそんなに肯定的に見ていない。あらかじめ言っておくと、僕はソフトウェアエンジニアなのでポジショントークであることは否定しない。

とはいえそのように考える理由は、ソフトウェア開発において難しいのはコードを「書く」ことではなく「読む」ことや「決めること」だからだ。書く負荷はもともと高くない。

比較的簡単なことが、さらに簡単になるのはいわゆる"民主化"を促すことにはつながると思うが、それ自体が本質的な難しさを解消することにはつながらないだろうと思う。

少なくとも現時点で、僕はChatGPTになにかバグの調査をしてもらったという話を聞いたことはない。可能性としてはふたつあって、ひとつは実はできるんだけど話題になっていない、もうひとつは人間が大規模言語モデルにバグ調査を依頼する能力が低い。たぶん両方じゃないかという気がする。

いずれにせよ、いくら正しいコードが書けてもバグは起こる。ソフトウェアとはそういうものだからである。だからこそ、臨機応変に「関係するコード」を特定して読まなければならないのだけれど。「臨機応変に関係するコードを特定する」ことはいまのAI技術の延長でできることではないと思う。なぜなら、人間からの入力にリアクションすることしかいまのAIにはできていないからだ。

ってなわけで、ソフトウェア開発のボトルネックを大規模言語モデルが解消する気はしない。

そもそも開発体制がまるっと変わると話は変わるかもしれない。人間は一切コードを書いてはならず、大規模言語モデルが書いたコードしか使ってはいけない、みたいな開発体制をとったりすると僕が見てきたソフトウェア開発の現場からの推論は意味をなさないだろう。

プラットフォームとしての大規模言語モデル

じゃあ大規模言語モデルはソフトウェア開発にあまり影響を及ぼさないのかと言うと、そうも思っていない。

ChatGPT APIは自然言語処理のいろいろなタスクをこなせるなんでも屋さんだ。だから、今までこんな機能が作れたらよさそうだなと思ってはいたけど、データがないからできないやと思っていた人がいろいろな機能を自社のサービスに組み込めるようになる。

これがどういう意味を持つのかという話で、ソフトウェア開発ではない例を出す。

個人でスモールビジネスでものを売りたい、ネットショップを設立したいなと思ったとしよう。あなたはどうするか。日本だとBASEとかSTORESとかネットショップを開設するサービスがあるので、そのサービスを使えばいい。

これは結構すごいことだ。もしBASEやSTORESがない時代にネットで自分が作ったものを売ろうと思ったらどのような手段があったのか、僕には想像がつかない。

こんなふうに、今まで全くAI技術と関係なかったサービスにAIに基づいた機能が組み込まれる可能性が高い。このはてなブログにも、ブログの校正機能とか誤字脱字発見機能とかがつくかもしれない(そんな簡単じゃないと思うけど)。

僕はこれをAI版(ChatGPTを念頭におけばAI版というより自然言語処理タスク版)のPaaS(Platform as a Service)だと思っている。

もともとの言葉の意味にこだわれば、ただのAPIなのでPaaSと呼ぶのは間違いなことは知っている。しかし、AIのAPIと呼ぶのは新しいなにかな感じがしない。それに、なによりこのAPIは特定の機能を提供するためのものではないから、プラットフォームという言葉がしっくりくる感じがするのだ。

GPT4がAPIとして使えるようにもなれば、画像など自然言語以外も扱えるようになり、さらにさまざまな機能を提供できるものになるだろう。こうしたプラットフォームとしての大規模言語モデルには、僕個人も大きく影響を受けると思う。

終わりに

だらだらと思いつきを書いた。今までは強く否定するか強く肯定する考えしか出てこなくてどうしたものかと思ったんだけど、自分としては穏当な路線に落ち着いた気がしている。ただ、文中にも書いたけどポジショントークがだいぶ混ざっていることは否定しない。

正直、大規模言語モデルや生成AIについてはいまなにを書いても間違いなんだろうなという感じがする。書くこと自体が間違いなのでこの記事は全て間違っている。

まぁでも、間違いだからやってはいけないわけでもない。そんな感じで。

*1:いまのアテンション・エコノミーの世界だと構造的にそういう話のほうが目立つのは仕方がないことかとも思う。

*2:現実に人の価値観が本当に変わるには2, 3世代くらいかかるだろうから、すぐに人の価値観が変わることはないと思う。