このブログの更新は X(旧Twitter)アカウント @m_hiyama で通知されます。
Follow @m_hiyama

ご連絡は上記 X アカウントに DM にてお願いします。

参照用 記事

生成AIとしゃべるための NL、CNL、DSCNL

2025年内にもう一本ブログ記事を(間に合った)。

「生成AIとしゃべる」のは、何かを生成させたいからしゃべるわけです。チャットボットなら会話の応答文を生成させたいし、画像生成AIなら画像を生成させたい、と。目的のモノ、意図したモノを生成させるにはどうしたらいいのでしょうか?

内容:

Comet のお絵描き苦戦に大笑い

今年(2025年)11月中旬、大笑いしてしまったことがあります。Comet(「AIによるLeanコード生成の特殊性 // 再び Comet について」参照)に、実験的に絵(図式)を描かせてみたのですが、だいぶ外した絵を出力しました。しかし、頑張ったのは伝わってきます。切なくも微妙なマトハズレっぷりに思わず笑ってしまったのです。

どんな絵を描かせたかというと、ホモロジー代数で出てくるヘビの図式(ヘビの補題の図式)です。Wikipedia項目「蛇の補題」にあるSVGの図は以下です。

*1

↑ のような絵(図式)を期待していたのですが、結果は以下のとおり。

笑っちゃうでしょ。

Comet の気持ちになって考える

Comet がヘビの補題/ヘビの図式について知らないのかと言うと、そんなことはありません。「ホモロジー代数のヘビの補題〈snake lemma〉について、その概要と意義について説明して。」と聞けば、ちゃんとした答を返してくれます。

では、なぜヘビの図式をうまく描けないのか? まず、ヘビの図式の画像は Web にいくらでも転がってますが、それをそのまま提示することはできません。僕は、Wikipediaの画像なら大丈夫だろうと判断して借用してますが、Perplexity(Comet の会社)の方針としては、Web の画像を借用するのは全面禁止のようです。となると、自力で描くしかありません。

「自力で」といっても、チャットボットである Comet に絵を描く能力はありません。仲間の画像生成AIに頼むことになります。僕の推測ですが、おそらく自然言語プロンプトで画像生成AIに頼んでいるのでしょう。つまり Comet は、我々人間が画像生成AIを自然言語プロンプトで操作するのと同じ作業をしているわけです。

皆さんどうでしょう、ヘビの図式を画像生成AIに生成させることは出来ますか? なかなかに難しいんじゃないかと思います。Comet もなんだかんだ頑張って画像生成用プロンプトを考えたとは思いますが、結果はご覧の通りです。

いくら知識があっても、それを絵に描くこと、自分ではなくて他のAIに頼んで絵に描くことは難しいのです。

思考実験: マグカップをAIに描かせる

いま、テーブルの上にあなたがいつもコーヒーや牛乳を飲んでいるマグカップがあるとします。このマグカップを画像生成AIに描いてもらうとします。できるだけ写実的にです。写真を撮って送るのはナシです。自然言語プロンプトで描かせます。

いつも使っているマグカップです。しかも目の前にあります。それでも、マグカップの写実的デッサンをAIに描かせるのは難しいでしょう。

AIによるLeanコード生成の特殊性」で述べた内容は、「AIにマグカップを描かせる」に近い作業についてです。

ほとんどの労力は、AIとの“精密で正確なコミュニケーション”をどう組み立てるか? を考えることに費やされます。

プロンプト・エンジニアリング/コンテキスト・エンジニアリングと言ってもいいですが、小手先のワザのようなものに出番はありません。とにかく精密に正確に、クリスタルクリアな表現に務めます。

マグカップの比喩と違う点は、AIに伝えるべきことが概念であり、マグカップほどに直感的に明らかではなくて、モヤッとした部分も混じっていることです。

制御された自然言語 CNL

Controlled Natural Language〈CNL〉とは、自然言語に近い、あるいは自然言語のサブセットである言語ですが、人工的に制約した言語です。例えば、ASD Simplified Technical English(ASD‑STE100)は、航空機などの技術マニュアル用に作られた英語ベースのCNLです。Controlled Legal German(CLG)は、スイスの法律ドイツ語を対象にしたCNLで、法情報システムでの利用を想定しています。

そのまんまの自然言語では、AIとの精密で正確なコミュニケーションが難しいので、AIとのコミュニケーションにCNLを利用しようとする動きもあるようです。しかし、人工言語/形式言語として設計されたCNLを人間に使わせるのは、良い方法だとは思えません。今のAIは、そこまでしなくても意図は汲み取ってくれます。

ただし、AI相手だろうが人間相手だろうが、「わかりやすい文章」と「わかりにくい文章」の違いは確かにあります。形式的制約を守る必要はありませんが、「わかりやすく明晰な自然言語」という意味でのゆるく制御された自然言語〈Loosely Controlled Natural Language〉は必要かも知れません。

ドメイン特化のCNL DSCNL

既存のCNLは、「航空機などの技術マニュアル用」とか「ドイツ語法律文書用」とか適用分野を絞っています。そのほうが精度が高いCNLを実現可能です。ゆるく制御された自然言語においても、適用分野〈ドメイン〉をハッキリさせれば、そのドメインにおける約束事や語彙を決めやすいでしょう。

AIによるLeanコード生成の特殊性 // AIとのコミュニケーション」で例に出した型理論用語のローカルルールは、特定ドメインにおける語彙を決めたものです。非常に小規模なドメイン特化〈Domain Specific〉CNLの一部と言えなくもありません。

もし、様々なマグカップの写実的デッサンをAIに描かせるニーズがあるのなら(そんなニーズはありませんけど)、マグカップの描写に特化したCNLを設計して使うと、より良いマグカップ画像が生成できるでしょう。

本格的な人工言語/形式言語である必要はなくて、言葉の意味や言い回しの約束事のレベルで十分だと思いますが、ゆるーいドメイン特化のCNL〈DSCNL〉は使用したほうが良いんじゃなかろうか、と思います。

どうでもいいオマケ: ヘビの図式 Xy-picバージョン

どうでもいいんですが; WikipediaのSVG画像を借用しないで、(Comet がそうしたように)自分でヘビの図式を描いたほうがいいのかな、とも思いました。それで、Xy-pic (園部さんの XyJax)で描いてみました。

$`\newcommand{\coker}{\mathrm{coker}\,}
\xymatrix {
&{}
&{}
& {\ker a} \ar@{>->}[d]\ar[r]
& {\ker b} \ar@{>->}[d]\ar[r]
& {\ker c} \ar@{>->}[d]
\ar`r[ddrr]`[ddlll]`[dddllll]`[ddddll][ddddll]
&{}
&{}
\\
&{}
&{}
& A \ar[r]^f \ar[dd]^(.3)a
& B \ar@{->>}[r]^g \ar[dd]^(.3)b
& C \ar[r]\ar[dd]^(.3)c
& 0
&{}
\\
&{}
&{}
&{}
&{}
&{}
&{}
&{}
\\
&{}
&0 \ar[r]
& A' \ar@{>->}[r]^{f'}\ar@{->>}[d]
& B' \ar[r]^{g'}\ar@{->>}[d]
& C' \ar@{->>}[d]
&{}
&{}
\\
&{}
&{}
& {\coker a} \ar[r]
& {\coker b} \ar[r]
& {\coker c}
&{}
&{}
}
`$

\newcommand{\coker}{\mathrm{coker}\,}
\xymatrix {
 &{}
 &{}
 & {\ker a} \ar@{>->}[d]\ar[r] 
 & {\ker b} \ar@{>->}[d]\ar[r] 
 & {\ker c} \ar@{>->}[d] 
   \ar`r[ddrr]`[ddlll]`[dddllll]`[ddddll][ddddll]
 &{}
 &{}
\\
 &{}
 &{}
 & A \ar[r]^f \ar[dd]^(.3)a 
 & B \ar@{->>}[r]^g \ar[dd]^(.3)b
 & C \ar[r]\ar[dd]^(.3)c
 & 0 
 &{}
\\
 &{}
 &{}
 &{}
 &{}
 &{}
 &{}
 &{}
\\
 &{}
 & 0 \ar[r] 
 & A' \ar@{>->}[r]^{f'}\ar@{->>}[d] 
 & B' \ar[r]^{g'}\ar@{->>}[d] 
 & C' \ar@{->>}[d] 
 &{}
 &{} 
\\
 &{}
 &{}
 & {\coker a} \ar[r] 
 & {\coker b} \ar[r] 
 & {\coker c}
 &{}
 &{}
}