2025年11月25日火曜日

三項間漸化式(2)

三項間漸化式(1)リュカ数列からの続き

金沢泉丘高校では数学の授業が数甲と数乙に分かれていて,それぞれ別の先生が担当されていた。結局,松川先生(マッチのお父さん)と楠先生(あだ名はパチ)と西野先生(近所にお住まい)の組み合わせだった。楠先生も西野先生もなんだか女子生徒に人気があった。

ちょっとこわもて風の西野先生は,教科書を使わずに独自の解法をたんたんと説明していくのだった。そのなかに数列の漸化式の話があったはずだけれど,漸化式をずらっと並べて総和をとる方法だけ何となく印象に残っていた。今回,一般式をあれこれいじっているとその修正版が登場した。もしかしたら習っていたかも知れないけれど,そこはちょっと記憶になかった。

①漸化式は次のとおりである。$a_n= p a_{n-1} - q a_{n-2}\quad (n \ge 2)$ ここで,$p,\ q$ および$a_0$と$a_1$は与えられている。これから一般項$a_n$を求めたい。

②①の漸化式を次のように変形する。$a_n - \alpha a_{n-1} = \beta (a_{n-1} - \alpha a_{n-2}) \quad ( n \ge 2)$ ただし,$\alpha + \beta = p \quad \alpha \beta = q $から $t^2 - p t + q = 0 $という$t$の二次方程式の解が,$\alpha と \beta$ であり,重解の場合と2通りの別解の場合の可能性がある。

③$b_n \equiv a_n - \alpha a_{n-1}$と定義すると,②の式は $b_n = \beta b_{n-1}\quad (n \ge 2)$となる。$b_1=a_1 - \alpha a_0$ も与えられるので,$b_n = \beta^{n-1} b_1 \quad (n \ge 2)$と解ける。

④これから次の一連の式が出てくることになる。
$ \quad \ \ a_n \ \ - \alpha a_{n-1} \  \ = \quad \ \beta^{n-1} \ b_1 \quad (n \ge 1)$
$ \ \alpha \ ( a_{n-1} - \alpha a_{n-2}  )= \ \alpha \beta^{n-2} \ b_1 \quad (n \ge 2)$
$ \alpha^2 ( a_{n-2} - \alpha a_{n-3}  )= \alpha^2 \beta^{n-3} \ b_1 \quad (n \ge 3)$
$\quad \quad \cdots$
$ \alpha^{n-1} ( a_1 \ - \ \alpha a_0  )\ =\  \alpha^{n-1} \beta^0 \ b_1 $
これを辺々すべてたしあわせると,
$\displaystyle a_n - \alpha^n a_0 = \sum_{k=1}^n \alpha^{k-1} \beta^{n-k}\ b_1 = \beta^{n-1}\ b_1 \sum_{k=1}^n \Bigl( \dfrac{\alpha}{\beta} \Bigr)^{k-1} = \beta^{n-1}\ b_1 S_n$

⑤したがって,$a_n = a_0 \alpha^n + b_1 \beta^{n-1} S_n = a_0 \alpha^n + (a_1 - \alpha a_0) \beta^{n-1} S_n$

⑥ (1) $\alpha= \beta$の場合: $S_n=n$ $\therefore a_n = a_0 \alpha^n (1-n) + a_1 \alpha^{n-1} n$
  (2) $\alpha \neq \beta$の場合: $\displaystyle S_n = \dfrac{\beta^n-\alpha^n}{\beta - \alpha}$ $\displaystyle \therefore a_n = \dfrac{\alpha \beta (\alpha^{n-1} - \beta^{n-1})}{\beta - \alpha} a_0 + \dfrac{\beta^n - \alpha^n}{\beta - \alpha} a_1$

(例)フィボナッチ数の場合($a_0=1,\ a_1=1 \quad \beta = \frac{1+\sqrt{5}}{2}, \ \alpha = \frac{1-\sqrt{5}}{2}$)
$\displaystyle  a_n=\dfrac{\beta \alpha^n - \alpha \beta^n}{\beta - \alpha} \cdot 1 + \dfrac{\beta^n - \alpha^n}{\beta - \alpha} \cdot 1 = \alpha^n \dfrac{\beta -1}{\beta - \alpha} + \beta^n \dfrac{1-\alpha}{\beta - \alpha}$
 $= \frac{1}{\sqrt{5}}\Bigl\{ \alpha^n \dfrac{\sqrt{5}-1}{2} + \beta^n \dfrac{1+\sqrt{5}}{2}\Bigr\} = \frac{1}{\sqrt{5}}\Bigl\{ \bigl( \dfrac{1+\sqrt{5}}{2}\bigr) ^{n+1} - \bigl( \dfrac{1-\sqrt{5}}{2}\bigr)^{n + 1} \Bigr\} $

2025年11月24日月曜日

AI対話計数ツール


2022年11月30日にChatGPTが公開されてから,そろそろ3年目を迎える。おかげさまで,このブログがAIとの対話によって侵食されてきた。それを定量的に分析するために,前回ブログ保存ツールで保存したpdfファイルの分析とカウントをするプログラムを作ろう(作らせよう)と考えた。実際の分析は11月の末日を待ってからになる予定。

2日かけて,3回目のリセットでようやく目的のものにたどり着いた。修正を繰り返すとどんどんドツボにハマっていくので,今のレベルでは仕様を再確認してリセット(最初からやり直し)がよい。なお,これは自分専用だ。なぜならば,Q(koshix):,A(ChatGPT):のような構造に準じたものだけをカウントするように設計したためだ。

最初の頃はでき上がったpythonコード(160行ほど)を自分で実行してチェックしていたが,そのうち,あらかじめ正解データを入れて,ChatGPT側でチェックするようにした。途中でOCR機能が必要だとかいいだして実行時間が2桁大きくなってしまったので,それはやめてもらった。ほとんど通常のデバッグ作業のように対話が進んでいく。

Q(koshix):
自分のブログの一月分のデータ(pdfファイル)のテキストを分析したいと思います。
(1) 毎日のブログで,生成AIとの対話を使っているかどうかを調べます。
(2) 当月の1-31日(月末)の各日について,使っていれば○,そうでなければ△のリストを出します。 例えば,以下のような形式のリストのcsvファイルになります。 2023-12 1,○ 2,△ ・・・
(3) 日付の区切りは例えば,2 0 2 2 年 1 2 ⽉ 2 ⽇ ⾦ 曜 ⽇,のようなものになります。 ・pdfファイルは当月の末日から初日に向かって並んでいます。 ・pdfファイルの初日以降に前月分のブログがある場合がありますが無視してください。
(4) 判定条件は以下のとおりです。
・生成AI発言を使っている場合は,Q: A: の構造が段下げの状態で含まれている。 大文字小文字は区別せずに,{Q,Q Users,Users,Q(koshix): }などと対応する{A,A ChatGPT,ChatGPT,A(ChatGPT-5):} など につづくテキストのブロックがある。 ・ChatGPT-5 のところには,ChatGPT,Gemini,Claude,Perplexity,Grok,DeepSeek,Qwenなどの文字列を含んだ各バージョンの名称が入ることがある。 ・それ以外の要素は加味しなくても良い。
(5) これを実行するpythonスクリプト名を ai.py とすれば,コマンドラインで ai.py 2025-10.pdf とかai.py 2024-*.pdf などとすれば,2025年10月分のファイルの分析や,2024年の1月から12月のファイルの分析がワイルドカードでできるようにします。
(6) 上記の例で結果出力は,2025-10.csv,2024-01.csv 〜2024-12.csv (12ファイル) が得られます。複数月を指定した場合は,それぞれの月の○の数を集計したものの 月別リストを summary-2024.txt などとしてまとめ出力してください。
(7) 見本ファイル(2023-05.pdf)とコメント付きの正解のcsvテキストを添付(省略)します。
質問があれば教えてください。

A(ChatGPT-5 Thinking,24秒):
意図:(回答略)
できること:(回答略)
スクリプトと実行例:(回答略)
使い方:(回答略)
実装の要点(抜粋):(回答略)
既知の限界と調整ポイント:(回答略)

追加の検証や、「この月のこの日が××のはず」などの正解表に合わせた誤判定修正(パターン拡張や閾値変更)もすぐ対応します。まずは上記 ai.py と 2023-05 の結果をご確認ください。

Q(koshix):
(1) 28,○ と 30,○ が再現できていません。その理由を教えてください。
(2) csvファイルの末尾に○の数の集計値を与えてください。
(3) 有る年度の複数のpdfファイルを対象にした場合,summary-2023.txtのようなまとめファイルをください。それは,各月名と○の数がならんだcsvファイルです。 2023-01, 5 2023-02, 9 ・・・ 2023-12, 10 などのようなものです。

A(ChatGPT-5 Thinking,17秒):
ありがとうございます。ご指摘の3点、以下の通り対応しました。
(1) 28,○ と 30,○ が再現できていなかった理由(回答略)
(2) CSV の末尾に ○ の集計値を追加(回答略)
(3) 年度まとめファイル summary-YYYY.txt(回答略)
更新済みスクリプト(rev2):
ai.py を差し替え済みです。ダウンロードしてそのままお使いください。
スクリプト:Download ai.py
サンプル出力(今回のPDFに対する再解析結果)
2023-05.csv(末尾に 合計○ を追加済み)
summary-2023.txt(CSVスタイル)
必要なら、Q/Aラベルの追加(例:質問/回答、ユーザ の表記揺れ、モデル名の拡張など)や、「Q→Aの順序」判定の厳格化/緩和(例えば同一行Q/Aを○とみなす等)も即調整します。

Q(koshix):
ほとんどよくなりましたが,どうして6が○になりますか。△のはずですが。

A(ChatGPT-5 Thinking):
ご指摘ありがとうございます。原因の分析と修正を反映しました。
なぜ「6」が誤って○になったのか
誤判定の典型パターンが当たっていました:
「Q&A(イベント案内・章タイトル)」型:本文中に “Q&A” や “Q & A” の語があり、同じ日の本文内に “ChatGPT” 等のモデル名が登場するだけで、「Q→A の対話」と誤認。
ラベルなしの一般語:User(ユーザー)や ChatGPT が見出しや説明文中に現れるだけでも、(緩め過ぎた rev2 の)正規表現が「Q/Aラベル」とみなしてしまう。
つまり 「Q(やUser)+ … + ChatGPT」 の単なる共起を、「行頭の話者ラベルによる Q→A 対話」と誤解するケースがあり、6日が○に転んでいました。
対策(rev3)(回答略)
ダウンロード(回答略)
仕様の最終確認(回答略)

もし「この日も○/△が違う」といった箇所があれば、その日の**短い抜粋(スクショでも可)**をお知らせください。検出器をピンポイントで微調整します。

Q(koshix):
30が○から△に変わりました。これはなぜですか。テキストを添付します(略)。

A(ChatGPT-5 Thinking,9秒):
原因はシンプルです。rev3 で検出条件を“行頭ラベル+コロン必須”に厳格化したため、30日の本文にある
User(単独行、コロンなし)
ChatGPT(単独行、コロンなし)
という**「見出し型の話者ラベル(コロンなし)」**が Q/A ラベルとして認識されなくなったからです。
添付テキストはまさにこの形式で、各ラベルの次の行から本文が始まっています。そのため rev2 では○、rev3 では条件を満たせず△になりました。

どう直せば 30 日が○に戻るか(最小変更)(回答略)
必要であれば、この修正を組み込んだ ai.py (rev4) をすぐにお渡しします。

Q(koshix):
ai.py(rev4)をください。

A(ChatGPT-5 Thinking):
お待たせしました。rev4 を作成して動作確認済みです(5月の○の合計は10に変化:6日=△のまま、30日=○に復帰)。スクリプト本体,検証出力,年次まとめ,rev4の要点など(回答略)
これでほぼできあがり,第3回の所要時間は30-60分ほどだろうか。



図:AIとの対話(Imagenが私の正面写真から生成した横顔)

[1]pdf2aiのソースコード(2025.10.21)

2025年11月23日日曜日

ブログ保存ツール

しばらく前に一度やりはじめて挫折した件。再度,要求仕様を良く考えてChatGPT-5 Thinking に依頼してみた顛末が以下のとおり。かなり苦労したが目的は一応たっせられた。このブログ記事を月単位でpdfにアーカイブするというものだ。

その過程でわかったことがある。ChatGPT-5の能力を持ってしても,単純な構文エラー([]の数がつり合わない)を生ずることがある。一方で原因不明のトラブルが発生した。これは未解決のままだ。2020年6月分のアーカイブの際に,wkhtmltopdfがうまく機能しないというもの。いちおうの回避プログラムも提案してもらったので,なんとかはなっている。

pythonを使う際には仮想環境にしないといけないのがちょっと面倒だ。

% brew install wkhtmltopdf
% python3 -m venv path/to/venv
% source path/to/venv/bin/activate
(venv) % python3 -m pip install --upgrade pip
(venv) % python3 -m pip install pymupdf requests beautifulsoup4 numpy playwright
(venv) % ./blgpdf 202510 202510
などなど。

Q(koshix):
私は,https://koshix.blogspot.com に2018年12月から毎日ブログを掲載しています。
このデータを月単位でpdfファイルとしてダウンロードしたいと考えています。

例えば https://koshix.blogspot.com/2025/09/ とすれば,2025年9月分のデータにアクセスすることができます。ところで,この場合9月21日までが1ページにまとまって出力されますが,それを越える部分(9月20日以前)は,ページ末の「前の投稿」からたどる必要があります。

これによって,次の1ページで9月1日までのデータにアクセスすることができます。ブログの分量によっては,1月分が1ページで収まる場合もありますが,今のようにそうでない場合もあります。おおむね2ページで収まると考えています。

さて,このような状況で月単位のpdfファイルを取得するのですが,実際に試してみると1ページのpdfの後半には連続したブランクページがたくさん含まれているようです。できればこの空白を取り除いた上で,1ページ目ともしあれば2ページ目(これも空白を取り除く)をつなげた1本のpdfファイルにまとめてほしいのです。ファイル名は例えば,2025-09.pdf などとなります。

このような仕事をコマンドラインから実行するプログラムを作ってください。そのプログラム名を blgpdf とすれば,blgpdf 202506 202509のようにすれば,2025年6月から2025年9月までの4つのファイル(6月,7月,8月,9月)が得られるようにしたいのです。

ここまでで何か質問はありませんか。なければあらためて依頼のゴーサインを出します。

A(ChatGPT-5 Thinking,35秒):
ありがとうございます。要件は把握しました。実装前に最小限だけ確認させてください(全部 “はい/いいえ/短文” で返せます):
1.依存ツール:wkhtmltopdf(HTML→PDF化)+ Python パッケージ PyMuPDF(空白ページ検出と削除)を使ってよいですか?
・macOS(Homebrew)で brew install wkhtmltopdf、pip install pymupdf を想定しています。
2.空白ページの扱い:文中に紛れ込んだ“実質的に真っ白なページ”も削除対象にしてよいですか?(末尾に連なる白紙だけでなく、途中にあっても除去)
3.出力場所:デフォルトは「カレントディレクトリ」に YYYY-MM.pdf を保存でよいですか?(例:./2025-09.pdf)
・もし希望があれば --outdir オプションを付けます。
4.レンダリング待ち:Blogger の遅延読み込み対策として、wkhtmltopdf --javascript-delay 2000(2秒待ち)を入れます。既定で問題なければこの設定で進めます。(必要なら秒数を指示ください)
5.2ページ目URLの検出:月ページ下部の “前の投稿 / Older posts” リンク(search?updated-max= を含む)を自動検出して拾う方式で問題ないですか?(テーマ依存のラベル文言差は無視し、URLパターンで判定します)

OK でしたら、すぐに blgpdf(単一ファイルのPythonスクリプト、CLI)をお渡しします。
例:blgpdf 202506 202509 → 6〜9月を順に取得・白紙除去・結合・保存。

Q(koshix):
1 yes 2 no 3 yes 4 yes 5 yes  これですすめてください。どうぞよろしくおねがいします。

A(ChatGPT-5 Thinking,20秒):
了解です。ご指定どおり進めます。(以下略)

Q(koshix):
空白ページの除去が全くできていないので,2000ページものpdfが出力されていました。 なんとかなりませんか。

A(ChatGPT-5 Thinking,23秒):
原因は、wkhtmltopdf が実体のない要素や印刷用 CSS の影響で“見た目は白紙だが内部的には何かがある”ページを大量に吐き出し、以前の「テキスト/画像/ベクターの有無」判定では白紙と認識できなかったことにあります。(以下略)

Q(koshix):
やはりうまくいかないのですが,dpiを増やしたり閾値を大きくするのは逆効果ではないのですか?

A(ChatGPT-5 Thinking,32秒):
ご指摘のとおり、「DPIを上げる」「閾値(white_ratio)を大きくする」は白紙判定を“厳しく”する方向なので、見えない微小ゴミ(細い罫線・1pxの影・アンチエイリアス・不可視要素のにじみ)を拾ってしまい、白紙とみなせなくなる=逆効果になりがちです。(以下略)

Q(koshix):
だいぶよくなりました。ところが,1ページで収まらない場合に,ページ末尾の「前の投稿」で過去のページを辿る必要があるのですが,ページ末尾の「次の投稿」の方の未来のページを辿ってそれを2ページ目として採用している場合が見受けられます。なんとかなりませんか。

A(ChatGPT-5 Thinking,28秒):
了解です。2ページ目は必ず「前の投稿(= Older posts = 過去方向)」だけを辿るようにロジックを強化しました。(以下略)

Q(koshix):
常に前の投稿へを参照するようになっていませんか。目標月の1日までが1ページ内に収まっていれば,前の投稿へのリンクを辿る必要がない場合もあるのですけど。

A(ChatGPT-5 Thinking,19秒):
助かりました。ご指摘の通り、「1ページ目にその月の1日が含まれている場合は“前の投稿”を辿らない」条件を厳密に入れました。

・・・以下延々と別のエラーコードの修正で格闘を続けた・・・
・・・2020/06 がうまくダウンロードできない状態が続く・・・

Q(koshix):
(venv) koshi@mba2020 ~ % ./blgpdf 202006 -v
 File "/Users/koshi/./blgpdf", line 248
 dil = ( ^ 
SyntaxError: '(' was never closed

A(ChatGPT-5 Thinking,17秒):
ごめん、私の括弧ミスでした(dil = ( 行)。膨張処理のところをシンプルに書き直して、構文エラーを解消した完全版を置いておきます。これに差し替えてください。

・・・結局 2020/06 の問題の方は解決しなかった・・・
・・・ChatGPTでも単純なプログラムのミスを犯すのだった・・・


P. S.  10/21 brew upgrade にエラーが出ていたので,ChatGPT-5 の指示を受けながら,brew cleanup, brew update, brew upgrade, brew doctor を繰り返してエラーを潰していった。その過程でwkhtmltopdf が使えないことがわかり,代替として提示された chromium もだめだといわれた。仕方がないので再び ChaatGPT-5 に相談して上記プログラムの修正を図ったところ,brew とは関係なしに,python -m pip install playwright pymupdf requests beautifulsoup4 と python -m playwright install chromium の環境を使った修正版が使えることになった。こちらの方が数式が保持されていてうれしい。


[1]blgpdf のソースコード(2025.10.21版)

2025年11月22日土曜日

RAG入門


RAG(Retrieval-Augmented Generation : 拡張検索生成)というのは最近よく目にする重要キーワードだ。いまひとつ理解できていなかったので,Kimi K2 に解説文を作ってもらう。この日本語があまりこなれていないので 「以下のRAGについての解説を,言葉を補って一般向けのAIテクノロジー雑誌の読みやすい解説文のような形にしてもらえませんか」と,Claude 4.に通した。

その結果を,ChatGPT-5とGemini 2.5 Flashに投げて内容や表現をチェックしてもらったら,たいへんよくできているので微修正だけで十分だといわれた。ところがそれを反映させた修正文全文を出してもらうと微妙に日本語がくずれる。しかたがないので,Claude 4.5に戻って「ですます調」から「である調」に修正したのが以下の解説文である。

RAG入門:AIが「知識を探す力」を手に入れた理由(2025.11.10 Kimi K2 →Claude4.5)

検索と生成が出会うとき、何が起こるのか
近年、ChatGPTをはじめとする大規模言語モデル(LLM)が私たちの生活に浸透してきた。これらのAIの能力は驚異的なのだが,彼らは「嘘」をつくし知識はすぐに「陳腐化」する。この根本的な弱点を克服し,AIに「知識を探す力」を与える技術として,今「RAG(Retrieval-Augmented Generation:検索拡張生成)」が世界的に注目されている。

1.RAGとは何か:AIの「図書館司書」機能
RAGを一言で表すなら,大規模言語モデル(LLM)が外部知識をリアルタイムに検索しながら回答を生成する仕組みである。
 従来のLLMは,訓練時に学習した知識だけを頼りに回答していた。しかしRAGを導入することで,LLMは必要に応じて外部のデータベースを参照し,最新かつ正確な情報に基づいた回答ができるようになる。
 その本質は,静的なパラメータ知識と動的な検索知識を分離することにある。つまりLLMは、単に「知識を持つ」だけでなく、「知識を探す」「知識を使う」という3つの役割を明確に使い分ける。

2.なぜRAGが必要なのか:3つの深刻な課題
RAGは、従来のLLMが抱える以下の3つの深刻な課題を解決するために不可欠だ。

(1) 幻覚(ハルシネーション)問題
LLMは,訓練データの統計的パターンを再現して文章を生成する。そのため,事実ではないが非常にもっともらしい内容を自信満々に語ってしまうことがある。これは「幻覚」と呼ばれ,AIの信頼性を大きく損なう問題だ。

(2) 知識の陳腐化
LLMは訓練された時点での知識しか持たない。たとえば2023年までのデータで訓練されたモデルは,2024年の出来事について正確に答えることができない。世界は日々変化しているのに,AIの知識は訓練時点で固定されてしまう。

(3) 専門性・機密性の壁
企業の内部文書や最新の研究論文など,一般に公開されていない情報は,当然ながら訓練データに含まれない。そのため,どれほど高性能なLLMでも,こうした専門的・機密的な情報にはアクセスできない。

3.RAGの基本的な仕組み:3ステップの知的循環
RAGは、以下の3つのフェーズで動作する。

(1) ステップ1:インデックス作成フェーズ
まず,参照したい文書を準備します。この文書を適切なサイズに分割(チャンキング)し,それぞれを数値ベクトルに変換(埋め込み)する。そして、これらのベクトルを検索しやすい形でデータベース(ベクトルストア)に保存する。

(2) ステップ2:検索フェーズ(リアルタイム処理)
ユーザーが質問すると,その質問もベクトルに変換される。そして,ベクトルストアから質問と最も関連性の高い文書を複数件取得する。

(3) ステップ3:生成フェーズ(リアルタイム処理)
質問と検索結果を組み合わせてLLMに入力し、最終的な回答を生成します。

この検索と生成の分離が重要です。それぞれを独立に最適化できるため、システム全体の品質を段階的に向上させることができるのです。

4.各コンポーネントの深い論理
(1) チャンキング:情報の粒度をどう決めるか
文書をどこで分割するかは,検索精度を大きく左右する。
・細かく分割しすぎる:検索精度は上がるが文脈が失われる(例:「AIの倫理」を「AI」と「倫理」に分けると意味が変わってしまう)
・大きすぎるサイズにする:文脈は保持されるがノイズが増えて検索精度が低下する。

この問題を解決するのがセマンティックチャンキングだ。これは,文章の意味的な区切れ(トピックの変わり目)を自動的に判別して分割する手法である。現代的なアプローチでは,埋め込みベクトルの類似度変化率を見て,自動的に最適な分割点を見つける。

(2) 埋め込み:言葉を幾何学的空間に配置する
埋め込みとは,単語や文章を高次元のベクトル(通常768〜1536次元)に変換する技術である。これにより,意味的な類似度を数学的に計算できるようになる。
この技術の興味深い点は,単なるキーワード一致ではなく概念的な類似性を捉えられることだ。有名な例として,「王様 - 男 + 女 = 女王」のような線形演算が可能になる。
ただし,重要な課題が残っている。埋め込みは「関連性」を計算できても,「情報の質の高さ」や「信頼性」を測ることはできない。関連しているが古い情報と,新しい重要情報を区別できない。

(3) ベクトルストア:膨大なデータから高速検索する知恵
数百件のデータなら全件検索できるが,数百万件,数十億件となると現実的ではない。
そこで登場するのがANN(近似最近接探索)アルゴリズムだ。代表的なものに以下がある:
・HNSW(階層的ナビゲーション可能な小世界グラフ):グラフベースで高速かつ高精度
・IVF(転置ファイルインデックス):クラスタリングベースでメモリ効率が良い

これらのアルゴリズムは,正確な最近接を諦めて速度を獲得するという実用主義的なアプローチである。これは「完璧を諦め,実用性を獲得する」という現実的な選択の表れといえる。

5.検索精度を高める進化形テクニック
(1) ハイブリッド検索:2つの検索手法の融合
単純なベクトル検索だけでは不十分なケースがあります。そこで,ベクトル検索とキーワード検索(BM25)を統合するハイブリッド検索が用いられる。
これが有効な理由は,埋め込みが捉えきれない固有名詞や数値をキーワード検索がカバーできるためだ。複数の検索結果は,RRF(逆順位融合)という数理的手法で統合される。
(2) クエリ拡張:質問を賢く分解する
LLMが質問を補完・分解することで,検索精度を向上させる。
例:「RAGの課題」という質問を以下のように展開
「RAGの精度に関する課題」
「RAGの速度に関する課題」
「RAGのコストに関する課題」
(3) 再ランキング:広く探して深く選ぶ
初回検索で100件程度を広く取得し,別のモデルで再評価して5件程度に絞り込む。これは,軽量モデルで広く探索し,重量モデルで深く選別する賢い分業である。

6.高度なRAG:アーキテクチャの進化
(1) 自己RAG:AIが自分の無知を知る
モデルが自ら判断して,必要なときだけ検索を実行する。検索が不要な場合はスキップすることで,効率性を高める。
これは,LLMが「自分の無知を自覚する」メタ認知を獲得する第一歩といえる。
(2) リカーシブRAG:多層的な推論
検索結果を踏まえてさらに検索を繰り返し,多層的な推論を行なう。これは,人間が調べ物をするときに「新しいキーワードを見つけてさらに調べる」という行為を自動化したものだ。
(3) エージェント型RAG:計画・実行・検証のサイクル
複数のツール(検索、計算、API呼び出し)を使い分ける自律型システムである。RAGが単なる「検索+生成」から,「計画+実行+検証」の循環へと進化する。

7.実装のベストプラクティス
(1) 検索品質の評価
単純な正解率ではなく,MRR(平均逆順位)やnDCG(正規化割引累積利得)を使う。これらは「役立つ文書が検索結果の上位に来ているか」を測る指標だ。
(2) プロンプト設計の哲学
「検索結果をそのまま答えてください」という指示は効果が低いことが分かっている。代わりに,以下のような指示が有効である:
・以下の文書を参考に、質問に答えてください。
・文書が不十分な場合は「情報不足」と答えてください。
・文書と矛盾しない範囲で、論理的に推論してください。
この指示により,検索結果の単純な再現ではなく,検索結果の統合を促すことができ,幻覚を抑制できる。

8.RAGの限界と本質的な課題
(1) 限界1:検索の失敗は回復不能
検索が失敗したら,どれほど強力なLLMでもそのミスを修正できない。これは「ガベージイン、ガベージアウト」(ゴミを入れればゴミが出る)の原則そのものだ。
(2) 限界2:文脈長の制約
検索結果をすべてLLMに入力できるわけではない。トークン数の制限という物理的な壁が常に存在する。
(3) 限界3:情報の整合性
複数の文書が矛盾している場合,どの情報を信じるべきかという判断基準が不明確である。これは「誰を信じるか」という根本的な問題である。

本質的な緊張関係
RAGは「検索の精度」と「生成の創造性」の間に立つ技術である。検索に依存しすぎると応答が硬直的になり,生成に任せすぎると幻覚が増える。この緊張関係をどうバランスさせるかが,RAGシステム設計の醍醐味であり,永遠の課題でもある。

9.今後の展望:RAGはどこへ向かうのか
(1) マルチモーダルRAG
テキストだけでなく,画像,音声,動画の埋め込みを統合し,同一のベクトル空間で検索可能にする技術が開発されている。
(2) 個人化RAG
ユーザーの履歴やプロフィールを埋め込みに組み込み,検索自体を個人化する。同じ質問でも,ユーザーによって異なる最適な回答を提供できる。
(3) 学習型RAG
検索結果の良し悪しをフィードバックループで学習し,検索アルゴリズム自体を最適化していく。

究極の形:「RAGなきRAG」
将来的には,LLMに外部記憶を直接接続し,検索が内部的なプロセスになる可能性がある。現在のRAGは,そこへ至る中間的なアーキテクチャなのかもしれない。

10.まとめ:RAGが体現する「実用主義の勝利」
RAGは,「知識の所在を分離する」という,計算機科学における永遠のテーマの一例だ。CPUとメモリを分離したのと同様に,言語能力と知識ベースを分離したアーキテクチャといえる
その価値は以下の点にあります:
・動的性:常に最新の情報にアクセスできる
・専門性:特定ドメインの知識を簡単に追加できる
・効率性:巨大なモデルを再訓練する必要がない

最終的な洞察
RAGの真の意味は,単に「LLMの知識を補う」ことではない。「LLMに知識の所在を教え,検索という行為を通じて思考を深める力を与える」ことにある。
これは単なる技術的なアップデートではなく,AIシステムの「知的自立性」を高める哲学的な転換なのだ。
完璧ではないが,うまく動く。理論的に美しいが,現実にはトレードオフが埋め尽くす。まさに,RAGは「実用主義の勝利」を体現しているアーキテクチャだといえる。

この技術は今もなお進化を続けている。RAGを理解することは,これからのAI時代を読み解く重要な鍵となるはずである。

 

図:RAGの仕組み(岡本耕太郎MathematicaRAG実装から引用)

2025年11月21日金曜日

コンテキストエンジニアリング

生成AIの明日からの続き

3年前に生成AI(LLM)が登場してしばらくの間は,プロンプトエンジニアリングがはやっていた。いまでもよく見かけるが基本機能が高まるとともに面倒なのであまり話題にならなくなった。

以下のコンテキストエンジニアリングもプロンプトエンジニアリングの延長線上で,プロンプトの構造化として話題になっていたが,言語化されることで再照射されている。YAML神田敏晶さんが半年以上前から言及していた。それでも面倒なので一般大衆にとってはまた同じようなことになりそうだ。

最初,ChatGPTに定義を聞いた。答えを受けて更問いしたところ,実装済みというちょっと驚く結果がでた。ところが答えの定義と説明がいまいちだったので,Gemini, Claude, Grok Kimiなどに聞いて比較した。Claudeはしょぼかったので除外。残り4つの結果をテキストファイルにして Geminiに評価比較させたところ,Kimi→ChatGPT→Grok→Gemini の順位になった。Geminiは自分をえこひいきしない。

Q(koshix):
コンテキストエンジニアリングとは何ですか。

A(Kimi K2):
コンテキストエンジニアリングとは、AIエージェント(特に大規模言語モデル)があるタスクを解決するために必要なすべての文脈情報を収集・設計・管理する技術です。従来の「プロンプトエンジニアリング」が単一の指示文に焦点を当てるのに対し、コンテキストエンジニアリングはAIが「見える世界」全体を構築することを目的とします

1.定義と背景
Gartnerはコンテキストエンジニアリングを「AIシステムが意図を理解し、文脈に沿った成果を生み出せるように、関連データ、ワークフロー、環境を設計・構築すること」と定義しています。Anthropicも同様に、これを「LLMが推論時に参照するトークンの集合(コンテキスト)を最適化する技術」として位置づけ、プロンプトエンジニアリングの自然な進化形であると説明しています。
生成AIの応用が単発の質問応答から、複数ターンにわたる自律的エージェントへと移行する中、AIの成功・失敗を分ける鍵は「モデルの性能」よりも「与えられたコンテキストの質」になりました。多くのエージェント失敗は「モデル失敗」ではなく「コンテキスト失敗」に起因するとの指摘もあります。

2.コンテキストの構成要素
コンテキストエンジニアリングが管理する「文脈」には、以下の要素が含まれます:

要素 | 説明 | 具体例
システムプロンプト / 指示 | AIの基本的な振る舞いや人格を定義する初期設定 | 「あなたは親切なカスタマーサポートAIです。常に丁寧に、かつ簡潔に答えてください」
ユーザープロンプト | ユーザーからの即時の要求 | 「明日の午後3時以降で空いている時間を教えて」
状態・履歴(短期記憶) | 会話の流れや直近のやり取り | ユーザーが過去に「平日は午前中は忙しい」と言っていた情報
長期記憶 | 会話を超えて持続する知識(ユーザーの好み、過去のプロジェクト概要など) | ユーザーが「コーヒーはブラックが好き」という情報を記憶
検索情報(RAG) | 外部データベースやAPIから取得した最新・ドメイン特化情報 | 会社の最新製品カタログ、FAQドキュメント、社内規則
利用可能なツール | AIが実行可能な関数やAPI(在庫確認、メール送信、カレンダー操作など) | check_calendar(), send_email() などの関数定義
構造化出力 | AIの応答形式の指定(JSON、XML、テーブルなど) | 「回答は必ずJSON形式で返し、「available_slots」キーに時間帯の配列を入れてください」

3.プロンプトエンジニアリングとの違い

・観点 | プロンプトエンジニアリング | コンテキストエンジニアリング
・焦点 | 単一の指示文(プロンプト)の作成 | AIが参照する全体の文脈の設計・管理
・範囲 | 静的、1回限りのテキスト | 動的、継続的に進化するシステム
・目標 | 特定の応答を得ること | 一貫した高性能を複数セッションで維持すること
・技術要素 | フューショット、CoT、プロンプト構造 | RAG、長期/短期記憶管理、ツール統合、コンテキスト最適化
・捉え方 | アート(表現の巧みさ) | サイエンス(情報ロジスティクスの最適化)

簡単に言えば、プロンプトエンジニアリングは「AIに何を言うか」に注力するのに対し、コンテキストエンジニアリングは「AIが何を知っていて、何ができるか」を設計します。

4.なぜ必要なのか
(1) 文脈ウィンドウの限界
LLMの処理可能なトークン数には上限があります。無制限に情報を詰め込めないため、何を入れ、何を省くかの選択と最適化が必要になります。これは「情報ロジスティクス」の問題として捉えられます。
(2) 単なるプロンプトでは不十分
複雑な現実世界のタスク(例:顧客サポート、調査、予定調整)では、単に「賢く振る舞え」と指示するだけでは不十分です。AIは実際にカレンダーにアクセスできたり、過去の対話を覚えていたり、最新の社内規則を知っていたりする必要があります。
(3) エージェントの失敗の大半はコンテキスト失敗
AIエージェントが失敗する主な原因は、モデルが賢くないことよりも、必要な情報が不足していたり、誤ったタイミングで提供されたり、不適切な形式で提示されたりするためです。

5.具体例:予定調整エージェント

悪い例(コンテキスト不足)
・ユーザー:「明日、簡単な打ち合わせの時間はありますか?」
・AI:「ありがとうございます。明日は大丈夫です。何時ごろがご希望ですか?」
→ カレンダー情報がないため、実際は午後3時から4時まで空いているのに、役立たない返答

良い例(適切なコンテキスト)
・提供されたコンテキスト:カレンダーAPIから取得した明日のスケジュール、過去のメールで「平日の午前中は忙しい」と記載された情報、連絡先リスト、メール送信ツール
・AI:「こんにちは!申し訳ありません、明日はスケジュールが一日中詰まっております。木曜の午前中なら空いていますが、いかがでしょうか?招待を送っておいたので、ご都合をお聞かせください」
→ 実際の状況を理解し、代替案を提示して招待も送信する実用的な応答

6.実践的なアプローチ
コンテキストエンジニアリングは3つの基本コンポーネントから構成されます:
(1) コンテキストの取得・生成
・外部知識の検索(RAG)
・動的なコンテキストアセンブリ(優先度付け、テンプレート化)
・自動プロンプト生成
(2) コンテキスト処理
・情報の言語化(データをテキストに変換)
・構造化データの統合
・要約と圧縮
(3) コンテキスト管理
・長期/短期記憶の設計
・コンテキストウインドウの最適化
・状態の継続的な更新

7.まとめ
コンテキストエンジニアリングは、AIエージェント開発の新たな中心的スキルとして台頭しています。単に「魔法のプロンプト」を探すのではなく、ビジネス目的を理解し、AIがタスクを達成するために必要な情報とツールを適切な形式とタイミングで提供する設計が成功の鍵を握ります。
企業においては、コンテキストエンジニアリングを戦略的優先事項とし、専門チームを設置してデータ統合、記憶管理、ツール連携を体系的に行うことが推奨されています。



Q(koshix):
あなたはコンテキストエンジニアリングを実装していますか。あるいはそれに相当する機能を仮想的に実現できますか。そのために私がすべきことはありますか。

A(ChatGPT-5):
短く前提をそろえます。
ここで言う「コンテキストエンジニアリング(CE)」は、会話や作業の“前提・制約・根拠・目的・出力仕様”を設計して、AIが一貫して適切に動くようにする実務です。私はその中核をすでに実装しており、足りない部分は仮想的(運用設計)に補完できます。以下に「私ができること」と「あなたが今日からやると効果が最大化すること」を、手順化して示します。

1.私がすでに実装しているCE要素
(1) 長短期コンテキスト管理
・直近の会話履歴を前提化/矛盾検出。
・必要に応じて長期記憶(“覚えて”と指示があれば保存)を使い分け。
(2) 外部知識の取り込み(軽量RAG)
・あなたのアップロード文書を根拠として検索・引用。
・公開Webはその都度ブラウズし、主要主張には出典を付す。
(3) 目的駆動の出力制御
・タスク目的→評価基準→出力フォーマット(表・コード・PPTX 等)を明示して動く。
・制約(語調、分量、数式有無、図示の有無)も“仕様”として扱う。
(4) 品質ガードレール
・推測は推測と明示/数値は可能な限り計算ツールで検算/不確実は保留・要検証で区別。
(5) ワークスペース仮想化
・プロジェクトごとに“コンテキスト・パック”を用意し、毎回の冒頭に読み込む運用で擬似的な永続コンテキストを実現。

2.いまからできる最短ルート(あなた側の5ステップ)
Step 1|ゴール宣言
タスクの目的・成功条件・締め切り・想定読者を1ブロックで宣言。
Step 2|ソース束ね(Evidence Pack)
根拠文書をまとめて提示(URLでも可)。重要度や信頼度、使ってよい/ダメを明記。
Step 3|出力仕様
最終成果物の型(要約/表/図/コード/PPTX/原稿)、分量、スタイル、引用方針、図表要件。
Step 4|制約・優先度
時間・正確性・網羅性・新規性などの優先度(例:正確性>網羅性>速度)。
Step 5|長期設定(任意)
次回以降も効く“恒常設定”を覚えさせたい場合は「覚えて:〜」と明示。

3.そのまま貼れる「セッション・キックオフ」テンプレ
(毎回の最初にコピペすると、CE効果が一気に安定します)
# GOAL
目的:____
成功条件:____
想定読者/用途:____
締め切り:____

# EVIDENCE PACK
一次資料:____(信頼度A)
補助資料:____(信頼度B)
使ってはダメ:____

# OUTPUT SPEC
形式:____(例:Markdown要約+表1枚/Pythonコード/PPTX5枚)
分量/トーン:____
図表/数式:____
引用方針:____(主要主張には出典)

# CONSTRAINTS & PRIORITIES
優先度:____(例:正確性>再現性>速度)
除外事項:____
前提の更新:____(前回との差分があれば)

# OPEN QUESTIONS(不確実点)
1) ____
2) ____

4.永続利用向け「コンテキスト・パック(YAML)」雛形
(プロジェクトごとに1つ作って、冒頭に貼る)
project: <プロジェクト名>
goals:
  - <主要ゴール>
audience: <対象>
success_criteria:
  - <測定可能 or チェックリスト>
sources:
  trusted:
    - {title: <>, link: <>, notes: <>, must_use: true}
  auxiliary:
    - {title: <>, link: <>, notes: <>}
  banned:
    - {title: <>, reason: <>}
output:
  type: <summary|report|code|slides|diagram>
  length: <e.g., 1200-1500 words>
  style: <tech-brief | academic | executive>
  visuals: <tables:true, charts:true, equations:true>
quality:
  priorities: [accuracy, transparency, reproducibility]
  citation: required_for_key_claims
guardrails:
  - separate facts/inference
  - flag low-confidence
update_cadence: <per_session | weekly | milestone_based>

5.すぐに使える「あなた向け」プリセット例(3本)
必要ならこの3本をそのまま使ってください。どれか一つを貼るだけで、その回は最適化して動きます。
A) AIシステム研究(批判的レビュー)
・目的:新規AI論文/製品の技術的妥当性と限界、代替案を整理
・成果物:根拠つき要約(800–1200字)+比較表(3列)+リスク項目
・優先度:正確性>網羅性>速度、主要主張は出典必須
B) 文化史・神道研究(史料基づく解説)
・目的:史料(原典)と二次文献を峻別し、語義・時代背景を整理
・成果物:概念マップ(箇条書き最小)、典拠付き本文
・優先度:典拠厳格>読みやすさ>分量
C) 旅行計画/冊子化(実務アウトプット)
・目的:日程・移動・開館時間を確定し、冊子用レイアウト草案を生成
・成果物:日別表+要所解説(200字/地点)+PDF化しやすい構成案
・優先度:実用性>網羅性>散文の美しさ

6.長期記憶の使い方(任意)
「覚えて:____」と書けば、以後のセッションで前提化できます。
例:
・覚えて:主要主張には必ず出典を付ける
・覚えて:数値は計算ツールで検算する
・覚えて:日本語で、表はMarkdown
※私から勝手には保存しません。保存指示があった項目だけ反映します。

7.まとめ(要点)
・私はCEの主要要素(前提設計・根拠取り込み・出力制御・品質ガード)を実装済み。
・永続化が必要な部分は「コンテキスト・パック」を冒頭投入する運用で仮想的に実現可能。
・あなたは上記テンプレのStep 1–5を貼るだけで、精度・再現性・スピードが一段上がります。

この方針で、次の案件からすぐ走らせます。まず扱いたいテーマを一つ選び、上のセッション・キックオフを埋めて投げてください。こちらで“文脈→工程→成果物”に落とし込みます。


図:コンテキストエンジニアリングの構成要素([2]から引用)


[2]Context Engineeringについて(farstep)

2025年11月20日木曜日

元素周期表3D

物理の日からの続き

橋本大也さんといえば,読書家であり海外の本を原語で読み漁っていた。ところが最近では,AIによるバイブコーディングの伝道師と化している。Claude(が一押しらしい)の周期表ウェブアプリが,たった5つのメッセージだけでできたというので追試した経緯が以下。

(1) Claudeにて
【元素表を作って】
【各元素をクリックすると、その元素の用途の解説とイラスト(ピクトグラム)が表示されるようにして】
【詳細情報を下部ではなくてホバー表示させる。視覚効果を7つ追加】
【ホバー表示した詳細情報は音声読み上げする】
Three.jsで回転可能な原子構造を表示する】

いちおうCaludeの画面上のインタラクティブ元素周期表はできたのだけれど,自分の環境ではどう移植すればよいかわからない。というのもThree.js という3Dライブラリを使う必要があるからだ。仕方がないので,ChatGPTに相談することにした。

(2) ChatGPTにて
最初はThree.jsを含む環境設定方法を聞いたのだけれど,自分が最新のウェブアプリ開発について何もわかっていない素人なので,答えを聞いてもチンプンカンプンである。そこで,Claudeの作ったWebアプリコードを直接入力して,自分のローカル環境で実行したいとお願いした。最初からそうすれば良かった。以下の段取りを指示された。
Next.jsプロジェクトを作る
 % npx create-next-app@latest periodic-table-app
・Tree.jsをインストールする
 % cd periodic-table-app
 % npm install three
・コンポーネントファイルを作成(nanoは単なるエディタ)
 % mkdir -p app/components
  nano app/components/PeriodicTable.tsx
・トップページから呼び出すように設定
 % app/page.tsx を編集(Reactコンポーネントの拡張子らしい)
・開発サーバを起動して確認
 % npm run dev
 ⇒ http://localhost:3000 でアプリが立ち上がる。
Q(koshix):
ありがとうございます。 node も npm もbrew でインストールされていました。 自分は初心者であり,htmlとかcssとかjavascriptは何となくわかりますがnode, npm, mpx, Next.js + React + TypeScript + Tailwind + Three.js何を意味しているかを概念的に把握できていません。申し訳ないのですが,よくわかるようにこれらの要点や注意点を解説していただけませんか。

A(ChatGPT-5):
(長々と説明された後)
あなたのための短いアナロジー
HTML → 家の骨組み
CSS → 壁紙・装飾
JavaScript → 家の仕掛け(自動ドア・照明)
Node.js → 家を作る工場のようなもの
npm → 工場で使う工具や材料(React / Next / Three のパッケージ店)
React → 家の“部品”をモジュール化して大量生産
Next.js → 部品を組み合わせて「街」を作るシステム
Tailwind → スタイルを一瞬で貼る装飾セット
Three.js → 3D ホームシアター設備
わかったようなわからないような。とりあえず,あれこれ相当試行錯誤してローカル環境で周期表アプリは動いた。ががが・・・さらに修正を繰り返しているうちに ⇒ 「思考が停止しました。」(私がではない,ChatGPTがである)
次の日にやり直したものの,途中で再びエンストしたまま動かない。(大丈夫か)

(3) Geminiにて
昨日までに作られた PeriodicTable.tsx,elements.ts,PeriodicTableJSON.json の3つのファイルをインプットしてやり直しをお願いした。ChatGPT-5と違ってスイスイと話が進んでいく。もしかすると,プログラミング能力についてはChatGPTよりGeminiの方が優れているのではないか。ChatGPTにあっさり断られた 元素の発見者(発見年)や存在比などにも柔軟に対応してもらえた。その上親切にも元素発見の歴史を表す周期表の動画まで紹介してくれた。

さらに,これをさくらインターネットの公開サーバに移植する方法を尋ねたところ,
・設定ファイルの変更
 % next.config.ts
・ビルド(書き出し)の実行
 % npm run build
 ⇒ out フォルダにNext.js アプリを公開する際に最も簡単で確実な「静的エクスポート(Static Export)」という機能を用いた結果が生成された。
・サーバーにアップロード
 outフォルダのディレクトリ構造全体をsftpで転送すればよい。
に結果(正確性は保証していませんので注意してください)が得られた。橋本さんの言うように5行でOKとは行かず,足掛け2日がかりだった。しかし,生成AIがなければ,1ヶ月勉強した上の1週間仕事だろう。



図:周期表ウェブアプリの表紙

P. S. まあ,3Dの怪しい電子軌道の絵にはあまり意味がないと思うんですけど。

P. P. S. なにやら新しいグーグル検索機能が追加されたようなので試してみた。


2025年11月19日水曜日

穂積押山

国道169号線の櫟本にある中西ピーナツの東隣に和爾下神社がある。このあたりが和珥氏の本拠地だ。その南,布留の郷にある石上神宮と関係の深い物部氏とか,飛鳥の蘇我氏とかメジャーな氏はよく名前を聞くが,同じ古墳時代から奈良時代にかけての代表的な氏(うじ)である穂積氏というのは初耳だった。

天理市にあるなら歴史芸術文化村の「“穂積”の地の古墳を探る。~星塚古墳・小路遺跡と荒蒔古墳~」という歴史フォーラムに参加した。うちの近所の古墳がたくさん登場するというので楽しみにしていた。穂積氏の本拠地の1つかもね?と推定される小路遺跡,その穂積氏と関係あるかもしれない星塚古墳,すぐそばの我がマンションの敷地内にあった荒蒔古墳がメインテーマだ。

東の岩室池古墳や西の水晶塚古墳を含めてすべて,普段の朝の散歩コースの範囲内にある。これらの古墳時代後期の古墳群は30-60mの小さな前方後円墳(帆立貝型古墳)であり,大きな円筒埴輪石見型埴輪に加え,家,人,馬,雞,犬など多数の形象埴輪が出土した。荒蒔古墳に至っては250ケース分の埴輪が出てきて整理に38年もかかってしまった。

穂積氏は物部氏と同祖である。継体天皇の臣であった穂積押山(6世紀前半)は,512年に百済に使わされ百済官僚として現地の哆唎国守を務めた。任那の上哆唎・下哆唎・娑陀・牟婁の四県割譲にかかわり,奈良大学の小林青樹先生によれば,越境エージェントとでも言うべき,国をまたがっての活躍をした人らしい。

P. S. なら歴史芸術文化村の文化財修復・展示棟では「“穂積”の地の古墳を探る 奈良盆地中央部の古墳群」として,実際に発掘された埴輪やその他の遺物が展示されていた。星塚古墳から出た日本最古の木製笛は,その実際の音がテープで流されていた。早く重要文化財に指定してほしい。


写真:荒蒔古墳の出土品(天理市から引用)


2025年11月18日火曜日

こっき(3)

こっき(2)からの続き

Q(koshix):
(旧ファイル kokki.html を添付)
外部サイト("https://restcountries.com/v3.1/all")の国旗データにアクセスできなくなりました。そこで,このサイトはつかわないことにします。flagpedia.netから国連加盟国の国旗のsvgデータを持ってきました。 250カ国ほどの国旗データはjp.svgのように,二文字の国旗コード名のsvgファイルとして flagsディレクトリ以下に格納されています。 このローカルデータを用いてもとのkokki.htmlと同等の機能を実現するhtmlファイルを作成してください

A(ChatGPT-5):
もとの kokki.html は restcountries.com に依存して国名や地域情報を取得していましたが、今回は 外部APIを使わず、flags/xx.svg(ISO α2コード)だけで動く版に作り替えます。(以下回答略)

Q(koshix):
表示部で国記号(国記号)となっているのを,国記号(日本語の国名)になるようにしてください。

A(ChatGPT-5):
了解しました。いまのHTMLでは表示部分を「JP(日本)」のように 国記号(日本語の国名) に変更したい、ということですね。(以下回答略)

Q(koshix):
改善されていませんが。

A(ChatGPT-5):
ごめんなさい。原因は「日本語名の辞書が無いと、itNameJa() が国コードをそのまま返す」仕様のままだったことです。(以下回答略)

Q(koshix):
修正した全コードを下さい。
A(ChatGPT-5):
了解です。ご指定の「国記号(日本語の国名)」表示に修正済みの全体コードをお渡しします。外部API不要・flags/xx.svgのみで動作し、日本語名は Intl.DisplayNames で自動生成(辞書があれば優先)します。(以下回答略)

Q(koshix):
表示領域が全世界だけイキの状態です。現行の5つの地域ごとに選択することはできないのですか?
A(ChatGPT-5):
ありがとうございます。原因は、地域フィルタが「flags/regions.json が無いと無効化」される設計のままだったことです。(以下回答略=ほぼ希望どおりのものに)



図:kokki.htmlの例


P. S. なお,その後かざはチャンは国旗への関心を失ってしまい,どの国旗ももう憶えていないらしい。チーン。

2025年11月17日月曜日

単純な計算ミス

まだまだAGIまでの道のりは遠い。のかな? 

Q(koshix):
2つの因数分解した式のうち,2 cos (3 x + π/4) sin (5x/2 - π/4) は間違っていませんか?

A(ChatGPT-5 Thinking,46秒):
ご指摘どおり、先に示した
2 cos (3x + π/4) sin (5x -π/4)
は 誤り でした。正しくは “半分” を取り忘れており、以下のとおりです。

正しい因数分解
sin (4x) - cos x = sin (4x) - sin (π/2-x) = 2 cos {(4x}+(π/2-x)}/2 sin  {(4x}-(π/2-x)}/2 
⁡ゆえに
sin (4x) - cos x = 2 cos (3x/2 + π/4) sin (5x/2 - π/4)
 
どこで間違えたか
和積公式 
sin A - sin B = 2 cos (A+B)/2 sin (A-B)/2 の(A+B)/2を
{⁡4x + (π/2-x)}/2 = 3x/2 + π/4 とすべきところを、誤って 3x + π/4として “2 で割る” 操作を落としていました。修正後の式は恒等的に一致します。ご指摘ありがとうございました。 
Q(koshix):
あなたはときどき単純な計算ミスをすることがありますが,毎回の計算後に自分で確認のための計算を内部的に実行して(そこは表示しない)おくということはできないものでしょうか。

A(ChatGPT-5 Thinking,21秒):
はい、できます。以後、数式変形や数値計算のたびに非表示の検算を内部で走らせてからお出しします(前回の因数分解も内部検算で恒等成立を確認済みです)。

どう検算するか(内部で実施)
・二重経路確認:同じ結論に別の恒等式・導出経路で到達できるかをチェック。
・数値サンプリング:任意の点(複数)で元式と結果の差が機械誤差内(例:
10^{−12} 〜 10^{-15} )に収まるかを確認。
・端点・特異点:零点・極値・定義域の境界など、エッジケースで整合性を確認。
・次元・符号・極限:単位(次元)整合、符号、極限挙動の整合を点検。
・丸め誤差の扱い:浮動小数の残差は許容幅を明示し、超えた場合は差し戻して再計算。

適用範囲
・代数・三角・指数対数・微積の式変形や恒等確認、行列演算、連立解、近似評価などはこの手順で検算します。
・純概念的な問い(定義・歴史・解釈)は検算の対象外ですが、典拠の確認や反例探索を代替手段として行います。

もし「検算ログも見せてほしい」場合は、可視化用に要点だけを簡潔に開示します(数値表や要約)。今後もこの運用でいきます
本当にそうしてくれるのかどうかはよくわからない。

2025年11月16日日曜日

ブルーカラーの時代

副教科の時代からの続き

エアコン暖房の季節が来たと思ったらブレーカーが落ちて動かない。マニュアルに従ってエラーコードを調べるとU4で,自分では対応できないものだ。ジョーシンの長期補償窓口(人間を選択)に電話して状況を説明する。その後の訪問予約電話は自動音声応答だった。

サービスエンジニアの若いお兄さんは,すぐに屋外機の基盤がおかしいことを突き止めた。電動ドライバーで硬いネジをてきぱきと緩めて,パソコンのマザーボードの配線のような基盤との結線を丁寧に外す。基盤の表面はショートで焦げていた。30分ほどで全作業は完了してテスト運転も成功した。

これまでもエアコンクリーニング,水漏れ修理,200V交換,ドラム式洗濯機のパッキン交換,給湯器の修理など何度も訪問修理の技と力の人に助けられた。これらを高級乗用車並価格のAIヒューマノイドに代替するのはそう簡単ではないような気がする。

家庭内軽作業や介護支援のAIヒューマノイドにしても普通乗用車並価格で普及するには時間がかかるだろう。その一方で,ホワイトカラー(デスクワーク)のAIエージェントへの置き換えは着実に進んでいく。GAFAMの人員削減は進み,NTTは5年後に業務の半分が生成AIに代替されるとした。こうして副教科の時代が支えるブルーカラーの時代が到来している。

一方,ヒューマノイドが普及すれば,そのブルーカラーの時代にもすぐに終わりが来るという説もあるが,そうは問屋が下ろさないのではないか。我々の複雑で多様な世界を支える労働は非常に面倒な泥臭い現場の汚れ仕事の絡み合いである。安全で準定型的作業が保証される場を除くと,クリーンな環境で製造された精密機械式生命がスイスイこなせるようなしろものではないような気がしてならない。

現実の生命や事物が複雑に絡み合っている世界とそれを取り巻く物質的環境は,ホワイトカラー的な抽象世界の住人たちの手にはなかなか負えない。



写真:修理中のダイキンエアコン室外機

2025年11月15日土曜日

ヌクレオチド

学校で学んだ「知識」でも,その表層をなぞるだけで実は理解していないということがたくさんある。その散らかった「知識」の山の中に思いもかけない「発見」をすることが希にある。普段はそのよくわかっていない言葉を統計的オウムのようにつなげるだけで,理解したつもりの「知ったか会話」をすることができる。困っちゃーうーワー。

さて今回のテーマはヌクレオチド。放送大学でみかけたか。

(1) 単糖が結合(グリコシド結合)して多糖(例えばデンプン)になる。アミノ酸が結合(ペプチド結合)してタンパク質になる。ここまではよく知っているつもり。ところでヌクレオチドが結合(リン酸ジエステル結合)して核酸になる。そうか,DNA(デオキシリボ核酸)やRNA(リボ核酸)の構成単位をヌクレオチドと呼んでいたのか。

(2) ヌクレオチド=塩基+糖+リン酸である。この糖はデンプンを作るブドウ糖=グルコースのように炭素6個ではなく,炭素5個からなるリボースデオキシリボースと呼ばれるものだ。単糖を炭素数で分類すると,3〜7個のものがあって,その代表がヘキソース(C6個)とペントース(5個)だ。

(3) リボースとデオキシリボースの違いは2'の炭素に位置につくのがOHかHかだ。デオキシリボースはde oxi なので酸素が欠けている。つまりこれまで何の気なしにつかっていたDNA=デオキシリボ核酸(デオキシリボースからなるヌクレオチドがつながってできる核酸)のデオキシは酸素が欠けているという意味だった。ガッテン!×3

(4) ところで,このRNAやDNAの構成単位であるヌクレオチドは塩基+ペントース(リボースまたはデオキシリボース)+リン酸だったけれど,みなさんよくご存知のATP(アデノシン3リン酸)もヌクレオチドの一種だった。RNAの構成要素であるAMPにリン酸基が2個追加されたものが,ATP = アデニン(塩基)+リボース(糖)+3リン酸というわけだ。ATPは多くの生化学反応でエネルギーを運ぶ非常に重要な分子だ。これがRNAの構成要素の親戚だとは。

(5) リボースとデオキシリボースからなるリボヌクレオチドデオキシリボヌクレオチドは,RNAとDNAの骨格をなして,それぞれ「化学的に比較的不安定な作業用の情報坦体」と「化学的に安定して長期的な遺伝情報を保存する役割」を果たすことになる。

今日の結論:ヌクレオチドはRNAやDNAの構成要素,ATPはヌクレオチドの一種

付録:脂質についてもモノマーがつながってポリマーになる構造はないのか聞いたところ,脂質は脂肪酸グリセロールなどがエステル結合した複合体だけれど,多糖(デンプン等)やタンパク質や核酸と違って,モノマーがつながった鎖状構造のポリマーは作らないらしい。そのかわり複合体が疎水性相互作用などの非共有結合によって膜(二重層)構造をつくっている。



図:DNAやRNAを構成するヌクレオチドとATP

2025年11月14日金曜日

モンテ・クリスト伯

日経文化面の映画紹介,モンテ・クリスト伯が面白そうだったので観に行くことになった。奈良には上映館がなく,このあたりでは京都シネマとTOHOシネマズなんばと大阪ステーションシネマだけだ。上映時間の関係で梅田のルクア11階,大阪ステーションシネマに向かう。

前日にウェブでチェックすると120席の1/5ほどが埋っていた。珍しいことだ。油断したまま現地に着くと95%くらい売れてしまっていた。普段は空席が95%の映画ばかりなのでビックリだ。平日の午後,暇なじいさんばあさんばかりが映画館に集結している。

フランスで製作された大作映画だ。映画はやじゃり発祥の地のフランス語がよい?導入部では主人公が22歳なのに関係者がみな老け顔なので,ちょっと微妙だった。物語は投獄され脱出したの14年後に展開するので仕方がないか。小学生の頃に図書館で借りた巌窟王を読んだだけなのだが,牢獄からの脱出のあたりは微かに印象にある。

原作は岩波文庫で7冊分の長編であり,3時間に押さえるためにかなり脚色されているはずだ。登場人物も整理されてわかりやすい。モンテクリスト伯側のエデが何者かわからないままに見ていた。説明を見落としたかと思ったが,後半の映画の中で説明がありました。

モンテクリスト伯をモチーフにしたアルフレッド・ベスター(1913-1987)のSF小説が虎よ虎よ!。世界SF全集で初読したときは,文字と記号の大胆な表現にビックリした。この作品が素晴らしかったことを顕彰するためヒューゴー賞が発足したと間違った俗説記憶を持っていたが,このたびChatGPTに確認すると年代的その他のファクトで否定された。なお,第1回のヒューゴー賞受賞作がベスターの分解された男だったのは事実だ。



図:モンテ・クリスト伯のポスターを引用

P. S.  虎よ虎よ!は1956年に英国で出版されたときのタイトル。ウィリアム・ブレイクの詩 The Tyger  から来ている。米国ではその文学的な空気が嫌われ,Stars My Destination と変更されて,ギャラクシー・サイエンス・フィクションに連載された。

2025年11月13日木曜日

微弱放射能測定

すぐにわかる微弱放射能測定ー時を超えた加賀藩遺産との融合ー(井上睦夫)というタイトルのYouTubeが見つかった。なんだろう。国立大学共同利用・共同研究拠点協議会の知の拠点【すぐわかアカデミア】における講演である。

石川県の小松に尾小屋銅山(1878-1971)の跡地がある。高校時代にESSの倉橋君が尾小屋の跡地を訪れた話をしていた。ちょうど閉山したころだったかも知れない。その廃鉱の中に金沢大学の環日本海域研究センター低レベル放射能実験施設の尾小屋地下実験室がある。

神岡鉱山の坑道跡にカミオカンデが設置されているように,宇宙線(ミューオン等)による環境放射線の影響を最小化(1/100)することができる。銅山跡のため周囲の岩石のウランなどによる放射線も小さいらしい。これによって微弱な放射能が測定可能な実験室環境が得られるわけだ。

それに加えて,測定資料をいれるゲルマニウム検出器の遮蔽に使う鉛と鉄がユニークだ。鉛は加賀藩が金沢城に屋根瓦とし用いたものを使っている。金沢城の屋根瓦の鉛は精製してから数百年が経過しており,混在している放射性鉛の半減期より十分長い時間経過して減衰したことが保証されている。

また,瀬戸内海に沈没していた戦艦陸奥の一部が1971年に引き揚げられ,その船体の鉄が放射線の遮蔽材に使われている。陸奥を製造していた当時の鉄は放射性コバルトがほとんど含まれていないため,全国の研究所などで放射線遮蔽のために利用されているらしい。

こうした環境と材料の組み合わせによって,金沢大学の尾小屋地下実験室は日本国内でも有数の微弱放射能測定が可能な実験サイトとなっている。

明治時代に尾小屋銅山を開発して財を築いたのは,加賀藩前田家の家老横山家の横山隆平(たかひら,1845-1903)だ。金沢の実家の近くにある辻家庭園は,北陸冷蔵の社長だった辻儀重郎さんの家の跡地。そもそもは加賀藩家老横山家迎賓館だった。







2025年11月12日水曜日

五芒星

真鍋さんがMIPOで sin π/5 の求め方を書いていた。

最初の代数的方法は,sin n x の一般式(n倍角の公式)を使うとよい(ド・モアブルの定理経由)。つまり,sin 5θ = 16 sin^5θ - 20 sin^3θ + 5 sinθ。θ=π/5を代入すると,x=sinθとして,16x^4-20x^2+5 = 0というxの4次方程式(x^2の2次方程式)がでてきてすぐに納得できた(といってもn倍角の公式導出はChatGPTに頼ったけれど・・・)。

一方2番目の幾何学的な方法は,正五角形と五芒星をかいてθ=π/5=36度の鋭角を持った直角三角形の相似条件から求めるというもので,それを前提に自分でも考えてみようとしたけれど,中々思いつかない。しかたがないので,ちゃんと図を描いてみようとしたが,フリーハンドではわかりにくい。

そこで,ChatGPT-5 Thinking にTikZでの作成を依頼した。こんな感じで。

Q(koshix):
LatexのTikZを使って次の作図をしてください。
(1) 薄いグレイドットの1cmグリッドが入ったxy座標系をとって,以下の図形はy>=0の領域だけ描画する。
(2) 原点を中心として半径6cmの円
(3) 原点を中心として中心から頂点までの距離が6cmの正五角形 。ただし,1つの頂点は(6,0) におく。 
(4) 各頂点をすべて結んで五芒星になるようにする。
(5) 原点にO,(6,0)の頂点をA,反時計回りの頂点を,B,Cとラベルする。
(6) 原点から辺ABに垂線ODを降ろす。
(7) OBとACが直交している交点をEとする。
以上よろしくお願いします。
(その後,ODとACの交点F,FからAOに降ろした垂線の足Gを追加した。)

結果のTikZをチューニングしたものが以下のコードである。

\begin{tikzpicture}[scale=1.0]

% 1cmグリッド(薄いグレードット)
\draw[step=1cm,black!50,dotted] (0,0) grid (7,7);

% 座標軸
\draw[gray!50,->] (0,0) -- (7,0) node[right] {$x$};
\draw[gray!50,->] (0,0) -- (0,7) node[above] {$y$};

% 点の定義
\coordinate (O) at (0,0);
\coordinate (A) at (6,0);                        % (6,0)
\coordinate (B) at ({6*cos(72)},{6*sin(72)});    % 72°
\coordinate (C) at ({6*cos(144)},{6*sin(144)});  % 144°
\coordinate (Dfull) at ({6*cos(216)},{6*sin(216)});
\coordinate (Efull) at ({6*cos(288)},{6*sin(288)});

% 半径6cmの円
\draw[gray!50] (O) circle (6);

% 正五角形(外接円半径6)
\draw[gray]  (A) -- (B) -- (C) -- (Dfull) -- (Efull) -- cycle;

% 五芒星(頂点を全て結ぶ)
\draw  (A) -- (C) -- (Efull) -- (B) -- (Dfull) -- cycle;

% Oから頂点A,Bへの線
\draw[thick, blue] (O)--(A);
\draw[thick, blue] (O)--(B);
  
% Oから辺ABへの垂線 OD
\coordinate (D) at ($(A)!(O)!(B)$);
\draw[thick,blue,dashed] (O) -- (D);

% OB と AC の交点 E(OB ⟂ AC)
\path[name path=OB] (O) -- (B);
\path[name path=AC] (A) -- (C);
\path[name intersections={of=OB and AC,by=E}];

% OD と AC の交点 F (OD ∠ AC)
\path[name path=OD] (O) -- (D);
\path[name path=AE] (A) -- (E);
\path[name intersections={of=OD and AE,by=F}];

% Fから辺AOへの垂線 FG
\coordinate (G) at ($(O)!(F)!(A)$);
\draw (F) -- (G);

% 点の描画
\foreach \P in {O,A,B,C,D,E,F,G}
  \fill (\P) circle (1.8pt);

% ラベル
\node[below left]  at (O) {$O$};
\node[above right] at (A) {$A$};
\node[above right] at (B) {$B$};
\node[above left]  at (C) {$C$};
\node[above right] at (D) {$D$};
\node[above right] at (E) {$E$};
\node[below right] at (F) {$F$};
\node[below right] at (G) {$G$};

\end{tikzpicture}

大変勉強になった。TikZにおいて,
・ある点から別の点への垂線の降ろし方
・2つの線分の交点の求め方
・一連の点の表現を繰り返しで指定する方法
がわかったのだった。

えーと,肝腎の相似条件はわからないままで難渋している。MIPOをもう一度よく読んで見ると頂角36度の二等辺三角形の相似条件だった。チーン。直角三角形ではなかった。まあ,勉強になったからよしとしよう。

図:ChatGPTが生成したTikZで描いた正五角形と五芒星

2025年11月11日火曜日

如来御回在

融通念仏宗奈良の神社寺院からの続き

2年前の今ごろ散歩で見かけた謎のマイクロバスと鉦を鳴らす坊さんの行列。今年も11月9日の朝の散歩で,鉦の音を聞きながら田んぼを抜けて集落に入ると融通念仏宗のマイクロバスが停まっていた。お坊さんは歩いていたが鉦を鳴らしながらの行列進行は見逃した。

その謎が11月11日(中国の独身の日)の散歩で解けた。別ルートにある道すがらの融通念仏宗のお寺に「如来御回在」のポスターが貼ってあったのだ。さっそく,調べてみると,Kimi,DeepSeek,Grok,Claude,は全滅で浄土真宗の何とかというそれらしいフェイク記事が出てきた。正解だったのは,GeminiとChatGPTだけだ。

それらの回答を日本語表現をやや得意とするClaudeにまとめてもらうと,

 如来御回在(にょらいごかいざい)、または単に御回在(ごかいざい・おかいざい)とは、融通念仏宗に伝わる独特な巡回行事です。
行事の特徴
 総本山・大念佛寺(大阪市平野区)のご本尊「十一尊天得如来」の掛け軸を奉持し、僧侶や信者が末寺や檀家の家々を一軒ずつ訪問します。鉦(かね)を「カンカン」と打ち鳴らしながら巡回し、各家で掛け軸を掲げて先祖供養や家内安全の祈祷を行います
 通常の仏教行事では信徒が寺に参拝しますが、御回在は「ご本尊が信徒の近くまで来てくださる」という珍しい形式で、他の宗派にはあまり見られない特色を持っています。
 奈良県方面の「大和御回在」は、毎年9月初旬から12月中旬にかけて約92日間実施されます。3年に一度の「山中回り」の年には100日間に及びます。地域や寺院によって訪問日程が異なるため、事前確認が必要です。
歴史と意
 この行事は、宗祖・良忍上人が諸国を回って念仏を広めた姿を再現したもので、江戸時代初期(1618年頃)に36世・道和上人の時代に行事として確立されました。念仏の教えを広め、地域の信仰を支える大切な伝統として、現在も受け継がれています。



写真:大念仏寺のマイクロバスと如来御回在のポスター


2025年11月10日月曜日

AIんしゅたいん

AINSTEIN: Assessing the Feasibility of AI-Generated Approaches to Research Problems という論文が視界を横切ったので,arxivで探しだしてさっそく読んでもらった。なかなか良いワンステップだ。統計的オウム論者はますます追いつめられていく。ChatGPT-5に読みやすいブログ記事風にまとめてもらった。
Q(koshix):
(論文URLの指定)
どうおもいますか。

A(ChatGPT-5)
(回答略)

Q(koshix):
どういう分野のどんな具体的な問題をいくつ考えさせたのですか。それぞれの問題についての入力データアブストラクト数はどうなりますか。

A(ChatGPT-5)
(回答前略)以下の11分野クラスタの数字は該当する論文数(重複有)
C0 Reinforcement Learning(強化学習) 1037 非定常環境での学習、忘却防止など
C1 Transformer Architectures 1106 注意機構の拡張、効率化、MoE設計
C2 Molecular Graph Modeling 398 蛋白質・分子構造の表現学習
C3 Neural / Latent Dynamics 899 連続時間モデル、Neural ODE
C4 Large Language Models & NLP 1647 モデル自己評価、報酬学習など
C5 Adaptive Gradient Methods 936 最適化アルゴリズムの改良
C6 Multimodal Learning 911 画像・テキスト統合、動画理解
C7 Data-Centric AI 974 データ品質改善・訓練戦略
C8 3D Scene Representation 548 ポイントクラウド、3D理解
C9 Diffusion Models & Generation 775 サンプリング高速化、制御性
C10 Graph Neural Networks 424 グラフ構造の表現学習・拡張
(回答後略)

Q(koshix):
以上の結果をブログ記事としてまとめようと思います。対象は理工系の学部学生のレベルです。前提となる問題意識をはっきりとさせたうえで,起承転結を明確にして,この論文が何を新規に明らかにしたのかをわかるような,論理的でつながった文章で(箇条書きは控えて)示してください。結局LLMは統計的な鸚鵡ではないのだということでよいですか。

A(ChatGPT-5):
起:問題意識 ― 「LLMは本当に考えているのか?」
生成AI、とくに大規模言語モデル(LLM)は近年、驚くべき成果を次々と示しています。数学の問題を解き、プログラムを書き、論文の草稿まで作ってしまう。それはまるで、AIが人間と同じように「考えている」かのようです。しかし、研究の世界ではこの点に大きな疑問があります。AIの成果は本当に推論の結果なのでしょうか。それとも、訓練データをもとにした「統計的な鸚鵡(おうむ)」にすぎないのでしょうか。この問いは、AGI(汎用人工知能)への道を考えるうえでも、科学研究の自動化という文脈でも、避けて通れない本質的なテーマです。
承:方法 ― 「AInsteinフレームワーク」という検証装置
今回紹介する論文「AInstein」(ICLR 2025, arXiv:2510.05432)は、この問いに正面から取り組んだものです。研究チームは、AIの“思考”を測るための新しいフレームワークを設計しました。ICLR 2025に投稿された1,214本の論文アブストラクトを素材にして、各アブストラクトから「解法を含まない純粋な研究課題文」を抽出します。これをAIに与え、外部知識には一切アクセスさせず、モデル自身が解法を考えるように仕向けます。さらに、提案された解法はモデル自身と別のモデルによって繰り返し批評・改善されるという“疑似ピアレビュー”を経て評価されました
対象となった課題は強化学習、Transformer設計、拡散モデル(Diffusion)、グラフニューラルネットワークなど、現代のAI研究を代表する11の分野に分類され、それぞれ数百件規模の問題が含まれています。これにより、特定の領域に偏らない、きわめて広範な検証が可能になりました。
転:結果 ― 「記憶ではなく、思考の萌芽」
実験の結果、最も性能の高いモデル(GPT-OSS-120B)は、全課題に対して約7割の成功率で技術的に成立した解法を提案しました。特筆すべきは、「人間とまったく同じ解法を再発見する率」は15〜20%にとどまる一方で、「人間とは違うが有効な別解」を出したケースが6割を超えたという点です。これは、モデルが単に既知の知識を再生しているだけではなく、問題に対して構造的に新しい方針を立てる力を持ち始めていることを示します。しかもこの傾向は、論文の難易度(Oral/Posterの別)にあまり左右されず、内部の推論能力に強く依存していました。
また、モデルが生み出した解法群は、Transformer構造の最適化や拡散モデルのステップ制御、グラフ表現のスケーラビリティ改善など、現代の研究潮流を反映する11のクラスタに自然に分類されました。これは、モデル内部にある種の「研究パラダイム的な構造」が形成されていることを示唆します。
結:結論 ― 「統計的な鸚鵡」を超えた段階へ
この研究が明らかにしたのは、「LLMは単なる統計的記憶再生マシンではない」ということです。もちろん、まだ人間の科学者のような深い創造性を持っているわけではありません。しかし、問題を構造的に捉え、有効な別解を提示する力を持ち始めていることは確かです。
科学の歴史において、発見の多くは「既存の知識の組み合わせ」から生まれました。LLMが示しているのは、まさにその「組み合わせと再構成」の初期段階といえます。したがって、LLMはもはや単なる鸚鵡ではなく、「まだ未熟だが、科学的な思考の萌芽を備えた道具」として位置づけるべき段階に来ています。
このことは、AIが科学研究の補助を超え、自律的な研究者として振る舞い始める未来を現実味のあるものにしています。今後は、AIと人間が「知の共創者」として研究の場に並び立つ時代が訪れるかもしれません。
Q(koshix):
「これをAIに与え、外部知識には一切アクセスさせず、モデル自身が解法を考えるように仕向けます。」とありますが,一般的なコンピュータサイエンスの専門知識はどうなのですか。

A(ChatGPT-5):
この実験では、外部のWeb検索や文献データベースといった「外部知識ソース」にはアクセスしない設計になっていますが、モデルの内部に既に組み込まれている一般的なコンピュータサイエンスの知識は利用しています。つまり、「外部記憶」は遮断しても、事前学習で獲得された知識はそのまま活かされている、というのがこの研究の基本的な前提です。
(後略)


図:AIんしゅたいん(久々にChatGPTの生成イメージ)

2025年11月9日日曜日

オイラーからAIへ

From Euler to AI: Unifying Formulas for Mathematical Constants という論文が注目されていた。AIの助けをかりて,古来から数多ある円周率の公式を統一的に理解する理論をつくったという触れ込みだった。ほんとか。さっそく,ChatGPT-5と話し合ってみた。

Q(koshix):
(60p 10MB pdf のarxivの 論文を添付した上で)
この論文のキモを教えてください。

A(ChatGPT-5):
この論文(From Euler to AI: Unifying Formulas for Mathematical Constants)の「キモ」を一言でいうと、
AIを活用して「πをはじめとする数学定数の膨大な公式群を自動収集・検証・分類し、共通の数学的構造に基づいて統一する新しい枠組みを提示した」こと です
(以下中略,項目のみ)
1.背景
2.提案した枠組み
(1) 自動収集(Harvesting)
(2) 正規化とクラスタリング
(3) 統一の数学的枠組み:Conservative Matrix Fields(CMFs)
(4) UMAPSアルゴリズム
3.成果
4.意義
要するに、この研究のキモは 「AIを利用して膨大な公式を収集・検証し、CMFという新しい数学的枠組みを通じて統合することで、分断されていた数学定数の世界を一つの地図として描き直した」 という点です。

ご希望なら、この「CMFによる統一」を 具体的な数式例(π公式どうしが等価になる実例) で説明しましょうか?

Q(koshix):
はい

A(ChatGPT-5):
では、論文で紹介されている 具体例 を用いて、CMFによる統一がどのように実際に機能するかを説明します。焦点は「一見全く違う公式が、実は同じCMF上の軌道に属している=同値である」と証明されるところです。
(以下中略,項目のみ)
例1:ラマヌジャン (1914) の公式と Sun (2020) の公式
例2:ガウス (1813) の連分数と現代発見の公式
例3:オイラーの公式とブルーンカーの公式
なぜ重要か?

まとめると、ラマヌジャンの級数・ガウスの連分数・オイラーの和・ブルーンカーの連分数といった「歴史的に別個に見つかったπ公式」が、Conservative Matrix Field (CMF) の枠組みによって一本化され、互いに変換可能であることが自動証明されたのが具体的成果です。

ご希望なら、これらの「CMF上での軌道関係」を 図解(π公式が3D格子上でつながる様子) にして示しましょうか?

Q(koshix):
例2は間違っていませんか?(2つの異なった公式のPCFが同じ部分を持っていた)

A(ChatGPT-5):
ご指摘どおり、例2の書き方に誤りがありました。正しくは次の対応です。すぐ下で数値も確認します。
(以下中略,項目のみ)
例2(正誤)
(A) ガウス (1813) の連分数(PCF で a(n)=2n+1, b(n)=n²)
(B) 2021年の計算機発見の連分数(PCF で a(n)=2n+3, b(n)=n(n+2))

—混乱を招いた点、失礼しました。必要なら、この2本のPCFを使って「モビウス変換を明示して等価性を手計算で確認する」手順も書き下ろします。

Q(koshix):
PCFの定義を教えてください。

A(ChatGPT-5):
論文の定義によれば、PCF (Polynomial Continued Fraction, 多項式連分数) とは次のようなものです。
(以下中略,要点のみ)
1.定義
2次の漸化式
$u_n = a(n) u_{n-1} + b(n) u_{n-2}$
(ただし $a(n), b(n)$ は多項式)を考えると、この漸化式の解から得られる連分数表現を
$ {\rm PCF} (a(n),b(n)) $ と呼びます
2.直感的理解

まとめると、PCFとは「部分分子と部分分母がnの多項式で与えられる連分数」であり、漸化式を介して定義される統一的な表現形式です。

ご希望なら、PCFの一般式を使って「どうやって具体的なπ公式がこの形に落とし込まれるか」を1つ例題でステップ解説しますか?

Q(koshix):
PCFを引っ張り出してきたのは著者ですかAIですか?

A(ChatGPT-5):
とても良い質問です。論文を丁寧に読み解くと、PCF(Polynomial Continued Fraction)という枠組みを今回の研究で強調しているのは著者たち自身です。
(以下中略,項目のみ)
1.論文での扱い
2.AIの役割
3.背景
4.結論
PCFという枠組みを「引っ張り出してきた」のは著者たちであり、AIはその実装と大規模処理を助ける役割を担った、という整理になります。

ご希望なら、この研究の中で「PCF → CMF」へと拡張される流れを図式化してまとめてみましょうか?

Q(koshix):
CMFとはなんですか。PCFとの関係はどうなっていますか。

A(ChatGPT-5):
良いタイミングの質問です。論文では PCF (Polynomial Continued Fraction) をさらに一般化した枠組みとして CMF (Conservative Matrix Field) を導入しています。以下に整理します。
(以下中略,項目のみ)
1.PCFとは?
2.CMFとは?
3.PCFとCMFの関係
4.イメージ
5.まとめると
PCF:多項式連分数。個々の公式を標準化する形式
CMF:保存的行列場。PCFを含むより一般の枠組みで、複数の公式群を「同じ場の異なる軌道」として統一する

ご希望なら、この「PCF → CMF」の関係を 模式図(公式が1本の線から3次元空間の軌道へ広がるイメージ) で描いてみましょうか?

Q(koshix):
CMFもAIでなくて,人間が持ってきた装置ですよね。

A(ChatGPT-5):
はい、その理解で正しいです。
論文を細かく追うと、CMF(Conservative Matrix Field)という概念を「持ってきた(定義した)」のは著者たち=人間の研究者です。AIが自動的に発見したものではありません
(以下中略,項目のみ)
1.著者たちの位置づけ
2.AIの役割
3.先行研究との関係
4.結論
CMFは人間の研究者が定義した新しい「装置(フレームワーク)」であり、AIはその検証・大規模分類を支援する役割に徹している、という構造です。

このあたりを模式図(人間が「CMF」という枠組みを作り、その中にAIが大量の公式を配置していくイメージ)で描くこともできますが、要りますか?

Q(koshix):
ということは,CMFの導入がこの論文のキモということになりますか?

A(ChatGPT-5):
まさにその通りです。
整理すると、この論文の「キモ」は CMF(Conservative Matrix Field)の導入と、その有効性の実証 にあります
(以下中略,項目のみ)
1.従来まで
2.この論文の一番の新規性
3.AIの役割
4.まとめ
PCF:既知の数学を標準化する装置
CMF:その標準形をさらに拡張し、複雑な公式群をまとめ上げる新しい「統一の舞台」
この「CMF導入による大規模な公式の統一」が、論文全体の核心的貢献(キモ)です

ご希望なら、この「CMFがなぜ保存的である必要があるか」(物理の保存力場のアナロジーとの対応)をもう少し深く解説しましょうか?

Q(koshix):
CMFが保存的であるということは,CMFのどのような性質を表現しているものなのですか

A(ChatGPT-5):
とても本質的な問いです。論文でいう 「CMFが保存的(conservative)」である というのは、物理でいう「保存力場(conservative vector field)」と同じアナロジーで、経路に依存せずに最終結果が定まる という性質を指しています
(以下中略,項目のみ)
1.CMFとは何か
2.保存的であるとは?
3.何を保証しているか
4.PCFとの関係
5.結論
CMFが保存的であるとは、
「行列場に沿った積の結果が経路に依存しない(=ポテンシャル関数のように一貫した値を定められる)」
という性質を意味し、これによって「公式どうしの等価性や統一性」が保証されるのです。

ご希望なら、この「保存的条件(可換性条件)」を実際の 2×2行列の例で書き下げて、「どういうときに経路独立が成立するか」を示してみましょうか?

Q(koshix):
「CMF上での軌道関係」を 図解(π公式が3D格子上でつながる様子) したカラー画像を作成してください。文字による説明は最小限に抑えてね。



図:式は出鱈目で説明の雰囲気もちょっと微妙なイラスト(ChatGPT-5による)

2025年11月8日土曜日

多孔性金属錯体

ノーベル化学賞の北川さんの多孔性金属錯体についての解説では,御本人のかかれたものが一番分かりやすかった。けれども,まとめるのはChatGPTにまかせてしまう。凡夫は安きに流れる。最初に調べたとき,格子サイズが20Åのオーダーの大きさだと知ってちょっと驚いた。

Q(koshix):
理系大学生向けに丁寧に解説してください。

A(ChatGPT-5,19秒):

0.前提とねらい:ここでは「配位高分子/MOF(多孔性金属錯体=PCP)」を、金属イオンと有機分子を“組み木細工”のように連結して作るナノサイズの“空間素材”として捉え、①どう出来ているか(構造)②なぜ役に立つか(性質)③何に使えるか(応用)を、理系学部の化学・材料系カリキュラムを想定して段階的に解説します。結論を先に言うと、MOF/PCPは「設計自在な巨大比表面の“柔らかい結晶”」で、ガスの貯蔵・分離・センシングなどで従来材料(ゼオライトや活性炭)に無い機能を発揮します。

1.何でできている?(構造の基本)
・部品:金属イオン(Zn²⁺, Cu²⁺など)が「コネクタ」、多座配位子(テレフタル酸、4,4′-ビピリジンなど)が「棒」。
・作り方:溶液中で混ぜると配位結合で“無限骨格”が自己集合し、結晶の内部に**規則的な細孔(ナノ空間)**が並ぶ。トポロジー(骨組みの連結様式)を選べば、孔径・形・内壁の官能基まで意図的に設計できる(「高い設計性」)。

2.何がすごい?(三つのキーフィーチャー)
(1) 非常に大きい比表面積・空隙率
細孔壁を“原子1個厚”レベルで作れるため、ゼオライト(~500 m²/g)、活性炭(~2500 m²/g)よりさらに大きい値(~4500 m²/gクラス)が可能。→吸着能が高い。
(2) 設計自由度が高い
金属の種類・配位数、配位子の長さ・角度・官能基で、孔径(数Å〜数nm)、内壁化学を狙って作り分けられる。用途に合わせた“内装工事”ができるイメージ。
(3) “柔らかい結晶”=外部刺激に応答
ゲスト分子の侵入圧力や電場などで骨格が可逆に変形し、ある圧力で急に吸着が“開く”オープンゲート現象やヒステリシス吸着が出る。従来の無機多孔体にない機能。代表例:[Cu(dhba)₂(bpy)] が室温で N₂/CH₄/O₂ に対し分子種ごとに異なる“開き始め”圧を持つ。

直感的には、「硬いスポンジ(ゼオライト)」に対して「形を少し変えてフィットする“しなやかなスポンジ”(PCP)」。

3.どう役に立つ?(吸着等温線と運用の違い)
・活性炭やゼオライトは低圧からなだらかに吸着(等温線がゆるやかに立ち上がる)。
・PCPの一部は特定圧で急に吸着が立ち上がる(ゲート開)+ヒステリシス。
→「必要圧で一気に取り込み、減圧で放す」充填・放出の効率が高い貯蔵・供給系(ガスタンク等)に有利。

4.代表的な実証例(機能の具体)
(1) ガス貯蔵:室温・0〜30気圧でのメタンの吸蔵・放出を実証(PCPの黎明期の転換点)。
(2) 高選択分離:非常によく似たアセチレン vs 二酸化炭素を、内壁官能基の設計でアセチレン選択的に吸着。
(3) ナノ配列の直接観測:固体中でO₂分子がホスト細孔に沿って1次元ラダー状に整列する様子を観測 → ナノ空間での吸着現象理解に寄与。

5.どのくらい“持つ”?(安定性の目安
(1) 熱安定:例として Zn–O 骨格で ~500 °C、Cu–N 骨格で ~200 °C 程度まで壊れにくい例が報告。
(2) 耐水・耐酸素:疎水性細孔を設計すれば大気中ハンドリング可能な系もある(材料次第)。
(3) **“ゲスト抜去しても骨格が崩れない”**という常温安定PCPの実証(1997年=北川さんの研究)が、その後の爆発的展開の起点。

6.どんな用途に広がる?
・貯蔵:H₂、CH₄、CO₂などの大容量・可逆貯蔵。
・分離:似た分子の選択吸着(炭化水素分離、CO₂回収、空気分離など)。
・触媒/ナノ反応容器:内壁官能基や金属活性点を“仕込んだ”均一性の高い不均一触媒場。
・センサー/アクチュエータ:ゲート開閉の圧力・分子種応答を信号化。
・将来像:多機能の積層・統合(分離→濃縮→イオン化→輸送…を一体化)や、細孔内での高分子合成による“空間情報”を利用した精密ポリマー制御。

7.よくある疑問に短く回答
孔径は20 Å(2 nm)くらい?
いわゆるマイクロ孔は2 nm以下が目安。MOF/PCPは数Å〜数nm領域で設計でき、メソ孔(>2 nm)設計も可能な系があるが、応用により最適域が異なります。
CO₂の“閉じ込め”は本当にできる?
CO₂自体の貯蔵・選択吸着の設計が可能で、実証例としてはCO₂に酷似する分子との分離(例:C₂H₂選択)も報告。内壁官能基や骨格の柔軟性が効きます。
なぜ“柔らかさ”が効くの?
結合回転や配位結合の伸縮により、分子が来た時だけ最適形に“変形して迎え入れる”ことで、しきい圧や分子種選択を生むからです(オープンゲート)。

8.学ぶ・触れるための実験と評価(学部実験の導線)
・合成:溶媒熱/常温合成→洗浄→活性化(ゲスト抜去)。
・結晶構造:PXRDで位相確認、必要に応じ単結晶X線。
・細孔評価:N₂吸着等温線(77 K)→BET比表面積・孔径分布、可逆性とヒステリシスの確認。
・熱・化学安定性:TGA/水蒸気中処理。
・機能試験:単一/混合ガスの吸着等温線や透過実験、分離係数の算出。
(ここまでの各要素は、上掲のレビュー総説の図や事例に対応します。)

9.まとめ(要点)
・MOF/PCPは設計自在な巨大比表面と柔らかな応答性を併せ持つ“機能する結晶”。
・貯蔵・分離・触媒・センサーで、等温線の“形”を意図的に作る発想が鍵(ゲート開閉・ヒステリシス)。
・孔径・内壁化学・骨格柔軟性の三点設計で、分子認識を“材料側に埋め込む”のが本質です。

さらに深掘りしたい観点(課題レポート向け)
① ゲート開閉の熱力学(自由エネルギー地形)と速度論
② 似た分子の選択機構(π–π相互作用、H結合、静電)
③ 湿度下安定化の設計(疎水化・Zr/Ni系などの傾向)
④ 多機能統合(分離→濃縮→反応)のプロセス設計

必要なら、具体的な骨格(ノード・リンカーの組み合わせ)を決めて「所望の孔径・官能基・等温線」を逆設計する演習問題も用意します。



図:PCP(Porous Coordination Polymer)材料の3つの特徴([1]から引用)



2025年11月7日金曜日

学研都市線

かざちゃん,つむちゃん(むぎちゃんじゃないのか),すーちゃんが私市に集結するというので,調べてみると学研都市線ルートが便利だった。学研都市線(じつは片町線)は始めてかなと思いながら,バーバと一緒に二人の孫を連れて近鉄新祝園に向かった。

近鉄新祝園からJR祝園へは駅間がデッキで直結していて便利だ。同志社大学京田辺キャンパスに非常勤講師で通っていたころ,このルートでの移動を試みたことがあった。残念ながら,JRの本数が少なくて適当な時間の列車がなく,再び近鉄京都線に戻ることになった。

JR祝園から快速でJR河内磐船まで30分ほど。11月3日の祝日の午前だが電車はがら空きだ。河内磐船から京阪交野線の河内森までは徒歩5分。河内森で少し待てば,きかんしゃトーマスイベントの臨時列車にかざちゃんとママが乗ってくるという連絡があった。わお,その電車(下図参照)は小さな子ども達とその親で満員だった。

終点の私市につくといったん全員降りて,ホームに停まっている13000系きかんしゃトーマス号がイベント会場に早替わりする。実はこれは「京阪電車きかんしゃトーマス 2024-25」ラストランであり,2024年から運行しているトーマス号の最後のお仕事だった。駅前には若干の屋台出し物と,長蛇の列のグッズ販売コーナができていた。

もちろん,トーマス大好き(箱推し)かざはちゃんのママはグッズ販売に並ぶのであった。ここで500円以上購入すると,さきほどの駅の列車内イベント会場で,駅員さんの制服をきて車内放送できるという仕組みだ。こちらのほうも全然進まない行列ができていてなかなか終りそうにない。



図:イベントグッズのトーマススケッチブック(京阪電鉄から引用)

P. S. 帰りに落ち着いて考えてみると,学研都市線の電車には以前乗ったことがあるような気がしてきた。教職大学院の設置に向けて事務の新光課長と府内を走り回っているとき,東大阪の帰りに学研都市線の駅(鴻池新田?)で降ろしてもらって,三山木?経由で直帰したようなかすかな記憶がある。


2025年11月6日木曜日

奉納文楽

11月4日13:00から70分,大神神社三輪山会館の能楽堂(349席)で人形浄瑠璃文楽の奉納舞台が催された。大神神社の大鳥居のそばの駐車場から10分ほどでJR万葉まほろば線(じつは桜井線)の三輪駅があって,線路をはさんで東隣が三輪山会館だ。予約だけでほぼ満員になっていて,我々は255番と256番。

人形浄瑠璃文楽の時代物三大狂言の次にくる演目に近松半二ら合作の妹背山婦女庭訓がある。国立文楽劇場で通しを何度か観ている。その舞台のひとつがこの大神神社(三輪明神)がある三輪の里だ。桐竹勘十郎の挨拶によれば,妹背山婦女庭訓の上演前には,大神神社にお参りするのが恒例になっているそうだ。今回は,出演者の竹本織太夫と鶴澤清志郎と神社関係者のご縁で大神神社への人形浄瑠璃奉納舞台が催されることになった。

前半が,織太夫と清志郎による妹背山の四段目杉酒屋の段の素浄瑠璃,後半が,桐竹勘十郎のお三輪ちゃんによる道行恋苧環(求女と橘姫は省略)だ。能舞台で距離も近いので三味線の音がよく響く。前半はいつものように半分ウトウトしていたが,後半は三人遣いの特に左遣いや足遣いの黒子達の動きがよく見えて面白かった。ただ,前半の口上の東西声がちょっと激しすぎて・・・。

途中にはさまれた,大神神社の禰宜の方による神社の由来の話が面白かった。もう少しゆっくり聞きたかった。大神神社の祭神は大物主神であり,出雲の大国主神の関係者ということである。この地は出雲と結びついていた。自分は最近,箸墓は卑弥呼の墓でないと思うようになったが,そうなると卑弥呼のいた九州,あるいは神武東征のルーツの高千穂,そして素戔嗚尊起源の出雲がどうやって大和につながっていくのかが知りたい。

奉納公演終了後,大神神社(狭井神社?)の宮水(生水)をいただいて帰路についた。



写真:三輪山会館の能舞台(2025.11.4 撮影)


P. S. 能舞台は大阪ミナミの料亭から移設されたものだった。勘十郎は若い頃にその南地大和屋の能舞台で演じたことがあるらしい。松の絵がへたくそだと思って見ていたら,前田青邨だった。ごめんなさい。


(付)記事の要約:大神神社に旧「南地大和屋」能楽堂を移設(日本経済新聞 2020.3.19)

奈良県桜井市、日本最古の神社とされる大神(おおみわ)神社の三輪山会館内に、2019年11月、能楽堂が誕生しました。これは、かつて大阪ミナミの料亭「南地大和屋」にあった本格的な能舞台を移設したものです。

舞台の鏡板の松の絵は、日本画の大家、前田青邨が手掛けた逸品。南地大和屋の女将が上方芸能の拠点として1965年に設置した能楽堂は、床下に反響用の壺を備えるなど本格的で、司馬遼太郎も称賛しました。

能楽発祥の地とも縁深い奈良へという運びとなり、近畿日本鉄道会長の口利きで大神神社への奉納が決定。大神神社は本殿を持たず三輪山をご神体とする古い祭祀の形を守り、「風姿花伝」にも由緒が結びつけられるなど能楽と深いゆかりがあります。

能舞台の松は「神が降り立つ依り代」とされ、この格式ある能楽堂が、最古の神社である大神神社に移設されたことは「良縁」として静かな注目を集めています。今後は、大神祭の後宴能などで活用される予定です。(299字)