Claude Codeその後

Claude Codeを使って、順序ソートを導入した論理・関数型言語の Wild Life のC版をPython版に書き換えるプロジェクトがかなり進捗した。たぶん人手でやると1年以上フルタイムのエフォートが必要だったが、1ヶ月のサブワークで実現できた。

GitHub - ssk-coin/ReLife · GitHub

Wild Lifeは画期的な論理・関数型のプログラミング言語にもかかわらず、あまり世の中には広まらなかったが、私の博士論文の「知識階層を使った帰納論理プログラミングシステム」はこの言語のお蔭でなんとか構築できた。C版で綿密に用意されていた352件のテストケースのうち、320件パスするところまで進捗した。どのテストケースも開発者の熱意と知性を感じる。まだ30件ぐらいC版と動作のズレがある。ただ、メインストリームの部分のバグはかなり取れた。もう少し検証したら、先日のフランスでのワークショップでお会いした元祖C版の開発者の方々を巻き込んで完成させたい。なお、元のC版は研究用にライセンスされているので、現状はそれを継承している。C版のライセンスを買い取ってオープンソースにする、またはクリーンルーム開発により、C版と独立にプログラムを作成するか、どちらも長期戦になりそうなのでライフワーク。
最後にClaude Codeには、監視役のAIが付いている。Claude Codeにプログラム書き換えや検討をさせるとき、セキュリティ上問題のあるかもしれない操作を行わないかを監視して、怪しいときはユーザの許可を取るようになっている。SF的な話になるが、現在の生成AIの発展を見ていると、このAIを監視するAIも必要かもしれない。

Claude Code

 Claude CodeやOpenAI Codexが凄いという話は聞いていたが、なかなか時間がなくトライできてなかった。夏休みの機会に実際に使ってみると想像を超えた能力をもっていることが体感できた。
 Claude CodeをGithubと接続して、ペアプログラミングのような形で昔Cで書かれたプログラムをPythonにポートしてみた。このプログラムは何年も前からPython化したかったのだが力不足のため実現できてなかった。現在、まだバグがたくさん残っているが、骨格の部分は動いている。たぶんひとりでやると1年以上かかるソフト開発が一週間ぐらいに短縮されたというのが実感だ。
 何が凄いって、まずCのコード一式をClaude Codeに渡して、これをPythonにしてというと20分ぐらいでPythonになる。いわゆるVibe Coding。Cをアルゴリズミックにコンバートしているのではなく、Cプログラムの内容を読み取って新たに書いている感じ。変数名や関数名、ロジックなど変わっている。たとえばLazy Evaluationをしている関数はLazy Evaluationが何かわかって書き換えている。Claude Codeは神様ではないので初版ばぼろぼろで300個のテストデータに対してほとんど失敗していた。それでも最初のステップとして、データ構造を設計して、一旦全体を通して動くコードを書くところに至るまでにかなりの労力が必要なので、そこがスキップできるのは素晴らしい。
 注意が必要なのは、Claude Codeと対話している内容が必ずしもコードに反映されてないこと。このあたりは実際に自分でプログラムできる能力がないとバグをなくせない。たとえば、「ある条件で処理Aを入れて」といって、「はい分かりました変更しました」と返答されても、実際にコードをみると複雑な条件を正しくコーディングできていない。Claude Codeが持っているある種の思い込み(事前確率)にそって条件を書いてしまうので、こちらの指定を無視することがある。また、勝手にテストを繰り返し、トークンを大量に消費することもある。「やめろ」と言えば一旦はやめるが、そのうちまた全項目テストを始めてしまう。これは、過去から続く長い対話履歴の中で指示したことが確率計算の中で減衰してしまうために起こる現象。こちらのことを理解して対話しているように見えても、ただ適当なことを言っているだけということがある。いわゆるポチョムキン理解。
 一方、人間的なプログラム修正も行う。バグがあると、それに関連するコードをあちこち参照する。grepを使って関数名をファイルから拾ったりする。また、驚いたのは、check writeを入れてバグを調べていたこと。私もプログラムの各ポイントにプリント文を入れて変数の状態を確認するのだが、同じことをClaude Codeもやっていた。また、どれぐらい完全にやっているのかはわからないが、論文を与えてこの処理はこの論文に従っているというと、論文の処理との整合性を確認してくれる。
 最後にClaude Codeを使うと楽になるのは間違いないが、実は1日の労働時間は増える。Claude Codeが疲れることなく24時間プログラミングするので、動作確認をして指示を出す側の人間も自然と24時間体制で対応してしまう。夜中の3時に進捗確認して、指示を出してまた寝ることになる。これはかなり健康に良くない。

ChatGPT が突きつける「理解」とは何か(その後)

3年前に下記の記事を書いた。
yutakasasaki.hatenablog.com

昨年、2025年にポチョムキン理解に関する論文が発表されて、このあたりが少し整理されてきた。

少し以前のマンガに下記のような場面が描かれている(正確にはこの痛がっている主人公はロボットではなく亡くなった子供を再現したアンドロイド)。
https://ogre.natalie.mu/media/pp/static/comic/chappie_comic/photo09.jpg

映画「チャッピー」を語る、ゆうきまさみインタビュー (3/3) - コミックナタリー 特集・インタビュー

LLMはどこかに書かれている文章を再構成しているだけですので、対話していると「私も映画館でその映画見ました。感動しました」などと言うことがある。当然LLMは映画館には行かないので、全くのウソなのだが、人間の対話を模倣しているのでこういうことを言ってしまう。あまり変なことを言わないような学習を、何百億円もかけて加えているので、だいたいにおいては商用LLMは隙を見せないのだが、何かの拍子に人間であるかのようにそのまま答えることもある。上のマンガの「ものが当たったら痛い」も文章として学習しているだけで、痛いの実感はない。この話は、言語の身体性へのグラウンディングの例になっているが、基本LLMの会話はグラウンディングされてない、ただうわべの対話だ。「財布を失くした」という入力に「それは大変だね」とLLMが答えるのも、そういう対話例があちこちに良く登場するから、それをまねているだけ。

将来的には、感情や身体も取り込んだLLMができるかもしれないが、現状はデータに基づく、単語列の生成をしているだけだということを認識した上で便利に使えばよい。

○○インフォマティクス

バイオインフォマティクス,メディカルインフォマティクスなど,情報処理技術が専門分野の発展に欠かせない要素となっている.特に,最近読んだ話で非常に興味深かったのは,iPS細胞の発見の過程で情報処理技術や情報分野における研究プラクティスが貢献していたという話.
president.jp
この中では,さらっと書いてあるが,細胞の初期化に関係しそうな数万の遺伝子から100の候補に絞り,さらに100から24に絞る過程で,情報処理や予測システムがなければ,ウエットな実験による遺伝子の探索では何年,何十年かかったかわからない.このことは,山中先生がiPS細胞を発見したという事実に影響するものではないが,インフォマティクスが科学の発展に大きく寄与していることの査証になっている.さらに,24の遺伝子のどれ,またはどの組み合わせが初期化に関係しているかを突き止めることろがクライマックスなのだが,ここで情報系ではよくやる手法が効いていた.普通に考えれば,24の1つずつ,またはいくつか有望の組み合わせを実験的に試していくのが定石だ.最悪,24!のオーダーの実験が必要になる.情報系,機械学習では予測に対してどの特徴量が効いているかを確認するために,逆算することがある.つまり,全特徴量から特徴量を一つひとつ削っていって,予測を間違えるようになればそれが効いているので残すという手法をとる.実際にiPS細胞を発見する過程でどのような実験計画を立てたかは書かれてないが,工学的プラクティスが生医学の発見に貢献した.こういう分野融合が時として大発見につながる.
これからは,さらにマテリアルズインフォマティクスを含めたAI4Scienceの時代で,大規模言語モデルなどのAI技術が文系を含むすべての専門分野において研究の必須条件になっていくだろう.自然言語処理(NLP)は,ビジョンやロボティクスに比べると,長らく地味な研究分野だった.そのNLPが科学技術の中心技術になるとは誰が予想できただろう.流行りや就職や儲かるかなどにとらわれることなく,結局好きな研究をやっていくことが大事なのだと今さらながら感じる.

余談

少し前に珍しいことがあった。

ある日授業を始めようとすると、担当科目の履修学生から「すぐ後の授業で中間テストがあるのですが、普通に授業するのでしょうか」と聞かれた。もちろん答えはYES。独立した授業なのだから、次の授業が試験でも休講でも関係はないのだが、高校だと中間テストの期間は授業がないからか。

Aït-Kaci先生の思い出

Hassan Aït-Kaci先生がコロナ禍中の2020年に惜しくも亡くなり、その追悼ワークショップが9月末にリヨンで開催される。しばらくご遺族の意向により、亡くなったことは伏せられていた。

https://projet.liris.cnrs.fr/wemhak/

Aït-Kaci先生はフランス出身で、1984年にペンシルバニア大学で博士号を取得された。ψ項という論理学の項に個体定項の階層情報(順序ソート)を導入した研究で一躍著名人となった。これを発展させ、DECのパリ研究所でLIFEという新しい論理プログラミング言語を開発された。その学術貢献は、チューリング賞に十分値すると私は感じていたが、実際には受賞されなかったのはとても残念だ。

LIFEはメジャーな言語ではなかったが、実用レベルの画期的な論理型言語であった。私の博士論文は、そのLIFEの上で帰納論理プログラミング(論理式の帰納学習)システムを構築し、自然言語情報からの知識獲得を実現した。単語の上位下位関係をLIFEの持つ順序ソートに対応させ、少ない正例から一般化されたルール(論理式)を学習した。これができたのはLIFEという強力な言語があったからであり、Aït-Kaci先生には非常に感謝している。

Aït-Kaci先生との出会いは、1995年にAït-Kaci先生がカナダのSimon Fraser大学の教授をされているときに、1年間研究室に滞在させていただいたときから始まった。そこでは階層を扱う少し違うテーマを頂いた。その後今度は、京都の研究所に数カ月来ていただき、そこでψ項の汎化の公理化について議論し、その後国際会議論文
app.box.com
になった。ψ項のユニフィケーションをAït-Kaci先生が考案されていたが、その逆のψ項の汎化については考えられていなかったようで、非常に興味を持っていただけた。

その後、時は経ち、時々お会いしていたが、2013年にAït-Kaci先生がリヨン大学に所属されているときに、1ヶ月ほど招聘していただき、CEDARプロジェクトというプロジェクトに加わらせていただいた。リヨンでの滞在は私のスケジュールの関係で短いものだったが、本当にあっという間に過ぎた。Aït-Kaci先生は私の出会った情報科学分野の巨人のひとりであり、専門以外の歴史や栄養学にも深い知識を持つ知識人であり、さらに音楽家の一面もお持ちで、天才というのはこういう人なのだということを理解させてもらった。早くして亡くなったのはとても残念だ。

(9/29追記)
ご指名でしたので故人との出会いなど思い出話を含め講演してきました。追悼ワークショップですのでご家族もオンラインで視聴されていた。半分ぐらいはフランス語での発表でした。論理型プログラミング言語LIFEを開発したDEC PRLの元メンバーとも話ができていろいろ裏情報なども聞けて私としても有意義でした。ここには書けない壮絶な事があったようで。片道24時間ぐらいかかる旅程で大変でしたが、故人やその友人たちにお礼が言える場をもらえたのはありがたいことです。

ワークショップの様子

IJCAI2025 review

 IJCAIは緊急査読に協力すると感謝状を送ってくれるようになっています。今AI業界内ではどの国際会議も爆発的な投稿数の増加の影響で査読者が不足していていろいろな工夫しています。最近責任ある査読ができるだけの十分な時間がとれないので、論文誌以外の査読には手が回らないのですが、たまたま時間が空いていて対応することができました。
 

Certificate

 AI業界(特に深層学習まわり)の査読者不足は深刻で、論文数に対して査読できる人数が大幅に少なくなっています。これは、最近新しくAI業界に参入した企業や関連分野の若手が業界の裾野を広げているのに対し、本来広い見識をもって安定した査読すべきシニアな研究者が深層学習より前の世代のため、最近の論文を査読できなくなっているためです。人数不足を補うために、博士課程在学中の学生が査読することも起きています。本来、博士号を取得しているか、それに相当するキャリアのある研究者でなければ、一流会議の査読はできないのが従来の常識なのですが、人手が足りないので仕方ないという状況です。場合によっては、修士学生が査読していることもあるようでかなり問題があります。十分なキャリアと見識がないとどうしても偏った評価をしてしまいがちで、論文本来の良さ探すことよりも、欠点を探して落とすことばかりに目が行きがちです。いくつかの国際会議への投稿論文の連名者は必ず査読に協力すると誓約させられるために論文を投稿すると自動的に査読者になるという現象が起きています。
 最近は、生成AIにより査読をする試みも始まろうとしていて先行き不安です。生成AIの構築にかかわった人たちの論文が通りやすくなように密かに細工することもありえます。また、投稿論文のPDFに見えない文字で、生成AIに対してその論文を通すように指示するといったハックも存在します。