blog

全く別物に見える2つの世界を繋ぐ「鍵」

全く別物に見える2つの世界を繋ぐ「鍵」

Google検索の順位を決める ページランク と、最新ゲームや映画を彩る本物のようなリアルな光の表現を生み出す レイトレーシング

一見すると無関係な2つの領域ですが、その根底には 同じ数理アルゴリズム が流れています。

膨大なWebページ相互参照の網から 重要なページ を特定する問題も、3D空間上で無限に反射し続ける光の中で 正確な輝度 を求める問題も、本質的には同じ構造を持っています。

一見バラバラな領域が、一つの「知の体系」へと収束していく。1998年に起きた知的な大いなる合流について、紐解いていきましょう。

共通点1:終わりのない「鶏が先か、卵が先か」の再帰の迷路

Googleの ページランク と、光の挙動を記述する レンダリング方程式 。この両者が抱える共通の難問、それは 再帰的な定義(自己参照) という数学的な迷宮です。

共通点1:終わりのない「鶏が先か、卵が先か」の再帰の迷路

Googleのページランクのジレンマ

Googleの重要度計算の核となる「ページランク」の考え方はシンプルです。 「ランクの高いページからリンクされているページは、ランクが高い」 というものです。

しかし、ここに数学的な難問が潜んでいます。ページAのランクを知るには、リンク元であるページBのランクを知る必要があります。しかし、そのページBのランクを知るためには、さらにそのリンク元のランクを知る必要があり……というように、定義が 再帰的(自己参照的) になっています。

ラリー・ペイジ(Larry Page)らによるPageRankの元論文1にページランクの数学的な定義が記述されています。

$$ R(u) = c \sum_{v \in B_u} \frac{R(v)}{N_v} $$

各変数の意味は以下の通りです。

  • $R(u)$:ページ $u$ のページランク値
  • $B_u$:ページ $u$ にリンクしているページの集合
  • $R(v)$:ページ $u$ へリンクしている個々のページ $v$ のページランク。これが 再帰を意味する
  • $N_v$:ページ $v$ から出ているリンクの総数
  • $c$:全ページのランクの総和を一定に保つための正規化係数

ページランク $R(u)$ (式の左辺)を知るためには、そのページにリンクしている全ページのページランク $R(v)$ (式の右辺)を確定させる必要があります。

ウェブ全体という膨大なネットワークにおいて、この巨大な「鶏が先か卵が先か」という連立方程式を厳密に解くことは、計算コストの面で極めて困難です。

CGのレンダリング方程式のジレンマ

一方、CG(コンピュータグラフィックス)のレンダリング計算も、全く同じ 再帰的な定義 の壁に直面しています。

ある地点の明るさ(輝度)を決めるには、周囲のあらゆる方向から届く光を合計しなければなりません。 しかし、その届く光の強さは、「別の場所で反射してきた光」です。 つまり、地点Aの明るさを決めるには地点Bの明るさが必要で、地点Bの明るさを決めるには地点Cの明るさが必要になる……という、無限の連鎖(再帰)が発生します。

物理的な光の挙動を示す レンダリング方程式 は、ある点 $x$ から出る輝度 $L_o$ を半球上の積分として定義します2

$$ L_o(x, \vec{\omega}_o) = L_e(x, \vec{\omega}_o) + \int_{\Omega} f_r(x, \vec{\omega}_i, \vec{\omega}_o) L_i(x, \vec{\omega}_i) \cos \theta_i d\vec{\omega}_i $$

各変数の意味は以下の通りです。

  • $L_o(x, \vec{\omega}_o)$ :点 $x$ から方向 $\vec{\omega}_o$ へ放射される輝度
  • $L_e(x, \vec{\omega}_o)$ :点 $x$ 自体が発する輝度(自発光)
  • $f_r(x, \vec{\omega}_i, \vec{\omega}_o)$ :BRDF(反射の特性を決める関数)
  • $L_i(x, \vec{\omega}_i)$ :点 $x$ に方向 $\vec{\omega}_i$ から入射する輝度。これが 「別地点から放射された $L_o$」であることが再帰を意味する
  • $\cos \theta_i$ :入射角による減衰

これはページランクと同じように、右辺に左辺がある再帰的な定義です。

共通点2:解決策は「サイコロを振ること」だった

この無限の迷路を突破するために導入されたのが、「ランダムな試行」という、大胆かつ知的な割り切りでした。

共通点2:解決策は「サイコロを振ること」だった

Googleのランダムサーファーモデル

Googleは、ネットの海を無作為に漂う ランダムサーファー を想定しました。サーファーがリンクをランダムに辿り続け、無限に繰り返した結果として 「あるページに滞在している確率」 を算出します。

直感的な理解を深めるため、PageRankの核心を「交通網や駅の利用者数」に例えて解説したゆるコンピュータ科学ラジオの動画3が参考になります。

新宿駅の例え:新宿駅のように多くの路線が乗り入れている場所は、統計的に 常に誰かがいる 状態になります。これが 権威あるページ の本質です。ランクの高さは、単にリンク数の多さではなく、多くのサーファーが訪れる確率 によって決まります。

離島の例え:2つの島(ページ)が互いに橋(リンク)を架けて行き来していても、外の世界から誰も来なければ、その島の通行量は増えません。 これは 相互リンクによる不正なランク上げ が、ランダムサーファー(=外から来る人)の視点では無効であることを示します。

新宿と離島の例え

CGのモンテカルロ法

CGの世界では、これを モンテカルロ法 と呼びます。あらゆる方向から来る光の積分を真面目に計算する代わりに、いくつかの方向を ランダムに選び(サンプリング)、その平均をとることで近似値を導き出します。

モンテカルロ法とは、一言で言えば 乱数を使ったサンプリング(試行)によって、複雑な計算の近似値を求める手法 です。

例えば、ある部屋の平均気温を知りたいとします。厳密に求めるなら、部屋中のすべての点の温度を測定して積分しなければなりませんが、これは不可能です。 そこで、部屋の中で ランダムに数カ所(サンプリング点)を選び、その場所の温度の平均を計算します。サンプリングする地点(サンプル数 $N$ )を増やせば増やすほど、この平均値は部屋全体の真の平均気温に近づいていきます。

パストレーシング、つまりモンテカルロ法を用いたレイトレーシング(光輸送シミュレーション)は、ジム・カジヤ(James T. Kajiya)によってその礎が築かれ2、エリック・ヴィーチ(Eric Veach)によって実用的な完成の域へと洗練されました4

パストレーシングにおいては、ある点で見える明るさを決めるために、周囲のあらゆる方向から来る光(積分)を計算する代わりに、いくつかの方向をランダムに選び(サンプリング)、その方向から来た光の強さを平均する という処理を行います。

このランダムに選んだ方向をさらに追跡していく(そこでもまたランダムに方向を選ぶ)ことで、光の経路(パス)が形成されます。

大数の法則:試行回数を増やすほど「正解」に収束する

大数の法則:試行回数を増やすほど「正解」に収束する

しかし、ここで自然な疑問が生じます。ランダムに数個の方向を選んで光を計算したら、ノイズだらけのザラザラした画像になってしまうのではないか? という問題です。この直感は正しく、実際に、わずか数本の光の経路をランダムに選んだだけでは、昔のテレビの砂嵐のようなノイズに満ちた画像が出力されます(比較画像は筆者自作のレンダラー5でレンダリング)。

ところが、ここで非常に興味深い数学の大原則が登場します。それが 大数の法則 です。1ピクセルあたり数百、数千という膨大な数の光の経路をシミュレートし、その統計を取っていくと、奇跡のようなことが起きます。サイコロを何万回も振るような状態で、振る回数が少ないときは当然ばらつきが出ますが、膨大な回数をこなして平均を取ると、ノイズが次々とスーッと消えていきます。そして最終的に、現実の光の物理法則が示す真の値にピタリと収束します。

つまり、一見いい加減に見えるランダムなサンプリングも、圧倒的な数をこなすことで、驚くほどリアルな現実の光景が画面上に浮かび上がってきます。適当に思えるランダム処理が、大数の法則という数学の力によって、実世界の物理法則に見事に収束するという、このメカニズムこそがモンテカルロ法の強みなのです。

1ピクセルあたり数百〜数千のパスをシミュレートし、その統計をとることでリアルなCGを実現するこのアプローチは、実のところページランクと全く同じ手法です。すなわち、どちらも 「再帰的な定義」を「確率的なサンプリング」で乗り越えている のです。

共通点3:無限の迷路を抜ける仕組み

再帰的な探索を行う際、どちらのアルゴリズムも 無限ループ(循環参照) という共通の課題に直面します。

共通点3:無限の迷路

Googleのダンピングファクター

ランダムサーファーがウェブを巡回する際、同じページ同士が相互にリンクしていたり、閉じたループの中に迷い込んだりすると、そこから抜け出せなくなる可能性があります。 これを数学的に解決するのが ダンピングファクター です。 サーファーは一定の確率(15%)で現在のリンクを辿るのをやめて全く別のページへランダムに テレポート します。 これにより、特定のループに捕らわれずウェブ全体の定常状態を正しく評価できるようになります。

CGのロシアン・ルーレット

同様の仕組みは、パストレーシングの世界にも存在します。反射率の高い壁による「鏡合わせの部屋」のように、光のレイが永久に反射し続けて追跡が終わらない状況を回避するため、 ロシアン・ルーレット という手法が使われます。

これは単に「運が悪ければ計算を捨てて終わり」という雑な処理ではありません。 例えば、確率 $P$ で反射を継続し、確率 $1-P$ で打ち切るとします。このとき、生き残ったパスの寄与を 継続確率 $P$ で割る ことで、統計的なバランスを取ります。

共通点3:ギャンブル

この仕組みを理解するため、ギャンブルの例えを考えてみましょう。100人が1,000円分のチップを持ってゲームに参加します。ルールは単純で 「1/2の確率で失敗して0円になるが、勝てば2,000円になる」 という高リスク・ハイリターンなゲームです。

結果として、50人は失敗して0円になり、50人は2,000円を手にします。全体の合計金額は $50 \times 0 + 50 \times 2000 = 100,000$ 円。つまり、1人当たりの平均は依然として $100,000 \div 100 = 1,000$ 円のままです。個人の運命は0か2倍かに明確に分かれていても、システム全体の統計的なエネルギーはプレイ前と全く変わらない のです。

この対称性が、光の計算でも完全に成立します。個々の光の粒子が、50%の確率で途中で 消滅 されても、生き残った光のエネルギーを2倍に 増幅 することで、画面全体の光のエネルギー総和は 数学的に完璧に保存される のです。

一見いい加減に見える確率の操作が、全体の辻褄を完璧に合わせているというのは、アルゴリズム設計の真骨頂と言えるでしょう。

共通点4:1998年に起きた「計算機科学の奇跡」とマルコフ連鎖

共通点4:1998年に起きた「計算機科学の奇跡」とマルコフ連鎖

驚くべきは、この2つの領域が「同じ数学的ゴール」に辿り着いた時期です。

1998年。ラリー・ペイジ(Larry Page)らによるPageRank論文1が発表されたその同じ年、エリック・ヴィーチ(Eric Veach)によるモンテカルロ法を用いたレイトレーシングの集大成となる博士論文4が発表されました。

異なる領域で格闘していた研究者たちが、同じ時期に マルコフ連鎖 という数学の頂で出会ったのです。

マルコフ連鎖とは、ごく簡単に言うと 「現在の状態だけを基に、次の状態が確率的に決まるプロセス」 です。過去がどうであったかは一切関係ありません。

ページランクもピクセルの輝度もピンボールマシンと本質は同じ

この概念を直感的に理解するため、巨大な ピンボールマシン を想像してみましょう。上から無数のボールを落とすと、ボールが釘に当たって右に行くか左に行くかは確率で決まります。ランダムにカン・カン・カンと跳ね返りながら落ちていきます。

そのボールを何百万個も落とし続けたとき、最終的に下にある複数のポケットのどこにどれくらいの割合でボールが積み上がるか。最初はバラバラでも時間が経つと一定の割合に落ち着きます。

これを数学の言葉で 定常分布(stationary distribution) と呼びます。

ウェブのリンク構造も、3D空間での光の反射特性も、本質的にはこの巨大なピンボールマシンと同じです。

  • ページランク :ランダムサーファーというボールをウェブに放り込んだ時、最終的にどのページに落ち着く確率が高いか。それが定常分布であり、各ページのランクです。
  • パストレーシング :光の粒というボールをシーンに放り込んだ時、反射を重ねながら最終的にどこに集約するか。その分布が各ピクセルの正確な輝度を決定します。

どちらも 「網目状ネットワークの中にボールを放り込み、確率的に遷移させ続けた結果、何が起こるか」 という同じ数学的問題なのです。

一目でわかる比較まとめ

項目ページランク (Google)パストレーシング (CG)
対象Web上の情報の重要度3D空間上の光の輝度
課題ページランクの再帰的な定義と循環参照レンダリング方程式の再帰的な定義と無限反射
解決策ランダムサーファー + テレポート(ダンピングファクター)モンテカルロ法 + ロシアン・ルーレット
目的定常状態(重要度)の推定定常状態(輝度)の収束
本質ランダムに歩き回った時間=統計的な重要度ランダムに追跡したパス=統計的な輝度

2つの問題の4つの共通点

AI時代でも1998年のアルゴリズムは生きている

AI時代でも1998年のアルゴリズムは生きている

2026年の現在、AI技術は急速に進化しています。Google検索にはAIによるセマンティック理解6が導入され、レイトレーシングの世界でもAIを用いた強力なデノイジング技術7が活用されています。大数の法則による収束を待たずとも、AIが少ないサンプルから「正解」を推測できる時代になりました。

しかし、AIは根本の数学を置き換えたわけではありません。AIがどれほど賢く文脈を読み取ったり、ノイズを除去したりできるようになっても、その学習や推論の指標となる「正解」を定義しているのは、今でもこの1998年のアルゴリズムです。

一見バラバラに見える情報の海の中に、次に発見される「共通の法則」は何だと思いますか? あなたが明日手にする新しいテクノロジーの裏側にも、全く別の分野と繋がる「数学の糸」が隠れているのかもしれません。

追記:Googleは実際にサイコロを振っているのか?

これまでGoogleのランダムサーファーモデルについて「ランダムに歩き回る」という説明をしてきましたが、技術的に正確な補足をしておきます。

ランダムサーファーモデルは、ページランクという指標を 人間が直感的に理解し、その妥当性を正当化するためのモデル(解釈) です。

実際の実装では、一人ひとりのサーファーにサイコロを振らせるような乱数シミュレーションではなく、行列の固有ベクトルを計算する 決定論的な演算(べき乗法による反復計算) が行われています。

一方、CGのパストレーシングでモンテカルロ法(乱数によるサンプリング)が選ばれるのは、光の反射の組み合わせが文字通り「無限」に近く、ウェブのようにあらかじめ行列として書き下すことが現実的ではないからです。

なぜ「固有ベクトル」で滞在確率がわかるのか?

「行列の計算でなぜ確率がわかるのか」と不思議に思うかもしれません。これを直感的に理解する鍵は、行列を 「一歩進んだ時の分布の変化」 と捉えることです。

いま、ウェブ上の各ページに「滞在している人の割合」を並べたリスト(ベクトル)を $R$ とします。これに行列を掛けるという操作は、 「全員が今のページから、リンクを辿って一斉に次のページへ移動する」 という状態の変化をシミュレートすることに相当します。

ここで使われる 行列 $A$ は、ウェブページを縦横に並べた巨大な正方行列です。元論文の定義では、ページ $u$ からページ $v$ へリンクがある場合、その要素 $A_{u,v}$ には「$1 / (\text{ページ} u \text{から出ているリンクの総数})$」という値が入ります。これは「ページ $u$ にいるサーファーが、次にリンク先のページ $v$ へ移動する確率」を表しており、行列 $A$ はウェブ全体の 遷移確率(移動ルール) をすべて書き出したものだと言えます。

何度も行列を掛け続ける(移動を繰り返す)と、やがて分布の変化が止まり、移動しても割合が変わらない「安定した状態」にたどり着きます。

$$R = cAR$$
  • $c$:固有値に対応する正規化係数

この数式において、行列 $A$(移動ルール)を掛けても、ベクトル $R$(滞在比率 = ページランク)の向きが変わらない(=比率が維持される)状態、これこそが線形代数で言うところの固有ベクトルであり、確率論で言うところの定常分布です。

アプローチは「決定論」と「確率論」で対極にありますが、どちらも 「マルコフ連鎖の定常分布を求めている」 というゴールは数学的に完全に一致しています。

追記2: YouTube版も公開しました