β-VAEの記事では、KL項に重み $\beta$ を掛けるだけで潜在表現の「分離(disentanglement)」が促されることを見ました。シンプルで強力な手法ですが、そこには見過ごせない代償がありました——$\beta$ を上げて分離を強めると、再構成が粗くなる。分離と再構成が綱引きになり、両立が難しいのです。
なぜ両立しないのか。それは、$\beta$ がKL項をまるごと罰してしまうからです。KL項の中には「分離に効く成分」と「再構成に必要な成分」が混ざっており、まとめて罰すると必要な情報まで削ってしまう。ならば——分離に効く成分だけを取り出して、そこだけを罰せばいい。この発想を実現したのが β-TCVAE(Total Correlation VAE) です。鍵は、KL項を3つの意味の異なる項に分解し、そのうち「全相関(Total Correlation, TC)」という項だけに $\beta$ を掛けることにあります。
もう一つ本記事で扱うのが、MIG(Mutual Information Gap)——分離の度合いを1つの数値で測る指標です。「分離できた」と主張するには、それを定量的に測る物差しが要ります。本記事では、β-TCVAEの仕組みとMIGの定義を解説し、Pythonで「全相関が次元間の依存を測ること」と「MIGが分離度を捉えること」を実測で確かめます。β-VAEを前提にするので、未読の方は先にそちらを参照してください。

図がβ-TCVAEの立ち位置です。β-VAEがKL全体に $\beta$ を掛けるのに対し、β-TCVAEは分離に効くTC項だけを狙い撃ちで罰します。この「狙い撃ち」がなぜ再構成を守れるのかを、KL項の分解から解き明かしていきます。
β-VAEの限界
まず、β-VAEの何が問題だったのかを正確に押さえます。

β-VAEのKL項は、データ全体で平均すると、後述するように「相互情報量 $I(x;z)$」を含んでいます。これは潜在 $z$ が入力 $x$についてどれだけ情報を持つかを表す量で、再構成にとって不可欠です。$\beta$ でKL項全体を強く罰すると、この相互情報量まで一緒に削られてしまい、潜在が入力情報を失って再構成が粗くなる——これがβ-VAEで分離と再構成が両立しにくい根本原因です。分離に効くのはKL項の別の成分なのに、それと区別せず全部罰してしまうのが問題だったわけです。
KL項の3分解
そこで登場するのが、平均KL項を3つの項に分解する、Chenら(2018)の洞察です。

データ全体で平均したKL項は、次のように厳密に分解できます。
$$ \begin{equation} \mathbb{E}_{x}\big[D_{KL}(q(z|x)\,\|\,p(z))\big] = \underbrace{I(x;z)}_{(1)\ \text{相互情報量}} + \underbrace{D_{KL}\big(q(z)\,\|\,\textstyle\prod_j q(z_j)\big)}_{(2)\ \text{全相関 TC}} + \underbrace{\sum_j D_{KL}\big(q(z_j)\,\|\,p(z_j)\big)}_{(3)\ \text{次元ごとのKL}} \end{equation} $$
3つの項の意味は次の通りです。
- (1) 相互情報量 $I(x;z)$:潜在が入力について持つ情報量。再構成に必要。削りすぎると再構成が崩れる。
- (2) 全相関 TC:集約事後分布 $q(z)$ が、各次元の積(独立な分布)からどれだけ離れているか。つまり潜在次元どうしの統計的な依存(絡まり)。分離に効くのはこの項。
- (3) 次元ごとのKL:各潜在次元が事前分布からどれだけ離れているか。
ここから決定的な結論が出ます——分離(次元間の独立性)に直接効くのは(2)の全相関だけ。だから、(1)や(3)は触らず、(2)のTCだけを罰すれば、再構成を守りながら分離だけを促せるはずだ、と。
全相関(Total Correlation)とは
(2)の全相関 TC をもう少し掘り下げます。

全相関は、複数の変数の「相互依存の総量」を測る情報理論量です。$q(z) = \prod_j q(z_j)$(各次元が独立)のとき、そしてそのときに限りTCはゼロになります。図のように、潜在次元が独立なら散布図は軸に沿った丸い雲になりTC=0、次元間に相関があると散布図は傾き、TC>0です。
TCがゼロ=各潜在次元が統計的に独立=disentangled。つまり、全相関こそが「分離できているか」を測る最も直接的な量なのです。β-TCVAEは、この量だけを狙って小さくします。
β-TCVAEの目的関数
3分解を踏まえると、β-TCVAEの目的関数は自然に書けます。

$$ \begin{equation} \mathcal{L} = \mathbb{E}_{q}[\log p(x|z)] – I(x;z) – \beta\, TC – \sum_j D_{KL}\big(q(z_j)\,\|\,p(z_j)\big) \end{equation} $$
ポイントは、TC項にだけ大きな重み $\beta$ を掛け、相互情報量 $I(x;z)$ には掛けないことです。これにより、再構成に必要な情報は保ったまま、次元間の依存(絡まり)だけを強く抑えられます。

結果として、図のように、β-TCVAEは $\beta$ を上げて分離を強めても、β-VAEほど再構成が崩れません。「分離と再構成のトレードオフ」を、TCの狙い撃ちによって緩和したのがβ-TCVAEの貢献です。実装上は、TC項の推定にミニバッチ加重サンプリングという工夫を使いますが、本記事ではTCそのものの意味を数値で確認します。
Pythonで確かめる①:全相関が依存を測る
全相関が「次元間の依存」を測ることを確認します。多変量ガウスの場合、全相関は相関行列 $R$ の行列式から $TC = -\frac{1}{2}\log\det R$ と計算できます(独立なら $R=I$、$\det R=1$、$TC=0$)。
import numpy as np
rng = np.random.default_rng(0)
def total_correlation(Z):
R = np.corrcoef(Z.T)
sign, logdet = np.linalg.slogdet(R)
return -0.5 * logdet
N = 5000
s1 = rng.normal(0, 1, N); s2 = rng.normal(0, 1, N)
Z_indep = np.stack([s1, s2], 1) # 独立な潜在
Z_corr = np.stack([s1, 0.8*s1 + 0.6*s2], 1) # 相関のある潜在
print(f"独立な潜在 TC = {total_correlation(Z_indep):.3f}")
print(f"相関ある潜在 TC = {total_correlation(Z_corr):.3f}")
独立な潜在 TC = 0.000
相関ある潜在 TC = 0.514
独立な潜在のTCは 0.000、次元間に相関を入れた潜在のTCは 0.514 と明確に大きくなりました。全相関が「次元どうしの絡まり」を正しく定量化していることが確認できます。β-TCVAEは学習を通じてこのTCを小さく押し下げ、潜在を独立=分離した状態へ導くわけです。
Pythonで確かめる②:MIGで分離度を測る
学習の結果「分離できたか」を評価するには指標が要ります。代表的なのが MIG(Mutual Information Gap) です。

$$ \begin{equation} MIG = \frac{1}{K}\sum_{k=1}^{K}\frac{1}{H(s_k)}\Big( \max_j I(z_j; s_k) – \mathrm{2nd}\!\max_j I(z_j; s_k)\Big) \end{equation} $$
各生成因子 $s_k$ について、それと最も強く結びつく潜在次元の相互情報量と、2番目に強い次元の相互情報量の差(ギャップ)を測り、因子のエントロピー $H(s_k)$ で正規化します。1つの因子が1つの潜在次元だけに集中していればギャップが大きくMIGは1に近づき、複数次元に分散していればギャップが小さくMIGは0に近づきます。

実際に、真の因子に揃った分離表現と、45度回転で混ぜた絡まり表現でMIGを比べます。相互情報量は、連続値を離散化して計算します。
import numpy as np
from sklearn.metrics import mutual_info_score
rng = np.random.default_rng(0)
N = 5000
def disc(a, bins=20):
return np.digitize(a, np.histogram(a, bins)[1][1:-1])
def mig(Z, S, bins=20):
K = S.shape[1]; total = 0.0
for k in range(K):
sk = disc(S[:, k], bins); Hs = mutual_info_score(sk, sk) # H(s_k)
mis = sorted([mutual_info_score(disc(Z[:, j], bins), sk)
for j in range(Z.shape[1])], reverse=True)
total += (mis[0] - mis[1]) / Hs # 正規化ギャップ
return total / K
f1 = rng.normal(0, 1, N); f2 = rng.normal(0, 1, N); S = np.stack([f1, f2], 1)
noise = rng.normal(0, 0.1, (N, 2))
th = np.pi/4; R = np.array([[np.cos(th), -np.sin(th)], [np.sin(th), np.cos(th)]])
Z_dis = S + noise # 分離:軸=因子
Z_ent = S @ R.T + noise # 絡まり:45度回転
print(f"分離した潜在 MIG = {mig(Z_dis, S):.3f}")
print(f"絡まった潜在 MIG = {mig(Z_ent, S):.3f}")
分離した潜在 MIG = 0.705
絡まった潜在 MIG = 0.005

分離表現のMIGは 0.705、絡まり表現は 0.005 とはっきり差がつきました。分離表現では各因子が1つの潜在次元に集中する(情報量のギャップが大きい)のに対し、絡まり表現では各因子が両方の次元に分散する(ギャップがほぼ0)ためです。MIGという1つの数値で、分離の良し悪しを客観的に比較できることが確認できました。この物差しがあって初めて、「β-TCVAEはβ-VAEより分離が良い」といった主張を定量的に検証できるのです。
全相関をどう推定するか
理屈は明快でも、学習中にTCを計算するのは簡単ではありません。TCの定義には集約事後分布 $q(z) = \frac{1}{N}\sum_i q(z|x_i)$ が現れますが、これはデータ全体にわたる和で、ミニバッチ学習では正確に求められないからです。
β-TCVAEの論文が提案したのが ミニバッチ加重サンプリング(minibatch weighted sampling) という推定法です。アイデアは、ミニバッチ内のサンプルから $q(z)$ と $\prod_j q(z_j)$ を近似的に評価し、その対数比の平均でTCを見積もるというもの。具体的には、ある潜在サンプル $z$ に対して、バッチ内の各データ点の事後分布 $q(z|x_i)$ を全部評価して平均することで $q(z)$ を、各次元について同様に評価して $q(z_j)$ を近似します。バッチサイズが小さいと推定にバイアスが乗るため、ある程度のバッチサイズが必要になります。
この「集約事後分布の推定」という一手間が、β-TCVAEを単なるβ-VAEより実装的に重くしている部分です。とはいえ、TCを陽に推定できるようになったことで、「分離に効く成分だけを操作する」という精密な制御が可能になりました。なお、TCの推定・最小化には他のアプローチもあり、次節で触れるFactorVAEは密度比推定(判別器)でTCを敵対的に見積もります。同じTCを下げるという目標でも、推定法の違いが手法の個性になっているのです。
分離度の指標いろいろ
MIGは唯一の指標ではありません。分離を多面的に評価するため、複数の指標が併用されます。

- MIG:相互情報量のギャップで測る(本記事)。
- FactorVAE スコア:潜在から因子を当てる分類器の精度で測る。
- SAP(Separated Attribute Predictability):因子を予測する際の、最良次元と2番目の予測力の差で測る。
- DCI:Disentanglement(1因子=1次元か)・Completeness(1次元=1因子か)・Informativeness(情報量)の3側面で測る。
指標ごとに「分離」の捉え方が微妙に違うため、複数を併せて報告するのが標準的です。指標があって初めて手法の比較や $\beta$ の調整が定量的に行え、disentanglement研究が前進する——測ることの重要性は、ここでも変わりません。
まとめ
β-TCVAEとMIGを、理論から実装まで解説しました。
- β-VAEはKL項を全部罰すため、再構成に必要な相互情報量まで削り、分離と再構成が両立しにくい。
- 平均KL項は (1)相互情報量 $I(x;z)$ + (2)全相関 TC + (3)次元ごとのKL に3分解でき、分離に効くのは(2)のTCだけ。
- β-TCVAEは、TC項にだけ $\beta$ を掛けて狙い撃ちで罰することで、再構成を守りながら分離を強める。
- 全相関 TC は次元間の依存を測る量で、独立ならゼロ。実測でも独立0.000 vs 相関0.514。
- MIGは分離度を測る指標。各因子が1次元に集中するほど高い。実測でも分離0.705 vs 絡まり0.005。FactorVAE・SAP・DCIなど複数指標を併用するのが定石。
次のステップとして、TC項を敵対的に推定する FactorVAE や、本シリーズで扱った条件付きVAEと組み合わせた条件付き分離表現へ進むと、分離表現学習の理解がさらに深まります。