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に対してその論文を通すように指示するといったハックも存在します。

Self-Supervised Learning

大規模言語モデルが世の中で使われるようになったことで、Self-Supervised Learning (自己教師あり学習)という言葉が良く使われるようになった。SSLとも略される。しかし、以前からSemi-Supervised Learningという枠組みがあり、こちらもSSLと略されていたので少し紛らわしい。

Self-Supervised Learningの成功例は2013年にMikolovらが発表したword2vecだろう。word2vec以前は、単語をベクトル化する方法は、one-hotベクトルによる方法が通例だった。すべての単語に単語番号を振り、単語種類数の次元のベクトルを用意して、対象単語の番号の要素の位置に1を立ててあとはゼロにする。実装上は、ほとんどがゼロのベクトルなのでメモリ消費を抑えるためスパースベクトルとして保存する。一方、word2vecでは、(CBOWの場合)大量の文書を用いて、文中に現れるある単語の前後の単語列からその単語を予想する問題を解く学習をすることで、その単語のベクトルを獲得する。例えば、100次元の単語ベクトルのすべての要素に学習された実数が並んでいる。ただ、これらの実数値が何を表しているかは見てもわからない。Vaswaniらが2018年に発表したBERTと異なり、文脈を考慮しないので、word2vecでは1つの単語には1つの固定されたベクトルが割り当てられる。このようにして学習された単語ベクトルには興味深い特徴があった。実際にKingのベクトルからManのベクトルを引いて、Womanのベクトル足すとQueenのベクトルに(近く)なる。これは、周囲の単語から学習することで、その単語が持つ意味のようなものがベクトルの中に埋め込まれているということが示している。(註:類似したケースでもベクトル計算がうまくいかないこともある)

word2vecは、ラベルなしのデータからこのような学習を行う。つまり人手による正解データ作成のコストはかからないので大量のデータから学習できる。少し紛らわしいのは、ラベルなしデータを使っているからといって、教師なし学習」ではなく「教師あり学習」である。一時期、word2vecやBERTを教師なし学習だとしている解説があったが、それは機械学習アルゴリズムに関する分類から見ると正確ではない。なぜなら学習アルゴリズムに対して教師情報は与えているから。word2vecでは、前後の単語列が入力 x_iで、対象の単語(=正解)が y_iなので、教師あり学習の正解データ (x_i, y_i)を与えている。ただ、通常の教師あり学習と異なる点は正例しかないということだ。30年ぐらい前から「正例からの教師あり学習」という機械学習の枠組みがあり、特に新しい問題設定ではない。ただ、当時は情報量基準などを用いて汎化する範囲を制限することで過剰・過少に一般化されることを制限していた。
word2vecでは疑似負例を用いて汎化の範囲を調整する contrastive learning (対照学習)を使っている。contrastive learning とは、正例間はベクトルを近づけ、正例と負例はベクトルを遠ざけるような学習をすること。疑似負例は、真の負例ではなくたぶん負例だろうというものデータ中から負例として選択する。word2vecの場合は、別の文から持ってきた単語は対象単語を予測するときには負例になると見做す。疑似となるのは、その持ってきた単語がたまたまその文脈に当てはまることがないとは言えないので疑似とする。だいたいにおいて実際に負例であれば、大量のデータで学習していれば負例の間違いの影響はほとんどない。

人手でラベル付けしていない「ラベルなしデータ」しか使ってない学習であれば「教師なし学習」だ、と思えるかもしれませんので、もう1つ例を挙げる。毎日の温度と湿度と日照時間を記録したデータがあるとする。このようなデータは、センサーから自動的に集められるので、人手による教師情報は入ってない。これを使って、明日の日照時間が4時間以上かどうかを予想する学習をするとき、過去に貯めたデータだけから教師あり学習ができる。ある日の日照時間が4時間以上かどうかを予想する学習を、その前日(とそれ以前)のデータを使って行えば良い。つまり、機械学習フレームワークとしては、学習アルゴリズムに正解を与えるかどうかで、教師あり or 教師なしが決まるのであって、人手でラベル付けしたデータを使うかどうかは別の話になる。

では、どういう学習が教師なし学習かというと、代表例はクラスタリング。ラベルなしのデータに対して、類似度を用いてデータの塊(クラスタ)を形成して、そのクラスタをある種の分類クラスとみなす。たとえば、過去の日ごとの温度と湿度のデータに対してクラスタリングをすると、なんとなく晴れの日のクラスタと雨の日のクラスタのように分かれていく。ただし、教師なし学習は、なんの制御もしないので、直感や希望と異なる学習結果になることは避けられないし、各クラスタの意味(=晴れの日、雨の日など)は人間が解釈しないといけない。

さらに似た用語として、Active Learning(能動学習)がある。Active Learningは、学習アルゴリズムではなくデータ作成の方法である。データにラベル付けするときに、途中までラベル付けしたデータで学習し、これからラベル付けするデータに対して予測を行う。このとき、何かの基準で次にラベル付けするデータを選択するとラベル付け作業が効率化できる、というのがActive Learning。例えば、予測確率が低い(=自信がない)データを優先的に人手でラベル付けすることで、ラベル付けの回数を減らすことができる。似たようなデータばかり正解データをたくさん作っても効果が少なく、より予測が難しいケースのラベルを優先的に与えた方が学習の性能が早くあげらえるという直感だ。

BERTも、word2vecと同様に単語を数値ベクトルに変換する学習済みモデルだが、単語のベクトルに文脈が入る点が異なる。与える文脈によって、単語のベクトルが変わる。ただ学習のアプローチとしては、Masked Language ModelingもNext Sentence Predictionも教師あり学習である。大規模言語モデルは、ベースはSelf-Supervised Learningだが、その後にインストラクションによる教師あり学習強化学習を膨大に行い、不適切な答えをしないようにしている。

ここまでSelf-Supervised Learningという言葉を使ってきたが、この用語は以前から存在するSelf-Trainingと語感がよく似ているにもかかわらず、全く別の用語なのであまり宜しくない。Self-TrainingはSemi-Supervised Learningで使われる学習手法で、正解付きのデータを使って学習したモデルにより、ラベルなしデータにラベル付けし、その中のもっともらしいものを、あたかも正解データのように訓練データに追加して再度学習する方法である。Self-Supervised Learningという言葉からはSelf-Trainingを想起してしまう。本来Self-Supervised Learningは、Supervised Learning from Unlabelled Dataであり、多くはSupervised Learning from Unlabelled Data using Contrastive Learningと呼ばれるべきものであると考える。

余談になるが、私の大学時代の恩師は、Robinsonの定理証明法のResolution Principleを「導出原理」と訳すことに異議を唱えていた。「導出」は論理学ではderivationの定訳であるので、Resolutionを導出と訳すのは良くない、融合原理または分解証明法と訳すのが正しいというお考えだった。実際には導出原理という訳語は既に一般に広まってしまっているのでそのまま受け入れ続けるだろう。専門用語の使い方については常に注意深くありたいと思っている。

File "<string>", line 43, in <genexpr> TypeError: 'str' object is not callable

Llama 3.3 70B が昨年12月にリリースされていたが動かしてみる時間がなかった。
久しぶりに動かしてみようとすると

File "", line 43, in TypeError: 'str' object is not callable

というエラーが出て、以前動いていたはずのプログラムが動かなくなっていた。
サーバーの再起動や別の実験などなどいろいろあったので、どこかでコードを書き変えてしまったのかと思い、いろいろ試したが直らない。
検索してもなかなか原因にたどり着けなかったが、unslothが使っているaccelerateモジュールを1.3にバージョンアップすると直るという情報を見つけて適用してみると直った。

pip install accelerate==1.3