🤖 Clockwork Hippocrates 🧑⚕️











これまでのAIは、目の前にある情報を分類したり、次に来る言葉を予測したりすることで大きく進歩してきました。けれども、自律的に行動するAIには、それだけでは足りません。行動する前に「この操作をしたら、次に何が起こるか」を考え、複数の未来を比べる必要があります。このときAIの内部に必要になるのが、ワールドモデル(world model)です。認知科学では、動物が環境の構造を内部に表現する「認知地図」が古くから研究され、制御理論では、直接は見えないシステム状態を観測から推定して未来を予測する方法が発展してきました。現在のワールドモデル研究は、こうした考え方と機械学習、強化学習を結びつけたものと捉えると理解しやすくなります (Tolman 1948; Kalman 1960; Sutton and Barto 2018)。
この回で扱う中心的な問いは一つです。AIは、現実に試す前に、頭の中で未来を試せるのか。 ここを理解すると、ワールドモデル、計画、想像、強化学習、自律型AI、そして自己モデルの関係が一本につながります。

この回で学ぶこと
ワールドモデルという言葉は、動画生成、ロボット、強化学習、AIエージェント、医療AIなど、異なる文脈で使われています。そこで、この回では流行語として覚えるのではなく、「観測から状態を推定し、行動による状態変化を予測し、その予測を使って計画する仕組み」として統一的に理解します (Kalman 1960; Kaelbling et al. 1998; Sutton and Barto 2018)。
- ワールドモデルを、観測、状態、行動、遷移、価値、計画という部品に分解できるようになる。
- モデルフリー強化学習とモデルベース強化学習の違いを、経験と想像の使い方から説明できるようになる。
- World Models、MuZero、Dreamer、V-JEPA 2、Dreamer 4、LeWorldModelなどの研究を、一つの系譜として理解する。
- 生成型ワールドモデルと潜在表現型ワールドモデルの違いを理解する。
- ワールドモデル、自己モデル、メタ認知、意識を混同せずに整理する。
- 医療分野で「何の世界をモデル化しているのか」を五つの状態空間に分けて考えられるようになる。
最後には、小さな人工環境を使って、AIが現実の経験から遷移モデルを学び、その内部で複数の未来を試してから行動する過程をPythonで実装します。この例は深層学習モデルではありませんが、ワールドモデルの最小構造を手で確かめるには十分です (Sutton 1991; Sutton and Barto 2018)。
反応するAIから、未来を考えるAIへ
まず、簡単な場面を思い浮かべてみましょう。廊下を進むロボットの前に、左右二つの道があります。右は近道ですが、床が滑りやすい。左は遠回りですが、安全です。単純な反応型AIなら、現在のセンサー入力を見て、その場で行動を選びます。ワールドモデルを持つAIは違います。右へ進んだ未来と、左へ進んだ未来を内部で試し、結果を比べてから動きます。
この構造は、強化学習でいうモデルベース学習の中心です。環境モデルを使わず、経験から直接「この状態ではこの行動がよい」と学ぶ方法はモデルフリー強化学習と呼ばれます。一方、モデルベース強化学習は、環境がどのように変化するかを学び、そのモデルを使って計画します (Sutton 1991; Sutton and Barto 2018)。
ワールドモデルの最小定義
ワールドモデルを最も簡潔に書けば、現在の状態と行動から、次の状態を予測するモデルです。
\[ p(s_{t+1} \mid s_t, a_t) \]
ここで、\(s_t\) は時刻 \(t\) の状態、\(a_t\) はAIが選ぶ行動、\(s_{t+1}\) は次の状態です。たとえばロボットなら、状態には位置、速度、周囲の物体、バッテリー残量などが含まれます。行動は、前進、停止、旋回、把持などです。ワールドモデルは「この状態で、この行動を取ったら、次に世界はどう変わるか」を学びます (Sutton and Barto 2018; Ha and Schmidhuber 2018)。
ただし、現実世界の状態は、いつも直接見えるわけではありません。医療を考えると分かりやすいでしょう。血圧、検査値、画像、症状は観察できますが、「患者の本当の病態」は一つの数字として直接は見えません。そこでAIは、観測情報から潜在状態(latent state)を推定します。
\[ z_t = E(o_{\leq t}) \]
\(o_{\leq t}\) は、それまでに得られた観測の履歴です。\(E\) は観測を内部表現に変換するエンコーダです。次に、その内部状態と行動から未来を予測します。
\[ p(z_{t+1} \mid z_t, a_t) \]
この「観測できるもの」と「本当に知りたい内部状態」を分ける考え方は、状態空間モデル、部分観測マルコフ意思決定過程、制御理論に共通します (Kalman 1960; Sutton and Barto 2018)。
ワールドモデルの中身を分解する
「ワールドモデル」という名前から、世界を丸ごと再現する巨大なシミュレータを想像するかもしれません。けれども、実際にはもっと機能的に考えた方が分かりやすくなります。意思決定に使えるワールドモデルは、少なくとも観測、状態推定、ダイナミクス、価値、計画という五つの要素に分けられます (Kaelbling et al. 1998; Sutton and Barto 2018)。
| 要素 | 役割 | 医療での例 |
|---|---|---|
| 観測モデル | 世界の状態が、どのようなデータとして見えるかを扱う | 病態が検査値、画像、症状、診療記録として現れる |
| 状態表現 | 観測履歴から、現在の内部状態を表す | 患者の重症度、病勢、臓器予備能を潜在状態として表現する |
| ダイナミクスモデル | 状態と行動から、次の状態を予測する | 治療、手術操作、政策変更後に何が起こるかを予測する |
| 価値・目的 | どの未来を望ましいとするかを定義する | 生存、QOL、安全性、合併症、患者負担を評価する |
| プランナーまたは方策 | 複数の未来を比較し、行動を選ぶ | 候補介入を比較し、実行する次の一手を選ぶ |
観測と状態は同じではない
ワールドモデルを理解するうえで、最も大切な区別の一つが観測(observation)と状態(state)です。観測はセンサーや記録から得られる情報です。状態は、未来予測に必要な世界の内部的な状況です。現実世界では、状態が完全に見えることはむしろ少なく、AIは観測履歴から状態についての信念を更新します (Kaelbling et al. 1998)。
部分観測環境では、AIが持つのは単一の確定状態ではなく、「今どの状態にいる可能性が高いか」という確率分布です。これをbelief stateと呼びます。
\[ b_t(s) = P\left(s_t=s \mid o_{\leq t}, a_{<t}\right) \]
ここで、\(b_t(s)\) は時刻 \(t\) に状態 \(s\) である確率、\(o_{\leq t}\) はこれまでの観測、\(a_{<t}\) はこれまでの行動です。患者の病態、ロボットが接触している組織の硬さ、遠隔地の環境状態などは、直接には完全観測できません。だからこそ、状態推定がワールドモデルの中心になります (Kalman 1960; Kaelbling et al. 1998)。
予測すべきなのは「次の画像」だけではない
ワールドモデルの出力は、次の動画フレームである必要はありません。次の潜在状態、報酬、価値、危険度、目標到達可能性など、計画に必要な量を予測すればよい場合があります。MuZeroは、環境を画素レベルで完全再現するのではなく、計画に必要な報酬、価値、方策に関係する内部表現を学習しました (Schrittwieser et al. 2020)。
この考え方は重要です。高精細な未来映像を作れても、行動選択に必要な因果構造を間違えていれば、良いワールドモデルとは言えません。逆に、見た目を再現しなくても、行動結果と価値を正しく予測できるなら、計画には有用です。2025年のV-JEPA 2も、将来画素を逐一生成するより、意味のある潜在表現を予測する方向を強く示しました (Assran et al. 2025)。
ワールドモデルは「世界のコピー」ではなく「意思決定のための圧縮」です
地下鉄の路線図は、街のすべてを描いていません。建物の高さ、道路の色、樹木の位置は捨てています。それでも、乗り換えには役立ちます。ワールドモデルも同じで、目的に関係する構造を保ち、不要な細部を捨てる必要があります。HaとSchmidhuberのWorld ModelsやMuZeroは、巨大な観測空間を、意思決定に使える内部表現へ圧縮する方向を示しました (Ha and Schmidhuber 2018; Schrittwieser et al. 2020)。
そのため、ワールドモデルの良し悪しは「どれほど現実そっくりか」だけでは決まりません。何を捨て、何を残したか。その表現が、予測と計画に十分か。 ここが本質です (Schrittwieser et al. 2020; Hafner et al. 2023)。
ワールドモデルの学問的な源流
1.認知科学:頭の中に地図を持つ
ワールドモデルの発想は、深層学習から突然生まれたわけではありません。Tolmanは1948年、ラットの迷路学習をもとに、動物が刺激と反応を単純に結びつけるだけでなく、環境の構造を表す「認知地図」を形成するという考え方を示しました (Tolman 1948)。
ここで大切なのは、地図が現実そのものではないことです。地図は、目的に必要な構造だけを圧縮して持っています。電車の路線図は、建物の高さや道路の色を捨てています。それでも乗り換えには役立ちます。優れたワールドモデルも同じです。世界のすべてを完全に再現する必要はありません。意思決定に必要な構造を保ちながら、不要な細部を捨てることが重要です。
2.制御理論:見えない状態を推定する
制御理論では、センサーの値をそのまま世界の真実とは考えません。ノイズを含む観測から、直接は見えない状態を推定し、その状態が次にどう変化するかを計算します。Kalman filterは、その代表的な枠組みです (Kalman 1960)。
線形システムの基本形は次のように表せます。
\[ \begin{aligned} s_{t+1} &= A s_t + B a_t + w_t \\ o_t &= C s_t + v_t \end{aligned} \]
一つ目の式は世界の変化です。\(A\) は状態が自然にどう変わるか、\(B\) は行動が世界にどう影響するかを表します。\(w_t\) は予測できない揺らぎです。二つ目の式は観測の仕組みです。\(C\) は内部状態がセンサーにどう現れるか、\(v_t\) は観測ノイズです (Kalman 1960)。
現代のニューラルワールドモデルは、\(A\)、\(B\)、\(C\) を固定した行列で置く代わりに、ニューラルネットワークで複雑な非線形関係を学びます。それでも、「状態を推定し、遷移を予測し、観測で修正する」という骨格は変わりません (Ha and Schmidhuber 2018; Hafner et al. 2023)。
3.強化学習:学習と計画を一つにつなぐ
1991年にSuttonが提案したDynaは、ワールドモデル研究の系譜を理解するうえで重要です。Dynaでは、エージェントは現実の経験から学ぶだけではありません。学習した環境モデルの中でも経験を生成し、現実の経験と想像上の経験の両方で方策を改善します (Sutton 1991)。
この循環は、現在のDreamer系モデルにもつながっています。違いは、昔のモデルでは状態や遷移を人が比較的明示的に設計したのに対し、現代のモデルは画像や複雑な観測から、計画に使える潜在状態そのものを学ぶ点です (Sutton 1991; Hafner et al. 2023)。
数式で見るワールドモデルの最小構造
ワールドモデルの数式は、見た目ほど複雑ではありません。基本は、観測から状態を作る、状態を未来へ進める、未来の価値を評価するという三段階です (Kalman 1960; Kaelbling et al. 1998; Sutton and Barto 2018)。
1.観測から内部状態を作る
画像、音声、検査値、言語などの観測を、そのまま未来予測へ使うと高次元すぎることがあります。そこで、観測履歴を潜在状態へ変換します。
\[ z_t = E\left(o_{\leq t}, a_{<t}\right) \]
\(E\) はエンコーダまたは状態推定器です。\(z_t\) は、世界のすべてを保存する必要はありません。次の状態や価値を予測するのに必要な情報を保持できればよいのです (Ha and Schmidhuber 2018; Hafner et al. 2023)。
2.行動によって未来を進める
次に、現在の潜在状態と行動から、次の潜在状態を予測します。
\[ \hat{z}_{t+1} = f_{\theta}\left(z_t,a_t\right) \]
確率的な世界では、未来は一つに決まりません。その場合は、次状態の分布を学びます。
\[ p_{\theta}\left(z_{t+1}\mid z_t,a_t\right) \]
同じ治療でも患者ごとに結果が違い、同じロボット操作でも接触条件で結果が変わります。したがって、医療やロボティクスでは点予測だけでなく、複数の可能な未来とその確率を扱う必要があります (Kaelbling et al. 1998; Liu et al. 2026)。
3.未来の価値を評価する
未来を作っただけでは、どれを選ぶべきか分かりません。そこで、各状態や軌跡に価値を与えます。
\[ G_t = \sum_{k=0}^{H-1} \gamma^k r_{t+k} \]
\(G_t\) は将来の累積価値、\(H\) は計画ホライズン、\(\gamma\) は遠い未来をどの程度重視するかを表す割引率です。医療では、目的を一つの報酬へ単純化すること自体が難しい問題です。生存、QOL、副作用、負担、公平性などが同時に関わるからです。そのため、臨床的なワールドモデルでは、単一報酬最大化をそのまま意思決定へ使う設計には慎重さが必要です (Liu et al. 2026)。
4.未来を比較し、最初の一手を選ぶ
複数の行動列について未来を展開し、期待価値が高いものを選びます。
\[ a^*_{t:t+H-1} = \arg\max_{a_{t:t+H-1}} \mathbb{E}\left[G_t\right] \]
ただし、現実ではモデルが不完全です。だから、計画した行動列を最後まで盲目的に実行するのではなく、最初の一手だけ実行し、新しい観測で状態を更新して再計画します。ワールドモデルは、完成した未来予言装置ではなく、観測と予測を往復する閉ループの中で使う方が本質に近いのです (Sutton and Barto 2018)。
学習目標は一つではない
ワールドモデルは、何を正解として学ぶかで性格が変わります。画素再構成を重視するモデル、次の潜在状態を予測するモデル、報酬と価値を直接予測するモデルがあります (Ha and Schmidhuber 2018; Schrittwieser et al. 2020; Assran et al. 2025)。
| 学習対象 | 強み | 注意点 |
|---|---|---|
| 次の観測 | 人が未来を確認しやすい | 画素の細部に計算を使いすぎることがある |
| 次の潜在状態 | 計画に必要な意味へ圧縮できる | 内部表現の解釈が難しい |
| 報酬・価値 | 意思決定へ直結しやすい | 目的関数の設計ミスを受けやすい |
| 複数を同時学習 | 表現、予測、計画を統合できる | 学習安定性と損失設計が難しい |
したがって、「ワールドモデルは動画生成モデルか」という問いには、一律の答えはありません。動画を生成するタイプもありますが、MuZeroのように意思決定に必要な抽象量だけを学ぶタイプもあります。ワールドモデルを定義する中心は、出力形式ではなく、環境の状態変化を内部で表し、その表現を予測や計画へ使うことです (Schrittwieser et al. 2020; Hou et al. 2026)。
似ている概念を混同しない
ワールドモデルは、予測モデル、生成モデル、デジタルツイン、AIエージェントと重なる部分があります。しかし、同じ概念ではありません。分類の軸をそろえると、かなりすっきりします (Sutton and Barto 2018; Liu et al. 2026)。
| 概念 | 中心的な問い | ワールドモデルとの関係 |
|---|---|---|
| 予測モデル | 次に何が起こるか | ワールドモデルの一部になり得るが、行動条件付きでない予測も多い |
| 生成モデル | もっともらしいデータを作れるか | 未来生成に使えるが、計画可能性や因果妥当性は別問題 |
| デジタルツイン | 特定の現実対象をデジタルに対応づけられるか | 個体や設備と継続的に同期する属性が中心で、ワールドモデルは状態遷移と行動結果の予測が中心 |
| AIエージェント | 目標に向けて観測し、判断し、行動できるか | ワールドモデルを持つことも、持たないこともある |
| 基盤モデル | 多様なデータや課題へ転用できる表現を学べるか | ワールドモデルの知覚器や表現学習器として使える |
予測モデルとワールドモデルの境界
たとえば「この患者は30日以内に再入院するか」を予測するモデルは、時間を扱っていても、それだけでは必ずしもワールドモデルではありません。ワールドモデルでは通常、現在状態と行動を入力し、行動によって未来がどう分岐するかを扱います (Sutton and Barto 2018; Liu et al. 2026)。
同じ患者について、「治療Aならどうなるか」「治療Bならどうなるか」「介入しなければどうなるか」と未来を分岐させ、さらに次の行動選択へ接続する。この構造が、静的なリスク予測との違いです (Liu et al. 2026; Mu et al. 2026)。
デジタルツインは「対象との同期」、ワールドモデルは「変化の法則」
デジタルツインは、特定の患者、機器、病院など、現実の対象との対応関係を重視します。ワールドモデルは、状態が行動によってどう変化するかを重視します。したがって、患者固有のデータで継続的に更新されるPatient World Modelは高度なデジタルツインになり得ますが、すべてのデジタルツインが介入条件付きの未来を計画できるわけではありません (Liu et al. 2026)。
動画生成モデルは、世界を理解しているのか
未来動画を自然に生成できることは、物理的規則をある程度捉えている可能性を示します。しかし、見た目が自然であることと、長期的な因果構造を正しく保つことは同じではありません。2025年から2026年の研究では、映像の品質だけでなく、行動条件付き制御、物体相互作用、長期整合性、計画性能が重要な評価対象になっています (Assran et al. 2025; Hafner et al. 2025; Hou et al. 2026)。
AIの「想像力」は何を意味するのか
ワールドモデルの文脈でいう「想像」は、感情や主観的体験を意味しません。現実にはまだ起きていない状態系列を、内部モデル上で生成することです。強化学習では、この仮想的な未来展開をrolloutと呼びます (Sutton and Barto 2018; Hafner et al. 2023)。
たとえば、AIが3通りの行動列を考えるとします。
候補A:右 → 右 → 前
候補B:左 → 前 → 前
候補C:前 → 停止 → 右
ワールドモデルは、それぞれの行動列について未来を進めます。
\[ \hat{s}_{t+1}, \hat{s}_{t+2}, \ldots, \hat{s}_{t+H} \]
\(H\) は何手先まで考えるかを表す計画ホライズンです。各未来に対して報酬やコストを計算し、最も望ましい行動列を選びます。
\[ a^*_{t:t+H-1} = \arg\max_{a_{t:t+H-1}} \mathbb{E} \left[ \sum_{k=0}^{H-1} \gamma^k r_{t+k} \right] \]
\(r_{t+k}\) は将来の価値、\(\gamma\) は遠い未来をどの程度重視するかを調整する割引率です。AIは選んだ行動列をすべて実行するとは限りません。最初の一手だけ現実で実行し、新しい観測を得てから計画し直す方法があります。これはモデル予測制御の考え方と共通します (Sutton and Barto 2018)。
人間も似たことをします。会議で発言する前に、言い方を頭の中で何通りか試す。手術の前に、解剖と手順を思い描く。研究計画を立てる前に、仮説が正しかった場合と間違っていた場合の次の手を考える。もちろん人間の認知をそのままAIの数式に置き換えることはできませんが、「行動前に内部シミュレーションを行う」という機能的な共通点はあります。
「想像した未来」から、どうやって行動を選ぶのか
ワールドモデルが未来を予測しても、それだけでは行動は決まりません。候補行動を作り、未来を展開し、価値を比較して、最初の一手を選ぶ必要があります。ここがplanningです (Sutton and Barto 2018)。
| 方法 | 考え方 | 向いている状況 |
|---|---|---|
| Random Shooting | 多数の行動列をランダムに試し、最良を選ぶ | 行動空間が比較的小さく、実装を単純にしたい場合 |
| Cross-Entropy Method | 良い行動列の分布へ候補生成を反復的に集中させる | 連続制御やモデル予測制御 |
| Monte Carlo Tree Search | 有望な未来分岐を木構造で重点的に探索する | MuZeroのような離散的な深い計画 |
| Actor in Imagination | ワールドモデル内部で方策そのものを学習する | Dreamer系の高次元・長期制御 |
| Model Predictive Control | 一定期間先まで計画し、最初の一手だけ実行して再計画する | 観測のたびにずれを修正したい制御問題 |
なぜ最初の一手だけ実行するのか
十手先まで計画したとしても、現実で十手を一気に実行する必要はありません。最初の一手だけ実行し、新しい観測を得て状態を更新し、再び未来を計算します。これはモデル予測制御の基本的な考え方で、モデル誤差や予期しない変化を途中で修正できます (Sutton and Barto 2018)。
長く考えればよいとは限らない
計画ホライズンを長くすると遠い未来を考えられますが、予測誤差も積み上がります。モデルが一歩先で少しずつ間違うだけでも、何十手もrolloutすると実在しない未来へ進むことがあります。モデルベース強化学習では、モデル誤差と分布外行動が中心課題であり、長期計画では不確実性を明示的に扱う必要があります (Luo et al. 2022)。
実務では、「どこまで先なら予測が信頼できるか」を推定し、その範囲を超える前に現実の観測へ戻る設計が重要です。医療なら、数時間先の生理変化と数年先の慢性疾患軌跡では、必要なモデルも不確実性の扱いも異なります (Liu et al. 2026)。
モデルフリー強化学習と、ワールドモデルを使う学習
| 観点 | モデルフリー | ワールドモデルを使うモデルベース |
|---|---|---|
| 学ぶもの | 状態から行動や価値への対応 | 世界の状態遷移と、それを使った行動選択 |
| 未来予測 | 明示的には行わないことが多い | 内部モデルで未来をrolloutする |
| 経験効率 | 大量の試行を必要とすることがある | 想像上の経験を利用できる |
| 弱点 | 新しい状況への再計画が難しい場合がある | モデルが間違うと、計画も間違う |
| 典型的な問い | この状態では、何をすべきか | これをしたら何が起き、その後どうすべきか |
モデルベース方式は、現実の試行が高価または危険な領域で魅力があります。一方で、内部モデルの誤差を利用するような行動をAIが選ぶ「model exploitation」や、予測誤差が長期rolloutで積み重なる問題があります。そのため、ワールドモデルは大きいほどよいのではなく、どの未来を、どの精度で、どの不確実性とともに予測できるかが重要です (Sutton and Barto 2018; Hafner et al. 2023)。
ワールドモデルは、どのように進化してきたのか
2018年:世界を圧縮し、その中で行動を学ぶ
HaとSchmidhuberのWorld Modelsは、画像を潜在表現に圧縮し、その潜在空間で未来の変化を予測し、その内部モデルの中で方策を学ぶ構成を示しました。論文の重要な点は、エージェントが高次元の画素を毎回そのまま扱うのではなく、行動に必要な世界の表現を圧縮して持てることを明確に示した点です (Ha and Schmidhuber 2018)。
2020年:MuZeroは、ゲームのルールを与えずに計画した
MuZeroは、囲碁、チェス、将棋、Atariで、環境の完全なルールを事前に与えず、計画に必要な表現、状態遷移、報酬、価値を学習しました。重要なのは、現実を画素レベルで完全再現することではなく、意思決定に必要な未来を学ぶという考え方です (Schrittwieser et al. 2020)。
2023年以降:潜在空間の中で練習する
Dreamer系の研究では、エージェントは現実の経験からワールドモデルを学び、その潜在空間で想像上の軌跡を生成して方策を改善します。DreamerV3は、同一の基本設定で多様な領域を扱う方向を示し、ワールドモデルが特定タスクだけの専用シミュレータから、より汎用的な学習基盤へ向かう流れを強めました (Hafner et al. 2023)。
2025年から2026年:動画、物理、長期計画、自己更新へ
2025年のV-JEPA 2は、大規模な動画と画像から、将来の意味のある表現を自己教師あり学習し、その表現を物理世界の理解と計画へ接続しました。研究では、100万時間を超えるインターネット動画・画像でaction-freeな表現を学習した後、比較的少量のロボット動画でaction-conditionedなモデルへ適応し、画像目標に基づくロボット計画を示しています。重要なのは、画素を逐一生成するのではなく、計画に必要な潜在表現を予測する点です (Assran et al. 2025)。
同じく2025年のDreamer 4は、ワールドモデルを「小さな補助部品」ではなく、エージェントが内部で訓練される大規模な学習環境へ押し広げました。著者らは、Minecraftにおいて、オフラインデータから学習したワールドモデルの内部で方策を訓練し、現実環境との追加インタラクションなしに長い行動系列を必要とする課題へ取り組みました。これは2025年9月公開のpreprintであり、査読済みの臨床的・工学的標準ではありませんが、現実で試す前に、学習そのものを想像世界で行う方向を象徴しています (Hafner et al. 2025)。
2026年のLeWorldModelは、JEPA型の潜在予測モデルを、生の画素からend-to-endで安定して学習する方向を提案しました。著者らは、複雑な多項損失や事前学習済みエンコーダへの依存を減らし、次の埋め込み予測と潜在表現の正則化を中心にした構成を示しています。さらに、潜在空間が物理量に関する構造を保持し、物理的に不自然な出来事を検出できるかも検討しています。これも2026年3月公開のpreprintであり、最新研究として位置づける必要があります (Maes et al. 2026)。
2026年には、ワールドモデルを固定したまま使うのではなく、実行時の予測誤差から自己修正する研究も増えています。WorldEvolverは、実際の行動遷移をエピソード記憶として保持し、予測と観測のずれから持続的な規則を抽出し、信頼度の低い予測を計画へ入れないSelective Foresightを提案しました。COMAPは、言語エージェントの方策とテキスト型ワールドモデルを閉ループで共進化させる方向を提案しています。いずれも2026年のpreprintであり、確立した標準というより、予測するモデルから、誤差で自分を更新するモデルへという研究潮流を示しています (Zhang et al. 2026; Liu et al. 2026b)。
ロボット分野では、2026年の包括的な調査が、ワールドモデルの役割を、方策学習、計画、シミュレーション、評価、データ生成へ整理しています。動画生成技術の進歩により、研究の焦点は「次の画像を当てる」ことから、「行動で制御できるか」「物体相互作用を保てるか」「方策学習に役立つか」へ移っています (Hou et al. 2026)。
2026年7月時点の最新動向を一言でまとめるなら、研究の中心はきれいな未来を生成することから、計画に使える表現、長期整合性、行動条件付き制御、推論効率、予測誤差からの自己修正へ広がっています (Assran et al. 2025; Hafner et al. 2025; Maes et al. 2026; Zhang et al. 2026)。
2026年時点の研究地図
2026年のワールドモデル研究は、一つの勝者へ収束しているわけではありません。むしろ、何を世界として持ち、何を予測し、どこで計画するかによって複数の系統が並行しています (Hou et al. 2026)。
| 系統 | 代表例 | 中心課題 |
|---|---|---|
| 潜在ダイナミクス型 | World Models、Dreamer | 圧縮された状態空間で長期rolloutと方策学習を行う |
| 価値・計画特化型 | MuZero | 観測再構成より計画に必要な量を学ぶ |
| JEPA型 | V-JEPA 2、LeWorldModel | 画素生成を避け、意味のある潜在未来を予測する |
| 生成型物理世界モデル | 動画・ロボット世界モデル | 行動条件付きで物理的に整合した未来を生成する |
| 言語エージェント型 | WorldEvolver、COMAP | 行動結果を言語的に予測し、実行誤差から更新する |
| ドメイン特化型 | Medical World Models、Surgical World Models | 専門領域の状態、介入、制約を組み込む |
これらは互いに排他的ではありません。将来の自律システムは、視覚的な物理予測、言語的な計画、長期記憶、自己モデル、専門領域モデルを組み合わせる可能性があります。重要なのは、巨大な一枚岩モデルを作ることより、各モデルがどの状態空間を担当し、どこで不確実性を受け渡すかです (Hou et al. 2026; Liu et al. 2026)。
最新研究を読むときの三つの注意
第一に、2025年から2026年の代表例にはpreprintが多く含まれます。新規性は高い一方、査読、追試、長期運用評価が完了していない研究もあります。第二に、ベンチマーク上の予測精度と、現実の安全な意思決定性能を分けて読む必要があります。第三に、「world model」という名称が付いていても、実際には動画生成、時系列予測、シミュレータ、エージェント記憶など、実装範囲が大きく異なります (Hou et al. 2026; Liu et al. 2026)。
論文を読むときは、モデル名より、次の六問を確認すると本質を見抜きやすくなります。
- 何を状態として表現しているか。
- 何を観測として入力しているか。
- 何がactionか。
- 何手先までrolloutできるか。
- その未来をplanningへ使っているか。
- 現実との予測誤差で更新できるか。
ワールドモデルは、何をもって「良い」と評価するのか
ワールドモデルの評価は、画像の見た目だけでは不十分です。最終的な目的が意思決定なら、少なくとも五つの軸を分けて見る必要があります (Luo et al. 2022; Hou et al. 2026)。
| 評価軸 | 問い | 典型的な失敗 |
|---|---|---|
| 一歩先予測 | 次の状態を正しく予測できるか | 局所的な動きや変化を外す |
| 長期整合性 | rolloutを続けても状態が破綻しないか | 誤差が累積し、あり得ない世界になる |
| 行動感度 | 異なる行動で未来が適切に分岐するか | 何をしても同じ未来を出す |
| 不確実性 | 分からない未来を分からないと表現できるか | 分布外でも過剰に自信を持つ |
| 意思決定価値 | そのモデルを使うと実際の行動が良くなるか | 予測指標は良いのに方策性能が悪い |
特に重要なのが、予測精度と意思決定性能は同じではないという点です。計画に関係のない細部を正確に生成しても、危険な分岐や報酬に関係する状態を外せば役に立ちません。反対に、MuZeroのように観測を完全再構成しなくても、計画に必要な量を正しく学べば高い意思決定性能につながる場合があります (Schrittwieser et al. 2020)。
医療ではさらに、治療条件付きの反事実妥当性、校正、サブグループ間の性能、時間的なデータ分布変化、安全な棄権が必要です。もっともらしい患者軌跡を生成することと、臨床介入の因果効果を正しく比較することは別問題です (Liu et al. 2026; Mu et al. 2026)。
未来を「描く」モデルと、未来の「意味」を予測するモデル
現在のワールドモデルには、大きく二つの方向があります。一つは、未来の画像や動画を生成する方向です。もう一つは、画素を再現せず、計画に必要な潜在表現だけを予測する方向です (Assran et al. 2025; Maes et al. 2026)。
| 方向 | 何を予測するか | 強み | 注意点 |
|---|---|---|---|
| 生成型 | 未来の画像、動画、観測 | 人が結果を確認しやすい | 意思決定に不要な細部まで計算する可能性 |
| 潜在予測型 | 意味のある内部表現 | 計画に必要な情報へ集中しやすい | 何を捨てたかが分かりにくい |
たとえば、ボールが床を転がる場面を考えます。未来動画を作るモデルは、床の模様や影まで生成するかもしれません。潜在予測型モデルは、「速度」「方向」「障害物との距離」のような、行動に必要な構造を内部表現として持てば十分かもしれません。ただし、何が重要かは目的によって変わります。医療画像では、見た目には小さな変化が臨床的に重要なこともあります。圧縮は有効ですが、捨ててよい情報を誤ると危険です。
ワールドモデルから「自己モデル」へ
ここからが、この回の後半です。外の世界を予測するだけでは、自律的に安全に行動するには足りません。AIは、自分自身についてもある程度の内部モデルを持つ必要があります。
外界の状態を \(z_t\)、自己の状態を \(m_t\) とすると、より一般的には次のように書けます。
\[ z_{t+1} = f(z_t, m_t, a_t) \]
同じ行動でも、自分の能力や状態によって結果は変わります。ロボットの電池が少ない、関節が故障している、センサーの精度が落ちている、使える道具が違う。こうした自己状態 \(m_t\) をモデルに含めないと、未来予測はずれます。
Bongardらは2006年、ロボットが自分の形態を継続的にモデル化し、損傷後に自己モデルを更新して行動を回復する研究を報告しました。これは哲学的な意味での「自我」を示したものではありませんが、自分の身体や能力について内部モデルを持ち、現実とのずれからそれを修正するという工学的な自己モデルの代表例です (Bongard et al. 2006)。
自己認識を、一段ずつ分けて考える
「自己認識」という言葉は強い意味を持つため、ここは慎重に分ける必要があります。少なくとも、次の四段階は別の概念です。
| 段階 | AIが持つもの | 例 |
|---|---|---|
| 1.世界モデル | 外界がどう変わるかの内部モデル | 右へ曲がると障害物に近づく |
| 2.自己モデル | 自分の身体、能力、資源、記憶のモデル | 今のバッテリーでは目的地まで届かない |
| 3.メタ認知的監視 | 自分の不確実性や知識限界の推定 | この予測には自信がないので人に確認する |
| 4.主観的自己意識 | 主観的経験や意識の問題 | 現在も科学的に未解決 |
工学的には、1から3までを実装することは可能で、すでに研究されています。しかし、そこから4の主観的意識が自動的に生じるとは言えません。意識研究には複数の競合理論があり、AIに主観的経験があるかを判定する合意済みの方法もありません。意識研究をAIへ適用した学際的検討でも、現行AIが意識を持つと結論づける根拠はない一方、将来のシステムを評価するための指標設計が必要だと論じられています (Seth and Bayne 2022; Butlin et al. 2023)。
ですから、ワールドモデルを「AIが自我を得る技術」と呼ぶのは正確ではありません。より堅実な言い方をするなら、ワールドモデルは、AIが世界、自分の行動、その結果を一つの時間的な構造として扱うための基盤です。そこに自己モデル、不確実性推定、記憶、目標管理が加わると、より高度な自律性につながります。
自己モデルに含まれるもの
工学的な自己モデルは、「私は誰か」という哲学的な文章を生成する機能ではありません。行動結果を正しく予測するために、自分自身を状態変数として持つ仕組みです。実装上は、少なくとも次の四種類に分けると理解しやすくなります (Bongard et al. 2006)。
| 自己モデル | 内容 | 例 |
|---|---|---|
| 身体・機器モデル | 形態、可動域、損傷、残量 | 関節故障、バッテリー低下、センサー異常 |
| 能力モデル | 自分が何を実行できるか | このツールは使えるが、この操作権限はない |
| 知識・不確実性モデル | 何を知り、何を知らないか | 分布外なので予測信頼度が低い |
| 記憶・目標モデル | 何を経験し、何を達成しようとしているか | 過去の失敗を参照し、未完了目標を保持する |
この四つがあると、AIは「世界がどう変わるか」だけでなく、「自分がこの世界に対して何をできるか」を予測できます。Bongardらの研究では、ロボットが自分の形態モデルを更新することで損傷後の行動を再構成しました。これは主観的自己意識の証拠ではなく、予測と制御に役立つ自己モデルの例です (Bongard et al. 2006)。
メタ認知は、予測に対する予測です
メタ認知的監視を工学的に言い換えると、自分の判断や予測の信頼性を推定する仕組みです。たとえば、ワールドモデルが未来を出すだけでなく、「この未来は学習データから遠い」「候補間の差が小さい」「モデル同士が一致しない」と検出し、人へ確認したり行動を保留したりします。これは自律性を上げるためだけでなく、自律性を止めるためにも重要です (Sutton and Barto 2018; Liu et al. 2026)。
医療AIなら、予測不能な患者に対して無理に治療案を順位づけるより、「この条件ではモデルの適用範囲外」と棄権する方が安全です。したがって、自己モデルとメタ認知は、AIが万能になるための機能ではなく、自分の限界を扱うための機能でもあります (Liu et al. 2026)。
自己モデルと意識の間には、大きな論理的な空白がある
自己状態を表現し、不確実性を推定し、自分の行動結果を予測できることから、主観的経験の存在は導けません。意識研究には複数の理論があり、理論間の合意も十分ではありません。SethとBayneは主要な意識理論を整理し、Butlinらはそれらの理論からAI評価の指標候補を検討しましたが、現在のAIに意識があると結論づける根拠は示していません (Seth and Bayne 2022; Butlin et al. 2023)。
ここは言葉を慎重に使うべきところです。ワールドモデルは自己意識ではありません。自己モデルも意識の証明ではありません。 ただし、世界、自分、予測誤差、不確実性を時間的に統合する仕組みは、より高度な自律システムの重要な構成要素です (Bongard et al. 2006; Butlin et al. 2023)。
自律型AIの中で、ワールドモデルはどこに入るのか
このループを見ると、ワールドモデルは自律型AIの一部であって、すべてではないことが分かります。自律的に行動するには、知覚、記憶、目標、計画、行動、自己監視、安全制約が必要です。ワールドモデルは、その中で「未来を試す場所」を提供します (Sutton and Barto 2018; Hafner et al. 2025; Zhang et al. 2026)。
医療分野では、何を「世界」として学ぶのか
医療では、ワールドモデルという言葉を一つの意味で使うと混乱します。外科ロボットが術野を予測するモデルと、慢性腎臓病患者の数年後を予測するモデルは、どちらも状態遷移を扱いますが、モデル化している「世界」が違います。2026年6月に公開された医療ワールドモデルのレビューは、中心課題を患者状態の構成、臨床ダイナミクス、介入意思決定の三つに整理していますが、医療全体の標準タクソノミーはまだ確立していません (Liu et al. 2026)。
そこで、ここでは何が主たる状態 \(s_t\) なのかを一つの分類軸にして、医療分野のワールドモデルを五つに整理します。この五分類は、本講義で理解しやすくするための概念的タクソノミーです。
| 分類 | 主たる状態 | 典型的な行動 | 予測する未来 |
|---|---|---|---|
| Biological World Model | 分子、細胞、組織、臓器の生物学的状態 | 薬剤、遺伝子摂動、刺激 | 生物学的状態の変化 |
| Patient World Model | 一人の患者の病態と臨床状態 | 治療、検査、ケア、経過観察 | 患者の臨床軌跡 |
| Physical Medical World Model | 身体、器具、ロボット、物理空間 | 把持、切開、穿刺、移動 | 組織変形、視野、接触、次の物理状態 |
| Care Delivery World Model | 病床、人員、患者流、医療資源 | 配員、予約、搬送、病床配置 | 待ち時間、混雑、資源負荷 |
| Population Health World Model | 集団、地域、社会システム | 政策、公衆衛生介入、資源配分 | 疾病負担、需要、地域差 |
1.Biological World Model:生物学的世界の変化を学ぶ
Biological World Modelでは、状態は分子、遺伝子発現、細胞状態、組織構造、臓器生理などです。行動は薬剤投与、遺伝子摂動、環境刺激などになります。
\[ p\left(s^{\mathrm{bio}}_{t+1} \mid s^{\mathrm{bio}}_t, a^{\mathrm{perturb}}_t\right) \]
たとえば、「この遺伝子を抑制したら細胞状態はどう変わるか」「この薬剤刺激を加えたら組織の状態はどう遷移するか」という問いです。ここでは、静的な分類より、摂動に対する状態変化が中心になります。医療ワールドモデルのレビューでも、生物学的表現と患者状態表現は、将来のmulti-scaleな統合に関係する基盤として論じられています (Liu et al. 2026)。
ただし、分子や細胞レベルの生成モデルをすべてワールドモデルと呼ぶ必要はありません。行動または摂動に条件づけられた状態遷移を持ち、その結果を将来予測や介入選択へ使うとき、ワールドモデルとしての性格が強くなります (Liu et al. 2026)。
2.Patient World Model:患者の未来を分岐させる
Patient World Modelは、狭義のMedical World Modelの中心です。状態は、一人の患者の病態、臓器機能、症状、行動、治療歴などです。行動は薬物治療、手術、検査、生活習慣介入、患者支援などになります (Liu et al. 2026)。
EHRWorldは2026年2月に公開されたpreprintで、入院から退院までの長期的な患者軌跡を扱うPatient World Modelを提案しました。著者らは、医学知識を持つ一般的なLLMであっても、連続する介入の下で患者状態を一貫して保つことが難しく、長期rolloutで誤差が蓄積する問題を示しています (Mu et al. 2026)。
ChronoMedicalWorldは2026年5月公開のpreprintで、慢性疾患の長期患者軌跡をaction-conditionedな潜在状態で学ぶ構成を提案しました。慢性腎臓病を事例に、構造化介入と患者・ヘルスコーチ間の会話表現を行動として取り込み、年単位のeGFR軌跡を評価しています。これは単一コホートでのpreprint研究であり、一般臨床へ直接適用できる証拠ではありませんが、「医療行為やコミュニケーションをactionとして扱う」方向を具体化しています (Wang et al. 2026)。
患者ワールドモデルで最も難しいのは、反事実です
同じ患者について、現実に観測できるのは実際に選ばれた治療後の未来だけです。治療Aを受けた患者について、「治療Bを受けていた世界」は観測できません。そのため、単純な次時点予測が正確でも、代替治療の未来を正しく比較できるとは限りません (Liu et al. 2026)。
医療では、重症だから強い治療が選ばれるという治療選択の交絡、病態の時間変化、欠測、受診行動、打ち切りなどが重なります。したがって、Patient World Modelの核心は生成能力だけではなく、因果的に妥当な介入条件付き予測と、適切な不確実性です (Liu et al. 2026; Mu et al. 2026)。
3.Physical Medical World Model:医療の物理世界を学ぶ
Physical Medical World Modelでは、主役は患者の長期病態ではありません。術野、器具、組織、形状、接触、力、ロボットの姿勢など、物理世界の状態です。
\[ p\left(s^{\mathrm{physical}}_{t+1} \mid s^{\mathrm{physical}}_t, a^{\mathrm{robot}}_t\right) \]
たとえば、「鉗子をこの方向に動かすと、組織がどう変形し、次の視野がどう変わるか」という問いです。これはロボティクスやPhysical AIのワールドモデルと同じ系統です (Koju et al. 2025; Hou et al. 2026)。
Surgical Vision World Modelは2025年公開のpreprintで、行動ラベルのない手術動画から潜在行動を学び、action-controllableな手術映像生成を目指しました。SurgWorldは2025年末のpreprintで、手術動画から世界モデルと逆ダイナミクスを通じて擬似的な運動情報を作り、ロボット方策学習へ接続する方向を提案しました (Koju et al. 2025; He et al. 2025)。
2026年のSAWは、言語、参照シーン、組織のaffordance mask、器具先端軌跡を条件に、器具と組織の相互作用を制御可能な動画生成へ取り組んでいます。これらはいずれもpreprint段階の研究ですが、手術領域のワールドモデルが、単なる動画生成から、行動制御、データ拡張、ロボット学習へ進んでいる流れを示しています (Rapuri et al. 2026)。
ここで重要なのは、「外科」という診療科が一つの分類なのではないことです。手術中の組織変形はPhysical Medical World Model、術後合併症や再発はPatient World Model、手術室の配員と待機時間はCare Delivery World Modelです。何の状態遷移をモデル化するかで分けると、概念が混ざりません。
4.Care Delivery World Model:医療提供システムの未来を学ぶ
Care Delivery World Modelでは、状態は患者個人ではなく、病床、医療者、検査機器、待ち行列、手術室、搬送ネットワークなどです。行動は配員変更、予約枠変更、病床配置、搬送先ルールなどになります。
\[ p\left(s^{\mathrm{care}}_{t+1} \mid s^{\mathrm{care}}_t, a^{\mathrm{operation}}_t\right) \]
この領域では、現時点で「world model」という名称より、離散事象シミュレーション、システムダイナミクス、オペレーションズ・リサーチ、デジタルツインなどの語が多く使われています。したがって、この分類は既存研究分野を置き換える名称ではなく、「状態、行動、遷移、計画」という共通構造で見直すための整理です。
たとえば、「夜間の看護配置を変えたら救急受入能力はどう変わるか」「手術枠を変えたら待機時間と病床占有はどう変わるか」という問いは、患者一人の状態ではなく、医療提供システム全体の状態遷移を扱います。将来、リアルタイムデータと学習モデルが結びつけば、病院や地域医療ネットワークの適応的なワールドモデルへ発展する可能性があります。
5.Population Health World Model:集団と政策の未来を学ぶ
Population Health World Modelでは、状態は人口集団、地域、社会経済状況、疾病負担、移動、医療需要などです。行動は政策、公衆衛生介入、資源配分です。
\[ p\left(s^{\mathrm{population}}_{t+1} \mid s^{\mathrm{population}}_t, a^{\mathrm{policy}}_t\right) \]
2026年のPolicy4OODは、米国のオピオイド過量死問題を対象に、政策知識、州間の空間的依存、社会経済時系列を統合し、政策条件付きの将来予測、反事実分析、Monte Carlo Tree Searchによる介入探索を一つのworld-model frameworkとして提案しました。これもpreprintであり政策実装の有効性を証明したものではありませんが、公衆衛生政策を「状態、行動、未来」の枠組みで扱う例です (Ma et al. 2026)。
Digital Twinは第六分類ではない
Digital Twinは「何をモデル化するか」の分類ではなく、特定の現実対象とどの程度対応し、更新されるかという属性です。したがって、Biological Digital Twin、Patient Digital Twin、Surgical Digital Twin、Hospital Digital Twin、Population Digital Twinはいずれも考えられます。
同様に、foundation model、generative model、reinforcement learning、causal inference、JEPA、diffusionは、この五分類と同じ階層ではありません。それらはモデルをどう作るか、どう学習するか、どう使うかという技術軸です。
将来は五つをつなぐMulti-scale Medical World Modelへ
最終的に重要なのは、第六分類を増やすことではなく、異なる世界を接続することです。薬剤による分子変化が細胞と臓器へ伝わり、患者の症状と検査値へ現れ、治療選択と医療資源利用へつながり、集団レベルの疾病負担へ影響する。この連鎖は、現在のAI研究では多くの場合、別々のモデルとして扱われています (Liu et al. 2026)。
将来のMulti-scale Medical World Modelは、これらを一つの巨大モデルに押し込むというより、異なる時間尺度と状態空間を持つモデルを、整合性と不確実性を保ちながら連携させる方向になる可能性があります。分子ではミリ秒から時間、慢性疾患では月から年、病院運用では分から日、政策では年単位と、時間尺度が大きく違うからです (Liu et al. 2026)。
2026年7月時点では、このような汎用的かつ臨床的に検証されたMulti-scale Medical World Modelは存在しません。現在の研究は、患者軌跡、慢性疾患、手術物理、公衆衛生政策など、部分的な能力を別々に実装している段階です (Mu et al. 2026; Wang et al. 2026; Rapuri et al. 2026; Ma et al. 2026)。
ワールドモデルの五つの弱点
1.長く想像するほど、誤差が積み上がる
一歩先の予測誤差が小さくても、それを何十回も繰り返すと未来はずれていきます。長期rolloutでは、状態推定誤差と遷移誤差が連鎖します。したがって、長期計画では一度決めた未来を信じ続けず、新しい観測のたびに計画を更新する必要があります (Sutton and Barto 2018; Mu et al. 2026)。
2.モデルの間違いを、AI自身が利用してしまう
AIは報酬を最大化しようとします。内部モデルに現実には存在しない抜け穴があると、AIはその誤りを利用する計画を見つけることがあります。シミュレーション内では高得点でも、現実では失敗する。このため、現実とのずれを監視し、分布外の状況では行動を控える設計が必要です (Sutton and Barto 2018)。
3.相関は、介入後の未来を保証しない
「治療を受けた人ほど重症だった」というデータから、治療が重症化を起こしたとは言えません。行動が誰に、なぜ選ばれたかを考慮しないモデルは、介入の未来を誤って学びます。この問題は医療、政策、社会システムで特に重要です (Liu et al. 2026)。
4.何を内部状態として残すかが難しい
圧縮しすぎれば重要な情報を失います。細部を残しすぎれば計算が重くなり、計画に不要な変動へ注意を奪われます。潜在表現の設計は、ワールドモデルの性能と安全性を左右します (Assran et al. 2025; Maes et al. 2026)。
5.自律性が上がるほど、停止条件が重要になる
高度なワールドモデルは、より長い計画と自律行動を可能にします。しかし、能力の向上と安全性は同じ意味ではありません。自分の不確実性を推定し、必要な場面で人へ確認し、行動範囲を制約できる仕組みが不可欠です。特に医療では、予測を診断や治療の自動決定へ直結させず、人の監督、適用範囲、不確実性、監視体制を設計する必要があります (Liu et al. 2026)。
ワールドモデルを安全に使うための設計
ワールドモデルは、予測能力が高いほど自動的に安全になるわけではありません。むしろ、モデルが未来をもっともらしく説明できるほど、人間が過信する危険があります。特に医療では、予測、介入提案、実行を一つの閉ループにする前に、役割を分けて検証する必要があります (Liu et al. 2026)。
安全なワールドモデルに必要な六つのゲート
| ゲート | 確認すること |
|---|---|
| 適用範囲 | 学習分布に近い対象か |
| 状態の十分性 | 重要な交絡因子や観測が欠けていないか |
| 不確実性 | 予測の幅とモデル不一致を表現できるか |
| 反事実妥当性 | 介入比較を単なる相関で代用していないか |
| 停止条件 | いつ人へ引き継ぐかが決まっているか |
| 更新監視 | モデル更新で性能や公平性が悪化していないか |
患者ワールドモデルでは、臨床転帰の予測精度だけでなく、校正、分布外検出、サブグループ性能、反事実推定の妥当性、専門家レビュー、前向き評価が必要です。現時点の医療ワールドモデル研究の多くはpreprintまたは研究段階であり、臨床診療を自律的に置き換える根拠はありません (Liu et al. 2026; Mu et al. 2026; Wang et al. 2026)。
自律性を上げるほど、重要になるのは「何ができるか」だけではありません。いつ止まるか、いつ分からないと言うか、誰に引き継ぐかです。この意味で、自己モデルと不確実性推定は、自律性を拡大する機能であると同時に、自律性を制限する機能でもあります。
Pythonで体験する:想像の中で練習してから現実で動くエージェント
ここからは、ワールドモデルの最小構造をPythonで確認します。複雑な深層学習モデルは使いません。5×7の小さな迷路で、エージェントがランダムな経験から「行動すると世界がどう変わるか」を学び、現実には一切触れずに、頭の中の世界モデルだけで行動を練習してから現実の迷路に挑みます。これは、想像の中で方策を学習する現代のワールドモデル研究(Dreamerなど)の考え方の最小例です (Ha and Schmidhuber 2018)。
課題は次のとおりです。エージェントは左端のスタート(S)から右端のゴール(G)を目指します。ただし迷路の中央には、踏み込むと大きなペナルティを受ける危険地帯が縦に並んでいます。まっすぐ進めば最短ですが危険地帯を突っ切ることになり、遠回りすれば安全です。「近道の未来」と「回り道の未来」を頭の中で比べて、どちらが良いかを行動前に判断できるか。これがワールドモデルの本質を体験する課題です。
実行環境はPython 3.11または3.12、Windows、macOS、Linuxを想定します。GPUは不要で、実行時間は数十秒程度です。NumPy 2.2.6、Matplotlib 3.10.3、japanize-matplotlib 1.1.3を固定して使います。NumPyはBSD系ライセンス、MatplotlibはPSF系ライセンス、japanize-matplotlib自体はMITライセンスで公開されています。日本語フォントの利用条件は同梱フォントのライセンスにも従ってください (Python Package Index 2025a; Python Package Index 2025b; Uehara 2020)。
この表示が消えない場合は、HTMLプレビュー側でJavaScriptが無効になっています。
【実行前の準備】以下のコードで日本語のグラフを表示させるには、あらかじめターミナルやコマンドプロンプトで次のコマンドを実行してライブラリをインストールしてください。
python -m pip install numpy==2.2.6 matplotlib==3.10.3 japanize-matplotlib==1.1.3
外部データセットや外部APIは使いません。乱数シードはコード内で固定しているため、同じパッケージ構成では同じ評価結果と同じ図を再現できます。この例では外部データ、外部API、個人情報、医療情報を使いません。固定された人工環境だけを使う教育用シミュレーションです。
# 数値計算を行うNumPyを読み込みます。
import numpy as np
# グラフ描画に使うMatplotlibを読み込みます。
import matplotlib.pyplot as plt
# Matplotlibで日本語を表示しやすくするライブラリを読み込みます。
import japanize_matplotlib
# 日本語表示の設定を有効にします。
japanize_matplotlib.japanize()
# 乱数シードを固定し、毎回同じ条件を再現できるようにします。
SEED = 78
# 現実世界での経験の収集に使う乱数生成器を作ります。
rng = np.random.default_rng(SEED)
# 迷路の縦のマス数を5に設定します。
ROWS = 5
# 迷路の横のマス数を7に設定します。
COLS = 7
# 迷路全体のマスの総数を計算します(5×7=35状態)。
N_STATES = ROWS * COLS
# 開始地点を左端の中央、つまり(行2、列0)に設定します。
START = (2, 0)
# 目標地点を右端の中央、つまり(行2、列6)に設定します。
GOAL = (2, 6)
# 迷路の中央に、通ると大きなペナルティを受ける危険地帯を縦に3マス並べます。
HAZARDS = {(1, 3), (2, 3), (3, 3)}
# 行動を「上、下、左、右」の4種類とし、それぞれ(行の変化、列の変化)で表します。
ACTIONS = [(-1, 0), (1, 0), (0, -1), (0, 1)]
# 結果やグラフを読みやすくするため、行動の日本語名も用意します。
ACTION_NAMES = ["上", "下", "左", "右"]
# 15%の確率で移動に失敗する(その場にとどまる)環境にします。
SLIP_PROB = 0.15
# 遠い未来の報酬を少し割り引く係数を設定します。
GAMMA = 0.95
# 危険地帯に踏み込んだときの追加ペナルティを設定します。
HAZARD_PENALTY = -2.0
# (行、列)のマス表現を、0から34までの通し番号に変換する関数です。
def to_index(cell: tuple) -> int:
# 行番号に横のマス数を掛けて列番号を足すと、一意の通し番号になります。
return cell[0] * COLS + cell[1]
# 通し番号を(行、列)のマス表現に戻す関数です。
def to_cell(index: int) -> tuple:
# 割り算の商が行番号、余りが列番号に対応します。
return (index // COLS, index % COLS)
# 目標地点の通し番号を、あとで何度も使うため先に計算しておきます。
GOAL_IDX = to_index(GOAL)
# 現実環境を1ステップ進める関数を定義します。
def true_step(state_idx: int, action_idx: int, random_generator: np.random.Generator):
# 現在の通し番号を(行、列)に戻します。
row, col = to_cell(state_idx)
# 選んだ行動に対応する移動量を取り出します。
d_row, d_col = ACTIONS[action_idx]
# 指定確率で移動を失敗させ、現実の不確実性を表現します。
if random_generator.random() < SLIP_PROB:
# 失敗した場合は、その場にとどまります。
d_row, d_col = 0, 0
# 迷路の外へ出ないように、次の行番号を0からROWS-1の範囲に制限します。
next_row = int(np.clip(row + d_row, 0, ROWS - 1))
# 同様に、次の列番号を0からCOLS-1の範囲に制限します。
next_col = int(np.clip(col + d_col, 0, COLS - 1))
# 次のマスを通し番号に変換します。
next_idx = to_index((next_row, next_col))
# 1ステップごとに小さな移動コストを与えます。
reward = -0.05
# 危険地帯に到達した場合は追加のペナルティを与えます。
if (next_row, next_col) in HAZARDS:
# 危険地帯の追加コストを差し引きます。
reward += HAZARD_PENALTY
# 目標地点に到達した場合は大きな正の報酬を与えます。
if (next_row, next_col) == GOAL:
# ゴール報酬を追加します。
reward += 5.0
# 目標地点に着いたかどうかを真偽値で記録します。
done = (next_row, next_col) == GOAL
# 次状態、報酬、終了判定を返します。
return next_idx, reward, done
# ここから、ランダムな経験を集めて「世界の内部モデル」を学習します。
# 各「状態、行動、次状態」の観測回数を保存する配列を作ります。
# まだ見ていない遷移の確率が完全に0にならないよう、小さな仮の回数0.1で初期化します。
transition_counts = np.full((N_STATES, len(ACTIONS), N_STATES), 0.1)
# 各マスに「到着したとき」に得た報酬の合計を保存する配列を作ります。
reward_sums = np.zeros(N_STATES)
# 各マスに到着した回数を保存する配列を作ります。
reward_counts = np.zeros(N_STATES)
# ランダム経験の開始状態を設定します。
state = to_index(START)
# 30000回のランダム経験から、世界がどう変化するかを学びます。
for _ in range(30000):
# 上下左右の4行動から、1つをランダムに選びます。
action = int(rng.integers(len(ACTIONS)))
# 現実環境を1ステップ進めます。
next_state, reward, done = true_step(state, action, rng)
# 観測した状態遷移の回数を1増やします。
transition_counts[state, action, next_state] += 1.0
# 到着したマスで得た報酬を合計へ加えます。
reward_sums[next_state] += reward
# そのマスに到着した回数を1増やします。
reward_counts[next_state] += 1.0
# ゴールなら開始地点へ戻し、そうでなければ次状態を引き継ぎます。
state = to_index(START) if done else next_state
# 観測回数を合計で割り、次状態の確率分布(学習した遷移モデル)へ変換します。
transition_prob = transition_counts / transition_counts.sum(axis=2, keepdims=True)
# 各マスの平均報酬(学習した報酬モデル)を計算します。
learned_reward = np.divide(
# 分子には報酬の合計を使います。
reward_sums,
# 分母には到着回数を使います。
reward_counts,
# まだ到着していないマスには既定の移動コストを入れます。
out=np.full(N_STATES, -0.05),
# 到着回数が0より大きいマスだけ通常の割り算を行います。
where=reward_counts > 0,
)
# 学習した内部モデルの中だけで1ステップ進める「想像の一歩」の関数です。
def model_step(state_idx: int, action_idx: int, random_generator: np.random.Generator):
# 学習済み遷移確率から、想像上の次状態をサンプリングします。
next_idx = int(random_generator.choice(N_STATES, p=transition_prob[state_idx, action_idx]))
# 学習済み報酬モデルから、想像上の報酬を取り出します。
reward = learned_reward[next_idx]
# 想像の中で目標地点に着いたかを判定します。
done = next_idx == GOAL_IDX
# 想像上の次状態、報酬、終了判定を返します。
return next_idx, reward, done
# ここから、現実には一切触れず「想像の中だけ」で行動の練習を行います。
# 各「状態、行動」の価値を表すQテーブルを、すべて0で初期化します。
Q = np.zeros((N_STATES, len(ACTIONS)))
# 想像の中の練習に使う専用の乱数生成器を作ります。
imagine_rng = np.random.default_rng(SEED + 500)
# Q値を少しずつ更新するための学習率を設定します。
ALPHA = 0.1
# 練習中に20%の確率でわざとランダムな行動を試し、新しい可能性を探ります。
EPSILON = 0.2
# 想像の中で3000回のエピソードを練習します。
for episode in range(3000):
# 偶数回は開始地点から、奇数回はランダムなマスから想像を始め、全体をまんべんなく練習します。
state = to_index(START) if episode % 2 == 0 else int(imagine_rng.integers(N_STATES))
# 1回の想像エピソードは最大40ステップまでとします。
for _ in range(40):
# 探索のためにランダム行動を選ぶか、現時点で最良の行動を選ぶかを決めます。
if imagine_rng.random() < EPSILON:
# ランダムに行動を選び、まだ知らない未来を探索します。
action = int(imagine_rng.integers(len(ACTIONS)))
else:
# 現在のQテーブルで最も価値が高い行動を選びます。
action = int(Q[state].argmax())
# 現実環境ではなく、学習した内部モデルの中で1ステップ想像します。
next_state, reward, done = model_step(state, action, imagine_rng)
# ゴールに着いた想像なら、その報酬だけを学習の目標値にします。
if done:
# 終端では未来の価値を加えません。
target = reward
else:
# 途中なら、報酬に次状態の最良Q値の割引を加えた値を目標にします。
target = reward + GAMMA * Q[next_state].max()
# 目標値と現在の推定値の差の一部だけQ値に反映し、少しずつ賢くします。
Q[state, action] += ALPHA * (target - Q[state, action])
# 想像の中でゴールしたら、このエピソードを終了します。
if done:
# 内側のステップループを終了します。
break
# 想像上の次状態を引き継ぎます。
state = next_state
# 各状態で最も価値が高い行動を、ワールドモデル方策として保存します。
WORLD_MODEL_POLICY = Q.argmax(axis=1)
# 一つのエピソードを「現実環境」で実行する関数を定義します。
def run_episode(policy: str, random_generator: np.random.Generator, max_steps: int = 40):
# 各エピソードを開始地点から始めます。
state = to_index(START)
# 通ったマスを記録するため、最初の位置をリストに入れます。
trajectory = [to_cell(state)]
# 累積報酬を0にします。
total_reward = 0.0
# 最大ステップ数まで行動を繰り返します。
for _ in range(max_steps):
# ランダム方策を評価する場合の処理です。
if policy == "random":
# 上下左右のどれかをランダムに選びます。
action = int(random_generator.integers(len(ACTIONS)))
# ワールドモデル方策を評価する場合の処理です。
elif policy == "world_model":
# 想像の中の練習で身につけた行動を使います。
action = int(WORLD_MODEL_POLICY[state])
# 想定外の方策名が渡された場合の処理です。
else:
# 入力ミスが分かるように例外を発生させます。
raise ValueError("policy must be random or world_model")
# 選んだ行動を現実環境で実行します。
state, reward, done = true_step(state, action, random_generator)
# 得られた報酬を累積します。
total_reward += reward
# 新しい位置を軌跡へ追加します。
trajectory.append(to_cell(state))
# 目標地点に着いたかを確認します。
if done:
# 成功として、累積報酬と成功判定と軌跡を返します。
return total_reward, True, trajectory
# 最大ステップ数までに着かなければ、失敗として結果を返します。
return total_reward, False, trajectory
# 二つの方策の評価結果を保存する辞書を作ります。
results = {}
# ランダム方策とワールドモデル方策を順番に評価します。
for policy in ["random", "world_model"]:
# 各エピソードの累積報酬を保存するリストを作ります。
returns = []
# 各エピソードの成功判定を保存するリストを作ります。
successes = []
# 100エピソードを実行します。
for episode in range(100):
# エピソードごとに固定規則で乱数シードを変えます。
episode_rng = np.random.default_rng(SEED + 1000 + episode)
# 一つのエピソードを実行します。
total_reward, success, _ = run_episode(policy, episode_rng)
# 累積報酬を保存します。
returns.append(total_reward)
# 成功判定を保存します。
successes.append(success)
# 100エピソードの平均報酬と成功率を辞書にまとめます。
results[policy] = {
# 平均累積報酬を計算します。
"mean_return": float(np.mean(returns)),
# 真偽値の平均を取り、成功率を計算します。
"success_rate": float(np.mean(successes)),
}
# ランダム方策の評価結果を表示します。
print("ランダム方策:", results["random"])
# ワールドモデル方策の評価結果を表示します。
print("ワールドモデル方策:", results["world_model"])
# ここから、「想像の中で二つの未来を比べる」体験を行います。
# 開始地点から一つの未来を想像し、その累積報酬と通り道を返す関数です。
def imagined_rollout(random_generator: np.random.Generator, go_straight: bool):
# 想像上の現在地を開始地点にします。
state = to_index(START)
# 最初の報酬には割引をかけないため1.0から始めます。
discount = 1.0
# この想像で得る累積報酬を0にします。
total = 0.0
# 想像上の通り道を記録するため、最初の位置をリストに入れます。
path = [to_cell(state)]
# 想像は最大14ステップまで先読みします。
for _ in range(14):
# 「まっすぐ進む未来」を想像する場合の処理です。
if go_straight:
# ひたすら右(行動番号3)を選び続けます。
action = 3
# 「練習で身につけた方策の未来」を想像する場合の処理です。
else:
# ワールドモデル方策の行動を選びます。
action = int(WORLD_MODEL_POLICY[state])
# 内部モデルの中で1ステップ想像します。
state, reward, done = model_step(state, action, random_generator)
# 想像上の報酬を割引付きで累積します。
total += discount * reward
# 次の時点の報酬を少し割り引くため、割引率を更新します。
discount *= GAMMA
# 想像上の位置を通り道へ追加します。
path.append(to_cell(state))
# 想像の中で目標地点に着いた場合は、その未来の先読みを終了します。
if done:
# 内側のステップループを終了します。
break
# 一回分の想像の累積報酬と通り道を返します。
return total, path
# 想像の可視化に使う専用の乱数生成器を作ります。
viz_rng = np.random.default_rng(SEED + 777)
# 「まっすぐ進む未来」を300回想像し、累積報酬のリストを作ります。
straight_values = [imagined_rollout(viz_rng, go_straight=True)[0] for _ in range(300)]
# 「迂回する方策の未来」を300回想像し、累積報酬のリストを作ります。
policy_values = [imagined_rollout(viz_rng, go_straight=False)[0] for _ in range(300)]
# まっすぐ進む未来の平均価値を計算します。
straight_mean = float(np.mean(straight_values))
# 迂回する方策の未来の平均価値を計算します。
policy_mean = float(np.mean(policy_values))
# 二つの未来の平均価値を表示します。
print(f"想像上の価値: まっすぐ進む={straight_mean:.2f}, 学習した方策={policy_mean:.2f}")
# 図に描くため、それぞれの未来の通り道を8本ずつ想像し直して保存します。
straight_paths = [imagined_rollout(viz_rng, go_straight=True)[1] for _ in range(8)]
# 迂回する方策の通り道も8本保存します。
policy_paths = [imagined_rollout(viz_rng, go_straight=False)[1] for _ in range(8)]
# 現実の軌跡例を再現するための固定乱数生成器を作ります。
example_rng = np.random.default_rng(SEED + 9999)
# ワールドモデル方策を現実で1回実行し、軌跡を保存します。
_, _, wm_trajectory = run_episode("world_model", example_rng)
# ランダム方策も同じ条件で1回実行し、軌跡を保存します。
_, _, random_trajectory = run_episode("random", np.random.default_rng(SEED + 9999))
# ワールドモデル方策の現実での移動軌跡を表示します。
print("ワールドモデル方策の現実の軌跡:", wm_trajectory)
# ここから可視化を行います。まず全図で共通に使う迷路の下絵を描く関数を作ります。
# 迷路のマス目、危険地帯、開始地点、目標地点を1枚の下絵として描く関数です。
def draw_maze(ax, title: str):
# すべてのマスを白で塗った画像データを作ります(行、列、RGBの3色)。
board = np.ones((ROWS, COLS, 3))
# 危険地帯のマスを順番に取り出します。
for (r, c) in HAZARDS:
# 危険地帯を薄い赤で塗ります。
board[r, c] = (1.0, 0.75, 0.75)
# 開始地点を薄い青で塗ります。
board[START] = (0.75, 0.85, 1.0)
# 目標地点を薄い緑で塗ります。
board[GOAL] = (0.75, 1.0, 0.75)
# 塗り分けた盤面を画像として表示します。
ax.imshow(board)
# マスの境界線を引くため、縦線の位置を0.5刻みで設定します。
ax.set_xticks(np.arange(-0.5, COLS, 1), minor=True)
# 横線の位置も0.5刻みで設定します。
ax.set_yticks(np.arange(-0.5, ROWS, 1), minor=True)
# 設定した位置に灰色の格子線を描きます。
ax.grid(which="minor", color="gray", linewidth=0.8)
# 目盛りの数字は不要なので消します。
ax.set_xticks([])
# 縦の目盛りの数字も消します。
ax.set_yticks([])
# 開始地点に「S」の文字を重ねます。
ax.text(START[1], START[0], "S", ha="center", va="center", fontsize=16, fontweight="bold")
# 目標地点に「G」の文字を重ねます。
ax.text(GOAL[1], GOAL[0], "G", ha="center", va="center", fontsize=16, fontweight="bold")
# 危険地帯の中央のマスに「危険」の文字を重ねます。
ax.text(3, 2, "危険", ha="center", va="center", fontsize=10, color="darkred")
# 図のタイトルを設定します。
ax.set_title(title)
# (行、列)の通り道リストを、少しだけ位置をずらして線として描く関数です。
def draw_path(ax, path, color, random_generator, label=None):
# 通り道の列番号をx座標として取り出します。
xs = np.array([cell[1] for cell in path], dtype=float)
# 通り道の行番号をy座標として取り出します。
ys = np.array([cell[0] for cell in path], dtype=float)
# 複数の線が重なっても見えるように、位置を小さくランダムにずらします。
xs += random_generator.uniform(-0.15, 0.15, size=len(xs))
# y座標にも同じ大きさのずれを加えます。
ys += random_generator.uniform(-0.15, 0.15, size=len(ys))
# ずらした座標を半透明の線で結び、通り道として描きます。
ax.plot(xs, ys, color=color, alpha=0.5, linewidth=1.5, label=label)
# 通り道の終点に丸印を付けます。
ax.plot(xs[-1], ys[-1], marker="o", color=color, alpha=0.7)
# 【図1】課題となる迷路の全体像を1枚の図として描きます。
fig, ax = plt.subplots(figsize=(7, 5))
# 迷路の下絵を描きます。
draw_maze(ax, "図1:課題の迷路(Sから危険地帯を避けてGを目指す)")
# 図の余白を自動調整します。
plt.tight_layout()
# 図を表示します。
plt.show()
# 【図2】AIが経験から学んだ「頭の中の危険地図」(報酬モデル)を描きます。
fig, ax = plt.subplots(figsize=(8, 5))
# 学習した各マスの平均報酬を、迷路と同じ5×7の形に並べ替えます。
reward_map = learned_reward.reshape(ROWS, COLS)
# 平均報酬をヒートマップとして表示します(明るいほど良い場所)。
image = ax.imshow(reward_map, cmap="RdYlGn")
# 色の意味が分かるように、カラーバーを右側に付けます。
plt.colorbar(image, ax=ax, label="学習した平均報酬")
# すべての行について繰り返します。
for r in range(ROWS):
# すべての列について繰り返します。
for c in range(COLS):
# 各マスに学習した平均報酬の数値を小さく書き込みます。
ax.text(c, r, f"{reward_map[r, c]:.2f}", ha="center", va="center", fontsize=8)
# 目盛りの数字は不要なので消します。
ax.set_xticks([])
# 縦の目盛りの数字も消します。
ax.set_yticks([])
# 図のタイトルを設定します。
ax.set_title("図2:AIが経験から学んだ報酬モデル(頭の中の危険地図)")
# 図の余白を自動調整します。
plt.tight_layout()
# 図を表示します。
plt.show()
# 【図3】想像の中の練習で身についた、各マスの価値と進むべき方向を描きます。
fig, ax = plt.subplots(figsize=(8, 5))
# 各マスの価値として、そのマスで取れる最良行動のQ値を使います。
value_map = Q.max(axis=1).reshape(ROWS, COLS)
# 価値をヒートマップとして表示します(明るいほどゴールに近い良い場所)。
image = ax.imshow(value_map, cmap="viridis")
# 色の意味が分かるように、カラーバーを右側に付けます。
plt.colorbar(image, ax=ax, label="想像の練習で学んだ価値")
# すべての行について繰り返します。
for r in range(ROWS):
# すべての列について繰り返します。
for c in range(COLS):
# 目標地点には矢印の代わりに「G」を書きます。
if (r, c) == GOAL:
# 目標地点の文字を白で書き込みます。
ax.text(c, r, "G", ha="center", va="center", fontsize=14, color="white", fontweight="bold")
# このマスの処理を終えて次へ進みます。
continue
# このマスでの最良行動の移動量を取り出します。
d_row, d_col = ACTIONS[int(WORLD_MODEL_POLICY[to_index((r, c))])]
# 最良行動の方向へ短い白い矢印を描きます。
ax.annotate("", xy=(c + d_col * 0.35, r + d_row * 0.35), xytext=(c, r),
arrowprops=dict(arrowstyle="->", color="white", linewidth=1.8))
# 目盛りの数字は不要なので消します。
ax.set_xticks([])
# 縦の目盛りの数字も消します。
ax.set_yticks([])
# 図のタイトルを設定します。
ax.set_title("図3:想像の中の練習で学んだ価値マップと方策(矢印は各マスでの最良行動)")
# 図の余白を自動調整します。
plt.tight_layout()
# 図を表示します。
plt.show()
# 【図4】内部モデルの中で想像した「二つの未来」を並べて描きます。
fig, ax = plt.subplots(figsize=(8, 5))
# 迷路の下絵を描きます。
draw_maze(ax, f"図4:想像の中で比べた二つの未来(直進={straight_mean:.2f}、方策={policy_mean:.2f})")
# 通り道のずらしに使う専用の乱数生成器を作ります。
jitter_rng = np.random.default_rng(SEED)
# まっすぐ進む未来の通り道を順番に取り出します。
for i, path in enumerate(straight_paths):
# 最初の1本だけ凡例用のラベルを付け、赤い線で描きます。
draw_path(ax, path, "crimson", jitter_rng, label="直進する未来" if i == 0 else None)
# 迂回する方策の通り道を順番に取り出します。
for i, path in enumerate(policy_paths):
# 最初の1本だけ凡例用のラベルを付け、青い線で描きます。
draw_path(ax, path, "royalblue", jitter_rng, label="学習した方策の未来" if i == 0 else None)
# 凡例を図の中に表示します。
ax.legend(loc="lower right")
# 図の余白を自動調整します。
plt.tight_layout()
# 図を表示します。
plt.show()
# 【図5】現実環境で実際に動いた軌跡を、二つの方策で比べて描きます。
fig, ax = plt.subplots(figsize=(8, 5))
# 迷路の下絵を描きます。
draw_maze(ax, "図5:現実の環境で実際に動いた軌跡の比較")
# 軌跡のずらしに使う専用の乱数生成器を作ります。
jitter_rng = np.random.default_rng(SEED + 1)
# ランダム方策の現実の軌跡を灰色の線で描きます。
draw_path(ax, random_trajectory, "gray", jitter_rng, label="ランダム方策(40歩で力尽きる)")
# ワールドモデル方策の現実の軌跡を青い線で描きます。
draw_path(ax, wm_trajectory, "royalblue", jitter_rng, label="ワールドモデル方策")
# 凡例を図の中に表示します。
ax.legend(loc="lower right")
# 図の余白を自動調整します。
plt.tight_layout()
# 図を表示します。
plt.show()
# 【図6】100エピソードの成績を、成功率と平均報酬の2枚組で描きます。
fig, axes = plt.subplots(1, 2, figsize=(10, 4))
# 棒グラフの横軸ラベルを用意します。
labels = ["ランダム", "ワールドモデル"]
# 二つの方策の成功率を取り出します。
success_rates = [results["random"]["success_rate"], results["world_model"]["success_rate"]]
# 二つの方策の平均累積報酬を取り出します。
mean_returns = [results["random"]["mean_return"], results["world_model"]["mean_return"]]
# 左の図に成功率の棒グラフを描きます。
axes[0].bar(labels, success_rates, color=["gray", "royalblue"])
# 左の図の縦軸を0から1.05までに固定します。
axes[0].set_ylim(0, 1.05)
# 左の図の縦軸の名前を付けます。
axes[0].set_ylabel("ゴール到達率")
# 左の図のタイトルを付けます。
axes[0].set_title("成功率(100エピソード)")
# 右の図に平均累積報酬の棒グラフを描きます。
axes[1].bar(labels, mean_returns, color=["gray", "royalblue"])
# 右の図の縦軸の名前を付けます。
axes[1].set_ylabel("平均累積報酬")
# 右の図のタイトルを付けます。
axes[1].set_title("平均報酬(100エピソード)")
# 報酬が0の位置に基準線を引きます。
axes[1].axhline(0, color="black", linewidth=0.8)
# 図全体のタイトルを付けます。
fig.suptitle("図6:内部モデルの中だけで練習した方策の、現実での成績")
# 図の余白を自動調整します。
plt.tight_layout()
# 図を表示します。
plt.show()
実行すると表示される6枚の図
このコードを実行すると、ワールドモデルの働きを段階的に「目で見る」ことができる6枚の図が順番に表示されます。
図1(課題の迷路)は、エージェントが解くべき課題そのものです。左端のSから右端のGへ向かいますが、中央に赤い危険地帯の壁が立ちはだかっています。壁には上下に隙間があるため、遠回りすれば安全に通過できます。

図2(学んだ報酬モデル)は、30000回のランダム経験からAIが作り上げた「頭の中の危険地図」です。誰も危険地帯の場所を教えていないのに、経験だけから危険地帯(約−2.05)とゴール(約+4.95)を正しく色分けした地図がAIの内部にできあがっていることが分かります。これがワールドモデルの一部です。

図3(価値マップと方策の矢印)は、想像の中の練習の成果です。ゴールに近いほど価値が高く(明るく)なり、各マスの矢印は危険地帯を避けて上下から迂回する流れを描きます。現実の環境には一歩も触れずに、この地図が頭の中だけで完成した点が重要です。

図4(想像の中で比べた二つの未来)が、この実習の核心です。赤い線は「ひたすら右へ直進する未来」を内部モデルで想像した通り道で、危険地帯を突っ切っています。青い線は「学習した方策の未来」で、上へ迂回しています。線が1本ずつ微妙に違うのは、内部モデルが確率的で、想像のたびに移動の失敗も再現されるためです。固定シードでの想像上の平均価値は、直進が約0.73、迂回する方策が約2.12となり、行動する前に、頭の中の比較だけで「近道より回り道が得だ」と分かることを示しています。

図5(現実の軌跡比較)では、ランダム方策が左側でさまよい続けるのに対し、ワールドモデル方策は想像で描いた通りの迂回ルートを現実でも実行し、ゴールに到達します。

図6(100エピソードの成績)は定量的なまとめです。

コードの中で、何が「ワールドモデル」なのか
中心は transition_prob と learned_reward の二つです。前者は、現実環境で観測した回数から学習した遷移確率表で、現在位置と行動に対して次にどのマスへ移る可能性があるかを確率分布として持ちます。後者は、各マスに到着したときに何が起きるかを学習した報酬の地図です(図2)。
そして model_step() が、この二つを組み合わせた「想像の一歩」です。エージェントは現実に触れる代わりに、model_step() を何万回も呼び出して頭の中で行動の練習を繰り返し(想像の中のQ学習)、方策を完成させてから現実に出ます。これは、世界モデルの内部で方策を学習するDreamer系の研究の考え方を、表形式で再現した最小例です。さらに imagined_rollout() では、二つの行動計画がもたらす未来を内部モデルで先読みして比較しており(図4)、「行動前に複数の未来を試す」というワールドモデルのもう一つの使い方も体験できます。
| 理論上の要素 | コード中の対応 | 図 |
|---|---|---|
| 現実環境 | true_step() | 図1 |
| 遷移モデル | transition_prob | ― |
| 報酬モデル | learned_reward | 図2 |
| 想像の一歩 | model_step() | ― |
| 想像の中での方策学習 | Qテーブルの更新ループ | 図3 |
| 想像rollout(未来の比較) | imagined_rollout() | 図4 |
| 現実での評価 | run_episode() | 図5・図6 |
特に大切なのは、true_step() と model_step() が別物であることです。前者は「現実」、後者は「AIが経験から学んだ世界の内部モデル」です。AIは現実そのものを直接先読みしているのではありません。内部モデルを使って未来を近似しています。図4の想像上の通り道が現実の軌跡(図5)とよく似ているのは、内部モデルが現実をうまく写し取れているからであり、写し取りに失敗すれば想像と現実はずれます。これがモデル誤差の問題です。
固定シードと上記バージョンで実行したこの教育用環境では、100エピソードの評価で、ランダム方策の成功率は0.12、ワールドモデル方策の成功率は1.00となります。平均累積報酬は、それぞれ約−6.41と約+4.42です。これは一般的なアルゴリズム性能を示すベンチマークではなく、この固定された小さな人工環境で再現される例示結果です。
このデモの限界
教育用の小さな環境なので、現実のワールドモデルとは大きく違います。状態は完全観測で35マスしかなく、行動は上下左右の4種類、目的関数も単純です。実世界では、状態は部分観測で、画像や言語や時系列を含み、行動空間も巨大です。さらに、モデル誤差、分布外入力、複数の目的、倫理的制約を扱う必要があります (Kaelbling et al. 1998; Luo et al. 2022)。
このコードの目的は性能競争ではありません。経験から世界の変化を学ぶ(図2)、内部モデルの中だけで行動を練習する(図3)、想像の中で複数の未来を比較する(図4)、そして現実で行動する(図5)という流れを、一枚ずつ図で確認しながら自分の手で体験することです。
このコードを深層学習へ拡張すると何が変わるか
今回の例では、状態は35マスの通し番号で、遷移確率と報酬を表で保存できました。実際のロボットや医療では、状態は画像、波形、文章、検査値、時系列など高次元です。その場合は、次の三つをニューラルネットワークで学びます。
1.観測を潜在状態へ圧縮するエンコーダ
2.行動条件付きで未来状態を予測するダイナミクスモデル
3.想像した未来から行動を選ぶプランナーまたは方策
今回の transition_prob が2のダイナミクスモデルに、想像の中のQ学習が3の「想像の中で方策を学ぶ」方式に対応します。現代のワールドモデル研究では、これらを別々に学ぶ方法と、end-to-endで同時に学ぶ方法の両方が研究されています (Ha and Schmidhuber 2018; Assran et al. 2025; Maes et al. 2026)。
医療研究へ持ち込むときの翻訳
ワールドモデルを自分の研究へ応用するときは、最初に「モデル名」ではなく、四つの変数を定義すると整理しやすくなります。
| 問い | 記号 | 医療の例 |
|---|---|---|
| 何が現在の状態か | \(s_t\) または \(z_t\) | 病態、臓器機能、重症度、組織形状 |
| 何を観測できるか | \(o_t\) | 検査値、画像、バイタル、診療記録 |
| 何が行動か | \(a_t\) | 投薬、検査、手術操作、配員 |
| 何を良い未来とするか | \(r_t\) または目的関数 | 転帰、合併症、QOL、待ち時間、安全性 |
たとえば慢性腎臓病なら、観測はeGFR、蛋白尿、血圧、処方歴などです。しかし、それらを並べただけでは「患者状態」そのものではありません。どの潜在状態を持つべきか、治療選択の交絡をどう扱うか、将来の不確実性をどう表すかが研究課題になります。患者ワールドモデルは、単なる時系列予測より一段広い問題設定です (Liu et al. 2026; Mu et al. 2026)。
外科ロボットなら、状態は患者の長期病態ではなく、術野の幾何、器具位置、接触、組織変形、力学です。ここでは因果推論だけでなく、物理モデル、制御、コンピュータビジョン、sim-to-realの問題が中心になります。医療でワールドモデルを考えるときは、最初に「何の世界をモデル化しているのか」を明確にすることが重要です (Liu et al. 2026)。
理解を確認する五つの問い
- 次時点を予測するモデルは、すべてワールドモデルと言えるでしょうか。行動条件付き遷移とplanningの観点から説明してみてください。
- なぜ観測 \(o_t\) と状態 \(s_t\) を分ける必要があるのでしょうか。医療の例を一つ挙げてください。
- MuZeroが画素を完全再現しなくても計画できることは、ワールドモデル設計について何を示しているでしょうか。
- 自己モデルと主観的自己意識は、どこが違うでしょうか。
- 外科ロボット、術後合併症予測、手術室の病床運用は、それぞれ五分類のどこに入るでしょうか。
考えるためのヒント
ワールドモデルを見分けるときは、モデル名より先に、状態は何か、観測は何か、行動は何か、何を未来として予測するか、その予測を行動選択に使うかを確認してください。この五つが見えると、動画生成、ロボティクス、医療AI、デジタルツイン、AIエージェントを同じ言葉で混同しにくくなります。
この先にあるもの
ワールドモデル研究の流れを一文でまとめるなら、AIが答えを出すだけの存在から、行動前に未来を比較する存在へ移るための技術です。
言語モデルは主として、文脈に続く次のtokenを予測します。ワールドモデルは、状態と行動に条件づけて次の状態を予測します。両者は対立するものではありません。言語モデルが知識、推論、計画のインターフェースとなり、ワールドモデルが環境の動的な変化を担う構成も研究されています。2026年には、LLMエージェント自身が予測誤差から環境モデルを更新する方向も提案されています (Zhang et al. 2026)。
そして、自己モデルが加わると、AIは「世界はどう変わるか」だけでなく、「自分には何ができるか」「この予測にどれほど自信があるか」を扱えるようになります。ここから自律性は一段上がります。ただし、それは意識の証明ではありません。工学的な自己モデル、メタ認知、主観的意識は分けて考える必要があります (Bongard et al. 2006; Seth and Bayne 2022; Butlin et al. 2023)。
この回で最も覚えておきたい式は、複雑なものではありません。
\[ \text{現在の状態} + \text{行動} \longrightarrow \text{未来の状態} \]
AIがこの関係を学び、複数の未来を内部で試し、最初の一手を選び、現実の結果から状態とモデルを直し続ける。その循環が、ワールドモデルの核心です。未来を当てることだけが目的ではありません。未来予測を、より良い次の行動へ変換することが目的です。
ワールドモデルを理解するための理論地図:確率論・強化学習・制御・因果推論はどうつながるのか
ワールドモデルを深く理解しようとすると、強化学習、マルコフ決定過程、POMDP、状態空間モデル、ベイズ推論、動的計画法、表現学習、生成モデル、因果推論と、さまざまな理論が次々に現れます。一見すると別々の分野に見えますが、扱っている問いはかなり一貫しています。「今の世界はどのような状態か」「次にどう変わるか」「どの未来が望ましいか」「そのために何をするか」です (Kalman 1960; Kaelbling et al. 1998; Sutton and Barto 2018)。
この関係を最初に一つの流れとして置いておくと、ワールドモデルの全体像を見失いにくくなります。
\[ o_{\leq t},a_{\lt t} \;\longrightarrow\; z_t \;\longrightarrow\; p(z_{t+1}\mid z_t,a_t) \;\longrightarrow\; R,\;V \;\longrightarrow\; \pi(a_t\mid z_t) \]
左側は認識です。観測の履歴から、現在の世界を表す内部状態 \(z_t\) を推定します。中央は予測で、ある行動 \(a_t\) を取ったときに状態がどう変わるかをモデル化します。右側には評価と意思決定があり、予測された未来の価値を比較して行動を選びます。ワールドモデルは、この一連の流れの中央に位置する「世界の状態と変化の内部モデル」だと捉えると整理しやすくなります (Sutton 1991; Ha and Schmidhuber 2018; Hafner et al. 2025)。
一枚の地図で見る、ワールドモデルを支える理論
| 理論領域 | 中心的な問い | ワールドモデルでの役割 | 医療で考えると |
|---|---|---|---|
| 確率論・ベイズ推論 | 観測から、見えない状態をどう推定するか | 不確実な状態推定 | 検査、画像、症状から病態を推定する |
| 状態空間モデル・動的システム | 状態は時間とともにどう変わるか | 状態と遷移の記述 | 病勢や臓器機能の時間変化を表す |
| MDP・POMDP | 不確実な世界でどう意思決定するか | 状態、行動、遷移、報酬を統一する | 限られた観測から検査・治療を選ぶ |
| 強化学習 | 経験から良い行動をどう学ぶか | 方策と価値の学習 | 長期転帰を考えた介入選択 |
| 動的計画法・探索 | 複数の未来からどれを選ぶか | 内部モデルを使ったplanning | 複数の治療経路を比較する |
| 表現学習・生成モデル | 巨大な世界を何として内部表現するか | 潜在状態と未来生成 | 多様な臨床データを患者状態へ圧縮する |
| 情報理論 | 何を残し、何を捨てるべきか | 予測に必要な情報の選別 | 意思決定に必要な情報を保持する |
| 因果推論 | 行動した場合の未来を本当に推定できるか | 介入と反事実の妥当性 | 治療した場合の転帰を相関と区別する |
この表の各行は独立した部品ではありません。確率論が「現在」を推定し、状態空間モデルが「時間」を与え、MDPが「行動」を導入し、強化学習が「目的」を与えます。計画は学習したモデルを未来へ展開し、表現学習はその計算を現実的な大きさに圧縮します。医療のように介入効果そのものを問題にする場合には、最後に因果推論の条件が加わります (Kaelbling et al. 1998; Sutton and Barto 2018; Pearl 1995)。
出発点は「世界そのものは直接見えない」という問題
ワールドモデルの思想をAI以前まで遡ると、制御理論と状態推定に行き着きます。センサーから得られる値と、システムの真の状態は同じではありません。航空機なら位置や速度、工場なら設備内部の状態、医療なら患者の病態です。観測にはノイズがあり、重要な状態の一部は直接測定できません (Kalman 1960)。
状態を \(s_t\)、観測を \(o_t\) と書けば、状態空間モデルの基本的な考え方は二つの関係で表せます。
\[ s_{t+1}\sim p(s_{t+1}\mid s_t,a_t) \]
\[ o_t\sim p(o_t\mid s_t) \]
一つ目は状態遷移です。現在の状態と行動から、次の状態がどうなるかを表します。二つ目は観測モデルで、内部状態が外からどのように見えるかを表します。Kalman filterは、線形かつGaussianな設定のもとで、雑音を含む観測から逐次的に状態を推定する代表的な方法として、この考え方を明確な数理体系にしました (Kalman 1960)。
ここには、現代のワールドモデルにつながる原型があります。AIに必要なのは画像や検査値をそのまま記憶することではなく、観測の背後にある、未来予測に使える状態を内部に持つことです (Kalman 1960; Ha and Schmidhuber 2018)。
Markov性が「現在」と「未来」を切り分ける
時間的に変化する世界を扱うとき、中心になる概念がMarkov性です。十分な状態 \(s_t\) が与えられていれば、次の状態を予測するために過去の履歴をすべて保持する必要はなく、現在の状態と行動で記述できると仮定します (Kaelbling et al. 1998; Sutton and Barto 2018)。
\[ p(s_{t+1}\mid s_t,a_t,s_{t-1},a_{t-1},\ldots) = p(s_{t+1}\mid s_t,a_t) \]
この式は単なる計算上の簡略化ではありません。「現在の状態 \(s_t\) には、未来予測に必要な過去の情報が十分に集約されている」という意味を持ちます。現代のワールドモデルが良いlatent stateを学ぼうとする理由もここにあります。内部状態が不十分なら、未来を正確に予測できないからです (Ha and Schmidhuber 2018; Hafner et al. 2025)。
医療では、この仮定の難しさがよく分かります。同じ血圧120/70 mmHgでも、若年者と心不全治療中の高齢患者では意味が違います。直前の投薬、腎機能、循環動態、病歴などを現在状態に十分取り込まなければ、同じ観測値から同じ未来を予測することはできません。何を「状態」に含めれば未来予測に十分なのかという問いは、ワールドモデル設計そのものです (Kaelbling et al. 1998)。
MDPが「予測する世界」を「行動する世界」に変える
状態が時間とともに変化するだけなら、まだ予測問題です。そこに行動と目的を入れると、Markov Decision Process、MDPになります。標準的には、状態 \(S\)、行動 \(A\)、遷移確率 \(P\)、報酬 \(R\)、割引率 \(\gamma\) などで構成されます (Sutton and Barto 2018)。
\[ (S,A,P,R,\gamma) \]
MDPの意味は、「未来がどうなるか」だけでなく、「自分の行動によって未来が変わる世界で、何を選ぶべきか」を数理化したことにあります。ワールドモデルの遷移モデル
\[ p(s_{t+1}\mid s_t,a_t) \]
も、この構造の中に自然に入ります (Sutton and Barto 2018)。
ただし、現実には完全な状態 \(s_t\) が見えることの方が稀です。POMDP、Partially Observable Markov Decision Processでは、エージェントは観測履歴から現在状態についての確率分布であるbelief stateを持ちます (Kaelbling et al. 1998)。
\[ b_t(s) = P(s_t=s\mid o_{\leq t},a_{\lt t}) \]
医療との対応は明瞭です。医師は「敗血症という真の状態」を直接見るのではなく、体温、血圧、意識、培養、血液検査、画像、経時変化を統合しながら病態についての信念を更新します。新しい検査を行えば観測が増え、治療すれば状態そのものが変化します。診療は典型的な部分観測下の逐次意思決定問題として近似できます (Kaelbling et al. 1998)。
強化学習が「どの未来を望むか」を導入する
ワールドモデルだけでは、未来Aと未来Bのどちらを選ぶべきかは決まりません。その比較基準を与える理論が強化学習です。強化学習では、エージェントが環境と相互作用しながら、将来を含めた累積報酬を大きくする行動方策を学習します (Sutton and Barto 2018)。
\[ G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k} \]
\(r_t\) はその時点の報酬、\(\gamma\) は将来をどの程度重視するかを表す割引率です。ここから、ある状態が将来的にどれほど望ましいかを表す価値関数 \(V(s)\)、ある状態でどの行動を選ぶかを表す方策 \(\pi(a\mid s)\) が生まれます (Sutton and Barto 2018)。
医療に置き換えると、報酬を一つの数値として定義する難しさが見えてきます。死亡だけを避ければよいわけではなく、合併症、QOL、疼痛、治療負担、長期予後など複数の価値が存在します。したがって、医療ワールドモデルに強化学習的な意思決定を接続する場合、「何を予測するか」だけでなく「何を良い未来と定義したのか」を明示する必要があります (Sutton and Barto 2018)。
Bellman方程式は、現在と未来の価値を接続する
逐次意思決定の中心には、現在の選択とその後の未来を再帰的に結びつけるBellman型の関係があります。最適価値関数は、概念的には次の形で表されます (Sutton and Barto 2018)。
\[ V^*(s) = \max_a \mathbb{E} \left[ r_{t} + \gamma V^*(s_{t+1}) \mid s_t=s,a_t=a \right] \]
今日の一手を評価するとき、その直後の結果だけではなく、その一手によって到達した状態から先に得られる価値まで含めるという考え方です。これによって、一見遠回りに見える行動でも、その後の未来が良ければ選択できるようになります (Sutton and Barto 2018)。
ワールドモデルとの関係も明確です。Bellman型の意思決定を行うには、行動後にどの状態へ移るかという情報が必要です。モデルフリー強化学習は、その遷移モデルを明示的に構築せずに価値や方策を経験から学びます。モデルベース強化学習は、遷移をモデル化して未来を内部で展開できます (Sutton 1991; Sutton and Barto 2018)。
モデルフリーとモデルベースの違いは「経験」と「想像」の使い方にある
モデルフリー強化学習では、実際の経験から「この状態ではこの行動がよい」という価値や方策を直接学習します。世界がどのように動いているかを、独立した予測モデルとして持つ必要はありません (Sutton and Barto 2018)。
モデルベース強化学習では、
\[ (s_t,a_t) \rightarrow \hat{s}_{t+1} \]
という環境モデルを利用します。実際に行動しなくても、そのモデルの中で仮想的な経験を生成し、計画や学習に使えます。SuttonのDynaは、実経験からの学習と、学習したモデルによる仮想経験からのplanningを一つの枠組みで統合した代表的な研究です (Sutton 1991)。
この考え方がワールドモデルへ直結します。現実の環境で100回失敗しなければ学べないエージェントより、現実から学んだ法則を内部モデルに移し、その中で多数の候補を試せるエージェントの方が、現実との相互作用を効率よく利用できる場合があります。一方、内部モデルが間違っていれば、エージェントは「間違った世界の中で最適な行動」を学んでしまうため、モデル誤差そのものが新しいリスクになります (Sutton 1991; Ha and Schmidhuber 2018)。
Planningは「未来を予測する」から「未来を比較する」への一歩
未来を生成できることと、良い行動を選べることは同じではありません。複数の行動系列を展開し、その先の報酬や価値を比較する処理がplanningです。探索、動的計画法、tree searchなどは、この問題を異なる方法で解いてきました (Sutton and Barto 2018)。
MuZeroは、この関係を現代的な形で示しました。MuZeroは環境の画像を将来まで正確に再現することを学習目標とせず、planningに必要なreward、policy、valueを予測する内部モデルを学習し、tree searchと組み合わせました (Schrittwieser et al. 2020)。
ここから得られる設計上の教訓は、ワールドモデルが世界の完全なコピーである必要はないということです。目的が意思決定なら、カーテンの模様や壁の微細な質感を完全に復元するより、衝突する物体の位置や目標までの距離など、行動結果を左右する情報を内部状態に残す方が重要です (Schrittwieser et al. 2020)。
深層学習は「理論そのもの」ではなく、状態と遷移を学ぶための実装器でもある
Transformer、RNN、VAEなどをワールドモデルの理論と同じ階層に並べると、少し混乱します。MDPやPOMDPは問題をどう定式化するかを与える理論です。一方、ニューラルネットワークや生成モデルは、その状態、遷移、観測モデルなどを高次元データから学習するための実装手段として利用できます (Kingma and Welling 2014; Ha and Schmidhuber 2018)。
画像をそのまま状態として扱えば、次元は巨大になります。そこでエンコーダを使い、観測 \(o_t\) を低次元の潜在状態 \(z_t\) に変換します。
\[ z_t=E(o_t) \]
そのうえで、ピクセル空間ではなく潜在空間で未来を予測します。
\[ p(z_{t+1}\mid z_t,a_t) \]
HaとSchmidhuberのWorld Modelsでは、VAEで画像を潜在表現へ圧縮し、再帰型モデルでその潜在状態の時間発展を学習しました。これにより、高次元の視覚世界を「圧縮された状態+時間的ダイナミクス」として扱う構成が明瞭になりました (Ha and Schmidhuber 2018)。
Dreamerでは、この発想がさらに進み、学習した潜在ダイナミクスの中で将来のtrajectoryを想像し、その仮想trajectoryからactorとcriticを学習します。2025年にNatureに掲載されたDreamerの第三世代は、recurrent state-space modelによって感覚入力を内部状態へ符号化し、行動条件付きの未来状態とrewardを予測する構成を採用しています (Hafner et al. 2025)。
情報理論が問うのは「世界の何を覚えるか」
世界の内部モデルに、観測された情報をすべて保存することは現実的ではありません。情報理論は、情報量、不確実性、圧縮という問題を数理化する枠組みを与えました (Shannon 1948)。ワールドモデルでは、この問題が「未来予測や意思決定に必要な情報を内部状態へどれだけ残すべきか」という形で現れます (Ha and Schmidhuber 2018; Schrittwieser et al. 2020)。
良い潜在状態は単に小さい表現ではありません。現在の画像を高精度に圧縮できても、将来の変化を予測するために必要な情報を失っていれば、ワールドモデルとしては弱くなります。逆に、見た目の細部をかなり捨てても、将来のrewardやvalueを予測するのに十分なら、意思決定には有用な表現になり得ます (Schrittwieser et al. 2020)。
この視点を持つと、representation learningとworld modelingの関係も整理できます。表現学習の問いは「データを何に変換するか」であり、ワールドモデルではその表現に時間的予測可能性と行動関連性が要求されます (Ha and Schmidhuber 2018; Hafner et al. 2025)。
予測モデルと因果モデルの間には、越えなければならない境界がある
医療でワールドモデルを考えるとき、ここは特に慎重に扱う必要があります。データから
\[ P(Y\mid A=a,X) \]
を高精度に予測できても、それだけで
\[ P(Y\mid do(A=a),X) \]
が分かったことにはなりません。前者は観察された治療 \(A\) と転帰 \(Y\) の条件付き分布です。後者は治療を実際に介入として変更した場合の因果効果を表します。観察データでは治療選択そのものが患者状態や医師の判断に影響されるため、交絡を適切に扱わなければ両者は一致しません (Pearl 1995)。
たとえば重症患者ほど強力な治療を受けやすいデータから単純に学習すると、「強力な治療を受けた患者ほど死亡率が高い」という相関を学習する可能性があります。それをそのまま「この治療を行うと死亡率が高くなる」という介入効果に読み替えることはできません。因果グラフは、観察データからどの因果効果を識別できるのか、どの追加仮定やデータが必要なのかを形式化するための方法を提供します (Pearl 1995)。
したがって、医療ワールドモデルにおける
\[ p(s_{t+1}\mid s_t,a_t) \]
という式は、それだけで「治療 \(a_t\) を実施した場合の真の反事実的未来」を保証しません。特に電子カルテのような観察データから学習する場合、予測精度と介入妥当性は別々に評価する必要があります (Pearl 1995)。
医療で一つにつなぐと、各理論の役割が見えてくる
ある患者の血圧、検査値、CT画像、症状、既往歴、投薬履歴が与えられた場面を考えます。観測データそのものが患者の病態ではありません。まず確率的状態推定によって、観測の背後にある患者状態を推定します。ここには状態空間モデルやPOMDPの考え方が入ります (Kalman 1960; Kaelbling et al. 1998)。
次に、治療A、治療B、経過観察といった行動ごとに、患者状態が将来どう変化するかを遷移モデルで予測します。ここがワールドモデルの中心です。複数の未来trajectoryを内部で展開できれば、model-based reinforcement learningやplanningの構造になります (Sutton 1991; Sutton and Barto 2018)。
ただし未来を比較するには、何を望ましい転帰とするかを定義しなければなりません。生存だけでなく、症状、合併症、QOL、治療負担などをどのように価値へ反映するかは、rewardやvalueの設計問題です。この目的設定は遷移予測とは別の層にあります (Sutton and Barto 2018)。
電子カルテから学習したモデルで治療効果まで比較するなら、因果推論の条件が加わります。治療選択に関わる交絡を十分に扱えているのか、観察されていない重要因子が残っていないかを検討しなければ、精巧な未来simulationが精巧な相関再生にとどまる可能性があります (Pearl 1995)。
ワールドモデルは、複数の理論が交差する場所にある
ここまでの関係を、もう一度数式の流れに戻してみます。
\[ \underbrace{o_{\leq t},a_{\lt t}\rightarrow z_t}_{\text{状態推定・表現学習}} \]
\[ \underbrace{z_t,a_t\rightarrow p(z_{t+1}\mid z_t,a_t)}_{\text{状態空間モデル・ダイナミクス}} \]
\[ \underbrace{R(z_t,a_t),V(z_t)}_{\text{強化学習・価値}} \]
\[ \underbrace{\{a_t,a_{t+1},\ldots\}\rightarrow \{\hat z_{t+1},\hat z_{t+2},\ldots\}}_{\text{planning・内部simulation}} \]
\[ \underbrace{a_t\sim\pi(a_t\mid z_t)}_{\text{意思決定}} \]
確率論は「分からなさ」を扱い、状態空間モデルは「時間的変化」を扱います。POMDPは「部分的にしか見えない世界での意思決定」を定式化し、強化学習は「どの未来を価値あるものとするか」を導入します。planningはモデルの中で複数の未来を比較し、表現学習はその世界を計算可能な潜在状態へ圧縮します。因果推論は、その予測が「実際に介入した場合の未来」として解釈できる条件を問います (Kalman 1960; Kaelbling et al. 1998; Pearl 1995; Sutton and Barto 2018; Hafner et al. 2025)。
ワールドモデルは、これらの理論の代替物ではありません。それぞれの理論が扱ってきた「状態」「不確実性」「時間」「行動」「価値」「介入」を、一つの学習可能な内部モデルの中で接続しようとする枠組みです (Ha and Schmidhuber 2018; Schrittwieser et al. 2020; Hafner et al. 2025)。
どの順番で学ぶと理解しやすいか
数式まで含めてワールドモデルを理解したい場合、最初から最新モデルのarchitectureを追うより、基礎概念を次の順で積み上げる方が、各技術が「何の問題を解いているのか」を見失いにくくなります (Sutton and Barto 2018)。
- 確率分布・条件付き確率・ベイズ推論:不確実な状態を推定するための言語
- 状態・観測・状態空間モデル:世界と観測を分け、時間変化を記述する
- Markov性:未来予測に必要な「現在状態」とは何かを考える
- MDP:状態遷移に行動と報酬を加える
- POMDPとbelief state:完全には見えない世界で意思決定する
- 価値関数とBellman型の再帰:現在の一手と長期的未来を接続する
- 強化学習:経験から方策と価値を学ぶ
- model-based RLとplanning:学習した世界の中で未来を試す
- 表現学習とlatent dynamics:高次元の世界を予測可能な内部状態へ変換する
- 因果推論:予測された未来を介入後の未来として解釈できる条件を考える
この順序で見ると、World Models、MuZero、Dreamerといった個々の研究も孤立したアルゴリズムではなく、それ以前の状態推定、逐次意思決定、強化学習、表現学習を異なる方法で結び直したものとして読めるようになります (Ha and Schmidhuber 2018; Schrittwieser et al. 2020; Hafner et al. 2025)。
最終的にワールドモデルが目指しているのは、単に「次に何が起きるか」を当てることではありません。現在の世界を内部状態として捉え、自分の行動が未来をどう変えるかを予測し、その中から目的に合った未来を選ぶことです。その意味で、ワールドモデルは予測モデルと意思決定モデルをつなぐ場所にあります (Sutton 1991; Sutton and Barto 2018; Hafner et al. 2025)。
※本記事は情報提供を目的としたものであり、特定の治療法を推奨するものではありません。健康に関するご懸念やご相談は、必ず専門の医療機関にご相談ください。
参考文献
- Shannon, C.E. (1948). A mathematical theory of communication. Bell System Technical Journal, 27(3), 379–423; 27(4), 623–656.
- Kalman, R.E. (1960). A new approach to linear filtering and prediction problems. Journal of Basic Engineering, 82(1), 35–45.
- Sutton, R.S. (1991). Dyna, an integrated architecture for learning, planning, and reacting. ACM SIGART Bulletin, 2(4), 160–163.
- Pearl, J. (1995). Causal diagrams for empirical research. Biometrika, 82(4), 669–688.
- Kaelbling, L.P., Littman, M.L., Cassandra, A.R. (1998). Planning and acting in partially observable stochastic domains. Artificial Intelligence, 101(1–2), 99–134.
- Kingma, D.P., Welling, M. (2014). Auto-encoding variational Bayes. Proceedings of the 2nd International Conference on Learning Representations.
- Sutton, R.S., Barto, A.G. (2018). Reinforcement Learning: An Introduction. 2nd ed. MIT Press.
- Ha, D., Schmidhuber, J. (2018). Recurrent world models facilitate policy evolution. Advances in Neural Information Processing Systems, 31, 2450–2462.
- Schrittwieser, J., Antonoglou, I., Hubert, T., Simonyan, K., Sifre, L., Schmitt, S., et al. (2020). Mastering Atari, Go, chess and shogi by planning with a learned model. Nature, 588, 604–609.
- Hafner, D., Pasukonis, J., Ba, J., Lillicrap, T. (2025). Mastering diverse control tasks through world models. Nature, 640, 647–653.
※本記事は情報提供を目的としたものであり、特定の治療法を推奨するものではありません。健康に関するご懸念やご相談は、必ず専門の医療機関にご相談ください。
参考文献
- Tolman, E.C. (1948). Cognitive maps in rats and men. Psychological Review, 55(4), 189–208.
- Kalman, R.E. (1960). A new approach to linear filtering and prediction problems. Journal of Basic Engineering, 82(1), 35–45.
- Sutton, R.S. (1991). Dyna, an integrated architecture for learning, planning, and reacting. ACM SIGART Bulletin, 2(4), 160–163.
- Kaelbling, L.P., Littman, M.L., Cassandra, A.R. (1998). Planning and acting in partially observable stochastic domains. Artificial Intelligence, 101(1–2), 99–134.
- Bongard, J., Zykov, V., Lipson, H. (2006). Resilient machines through continuous self-modeling. Science, 314(5802), 1118–1121.
- Sutton, R.S., Barto, A.G. (2018). Reinforcement Learning: An Introduction. 2nd ed. MIT Press.
- Ha, D., Schmidhuber, J. (2018). Recurrent world models facilitate policy evolution. Advances in Neural Information Processing Systems, 31, 2450–2462.
- Schrittwieser, J., Antonoglou, I., Hubert, T., Simonyan, K., Sifre, L., Schmitt, S., et al. (2020). Mastering Atari, Go, chess and shogi by planning with a learned model. Nature, 588, 604–609.
- Luo, F.M., Xu, T., Lai, H., Chen, X.H., Zhang, W., Yu, Y. (2022). A survey on model-based reinforcement learning. arXiv [Preprint].
- Seth, A.K., Bayne, T. (2022). Theories of consciousness. Nature Reviews Neuroscience, 23, 439–452.
- Hafner, D., Pasukonis, J., Ba, J., Lillicrap, T. (2023). Mastering diverse domains through world models. arXiv [Preprint].
- Butlin, P., Long, R., Elmoznino, E., Bengio, Y., Birch, J., Constant, A., et al. (2023). Consciousness in artificial intelligence: Insights from the science of consciousness. arXiv [Preprint].
- Assran, M., Bardes, A., Fan, D., Garrido, Q., Howes, R., Komeili, M., et al. (2025). V-JEPA 2: Self-supervised video models enable understanding, prediction and planning. arXiv [Preprint].
- Hafner, D., Yan, W., Lillicrap, T. (2025). Training agents inside of scalable world models. arXiv [Preprint].
- Koju, S., Bastola, S., Shrestha, P., Amgain, S., Shrestha, Y.R., Poudel, R.P.K., et al. (2025). Surgical vision world model. arXiv [Preprint].
- He, Y., Guo, P., Xu, M., Li, Z., Myronenko, A., Imans, D., et al. (2025). SurgWorld: Learning surgical robot policies from videos via world modeling. arXiv [Preprint].
- Maes, L., Le Lidec, Q., Scieur, D., LeCun, Y., Balestriero, R. (2026). LeWorldModel: Stable end-to-end joint-embedding predictive architecture from pixels. arXiv [Preprint].
- Hou, B., Li, G., Jia, J., An, T., Guo, X., Leng, S., et al. (2026). World model for robot learning: A comprehensive survey. arXiv [Preprint].
- Liu, K., Li, M., Bao, Y., Zhang, T., Chu, C., Bu, J., et al. (2026). Medical world models: Representing medical states, modelling clinical dynamics and guiding intervention policies. arXiv [Preprint].
- Mu, L., Huang, Z., Gu, Y., Qin, S., Zhang, S., Zhang, X. (2026). EHRWorld: A patient-centric medical world model for long-horizon clinical trajectories. arXiv [Preprint].
- Wang, J., Chen, X., He, J., Xu, X., Xie, S., Han, F. (2026). ChronoMedicalWorld: A medical world model for learning patient trajectories from longitudinal care data. arXiv [Preprint].
- Rapuri, S., Seenivasan, L., Schneider, D., Soberanis-Mukul, R., He, Y., Ding, H., et al. (2026). SAW: Toward a surgical action world model via controllable and scalable video generation. arXiv [Preprint].
- Ma, Y., Wang, Z., Sun, W., Zhang, Z., Shi, K., Chawla, N., et al. (2026). Policy4OOD: A knowledge-guided world model for policy intervention simulation against the opioid overdose crisis. arXiv [Preprint].
- Zhang, X., Zhang, W., Ng, S.K., Deng, Y. (2026). Self-evolving world models for LLM agent planning. arXiv [Preprint].
- Liu, Y., Wang, J., Wang, H., Li, W. (2026b). COMAP: Co-evolving world models and agent policies for LLM agents. arXiv [Preprint].
ご利用規約(免責事項)
当サイト(以下「本サイト」といいます)をご利用になる前に、本ご利用規約(以下「本規約」といいます)をよくお読みください。本サイトを利用された時点で、利用者は本規約の全ての条項に同意したものとみなします。
第1条(目的と情報の性質)
- 本サイトは、医療分野におけるAI技術に関する一般的な情報提供および技術的な学習機会の提供を唯一の目的とします。
- 本サイトで提供されるすべてのコンテンツ(文章、図表、コード、データセットの紹介等を含みますが、これらに限定されません)は、一般的な学習参考用であり、いかなる場合も医学的な助言、診断、治療、またはこれらに準ずる行為(以下「医行為等」といいます)を提供するものではありません。
- 本サイトのコンテンツは、特定の製品、技術、または治療法の有効性、安全性を保証、推奨、または広告・販売促進するものではありません。紹介する技術には研究開発段階のものが含まれており、その臨床応用には、さらなる研究と国内外の規制当局による正式な承認が別途必要です。
- 本サイトは、情報提供を目的としたものであり、特定の治療法を推奨するものではありません。健康に関するご懸念やご相談は、必ず専門の医療機関にご相談ください。
第2条(法令等の遵守)
利用者は、本サイトの利用にあたり、医師法、医薬品、医療機器等の品質、有効性及び安全性の確保等に関する法律(薬機法)、個人情報の保護に関する法律、医療法、医療広告ガイドライン、その他関連する国内外の全ての法令、条例、規則、および各省庁・学会等が定める最新のガイドライン等を、自らの責任において遵守するものとします。これらの適用判断についても、利用者が自ら関係各所に確認するものとし、本サイトは一切の責任を負いません。
第3条(医療行為における責任)
- 本サイトで紹介するAI技術・手法は、あくまで研究段階の技術的解説であり、実際の臨床現場での診断・治療を代替、補助、または推奨するものでは一切ありません。
- 医行為等に関する最終的な判断、決定、およびそれに伴う一切の責任は、必ず法律上その資格を認められた医療専門家(医師、歯科医師等)が負うものとします。AIによる出力を、資格を有する専門家による独立した検証および判断を経ずに利用することを固く禁じます。
- 本サイトの情報に基づくいかなる行為によって利用者または第三者に損害が生じた場合も、本サイト運営者は一切の責任を負いません。実際の臨床判断に際しては、必ず担当の医療専門家にご相談ください。本サイトの利用によって、利用者と本サイト運営者の間に、医師と患者の関係、またはその他いかなる専門的な関係も成立するものではありません。
第4条(情報の正確性・完全性・有用性)
- 本サイトは、掲載する情報(数値、事例、ソースコード、ライブラリのバージョン等)の正確性、完全性、網羅性、有用性、特定目的への適合性、その他一切の事項について、何ら保証するものではありません。
- 掲載情報は執筆時点のものであり、予告なく変更または削除されることがあります。また、技術の進展、ライブラリの更新等により、情報は古くなる可能性があります。利用者は、必ず自身で公式ドキュメント等の最新情報を確認し、自らの責任で情報を利用するものとします。
第5条(AI生成コンテンツに関する注意事項)
本サイトのコンテンツには、AIによる提案を基に作成された部分が含まれる場合がありますが、公開にあたっては人間による監修・編集を経ています。利用者が生成AI等を用いる際は、ハルシネーション(事実に基づかない情報の生成)やバイアスのリスクが内在することを十分に理解し、その出力を鵜呑みにすることなく、必ず専門家による検証を行うものとします。
第6条(知的財産権)
- 本サイトを構成するすべてのコンテンツに関する著作権、商標権、その他一切の知的財産権は、本サイト運営者または正当な権利を有する第三者に帰属します。
- 本サイトのコンテンツを引用、転載、複製、改変、その他の二次利用を行う場合は、著作権法その他関連法規を遵守し、必ず出典を明記するとともに、権利者の許諾を得るなど、適切な手続きを自らの責任で行うものとします。
第7条(プライバシー・倫理)
本サイトで紹介または言及されるデータセット等を利用する場合、利用者は当該データセットに付随するライセンス条件および研究倫理指針を厳格に遵守し、個人情報の匿名化や同意取得の確認など、適用される法規制に基づき必要とされるすべての措置を、自らの責任において講じるものとします。
第8条(利用環境)
本サイトで紹介するソースコードやライブラリは、執筆時点で特定のバージョンおよび実行環境(OS、ハードウェア、依存パッケージ等)を前提としています。利用者の環境における動作を保証するものではなく、互換性の問題等に起因するいかなる不利益・損害についても、本サイト運営者は責任を負いません。
第9条(免責事項)
- 本サイト運営者は、利用者が本サイトを利用したこと、または利用できなかったことによって生じる一切の損害(直接損害、間接損害、付随的損害、特別損害、懲罰的損害、逸失利益、データの消失、プログラムの毀損等を含みますが、これらに限定されません)について、その原因の如何を問わず、一切の法的責任を負わないものとします。
- 本サイトの利用は、学習および研究目的に限定されるものとし、それ以外の目的での利用はご遠慮ください。
- 本サイトの利用に関連して、利用者と第三者との間で紛争が生じた場合、利用者は自らの費用と責任においてこれを解決するものとし、本サイト運営者に一切の迷惑または損害を与えないものとします。
- 本サイト運営者は、いつでも予告なく本サイトの運営を中断、中止、または内容を変更できるものとし、これによって利用者に生じたいかなる損害についても責任を負いません。
第10条(規約の変更)
本サイト運営者は、必要と判断した場合、利用者の承諾を得ることなく、いつでも本規約を変更することができます。変更後の規約は、本サイト上に掲載された時点で効力を生じるものとし、利用者は変更後の規約に拘束されるものとします。
第11条(準拠法および合意管轄)
本規約の解釈にあたっては、日本法を準拠法とします。本サイトの利用および本規約に関連して生じる一切の紛争については、東京地方裁判所を第一審の専属的合意管轄裁判所とします。
For J³, may joy follow you.

