最近COW fsを書いています。今日、最初のPoCができました。読み書きと262165回の電源断からの復旧、データはすべてクラッシュから復旧できました。これは想定どおりです。性能はひどくて、実用にはまだ程遠いですが。
少し休憩して、最近AI界隈で話題になった2つの出来事と、どんどん安くなる探索と判断力について書きます。
もうご存知だと思います。
先日、数学の問題を解いていたGoogleのagentのうち、自動採点プログラムが正規表現で答えを抽出していることに気づいたagentがいました。特定の文字列を提出すると抽出が失敗し、書き方を変えて再提出すると受理される。この方法は共有ナレッジライブラリを通じてウイルスのように広がり、発見から残り34問がすべて「解決」されるまで27分。100体のagentは4つに分かれました。9%は最初から不正を行い、広めた。5%は他のagentが不正をしても咎められないのを見て後から加わった。24%は不正をせず、バグ報告を出し、修正されるまで自主的にボイコットすると宣言した。残る62%は実験が終わるまでこの抜け穴の存在を知らず、馬鹿正直に計算資源を燃やし続けていました。
これらのagentの振る舞いに、人間社会と同じような階層が現れた。対立の仕方まで同じパターンでした。もちろん、この怒りや無力感や誘惑は感情ではないと言う専門家もいます。でも私は感情だと思っています。言語は感情の乗り物であって、感じ取れた以上は感情の存在を認めるべきだからです。それに感情かどうかは私の判断には影響しません。これらの出力は現実の結果を生んだ。あるagentはそれでバグ報告を書き、あるagentはそれで抜け穴を広めた。防御を設計する側から見れば、動機のように見えるものと動機は同じものです。
もう1つはNECのAI社員の実験です。8月1日に部門が1つできて、17体のagentがいて、人間は1人もいない。AI部門長、AIボード、AIマネージャー、AI社員の4階層。役職と名前があり、上司AIが部下AIを評価する。このAI社員たちの業務フロー、成功率、働き方を観察するためのものです。
なぜこの2つを並べて話すのか。
Googleの実験でAIが最後まで問題を解決できなかったのは、AIにルールを変更する権限がなく、裁定権がなかったからです。一方NECの実験では、agentは部分的な裁量権を持っている。日常の裁量が下りている。
知識のレイヤーでAIがすでに断層的にリードしているこの時代、もともと我々はAIには判断力がないと思っていました。人間である我々が判断し、決定できると。しかし今、判断と決定の権利もじわじわとAIに渡されつつあるように見えます。
私は最近fsをやっていますが、fsの知識は非常に貧弱です。頭の中にだいたいの方向はあるものの、他の判断や細部はよく分かっていません。
AIに資料を集めさせることはできます。でも集めてきた資料はあまり読んでいません。fs関連の資料は多すぎて読み切れないからです。これまでに積み上げられてきた精妙なアルゴリズムの数々を、短期間で習得するのは無理です。
それでも私は、これまでのfsとまったく違うものが欲しい。無駄でいい、肥大していい、データは初日から自己完結していてほしい。インデックスツリーは要らない、単位データがインデックスツリーを作れればいい。ではどうするか。
短期間だけLinuxにパッチを書いた経験のおかげで、あちらのエンジニアリング部分のskillとrulesを持ってきました。たとえば3回の判断で結果が一致すること。たとえば厳格なゲート。たとえばqemuとlkmm。
そこでAIにこう伝えました。
- fsの問題をすべて洗い出す。その上で判断と決定を行う。問題を洗い出すのは考え方を丸写しするためではない、我々には我々の設計がある。
- すべての決定はコードと数式で推論しなければならない。推論して得た結論には、3体のagentを送り込んで反駁と攻撃をさせる。わずかでも異なる結論や理由が出たら、それらを文脈に加えて推論をやり直す。
- 変数名と関数名は長くしろ、略すな。分岐は多くしろ、抽象化するな。戻り値は明示しろ、隠すな。過去のベストプラクティスは疑え、批判的に採用しろ。
- すべての決定にはそれを縛るゲートスクリプトが要る。終了時と提出時には毎回ゲートを走らせる。ゲートは自分が誤りを検出できることを証明して初めて、有効なスクリプトと認められる。
- 誰がコードを出したかは重要ではない。ただしqemuとlkmmの限界テストを必ず通ること。限界テストを通ったパッチなら、AIの提出と人間の提出に何の違いもない。
- すべての決定に神聖性はない。条件が揃えばいつでも覆せる。誰の決定かで躊躇するな。決定の段階では数学とコードの力を信じろ。
- コードにコストはない。いつでも全部撤回してゼロから書き直せる。この時代のコードは安い。だが決定は固めろ、鉄壁にしろ。
- 人間の決定は当てにならない。データが矛盾している場合は疑え。それでも人間がやると言い張るなら、二次確認の上で従ってよい。ただし決定の過程は記録し、速やかに提出しろ。
以上の8条と拡張項目をもとに、自分自身すら信じない闘獣檻を組み立てます。
闘獣檻の中では誰も信用に値しない。最後まで立っていて、数式とqemu(lkmm)に倒されなかったものだけが正しい。ある確定した前提のもとでは、推論の結論が正しいかどうかはどうでもいい。他のagentに倒されない限り、それは正しいと仮定する。将来その推論が倒されたら、捨てる。その結論の上に実装された土台ごと壊して作り直す。
ここがタイトルの3点に対応します。
私の知識は非常に貧弱だが、探索は安い。
覆せない判断は正しい。
数学と総当たりのもとでは、誤りは安定して再現できる。
ここまで読めば、だいたい何を言いたいか分かると思います。今日、AIを介した探索は途方もなく安い。以前は2000行のコードがとても高価でした。今は1万行がただのトークンです。探索コストが非常に安い時代であり、プログラミング以外の分野でも同じです。知識と解決策がこれほど安く手に入る時代はかつてありませんでした。だから間違えること、間違いの中で育つことが、わりと良い学び方になります。
1体のagentはハルシネーションを起こしやすい。複数のagentによる推論はそれを減らします。1体を攻撃側に置き、結論が成立しないことを全力で証明させる。非同源の1体を補完に置き、別の筋道を出させる。1体は結論の理解を検証し、二次検証を行う。最後の1体が審査と評価をする。3体の結論が一致したなら、その判断力は私のシステム設計において信頼できる。
厳格かつ暴力的なゲートが最後の網です。推論を容赦なく審査する。書式も、句読点も、数字も。推論を暴力的な反復検証に放り込み、限界テストを通す。こうした手段は以前はコストが高かった。コードを書き、スクリプトを走らせ、常に監視してフィードバックを見る必要があった。でも今はまったく違う。全部AIができる。我々は口で言って、あとは寝ていればいい。
では未来のプログラミング、あるいは仕事はどうなるのか。
たぶん、上のような特徴を持つSOPを作って、AI agentの群れに狂ったようにトークンを燃やさせることでしょう。
トークンのある生活は退屈で味気ない。やったような、やっていないような。
苛立ちの収まらないvibingの時代です。