対数記号の曖昧さから始まる問題提起

私たちがプログラミングやアルゴリズム設計で「O(log n)」と書くとき、実はその基数を明示していません。数学では通常、対数を (\log_b(x)) のように基数を付けて書きますが、計算量表記では基数が曖昧なままです。

この曖昧性は、実は問題ではなく、より深い本質を指しているのではないか—それが Kritchevsky の論考 の出発点です。通常の対数表記では、(\log_b(x)) を「b が x に何回かかるか」と読みたくても、記号としては (x/b) に見えてしまう。その違和感をどう解決するか、という問題意識から始まります。

無基数対数を独立した数学的オブジェクトとして捉え、すべての基数付き対数をその比として構築することで、対数の本質的な構造が見えてくる。

このアプローチは、一見すると純粋な数学的関心に見えますが、複雑系・情報理論・スケーリング則といった実践的な領域にも深く関わってきます。

「無基数対数」という新たな抽象化

Kritchevsky が提案するのは、基数を持たない対数 (\log N) を数値ではなく、幾何学的な抽象オブジェクトとして扱う考え方です。

この無基数対数を基本単位として、通常の対数を以下のように再定義します:

[\log_2 N = \frac{\log N}{\log 2}]

ここで (\log 2) を「ビット」という単位として解釈すれば、次のように書けます:

[\log N = \log_2(N) \times \log 2 = \log_2(N) \text{ bits}]

この枠組みでは、基数の変換も単位の変換として自然に説明できます。例えば、自然対数の単位「ナット(nat)」を使えば:

[\log N = \log_2(N) \text{ bits} = \ln(N) \text{ nats}]

すべては同じ幾何学的量を異なる単位で表現しているだけ、という理解が得られるわけです。

観点 従来の理解 無基数対数の理解
対数の意味 「基数 b において x は何乗か」という関数値 「量 N の本質的な成長度」という幾何学的オブジェクト
基数の役割 対数関数を定義する必須パラメータ 測定の「単位」の選択
基数変換 公式を覚えて適用 単位換算と同じ感覚

ベクトルとの類似性—点と変位の概念

この考え方の深さは、ベクトル幾何学との類似性に表れています。ベクトルでは、「点」と「変位ベクトル」を区別します。座標系を定義するには原点を選ぶ必要があり、同じ幾何学的な点も、原点の選択によって異なる座標値を持ちます。

しかし変位ベクトルは、二つの点の差として定義されるため、原点の選択に依存しません。

Kritchevsky は、無基数対数 (\log N) が、このベクトル空間における「点」と同じ役割を果たすと指摘しています。

具体的な基数(原点)を選ぶまで、(\log N) は抽象的な「点」のまま存在する。基数を選ぶことで初めて座標値が決まり、(\log_M N = \frac{\log N}{\log M}) という「変位」が計算できる。

これは、スケール不変性やスケーリング則を考える際に、非常に有用な観点です。エンジニアが「ビッグデータはスケールに依存して見え方が変わる」と直感的に感じることが、ここで厳密に定式化されている感覚があります。

エンジニアにとっての応用可能性

この枠組みは、以下のような実践場面で役立つと考えられます:

  • 計算量分析:O(log n) の「基数」が何かを明示的に考えることで、スケーリングの本質が見える
  • 情報理論:エントロピー計算で「ビット」「ナット」「ディット」などの単位の選択が数学的に等価であることを理解できる
  • データサイエンス:対数スケール・指数関数的成長を扱う際に、基数に依存しない本質的な挙動を捉えやすくなる
  • 複雑系の分析:スケーリング則やべき乗則を扱う際に、スケール不変的な思考が自然に得られる

特に、ローカルな LLM や大規模言語モデルの学習曲線、GPU メモリ効率などを分析する際に、「スケールに本質的に依存しない量は何か」という問いは有用です。

「無基数指数関数」は存在するか

興味深いことに、Kritchevsky は論考の最後で逆の問いを立てています。対数に無基数版があるなら、指数関数にもあるのではないか、と。

しかし彼自身が認めるように、答えはおそらく「ノー」です。理由は、対数が「積を和に変える」単方向の変換であるのに対し、指数関数は逆変換を行うため、その過程で必ず基数(原点)を選ぶ必要があるからです。

この非対称性自体が、数学的な構造の深さを物語っているのではないでしょうか。