Now Loading..

非決定性音MAD:マルコフ連鎖

Last updated 2025-11-20, 2:16:56 P.M. UTC+00:00

音MAD Advent Calendar 2025 17日目

この記事について

この記事の内容は、以下の動画と一部重複しています:

後半の節を読むにあたっては、初等的な確率論と線形代数に親しんでいると理解しやすいでしょう。

日本語版はGPT 5.2による翻訳に基づいています。英語版のオリジナルはこちらでご覧いただけます。

これに出会ったのは去年のことです:

それ以来、このアイデアにはまだ何かできる余地があるのではないか、とずっと感じていました。どこか音MAD的な匂いがするんですよね。(これが「正統な音MAD」と呼べるかどうかは、判断を皆さんに委ねます。)

マルコフ連鎖とは?

正直に言うと、マルコフ連鎖は「ランダム性」と「順序性」をより意図的に何かへ組み込むための方法、と捉えてしまってもよいと思います。ただし、ここでは一応きちんと定義から入りましょう。 そうです、数学の話を読まされるよう巧妙に誘導しました。

確率測度

離散確率測度 \(\Pr\) は \[ \sum_{s \in S} \Pr(s) = 1 \] を満たさなければならないことを思い出してください。

場合によっては、正規化された確率を直接与えず、重み関数 \(T: S \to \mathbb{[0, \infty)}\) のみを与えることもあります。その場合、標準的な正規化は次の通りです: \[ \Pr(s) := \frac{T(s)}{\sum_{s' \in S} T(s')} \] これは、集合 \(S\) における \(s\) の T-割合を計算しているに過ぎません。少なくとも一つの \(s\) に対して \(T(s) \neq 0\) であれば、この定義は意味を持ちます。

いま、\(n\) 個の状態からなる集合 \( S = \{ s_1, \dots, s_n \} \) を考えます。離散時間・有限状態マルコフ連鎖とは、各状態 \(s_i\) に対して定義された確率測度 \( \{ \Pr_{s_i} : S \to [0,1] \}_{s_i \in S} \) の集合のことです。 それぞれの \(\Pr_{s_i}\) は、「現在 \(s_i\) にいるとき、次にどの状態へ遷移するか」の確率分布を与えます。

先ほどの動画では \( S = \{ し, か, の, こ, た, ん, \text{Space} \} \) であり、各 \(\Pr\) はグラフ上に明示されています。たとえば \( \Pr_し(か) = \Pr_し(た) = 1/2 \) は、「し」からは 50% の確率で「か」へ、50% の確率で「た」へ遷移することを意味します。他の状態への確率は 0 なので、矢印は描かれていません。

同様に、「の」は常に「こ」へ遷移し(\(\Pr_の(こ)=100\%\))、「こ」は 50% で「の」へ、25% で自分自身へ、25% で「し」へ遷移します。以下にこのマルコフ連鎖のグラフを再掲します:

#import "@preview/finite:0.5.0"

#figure(finite.automaton((
  か: (の:1),
  の: (こ:1),
  し: (か:1/2, た: 1/2),
  た: (ん:1),
  こ: (こ:1/4, し:1/4, の: 1/2),
  ん: (た:1/2, Space:1/2),
  Space: (Space:1/2,し:1/2)
), layout:finite.layout.custom.with(positions: (
  か: (9,4),
  の: (12,2),
  し: (6,2),
  た: (3,0),
  こ: (9,0),
  ん: (0,2),
  Space: (3,4)
)), initial: (), final: ()))

ここで与えられている重みは、実は恣意的なものではありません。 「しかのこのこのここしたんたん」では、「こ」は「の」へ 2 回、自分自身へ 1 回、「し」へ 1 回遷移します。これはそれぞれ 50%、25%、25% に対応しています。このような観測頻度にもとづく重み付けは、最尤推定(Maximum Likelihood Estimation, MLE) の一例です。

このモデルを音MADに結びつけるなら、各状態を一つの音声サンプルとして扱うことができます。サンプルを再生し終えたら、マルコフ連鎖に従って次の状態をランダムに選び、そのサンプルを再生する——先ほどの動画がまさにそれをやっています。

ライブデモ

「Start」ボタンをクリックして開始します。

「しかのこのこのここしたんたん_」を再現した時点で自動的に終了します。

その他の楽しい応用

非決定的ループ - 本当にサビが始まらない炉心融解.

なぜ事前にすべてを書き出してしまわないのか(「シミュレーションをベイクする」)?

DJ セットを事前にすべてレンダリングしておかないのと、理由は同じです。

非ランダム化

確率的な遷移分布を決定的な遷移に置き換えたマルコフ連鎖は、状態機械(有限オートマトン)と呼ばれます。

考えてみると、これは動画に非線形ストーリーテリング(分岐構造)を導入する一つの方法でもあります(動画投稿サイトにどう載せるかを気にしなければ)。YouTube の注釈機能や、Bilibili のインタラクティブ動画のように、ADVゲーム的な選択肢を提示する試みは、かなり昔から行われてきました。

ビジュアルノベルの選択画面

PakaShiroさん のような、より物語性の強い作品には特に相性が良いかもしれません。興味があれば、ビジュアルノベル分野での発展も調べてみるとよいでしょう。

エルゴード性

エルゴード性とは、系の内部にある「局所的」な相互作用から、長時間スケールでの大域的な振る舞いを特徴づける概念です。マルコフ連鎖からも、こうした性質を抽出できます。

マルコフ連鎖が既約(irreducible)であるとは、任意の状態から任意の他の状態へ、正の確率で到達でき、かつ戻ってこられることを意味します。

状態 \(s_i\) の周期とは \( d_i = \gcd \{ n \ge 1 : \Pr(s_i \to s_i \text{ を } n \text{ ステップで達成}) > 0 \} \) で定義されます。つまり、自分自身に戻る経路長の最大公約数です。既約なマルコフ連鎖が 非周期的(aperiodic) であるとは、任意の状態について \(d_i = 1\) が成り立つことを言います。

無限連鎖に関する注意

無限状態の既約・非周期マルコフ連鎖がエルゴード的であるためには、さらに正再帰性(positive recurrence)、すなわち各状態が有限時間で自分自身に戻ることが期待値として保証されている必要があります。 たとえば一次元ランダムウォークは、この条件を満たしません。

冒頭で扱った有限状態マルコフ連鎖は、既約かつ非周期的です!このような連鎖は エルゴード的(ergodic) と呼ばれます。既約性は明らかでしょう。非周期性についても、「の」は \[ \text{のこの},\; \text{のここの},\; \text{のこここの}, \dots \] のように任意の \(k \ge 2\) ステップで自分自身に戻れるため、 \( \gcd \{2,3,\dots\} = 1 \) となります。

エルゴード的マルコフ連鎖には次のような面白い性質があります。ある閾値 \(N > 0\) が存在して、任意の \(k > N\) に対し、 \[ \Pr(s_i \to s_j \text{ を } k \text{ ステップで達成}) > 0 \] がすべての状態 \(s_i, s_j\) について成り立ちます。 言い換えれば、十分長い長さの状態列であれば、どの状態から始めても、どの状態で終わる列も正の確率で生成できる、ということです。

定常分布

マルコフ連鎖は、確率行列(確率遷移行列) \(P\) として表せます。 \[ P_{ij} := \Pr_{s_i}(s_j) \] すなわち、行列の第 \(i\) 行は \((\Pr_{s_i}(s_1), \dots, \Pr_{s_i}(s_n))\) という確率ベクトルになります。

先ほどの例で \(し = s_1, か = s_2, の = s_3, こ = s_4, た = s_5, ん = s_6, \text{Space} = s_7\) とすると、 \[ P = \begin{bmatrix} 0 & 1/2 & 0 & 0 & 1/2 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 1/4 & 0 & 1/2 & 1/4 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 1/2 & 0 & 1/2 \\ 1/2 & 0 & 0 & 0 & 0 & 0 & 1/2 \end{bmatrix} \] となります。

ここで \(P\) を二乗すると、\((i,j)\) 成分は

\[\begin{aligned} (P^2)_{ij} &= \sum_{k=1}^n P_{i k} P_{k j}\\ &= \sum_{k=1}^n \Pr_{s_i}(s_k) \Pr_{s_k}(s_j)\\ &= \sum_{k=1}^n \Pr(s_i \to s_k \to s_j)\\ &= \Pr(s_i \to s_j \text{ を } 2 \text{ ステップで達成}). \end{aligned}\]

となります。

つまり、一般に \(P^\ell\) は「\(\ell\) ステップでの遷移確率」を与えます。


エルゴード的マルコフ連鎖の確率行列 \(P\) に対して、次の収束定理が成り立ちます: \[ \lim_{n \to \infty} P^n = \lim_{n \to \infty} \frac 1 n \sum_{i=0}^n P^i = \begin{bmatrix} p_1 & \dots & p_n \\ \vdots & \ddots & \vdots \\ p_1 & \dots & p_n \end{bmatrix} \]

すなわち、すべての行が同一のベクトル \(\pi = (p_1, \dots, p_n)\) に収束します。さらにこの \(\pi\) は、固有値 1 に対応する 左固有ベクトルでもあります: \[ \pi P = \pi \] (実際、\(P (\lim_{n \to \infty} P^n) = \lim_{n \to \infty} P^{n+1} = \lim_{n \to \infty} P^n\) です。)

このため \(\pi\) は 定常分布(stationary distribution) と呼ばれます。

ここから多くの情報を引き出すことができます。たとえば \(\pi\) は、初期状態に依らず、どの状態にどれだけ長く滞在しやすいかのランキングを与えます

\(P\) の累乗を取ることは、初期条件を徐々に希釈していく操作だと考えられます。そして極限では、出発点に依存しない分布へと収束します。十分長い時間が経てば、「どこから始めたか」はもはや重要でなくなる、という直感にも合っています。

先ほどの例では \[ \pi = (1/8,\; 1/16,\; 3/16,\; 1/4,\; 1/8,\; 1/8,\; 1/8) \] となります。つまり、「こ」はグラフ理論的な入次数が「た」と同じであるにもかかわらず、最も頻繁に出現します。この種の統計量は、持続的なアンビエンスをマルコフ連鎖でモデル化する際に有用です。

結論

ここまで読んでいただき、ありがとうございました。こうしたアイデア自体は決して新しいものではないと思いますが、あえて書き残してみました。 完全に決定的な動画フォーマットに縛られない音MAD的表現には、まだ多くの可能性があると個人的には感じています(通常の動画投稿サイトに載せる、という制約を一度外してみれば、それほど突飛な話でもありません)。