本連載「ジオメトリック・インテリジェンス」は、AIが作るデータの潜在空間を幾何学的に解析し、企業戦略や意思決定に活かすことを目的としています。
第1回目のこの記事では、VAEの潜在空間に潜む「歪み」を正しく測るためのリーマン計量の概念とPython実装を紹介します。
次回、第2回目以降の記事では、この計量を使って戦略地形の凸凹(曲率)を可視化し、ブルーオーシャンや激戦区を見極める手法を解説します。
(上図:本連載シリーズ「ジオメトリック・インテリジェンス」の全体像)
データ地図をそのまま信じるな!VAE潜在空間とリーマン計量の秘密
AIが作る「データの地図(潜在空間)」、そのまま使っていませんか?
本記事では、潜在空間の歪みを補正して現実に即した最短ルートを算出するリーマン計量の仕組みを解説します。
「地図上の直線が遠回り」というユークリッドの罠を突破し、データから真の戦略地形を導き出しましょう。
1. データの旅:100次元のカオスから戦略地図へ
VAEは、人間には理解不能な100次元データを2次元の戦略地図に凝縮します。
入力:100次元の現実データ
[日経平均, 為替, SNSのポジティブ度, 競合広告費, 原油価格, ...]
モデル内:2次元戦略地図
- 横軸(Dim 1):市場の成熟度
- 縦軸(Dim 2):地政学リスク
地図は 平坦ではなく、伸び縮みする曲がった空間(多様体) です。
出力:100次元の予測・復元
[予測売上 +10%, 離脱率 -2%, ...]
2. 潜在空間の距離に注意!ユークリッドの罠
地図上の直線は、現実の最短ルートではありません。
場所によって「定規のメモリ」がバラバラなので、直線移動は崖を無理に横切ったり、平原を延々歩いたりするはめになります。
- 崖:データ急変
- 平原:変化なし
3. ヤコビアンとリーマン計量で「正しい距離」を測る
ヤコビアン(Jacobian)
地図上のわずかな移動が現実でどう変化するかを記録する「変化カタログ」。
$$
J_f = \frac{\partial f}{\partial z}
$$
計量テンソル(Metric Tensor)
ヤコビアンから作る新しい定規で、地図上の距離を現実距離に補正します。
$$
g(z) = J_f(z)^\top J_f(z)
$$
この数式の意味について、説明します。
数学補足:この式はどこから出てくるのか?
デコーダ $f : z \mapsto x$ は、潜在空間 $z$ を実データ空間 $x$ に写す写像です。
潜在空間で微小に動いたときの変化は、
$$
dx = J_f(z),dz
$$
と書けます($J_f$ はヤコビアン)。
実データ空間では通常のユークリッド距離を使うので
$$
|dx|^2 = dx^\top dx
$$
となります。ここに $dx = J_f(z)dz$ を代入すると
$$
|dx|^2 = dz^\top J_f(z)^\top J_f(z) dz
$$
となり、潜在空間の距離を測る計量として
$$
g(z) = J_f(z)^\top J_f(z)
$$
が自然に現れます。
この数式は、VAE(Variational AutoEncoder)の潜在空間上での「本当の距離」を測るために使います。
この計量を使うことで、潜在空間上の最短経路(リーマン計量に沿ったジオデシック)や曲率を計算し、戦略的に重要な領域や穴場を可視化することができます。
💡 補足(数学的背景)
この式は、 微分幾何学 でいう「引き戻し計量(pullback metric)」にあたります。
微分幾何学では、曲がった空間や多様体上での距離や角度を計算するために「計量テンソル」を定義します。
ここでは、データ空間のユークリッド距離を潜在空間に引き戻すことで、潜在空間上の「本当の距離」を測れるようにしているわけです。
この計量を使えば、潜在空間上での最短経路(リーマン計量に沿った「測地線」(geodesic。ジオデシック))や曲率を計算でき、戦略的に重要な領域や穴場を可視化することができます。
4. ヤコビアンを超わかりやすく
- 普通の微分:坂道の傾き
- ヤコビアン:入力の微小変化が多次元出力にどう影響するかの「巨大カタログ」
値が大きい場所 → 布が引き伸ばされ、1cmで現実が激変
値が小さい場所 → 布が縮み、1m動いても現実はほとんど変化なし
戦略判断に必要な「手触り感のある地形」を与えてくれるのがヤコビアン
数学補足:ヤコビアンと計量テンソル
デコーダ $f : z \mapsto x$ は潜在空間 $z$ をデータ空間 $x$ に写す写像です。
潜在空間の微小変化 $dz$ がデータ空間でどれだけ変化するかはヤコビアン $J_f$ で表されることは、先ほど解説させていただきました。:
$$
dx = J_f(z), dz
$$
💡 ヤコビアンとは?
ヤコビアンは、各出力変数 $x_i$ を各入力変数 $z_j$ で偏微分した係数を並べた行列です。
言い換えると 「偏微分係数を総当たりで組み合わせた表」 と考えるとわかりやすいです。
このヤコビアンから計量テンソルを作ると:
$$
g(z) = J_f(z)^\top J_f(z)
$$
になります。これは データ空間のユークリッド距離を潜在空間へ引き戻した計量(pullback metric) です。
微分幾何学的には、多様体上の距離や角度を測る「計量テンソル」にあたり、
潜在空間での最短経路(リーマン計量に沿ったジオデシック)や曲率の計算に使えます。
💡 「引き戻し($pullback$)」とは?
データ空間での距離や角度を、潜在空間に「逆に写す」操作のことです。
ヤコビアンを使って潜在空間に補正された距離を作ることで、潜在空間上でも現実の変化量を正しく測れます。
引き戻し計量の概念
微分幾何学における引き戻し計量とは、ある多様体から別の多様体への写像があるとき、行き先の多様体が持つ「距離の測り方(リーマン計量)」を、出発側の多様体へ持ち帰る操作のことです。
簡単に言うと、「写像で移した先での長さを、元の場所での長さとして定義し直す」 仕組みです。
5. Pythonで計量を計算する
import torch
import torch.nn as nn
class StrategyDecoder(nn.Module):
def __init__(self):
super().__init__()
self.net = nn.Sequential(
nn.Linear(2, 64),
nn.Softplus(),
nn.Linear(64, 100)
)
def forward(self, z):
return self.net(z)
decoder = StrategyDecoder()
def get_jacobian(z):
return torch.autograd.functional.jacobian(decoder.forward, z)
def get_metric(z):
J = get_jacobian(z)
return J.T @ J
z_sample = torch.tensor([1.0, 0.5])
g = get_metric(z_sample)
print(f"地点 {z_sample.tolist()} のリーマン計量 g:\n{g}")
結果例
tensor([[1.6760, 0.0919],
[0.0919, 1.5408]])
6. ユークリッド距離 vs リーマン距離
| 距離 | 意味 |
|---|---|
| ユークリッド距離 | 潜在空間の直線距離 |
| リーマン距離 | データ多様体上の本当の距離 |
地図上は近くても、現実地形では長くなることがあります。
リスクの高低や戦略効果の変化も、リーマン距離で正しく評価できます。
7. データは多様体
VAEが教える重要な視点:
データは単なるベクトルではない。
データは、曲がった空間(多様体)の上に存在する。
8. 次のステップ
- 潜在空間の曲率
- 測地線最適化
- Riemannian VAE
- Geometric Deep Learning
▶ ユークリッド距離 → リーマン距離 → 情報幾何距離(Fisher情報量やKL距離)
戦略やリスクを幾何学的に理解する時代がやってきています。
🔍 この記事の振り返り
この記事では、以下のことを学びました。
VAE(Variational Autoencoder)の潜在空間
- VAEは高次元データを低次元の潜在空間に圧縮する生成モデルです。
- 潜在空間の点は元データの特徴を比較的コンパクトに表現します。これは変分オートエンコーダの基本的な構造です。
ユークリッド距離と「本当の距離」の違い
- 単純に潜在空間で点と点の距離をユークリッド距離で測ると、元のデータ空間での類似性を正確に反映できない場合があります。
- 実際の生成モデルでは潜在空間の座標とデータ空間の座標との間に非線形写像があるため、単純な距離よりも「引き戻された(pull‑back)距離」が意味を持つ、という考え方があります。
これは研究論文 Latent Space Oddity や Metrics for Deep Generative Models でも論じられている幾何的視点です。
リーマン計量(Metric Tensor)を使う意義
-
潜在空間の非線形性を考える場合、リーマン幾何学の枠組みで「局所的に変形した距離尺度」を使うことができ、それが潜在空間の「本当の距離」を与えるという考えです。
-
これは多くの機械学習・情報幾何学の研究で扱われています。
ヤコビアンと計量テンソルの関係
- ヤコビアン $(J_f)$ から計量テンソル $(g = J_f^\top J_f)$ を作る説明は、実際に多様体上の距離・角度を測る際の標準的な考え方です。
- これは微分幾何学の「引き戻し計量(pullback metric)」と呼ばれ、数学的にも正しい取り扱いです。
📌 重要な補足点(注意)
- ✔ 「真の距離」=測地線距離 という表現は、潜在空間の幾何的性質を議論する上で理論的には意味がありますが、実務的には計算が難しい場合があります。
- ✔ リーマン計量を使うことが 常に必須 というわけではなく、むしろ 幾何的な洞察を得るための理論的手法の一つ です。
- ✔ 実際のAI/機械学習のタスク(分類・生成など)では、必ずしもこの幾何的距離が性能改善に直結するとは限りません。
参考論文・概念
| 分類 | 名称 / タイトル | 概要 |
|---|---|---|
| 数学概念 | ヤコビアン | 多変数関数の微分行列。変化のカタログ。 |
| 数学定理 | プルバック計量 | デコーダを通して距離を潜在空間に引き戻す基本概念。 |
| 論文 | Latent Space Oddity | VAE潜在空間を「平坦」と見なす危険を指摘。 |
| 論文 | Riemannian Geometry of Deep Generative Models | 生成モデルをリーマン多様体として測地線解析。 |
(次回予告)戦略地形の完全可視化
次回は、今回手に入れた 定規(計量 $g$) を活用し、潜在空間から戦略地形をPythonで丸ごと可視化します。
局所的な凸凹や激戦区・穴場を直感的に理解できる 戦略地形図 を作成予定です。
🔬 次回、登場予定の数学用語・概念
| 数学概念 | 内容 | 記事での役割 |
|---|---|---|
| リーマン計量(Metric Tensor $g$) | 空間上の距離を正しく測る定規。局所の伸び縮みを補正。 | 潜在空間→データ空間の正しい距離計算に使用 |
| 測地線(Geodesic) | 曲がった空間での最短経路。 | 戦略的最短ルートの算出 |
| 曲率(Curvature) | 空間の湾曲度を測定。凸凹の激戦区や穴場を特定。 | 地図の凹凸を色分けで可視化 |
| プルバック計量(Pullback Metric) | データ空間の距離を潜在空間に引き戻す操作 | VAEデコーダの影響を潜在空間に反映 |
| ヤコビアン(Jacobian $J_f$) | 小さな変化が出力にどう影響するかの行列 | 計量計算の基礎、局所感度の把握 |
| 情報幾何距離(Fisher Information Metric / KL距離) | 統計モデル上のリスクや不確実性の距離 | 高度なリスク解析・意思決定支援 |
🐍 次回、使用予定のPythonモジュール・ライブラリ
| モジュール | 用途 |
|---|---|
NumPy |
配列演算・メッシュグリッド作成・数値計算 |
SciPy |
曲率計算・測地線近似・積分 |
Pandas |
データ整理・前処理 |
Matplotlib |
2D/3D地形可視化・カラーマップ表示 |
Matplotlib (mplot3d) |
3D戦略地形の立体描画 |
Seaborn |
カラーマップの美化・ヒートマップ表示 |
Plotly |
インタラクティブ3D地形・Web表示用 |
PyTorch |
VAEデコーダの計量・ヤコビアン計算・自動微分 |
🎯 次回予定記事: 可視化のポイント
- 局所的な凸凹:リーマン計量 $g$ による地図補正で、潜在空間の伸び縮みを反映
- 激戦区・穴場:曲率カラーマップで赤=激戦区、青=穴場を直感表示
- 測地線:曲がった空間での最短ルートをPythonで計算・可視化
- 戦略の感度:ヤコビアンで局所のリスク・変化率を把握
⚡ ポイントまとめ
- 潜在空間の凸凹を数学的に正確に可視化
- Pythonで地形・曲率・測地線を丸ごと描画
- 次回記事を読むだけで、戦略地形マスターになれる内容
⚡ 次回もお楽しみに!
「戦略の地形」を可視化し、ブルーオーシャンと激戦区をPythonで暴く冒険が始まります 🌊📊





