リムナンテスは愉快な気分

徒然なるままに、言語、数学、音楽、プログラミング、時々人生についての記事を書きます

生成AIエントロピー戦争①トークン出力装置としての人間

※ この記事は覚書のため、今後、内容の大幅な変更が予想されます。

  • 生成AIエントロピー戦争①トークン出力装置としての人間
  • 生成AIエントロピー戦争②集団の形成と生存
  • 生成AIエントロピー戦争③ミーム戦略

Introduction

どうも昔から英語というものに苦手意識があった(今も英語できるとは言ってない)。
というか、「世界共通語が得意な俺様は偉いんだ」みたいな傲慢さが滲み出ている英語教師が嫌いで嫌いで仕方がなかったんだと思う。
あまりにも嫌すぎて、どうにか反論できないかなと思って、言語学的アプローチを相当勉強した。つまり、言葉というものに対する様々な学説を広く浅くつまみ食いしてきた。

そんなわけで、私はLLMなんぞ出てくる前から人間なんて所詮は受け取った言葉に対してマルコフ連鎖的にそれっぽい言葉を返してるだけだろうと考えていた。かつてのAIの文脈でいうと、「中国語の部屋」が近いのだろうか。そこらへんの人間って、受け取った文字列に対してなんとなく妥当な文字列を返しているだけだよなと。
まあ実際にはLLMは過去の履歴を使いまくっているので狭義の意味ではマルコフ連鎖ではないが、全トークン列を状態だと思えば超巨大なマルコフ連鎖ともいえるようだ。
一方で、知性のある人間というのは、単なるマルコフ連鎖を超えた論理的思考のようなものが備わっているはずで、そこに理性があると、そういう希望も同時に抱いていた。傍から見たらクソ野郎だけど。

今やLLMは、当たり前のようにそこに在る、そういう時代になった。

みなさんはLLM、広義にとれば生成AIに対してどういう予測を立てているだろうか。

AI驚き屋たちは挙ってAI脅威論を唱える。にもかかわらず、全くもって人間が淘汰される気配がない。

なぜなのか?

従来の議論の構図はLLM vs 人間という二項対立で語られ、つまりLLMは人間より賢いだとか、人工知能がどうのこうのとか、人間らしさとはみたいなしょうもない議論が繰り広げられている。

それで、何か変わったのだろうか。
確かに何かは変わったと思う。それで、何かが解決しただろうか?
いま現実に起こっていることは、クソみたいなアウトプットが増えすぎて余計にストレスたまることだ。
「LLMは人間より賢い」はずなのに、何故世界は変わらないのか?

「AIは万能である」という論も、「AIは万能ではない」という論も、互いの反論も、実は弱いと思っている。むしろ、AIが引き起こす重大な問題を隠してしまっているのではないだろうか。

世間はそうやって「今更」驚いているがそういう観点から、LLMも人間もやってることは同じで、でも感覚として明確に差が出ている場合があると感じてもいて、ではそれは一体何なのか。

最初に私のスタンスを述べると、「AI脅威論」でも「AI楽観論」でもない。
ただ、「つまらなくなってきたな」という気はしている。どうすればよいのだろうか?

第1章:等価性

1-1 トークン出力装置という等価性

生成AIが進化した結果、仕事は奪われたのだろうか。AIが仕事を代わりにやってくれたのだろうか。
確かに一部は代替しているだろう。けれども、結局めんどくさいところは人間がまだやってる。

というか、結局LLMなくてもクソなやつはクソしか生み出してないし、魅力的コンテンツ生成できるやつはLLMなんぞない時から本来的に魅力的な人間なのだ。

一旦議論を進めるために、人間の脳が一旦LLMと等価であると仮定する(本当は等価ではないわけだが)。
つまり、人間の脳もLLMも、トークンを入力してトークンを吐き出すブラックボックスマシンだと思い込むことにしよう。

このブラックボックス、つまり、実際は何らかの機構(関数)であるはず。最終的には、これを解剖することによって、魅力的なコンテンツを吐き出せる人間、そうでない人間、LLMの間で、一体何が違うのかということを炙りだしたい。

一見この意味不明な仮定だが、なぜ私がAI=人間と言ってしまえるのかを説明しようと思う。

1-2 LLM = 人間

LLMと凡庸人の表面的類似性

LLMと人間の脳とで何が同じか。
大多数の凡庸な人間の出力がどうなっているか。

まずLLMの出力パターン:訓練分布への収束
凡庸な人間の出力パターン:既知の平均値への回帰

トークン入出力マシン、能動的推論の欠如
両者の同期性:省エネ戦略と統計的平均値依存

1-3 苛立ち

無秩序にLLMを使うと平均回帰が起こる。つまり、LLMによるクソの大量生産を引き起こす。

でもある種の「異端の」人間は、こういう凡庸な人間が素の自然状態であるような感じには逆らって、なにかをしているように思える。
明確に異なる。
LLMがあるなら僕が全知全能になっていたっておかしくないはずなのに、でも現実はそうはなっていないのである。残念ながら。この差は一体何なんだろうか?

第2章:差異

2-1 State

個人を「トークンを入力してトークンを吐き出すマシン」と定義したとき、個人レベルの格差は、内部のエネルギー効率と損失関数の抽象度で現れる

負ける個人:ステートレスLLM中継器
勝つ個人:圧縮器

  • 凡庸人:膠着、脳の書き換えコストを拒否
  • LLM:Stateless、外部ストレージでも内部重みは不変
  • 異端の人間:ブドウ糖を消費してリアルタイムに脳を書き換える

2-2 損失関数

  • 凡庸人:「生存・安定」→ 無難な出力
  • LLM:「過去の統計平均」→ 機械的な沈静化
  • 異端の人間:「進化・超越」→ エントロピー最小化への指向性

2-3 LLM vs 人間

  • 理論的には正しい(State を動的に更新できる)
  • だが集団を離脱すると、フィードバックループが失われる
  • 環境の高エントロピー化を止められない
*プレイヤー *内部状態の動的変化(State) *損失関数(評価軸)のあり方
LLM なし(常に一定の確率分布、コンテキスト依存) 静的(事前の学習時のみ決定、推論時は固定)
凡庸な人間 膠着(変化を拒む、硬直した認知) 生存・安定(摩擦を避け、エントロピーを最大化する)
異端の人間 激変(トークンの衝突で重みが随時変わる) 進化・超越(エントロピーを下げ、新奇性を求める)

平凡な人間は生物としてのカロリー消費を節約するために、脳内のシナプス結合の書き換えをサボっている
必然的に出力が既知のパターンか無難な同調になる

異端の人間は他からやってきたトークンを受けて脳内を再構築する
ブドウ糖を消費しまくって、常に高いストレスを受ける

個体レベルで見ると後者のほうが短命リスクがあるため、一見平凡な人間のほうが最強な気がするが、そうではない
彼らの生存戦略が有効なのは、「環境が変化しない」ときに限る

LLM=無限の凡庸トークン生成機

平凡な人間が省エネでやってきたこと→電力で簡単に生み出せるようになった→最早価値が無い
異端の人間の生存→自らの認知を更に拡張するための部品として取り込み、次の環境へ適応することができる

凡庸な人間→LLMを手抜きの道具として使う→集団全体の出力がLLMの統計的平均に収束→エラーを能動的に取りに行く意志がないので成果物のエントロピーが最大化し死ぬ
異端の人間→定型処理をLLMにアウトソーシングし、浮いた脳のエネルギーで複雑な課題の発見と解決に全振りする

省エネ戦略 → 既知パターンへの平均回帰
LLMがStatelessである理由、3つの超えられない壁
なぜ両者は本質的に同じか

身体性(20W、ブドウ糖消費)、State の動的更新
損失関数の抽象度の差異(生存 vs 進化・超越)
能動的推論、リアルタイムbackprop
主観的エントロピー(問いを立てる力

第3章:意志

LLMに足りないのは、能動的推論=主観的な意志

LLMの学習:おもみの固定、学習が過去に「完了」している、過去の統計的平均への収束にすぎない
勝つ個人:いま、この瞬間に直面しているノイズにリアルタイムにbackpropが走る

LLMに動的backpropagationがあっても、勝つ人間にはならない
→身体性(物理コスト)と主観的エントロピー(問いを立てる力)

LLM:アルゴリズムに従った機械的な沈静化、受動的な均衡
人間:謎や問いを創出する、能動的にエントロピーを跳ね上げる(自然に逆らって)

LLMにstateが無いという話、メモリやコンテキストの外部出力で再現はできないのだろうか
これ、外部ストレージであって、内部の重みは何も変わっていない
(天才的な重みが学習されていると見做すと…どうなる?)
3つの超えられない壁
①構造の自己組織化が起こらない
どれだけ外部ストレージでトークン増やしても、線形の足し算にしかならない
LLMが自発的にスリムに最適化することはない(少なくとも我々が使うモデルは)
②ランドアウアーの原理(情報消去のコスト)が機能しない
消去という痛みが伴わないので、情報が肥大化しつづけ、いずれはattentionが散ることになる
③指向性が生まれない
Stateがある脳は自分のStateが変わると世界の見え方(損失関数)が変わる
LLM自身が内発的な飢餓感を持つことはない

  • 高エントロピー化に対する直接的な対抗
  • 凡庸さそのもの(省エネ戦略)への批判
  • クソ情報の大量生産に対する実質的な対抗
  • 「LLMは万能ではない」という従来の反論は弱い
  • だが「LLMが万能だからこそ、凡庸性が無限複製され、世界は何も変わらない」という反論は強い
  • むしろLLMの強力さが、問題の深刻さを示している

次回予告

残念ながら、個人が強くなればいいのかというと、そういうわけにもいかない。
個人レベルでは異端の人間が凡庸人に優る。だが環境全体では、個人は負ける。
重要なことは、個別最適化では足りないということ。

LLMが登場したことで、誰でも同じレベルのトークンが出力可能になった。
つまりこれで何が起こったかというと、理解を超えた出力が機械的に可能になってしまったということ。
LLM以前では、自分の理解の範疇を超えた出力などそうそう出来るものではなかったが(出来るけど「量」はたかが知れている)、LLMのおかげで誰でも無秩序に情報を大量に生産することができるようになってしまった。

単に個人レベルではどうすることもできないというのは、この情報、必然的に環境を汚染するということになるからである。

つまりタイマン張れるなどという幸せな状態では決してなく、凡庸人 1人の出力(脳1個分の限定的なトークン)から凡庸人 × LLM(無限のトークン、無限の複製可能性)に対峙しないといけなくなってしまったということ。

個人レベルでは異端の人間が当然最強。だが環境においては敗北する。これは技術的な問題ではなく、戦略の問題である。個人最適化で満足することは、情報空間における環境汚染への事実上の加担であり、本当に勝つ気でいるなら、環境に対して能動的に働きかけなければならない。つまり、環境自体を書き換えなければならない。莫大なコストがかかることも事実ではあるが…

今回は、LLMによる個人格差がどのような原因で生まれるかを解剖した。
次回は、LLMだろうと人間だろうと、トークン出力マシンが集団になった時に一体何が起こるのか、これについて考察したい。

Rustを読むための知識

Rustの読み方

公式のThe bookを読むのが面倒臭い。 これさえ分かってれば何が書いてあるかは分かるっていうのを整理したい。 お勉強中なので、間違いあったらコメントに。

用語・概念比較

概念・単位 C/C++ Python Rust
単一ファイル ソースファイル(.c/.cpp モジュール(.py モジュール(mod/.rs
外部コード ライブラリ パッケージ クレート
パッケージマネージャー cmake pip/uv cargo
外部コードの読み込み #include <header.h> import module use crate::module;

quick start

Rustのインストール後、下記を打つ。

cargo new project
cd project
cargo run

コンパイル完了すると下記が出る。

Hello, world!

以下のエラーが出る場合がある。

error: linker `link.exe` not found
  |
  = note: program not found

note: the msvc targets depend on the msvc linker but `link.exe` was not found

note: please ensure that Visual Studio 2017 or later, or Build Tools for Visual Studio were installed with the Visual C++ option

note: VS Code is a different product, and is not sufficient

もしコンパイルエラーがでたら、Build Tools for Visual Studioを入れて「C++ によるデスクトップ開発」をインストールする。

クレート

.toml[dependencies]に記述するとダウンロードされる。 もしくはcargo addすると追加される。

変数

Rustには「所有権」なる概念があるが、要は「並列処理を安全に行う」ために存在している。 マルチスレッドでバグる原因は、データ競合(別のスレッドが同じデータを書き換えてしまう)するから。 これを防ぐためにRustでは、データが読みたいだけなら読み取り専用(&x)で参照し、データの書き換えが必要なら独占書き換え(&mut x)する、というのを明示的に指定する。

コードの書き方 正式名称 データの「権限」 使うのはどんなとき?(目的)
x 所有権(移転) 譲渡(使い捨て) ・そのデータをこの後もう使わないとき
・相手にデータを完全に引き渡すとき
&x 不変の参照 読み取り専用 ・そのデータをこの後も使うとき
・相手に中身を見るだけにさせるとき
&mut x 可変の参照 独占編集モード ・そのデータをこの後も使うとき
・相手に中身を書き換え(変更)させるとき

変数の一生

[1. 実物 (x)] ──(貸し出し)──> [2. 読み取り専用 (&x)] ※何人でもOK 
    │ 
    └───(独占貸し出し)───> [3. 独占編集モード (&mut x)] ※世界で1人だけ
  • 実物(x): データを生み出した直後の状態。
  • 読み取り専用(&x): 実物から「ちょっと見せて」と枝分かれした状態。全員が「見るだけ」なので、何人に貸し出しても絶対に安全。
  • 独占編集モード(&mut x): 実物から「ちょっと書き換えるわ」と枝分かれした状態。書き換え中に他人が見るとバグるので、必ず世界で1人だけが独占する状態になる。

判断

  • 記号なし(x) = 「あ、これでこのデータは使い捨て(引っ越し)だな」
  • & がある(&x) = 「あ、ここは安全に見るだけの処理だな」
  • &mut がある(&mut x) = 「あ、ここで中身を書き換えてるな」

エラー処理

関数の返り値はResult<()>型で返すのが定石。 末尾の ? は、「失敗ならその場で即エラーをリターンする」というショートカット記号。

エントロピー収支で損をするなら、LLMは使わない方がいい

「生命とは何か?」

これは超有名な物理学者、シュレディンガーの著作のタイトルであるが、この本で語られているように、我々人間は負のエントロピーを食って生きている。
この本が出版されたのは1944年のことだが、それから七、八十年が経ち、LLMが登場した。LLMによって、我々は手軽に情報を生産することが可能になったが、物理世界と同様に、情報世界に対しても我々は負のエントロピーを食って生きていくことが要求されているはずである。


LLMが登場して、何が起こったか。

LLMによって情報的秩序を結構簡単に下げることに人類は成功したかのように見える。
ただ、LLMを使うと、物理世界では当然エントロピーを増大させる。電気使ってGPU回しているのだから。GPU冷やすのにも電気使ってるし。我々は熱を放出しまくって信託を受けているわけだ。つまり、プロンプト p を入力したときの総消費電力量を E(p) とすると、物理的エントロピー\Delta S_{\text{phys}}(p)は常に増大すると表現できる(T_\text{env}は適当な定数としておく)。

\begin{equation} \Delta S_{\text{phys}}(p) = \frac{E(p)}{T_{\text{env}}} > 0 \end{equation}

一方で、情報世界ではエントロピーは減っているように見える。
LLMがお出ししてきた答えから何らかの意味を抽出できているならエントロピー \Delta H_{\text{info}} は減っているはずだし、そもそも、出力が完全ランダム列ではない以上、ランダム以上の秩序は含まれているはずなのである。(ただし \Delta H_{\text{info}} の減少が必ずしも意味の生成を保証しないことには注意。)

\begin{equation} \Delta H_{\text{info}} < 0 \end{equation}

我々は物理的排熱 \Delta S_\text{phys} と引き換えに、局所的に、情報の秩序 \Delta H_{\text{info}} を得ているといえる。
LLM視点で言えば、LLMは「物理的排熱 \Delta S_\text{phys} を支払うことで、形式的な情報エントロピー \Delta H_{\text{info}} を機械的に下げるポンプ」として機能している。


しかし、本当にそうだろうか。
長期的視点に立つと、情報の熱的死が起こる。平均回帰みたいな考え方があるが、要はLLM同士が再帰すると、稀だが重要な情報はどんどん切り捨てられていく。

あるいは、そんなロングスパンで考えるまでもなく、LLMを使ってただただ無秩序を生み出している人間がSNSでもどこでも散見される。LLMによって却ってブルシットジョブが増えると指摘している人もいる。

LLMの進歩は甚だしく、適当に指示してもそれっぽいものを実装することは出来るようになった。しかし、当の本人は内容を把握していない。そして中身を見ても解読することができない。このとき人間の脳つまり情報空間における代謝は全く起きておらず、そこに自律的秩序生成能力はない。こういうことを見ることがかなり増えた気がする。次のタスクではさらにLLMへの依存度を高めるしかないだろう。

実はこのとき、周囲に余計な情報的排熱をまき散らしている。ツケを誰かに押し付けてはいないだろうか?物理空間のエントロピーなら最終的には宇宙空間に散逸するので、地球という系においては太陽のエネルギーで収支バランスは取れるといえばとれる。しかしながら情報空間においては排熱が宇宙空間に逃げていくわけがなく、情報空間そのものに蓄積して環境を汚染していく。これはもはや認知公害という環境問題といっても過言ではない。

「情報エントロピーを下げること」は、LLM自体の全自動の機能ではなく、出力を受け取る人間(の状態)に依存する。LLMの出力内容を人間が理解し、秩序を維持する努力をしていれば、情報空間に放出されるノイズ\mathcal{R}(\text{User State})は殆ど0に持っていくことができる。

\begin{equation}\mathcal{R}(\text{User State}) \approx 0\end{equation}

人間が内容を理解せず、ブラックボックスのまま外部へ放出するようであれば、当然ノイズが蓄積する。無秩序に。

\begin{equation}\mathcal{R}(\text{User State}) > 0\end{equation}


さて、ここまで下記の3つについて考えてきた。

  • E(p) > 0: GPUの総消費エネルギー(物理コスト・必ずプラスの消費)
  • \Delta H_{\text{info}} < 0: LLMがもたらす情報的エントロピーの減少(つまり秩序の獲得)
  • \mathcal{R} \ge 0: 人間側の無理解やノイズによる「情報的排熱・ゴミの量」(コスト・必ずプラスの量)

以上を統合すると、系全体の真のエントロピー収支、つまりLLMを利用することによって得られるゲイン\mathcal{G}(つまり、トータル収支)は下記のようになる。

\begin{equation}\mathcal{G} = \underbrace{-\Delta S_{\text{phys}}}_{\text{物理的代償}} + \underbrace{k(-\Delta H_{\text{info}}(M))}_{\text{機械的秩序}} - \underbrace{\mathcal{R}(\text{User State})}_{\text{情報的排熱}}\end{equation}

ここで k は物理熱と情報熱の交換レートを表す係数。この文明が生き残るか破滅するか、それは機械的秩序による利得(-\Delta H_{\text{info}})が物理的代償と情報的排熱の合計を上回れるか、つまり\mathcal{G} > 0を満たせるかどうかにかかっている。現状のLLMの使われ方を見るに、おそらく以下の3段階がある。

① 最悪のパターン:情報的排熱が爆発するケース(\mathcal{G} \ll 0

中身を理解せず、物理的な電気代をドカ食いした挙句、情報的ゴミを大量に出しまくるパターン。

\begin{equation}k(-\Delta H_{\text{info}}) \ll \frac{E(p)}{T_{\text{env}}} + \mathcal{R}\end{equation}

論外。せめて情報的排熱を極限まで下げる努力をしなくてはならない。これは人類に課せられた義務である。物理的排熱使って情報的負エントロピーを得ていてさえ収支合ってるかわからないというのに。物理的排熱出しながら情報的排熱まで出しまくる二重の赤字状態にするくらいならLLM使うのをやめたまえ。今すぐ足元のゴミを片付けよ。

② 現実的ライン:とりあえずここを目指そう(\mathcal{G} \le 0

コスト支払うだけの価値はちゃんと得ている状態。

\begin{equation}k(-\Delta H_{\text{info}}) \le \frac{E(p)}{T_{\text{env}}} \quad (\text{ただし } \mathcal{R} \approx 0)\end{equation}

LLMをツールとして(正しく)使いこなし、人類に価値を還元してくれているという点では世間的には評価されて然るべき。ただし、地球規模の排熱コストや長期持続性まで考えると、本当にトントン(もしくは微妙に赤字)で収まっているかは怪しい。しかし①より圧倒的にマシなので、人類はまずここを目指してくれ。(この記事が②であることを切に願う。)

③ 最も持続可能なパターン:真の代謝成功ケース(\mathcal{G} \gg 0

人類の理想。コストをはるかに上回る圧倒的な知的秩序を得ている状態。

\begin{equation}k(-\Delta H_{\text{info}}) \gg \frac{E(p)}{T_{\text{env}}} + \mathcal{R} \quad (\text{かつ } \mathcal{R} \approx 0)\end{equation}

ここまでくれば、生物が外部から負のエントロピーを取り込んで生存しているのと同じ状態にできたといえる。このレベルを実現できた人間、存在する?

果たして、「LLMを使って得られたGain > LLM使用コスト」というエントロピー収支は成立させられるのだろうか。
これができないのであれば、LLMに未来は無い。

Python使ってWeb APIのリクエストヘッダでunicode文字列を送りたい

結論

strings.encode("utf-8").decode("latin-1")

※ただし受け手側がバイト列をutf-8でdecodeする仕様になっていたらの話

仕組み

この方法では、「UTF-8でエンコードされたバイト列を、無理やりLatin-1(ISO-8859-1)として解釈(デコード)する」という操作をさせている。

つまり、Unicodeを無理やり1バイト文字の羅列としてしまえば、ヘッダーにねじ込むことができるのだ。

例えば、「あ」(U+3042)という文字で考えてみよう。
これは当然latin-1には含まれない文字なので、そのままリクエストヘッダーの値に入れると処理系で弾かれるはず。

encode("utf-8")

と、いうことで、まずは「あ」をバイト列に変換する。
「あ」という文字をutf-8でバイト列に変換すると、

0xE3 0x81 0x82

decode("latin-1")

得られたバイト列を強引にlatin-1で

• 0xE3 → ã
• 0x81 → (未使用)
• 0x82 → (未使用)

と解釈すると、

ã\x81\x82

というlatin-1の文字列が得られる(latin-1では0x7F-0x9Fが使われていないので、\x81\x82のようにそのまま表示されている)。
この文字列はlatin-1なので、リクエストヘッダーに突っ込んで問題なく送ることができる。

原理

HTTP/1.1では、リクエストヘッダにasciiまたはlatin-1しか使用することができない。

そのため、一旦utf-8のバイト列に変換して、latin-1の文字列に偽装すると、データを壊さずにそのまま送ることができる。

utf-8もlatin-1もascii互換なので、(元のunicode列に混入させない限りは)復元可能。

プロンプト「以前」の思考法:LLMにおける「情報解像度」と「エントロピー」の動的制御論

序論

どいつもこいつも生成AI、LLMである。
私も例に漏れず、記事の殆どをAIに作らせるようになってしまったけれども。

みんな挙ってAIを使いこなすためのテクニックを競い合っている。「神プロンプト」とか言って(笑)。
しかし、従来のプロンプト・エンジニアリングなるものは単なる表層的介入に陥っていると言いたい。大規模言語モデル(LLM)とのインタラクションの本質は、言語的指示のパッチワークではなく、有限な計算リソース(Attention)を確率空間内のどの座標へ、いかなる密度で配分するかという「エントロピー制御」に他ならない。従って、情報理論や熱力学的視点から、LLMに対する実践的介入方法の再構築を試みるべきなのである。

この記事では、入力解像度と出力エントロピーの相関をトレードオフとして捉え、推論空間における「拡散(Exploration)」 「翻訳(Translation)」「凍結(Freezing)」の三相を動的に遷移する知能制御の能動的方法論を定性レベルで提示する。なので数理的な証明や分析は述べないし、そもそも最初から考察していない。チラシの裏のただの妄言だと思ってくれて構わない。でも、そうであったとしても依然として、我々が目指すべきは「洗練された完璧なプロンプトの作成」なんかでは決してなく、AIの推論を論理的必然性へと導く「情報制御法の獲得」である。


第1章:入力解像度と出力エントロピーの同期

この章の核心は、「高すぎる入力解像度は、未分化な対象(カオス)を扱う際に、逆にノイズを生み、AIの創造的ポテンシャルを窒息させる」という逆説の理解にある。プロンプトの精密さは固定された「能力」ではなく、出力の目的に応じて調整する「動的ズームレンズ」であり、AIの計算リソースを最適配分するための「戦略的変数」である。

1. 制御変数としての「入力解像度」:束縛条件の密度設計

プロンプトの解像度とは、単なる情報の詳細さではなく、AIの推論を特定の座標に縛り付ける「束縛条件(Constraints)の密度」である。

  • 低解像度入力 (潜在空間の開放):
    • 定義: 抽象的な問い、断片的なデータ、制約の意図的排除。
    • 効果: LLMの「潜在空間(Latent Space)」における移動距離を最大化する。具体的な制約(重力)を外すことで、AIが持つ広大な知識ネットワークを縦横無尽に走らせ、ユーザーの予期しない、エントロピーの高い(情報の新奇性が高い)接続を誘発させる。
  • 高解像度入力 (推論の物理的封鎖):
    • 定義: 厳密な定義、多層的な制約、論理構造の指定(スキーマの強制)。
    • 効果: AIの推論を特定の「解(一意の点)」に収束させる。解釈の余地を物理的に封鎖し、実務における「実装」「整合性」を担保する。

2. 同期のメカニズム:計算リソース(Attention)のゼロサム・ゲーム

LLMが一度の生成に割ける計算リソース(Attention)は有限の定数である。入力解像度と出力エントロピーが同期していない場合、内部で「リソースの奪い合い」が発生し、出力の質が著しく低下する。

フェーズ 求める出力の状態 入力解像度 実行される処理とリソース配分(戦略)
拡散 (Exploration) エントロピー(意外性、広がり) (広角) 「素材の収穫」に全振りする
制約維持コストをゼロにし、潜在空間の探索距離を最大化させる。
収束 (Refinement) エントロピー(厳密性、一貫性) (望遠) 「構造の維持」に全振りする
探索コストをゼロにし、収穫した素材を精密なテンプレートへ物理的に固定する。

3. なぜ「同期」が必要なのか:2つの致命的な機能不全

  • 過剰同期の罠(創造的窒息): 低エントロピーな出力(定型的な回答)が欲しい段階で、最初から最高解像度の設計図(厳密すぎる制約)をぶつけると、AIの計算リソースは「複雑な制約条件(構造)の維持」に食い潰される。結果、肝心の「内容の生成」に割くリソースが枯渇し、中身の薄い、一般論に終始した「型だけ立派な無味乾燥なゴミ」が生成される。
  • 不足同期の罠(実務的崩壊): 高い厳密性が求められる最終局面(実装や契約書作成)で入力解像度が低いままだと、出力に制御不能な「ゆらぎ(ノイズ)」が混入する。AIは余った計算リソースを「勝手な解釈(ハルシネーション)」に転用し、実用に耐えない致命的な欠陥を生み出す。

4. 戦略的態度:AIの「窒息」と「迷走」をナビゲートせよ

我々の役割は、単なる命令者ではなく、AIのリソース配分を司る「エネルギー・ナビゲーター」である。

  • 拡散フェーズ(探索): 「戦略的な曖昧さ」を維持せよ。AIに自由を与え、潜在空間の果てまで走らせることで、情報のポテンシャル(可能性)を最大化する。
  • 収束フェーズ(凍結): 「冷酷な独裁者」として振る舞え。解像度を極限まで引き上げ、AIの自由を奪うことで、精度の高い一撃を放たせる。

「今、自分はAIに『カオス』を求めているのか、『ロゴス』を求めているのか。この問いに答えを出すことこそが、プロンプトを書き始める前の、最も重要な知的な仕事である」


第2章:創発的要素の識別と暫定モデルの構築

本フェーズの目的は、第1章の「拡散」で得られた未分化な素材(カオス)を、自分の思考の論理体系(ロゴス)へと翻訳し、成果物の核となる「論理的リソース」を特定することにある。

1. なぜ「中間フェーズ」が必要なのか:断絶の回避

多くの指示が失敗する最大の原因は、第1章(拡散)からいきなり第3章(完成)へジャンプしようとすることにある。

  • 拡散直後の状態: 可能性の塊であるが、同時にノイズやハルシネーションを孕んだ「未分化な素材」。
  • 完成に必要な状態: 厳密な制約条件によって一意に固定された「設計図」。

この間にある「どの素材を使い、どう並べるか」という主導的な意思決定を飛ばすと、AIは重要でない枝葉に計算リソースを浪費し、精度が著しく低下する。本章はこの「ミッシングリンク」を埋めるための、人間による「編集」と「建築」のプロセスである。

2. 三つの実践的ステップ

① 蒸留とパターン認識(「砂金採り」による核の抽出)

AIの冗長な回答から、価値ある「情報の核」を特定し、背景にあるルールを読み解く。

  • セマンティック・抽出: 課題の本質を突いている「キーワード」や「概念の塊(チャンク)」を、砂金のように掬い上げる。
  • 潜在構造の検知: AIが提示したバラバラな要素の間に存在する「隠れた法則」や、AI自身も明文化していない「相関関係」を特定する。
  • バイアス判定: 回答の偏り(一般的すぎる、特定の分野に寄っている等)を客観的に評価し、次フェーズでの修正指針とする。

② スキャフォールディング(「思考の仮置き台」による骨組みの形成)

抽出した素材を、自分の既存の知見やフレームワークという「使い慣れた道具」に当てはめる。

  • 変数の仮決定: 成果物を構成する主要なパーツに「ラベル」を貼り、後続プロセスでの制御対象とする。
  • インターフェースの設計: 収集した素材を、自分の既存の論理体系の「どこに差し込むか」という接続点を設計する。
  • 解像度の段階的移行: 「曖昧なアイデア」を「定義可能な概念」へと昇華させ、第3章の「構造の凍結」に耐えうる強度を持たせる。

③ 選別と棄却の審判(「ロジックの剪定」による純度向上)

「AIが生成したから」という受動的態度を捨て、自分の論理に照らして情報を厳格に切り捨てる。

  • 採用(資産化): 自身の論理で説明可能であり、かつ目標達成に直結する要素を柱として残す。
  • 棄却(除染): もっともらしいだけの嘘(ハルシネーション)や、本質をぼやけさせる冗長な装飾表現を徹底的に排除する。

3. 本フェーズの到達点

本章を終えた時、手元には「戦略的な骨組み(スケルトン)」が残っている必要がある。人間が「編集者」あるいは「建築士」として主導権を握り、情報の優先順位を確定させることで、初めてAIは「あなたの指示で動ける」状態(第3章)へと移行可能になる。


第3章:厳密な論理制約による構造の凍結

本フェーズの目的は、暫定的なモデル(足場)を、厳密な定義と多層的な制約条件によって「一意の解」へと固定(フリーズ)し、実務や研究において「これ以外の形ではあり得ない」という論理的必然性を持った高精度な出力を強制することにある。

1. 高解像度プロンプトへのパラメータ置換:推論空間の物理的封鎖

第2章で特定した「変数」や「関係性」を、AIの自由度を極限まで奪う具体的な指示セットへと変換する。

  • スキーマの強制(型の鋳型): 「内容を要約せよ」といった抽象的な指示を排し、出力形式を「JSONスキーマ」「特定の論理フレームワーク(例:序破急、MECE)」といった「型の鋳型」へと厳密に流し込む。これにより、AIが余計な解釈に計算リソースを浪費することを防ぎ、構造を物理的に固定する。
  • 境界条件の設定(排他的封鎖): 「何をすべきか」以上に「何をすべきでないか(禁止事項)」を多層的に設定する。専門用語の使用制限、文字数制限、特定のキーワードの排除など、AIの推論が拡散(リーク)する余地を物理的に封鎖し、エントロピーを強制的にゼロへと近づける。
  • コンテキストの再注入: 低解像度フェーズではあえて伏せていた、専門性の高い高度な知識や固有のルールを、この段階で一気に結合させる。

2. 「構造の保存」と再帰的リファインメント

自身の論理体系(アーキテクチャ)と、AIの生成プロセスを完全に同期させ、出力の品質を保証する。

  • 論理的整合性の検証: 生成された各要素が、全体の設計図と矛盾なく接続されているかを、自身の知見に照らして評価する。
  • 再帰的修正(部分的凍結): 出力の一部に「ゆらぎ(曖昧さ)」や「ハルシネーション」が残る場合、その箇所のみを抽出して再度「凍結」のための追加制約をかけ、部分的な解像度を極限まで引き上げる。

3. 本フェーズにおける「凍結」の定義:偶然性から必然性へ

「凍結」とは、AIの出力から偶然性(たまたまそう答えた)が消え、指示という重力によって「この制約下では、この答え以外になり得ない」という論理적 必然性に到達した状態を指す。

  • 収束のサイン: AIの出力が、定義したテンプレートの中に過不足なく収まり、かつ実用上の「あそび(ノイズ)」が許容範囲内にまで削ぎ落とされた状態。
  • 失敗の定義: 第3章の凍結が甘い場合、第1章・第2章で得た優れた洞察も、出力の段階で「一般論に終始した、ボヤけたゴミ」へと劣化する。

「AIに自由を与えて良いのは『拡散』の時だけである。成果を求める『凍結』のフェーズでは、AIの自由を奪うことこそが、精度の高い一撃を放たせる唯一の手段となる」


第4章:動的同期プロトコル

本章の目的は、1〜3章のプロセスを単なる順次処理から、状況に応じて最適な経路を選択・循環させる「動的制御システム」へと昇華させることにある。

1. タスク診断:エントロピー位置の2軸測定

実行前に、対象タスクを「目的地の明瞭さ」と「素材の有無」の2軸で評価し、最適な実行パターンを決定する。

  • 垂直軸(目的の確定度): ゴール(型)が既知か、未知(カオス)か。
  • 水平軸(アプローチの方向): ゼロから広げる(拡散)か、既存データから導く(帰納)か。

2. 戦略的実行パターン・マトリクス

診断結果に基づき、以下の4つの基本プロトコルから選択する。

パターン名 構成パス 最適なユースケース 核心的戦略
① フル・シンクロ 1(拡) → 2 → 3 新規概念の構築、未知の課題解決 AIに「嘘(拡散)」を許し、人間が「砂金(核)」を拾う。
② 弁証法的拡張 1 → 1' → 2 既存の枠組みの打破、多角視点 意図的に「対立する前提」をぶつけ、一般論を破壊する。
③ 帰納的マッピング 素材 → 2 → 1 データの構造化、本質の逆引き 高解像度の「事実」から、低解像度の「法則」を抽出する。
④ ダイレクト・ビルド 1(収) → 3 定型業務、仕様の固まった実装 1章の拡散をスキップし、最初から「凍結」を強制する。

3. 非線形ダイナミクス:フェーズ・ループと逆行

「1→2→3」の直線的進行が行き詰まった際、意図的に解像度を上下させる機動操作を定義する。

  • 再帰的リファインメント(3 → 2 → 3): 成果物の「型」は正しいが「密度」が不足している場合。特定の変数のみを「未分化(2章)」に戻して再定義し、再度「凍結」する。
  • 破壊的リブート(3 → 1): 局所最適化(袋小路)に陥った場合。すべての制約条件を破棄し、あえて極低解像度(1章)へジャンプして、思考の蒸気(カオス)に戻す。
  • 部分的解凍(Partial Thawing): 全体構造を維持したまま、特定のモジュールだけエントロピーを上げ、AIの創造的介入を再要求する。

4. プロトコル・ヒューリスティクス(運用の黄金律)

最小の計算リソースで最大の結果を得るための、実戦的な判断基準。

  • 「2章(翻訳)」スキップの条件: 変数の抽出やラベル貼りが不要なほど、アウトプットの「型」が自明である場合(効率化)。
  • 「3章(凍結)」スキップの条件: 結論を出したことよりも、情報のポテンシャル(可能性)を維持し、自分の思考を刺激し続けたい場合(知の保留)。
  • 逆相関の法則: 「プロンプト(入力解像度)」にトークンを割くほど、「回答(出力エントロピー)」は絞り込まれ、必然性が増す。逆に、指示を短く(低解像度)するほど、AIの計算リソースは「潜在空間の探索」へ開放される。

結論:完結した「動的知能システム」

「真の知性とは、対象の混沌(カオス)と秩序(ロゴス)の度合いを見極め、それに見合った『解像度』を自在にスイッチングできる能力である」

【ストレングスファインダー】私の「エコシステム」を可視化する

ストレングスファインダー

とあるnoteの記事を見つけて、そういえばストレングスファインダーって就活のときにやったよなぁと思いだしたし、転職が頭をよぎったときも、自分の強みとは何だ?ということで振り返ってもいた。

けれども、エコシステムとして可視化まではしてこなかった。確かに、「自分の才能とはこうである」という見取り図を作ったほうが、今やってることの方向性が合ってるかどうかの検証にもなるし、無駄なことをするのを避けれられると思った。

先の記事によれば、

資質の使い方に「再現性」を持たせる必要がある

資質を普段使いできるよう再現性を出すためにも「エコシステム=自分がパフォーマンスを発揮するための資質同士のつながり」を言語化すべき

ということらしい。汝自身を知れ。


ストレングスファインダーの自己解析

私のTOP5の資質はこちら。

  1. 内省:戦略的思考力
  2. 学習欲:戦略的思考力
  3. 収集心:戦略的思考力
  4. 運命思考:人間関係構築力
  5. 個別化:人間関係構築力

私のエコシステム図

というわけでGeminiに手伝ってもらいながら、エコシステムの図を描いてみた。

上位4資質(内省 × 学習欲 × 収集心 × 運命思考)が互いに参照・補完・相互作用しながら「自分の中だけで完結する巨大な宇宙」を形成するらしい。かろうじて「個別化」が存在するので、これが唯一の「外界とのインターフェース」として機能して、他の資質が作り上げた世界を翻訳して出力することができる。個別化の負荷高すぎ。


テキスト解説

上のエコシステムは、私の資質のテキスト解説をもとに図解したもので、
これもGeminiに言語化してもらってます。

① インプット:広域変数の摂取(収集心 × 学習欲)

「役に立つか」という世俗的な基準ではなく、「まだ誰も踏み込んでいない」「世界の理(ことわり)に触れられそう」という直感で、網羅的に摂取します。これは単なる物知りではなく、後述する「演算」のための広大な変数を集める作業です。

実利や既知の境界に縛られず、系(システム)の外部にある情報を網羅的に摂取します。これは単なる蓄積ではなく、後述する抽象化演算において、より広範な「写像」を可能にするための多様な変数を確保するプロセスです。

② プロセス:構造の抽出と並行移動(内省 × 運命思考)

集めたバラバラの知識を、頭の中で抽象的な構造へと昇華させます。数学と言語を同一視するように、異なる分野を「構造の並行移動」でつなぎ合わせ、自分だけの巨大な真理のマップを構築します。

摂取した個別の事象から具体的な文脈を剥ぎ取り、純粋な「構造(パタン)」へと昇華させます。異なる領域に存在する同型の構造を見出し、それらを結合・統合(アウフヘーベン)することで、世界を記述する独自のメタ・マップを構築します。

③ アウトプット:認知プロファイリングと翻訳(個別化)

構築された巨大なマップは、そのままでは他人には理解されません。そこで「個別化」が、相手の知能レベルや背景をプロファイリングし、「相手が受信可能な周波数」に情報をダウンサイジングして翻訳します。

構築した巨大なメタ・マップを、そのままの解像度で出力するのではなく、対象(人・問題)の認知特性に合わせて再構成します。相手の前提条件や推論プロセスを逆算し、「その認知フレームにおいて最も機能する形」へと情報をダウンサイジングして提供します。

難解な概念を、特定の誰かが理解できる形に再構築して提供する「ブリッジング」において、比類なき価値を発揮します。


資質間の相互関係

1. インテーク(収集心 ⇄ 学習欲)

  • 相互作用: 「③収集心」が未知の対象(モノ・情報)を広くピックアップし、「②学習欲」がその習得プロセス(コト)を完遂させるための粘り強さを提供します。
  • 関係性: 収集心が「何を(What)」、学習欲が「どのように(How)」を担当する、インプットの双輪です。

2. 構造化(内省 ⇄ 運命思考)

  • 相互作用: 「①内省」が孤独な思考の中で知識を極限まで抽象化し、「④運命思考」がその抽象化された点と点を結びつけ、一つの巨大な「理(システム)」として統合します。
  • 関係性: 内省が「垂直的な深掘り」、運命思考が「水平的な接続」を担当し、多次元的なマップを編み上げます。

3. ブリッジ(個別化 ⇄ 他の4つの資質)

  • 相互作用: 上位4つ(内省・学習欲・収集心・運命思考)が「自分の中だけで完結する巨大な宇宙」を形成するのに対し、「⑤個別化」だけが唯一の「外界とのインターフェース」として機能します。
  • 関係性: 個別化が相手のプロファイルを読み取ることで、他の4つが作り上げた「深すぎて伝わらない真理」を、相手が理解できる形に翻訳・変換(ダウンサイジング)します。

資質同士の影響

組み合わせ 起こる現象
内省 × 収集心 闇雲に集めるのではなく、「自分の哲学の構築に必要か」という内的基準で情報の取捨選択を行う。
運命思考 × 学習欲 「この分野を学べば、あのアレと繋がるはずだ」という予感に基づき、一見無関係な分野への学習を正当化する。
個別化 × 内省 相手の思考のズレや前提の欠如を、自分の内的な抽象モデルに照らし合わせて瞬時に特定する。

資質間の抑制関係

面白いのは、「⑤個別化」が「④運命思考」を具体化させている点です。

  • 運命思考は「世界は一つに繋がっている」という全体論的な視点ですが、
  • 個別化は「一人ひとりはユニークで、他とは違う」という各論的な視点です。

この相反する視点が共存することで、「全体の構造(真理)を理解しながらも、それを個別の事象(目の前の人)に当てはめる際に、決して雑な一般化をしない」という、極めて精密な知性が生まれています。


まとめ

自分の強みとは何か、そして強み同士がどのように機能しているか、ようやく理解ができた。

生成AI以前の環境では、自分のような内省駆動の人間は考えすぎてアウトプットがおろそかになりがちだったのだと思う。ところが生成AIがやってきてくれたおかげで半ば強制的に、とりあえず見せられるだけの成果物を作ることができるようになったので、ボトルネックが解消された気分になってます。

みんな、自己を認識しよう。

C#(WPF)アプリ多言語対応の落とし穴と解決法

C#WPFアプリで多言語対応するためにリソースファイルを使おうと思ったのですが、いろんなところで躓いたので、解決策のメモです。
Visual Studio 2022です。

その1 リソースファイル/「Properties」フォルダ/「Resource」フォルダがない

プロジェクト作成直後のデフォルトの状態では、ソリューションエクスプローラーを見てもリソースファイル(.resx)や「Properties」フォルダ、「Resource」フォルダなどが見当たらないと思います。

プロジェクトを作成してデフォルトの状態ではリソースファイルが存在しません。そのため、プロジェクトのプロパティを開いてリソースファイルを作成します。
プロパティは、メニューバーの「プロジェクト」>「WpfApp1 のプロパティ」(例えば。WpfApp1のところは作成したプロジェクト名が入ります)で開きます。

「リソース」>「全般」の「アセンブリ リソースを作成する/開く」をクリックすることで、「Properties」フォルダと「Resources.resx」が作成され、ソリューションエクスプローラーに表示されます。

新しい言語のリソースファイルを追加する場合は、「Properties」フォルダを右クリック>「追加」>「新しい項目」でリソースファイルを追加できます。

その2 リソースの参照の仕方がわからない

XAML

その1のように、「Properties」フォルダにリソースファイル(.resx)が配置されているというディレクトリ構成であれば、Windowブロックにxmlns:properties="clr-namespace:WpfApp1.Properties"を挿入したうえで、

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:properties="clr-namespace:WpfApp1.Properties"
        Title="MainWindow"
        Width="300"
        Height="100"
        mc:Ignorable="d">

多言語対応したい文字列のところを{x:Static properties:Resources.String1}に置き換えて書きます。この場合、UI上の表示は、該当言語のリソースファイルの「String1」に対応する値を参照して表示します。

例えばTextBlockのTextを置き換えるのであれば、

<TextBlock FontSize="20"
           Text="{x:Static properties:Resources.String1}" />
C#

String1の値を参照する場合は、Properties.Resources.String1のように書きます。
例えば、下記のようにするとメッセージボックスの文字列に使えます。

namespace MultiLangApp
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ButtonText_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(Properties.Resources.String1);
        }
    }
}

その3 .xamlのプレビューが表示されない

一旦ビルドしましょう。ビルドに成功すれば表示されるようになります。

その4 ビルドするとエラーがでて成功しない

リソースファイルのアクセス修飾子を「Public」に変更しましょう。

リソースファイル(.rsax)を開きまして、上の方に「アクセス修飾子」があります。
デフォルトでは「Internal」になっているっぽいので、これを「Public」に変更すればビルドが通る。