凸双対とFenchel共役をわかりやすく:f-GAN・最適輸送・変分表現の母体

GAN の論文を読んでいると、突然 $\sup_T \mathbb{E}_P[T(x)] – \mathbb{E}_Q[f^*(T(x))]$ のような「上限を取る式」が出てきて、面食らったことはないでしょうか。最適輸送の論文でも、相互情報量を推定する MINE でも、変分推論でも、似た形の「sup を取る変分表現」が必ず登場します。一見バラバラなこれらの式は、実は たった一つの道具 から生まれています。それが Fenchel共役(凸共役) と、その背後にある 凸双対 です。

この記事を読むと、次の2つが「同じ仕掛け」だと腹落ちします。

  • 応用1: f-GAN(Nowozin+ 2016) — 生成モデルの学習で判別器が最大化する目的関数は、f-ダイバージェンスの Fenchel 双対そのものです。判別器を学習することは「密度比を推定すること」に等しい、という見方が手に入ります。
  • 応用2: MINE / Donsker-Varadhan(相互情報量の変分下界) — 相互情報量を推定する深層学習の手法は、KL ダイバージェンスの共役を使って「下から近づく下界」を最大化しています。

そして、これらと 最適輸送の Kantorovich 双対変分推論の ELBO までもが、同じ凸双対の家系に属することが見えてきます。論文の「sup を取る式」が「ああ、また共役だな」と読めるようになることが本記事のゴールです。

本記事の内容

  • 凸関数・劣勾配・支持直線の復習
  • Fenchel共役の定義と幾何的な意味
  • 代表的な共役の例(二乗、指数、負エントロピー↔log-sum-exp、ノルム)
  • Fenchel-Young不等式と双共役 $f^{**}=f$
  • Lagrange双対・弱双対・強双対(Slater条件)との関係
  • f-ダイバージェンスの変分表現から f-GAN・MINE が出る流れ
  • 最適輸送の Kantorovich 双対との対応
  • Python による共役の数値計算と KL 変分下界の検証

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

凸関数と支持直線の復習

まず土台になる「凸関数」を、絵でイメージし直しておきましょう。凸関数とは、グラフ上の任意の2点を結んだ線分が、いつもグラフの上側にある関数です。お椀やボウルのような形を思い浮かべてください。底があって、両側がせり上がっていく。これが凸の直感です。

凸関数のいちばん大事な性質は、どの点でも、下から接する直線(支持直線)を引ける ことです。お椀の内側にビー玉を置くと、お椀の壁にちょうど一点で触れる板を当てられますよね。その板が支持直線です。微分可能なら、支持直線の傾きは接線の傾き $f'(x)$ そのものになります。微分できない角がある点でも、複数の傾きの支持直線が引けます。この「許される傾きの集合」を 劣勾配(subgradient) $\partial f(x)$ と呼びます。

数式で書くと、点 $x_0$ における傾き $y$ の支持直線とは、次の不等式を「すべての $x$ で」満たす直線のことです。

$$ f(x) \geq f(x_0) + y\,(x – x_0) \quad (\forall x) $$

右辺は、点 $(x_0, f(x_0))$ を通り傾き $y$ の直線です。これが常にグラフの下にある、と言っています。$y$ が劣勾配 $\partial f(x_0)$ に属するとき、この不等式が成り立ちます。

実際に二乗関数 $f(x)=x^2$ に、いくつかの傾きの支持直線を引いてみましょう。

凸関数と支持直線群

この図から、2つのことが読み取れます。第一に、どの接点を選んでも、支持直線は放物線の 完全に下側 に収まっています。これが凸関数の特徴です。第二に、傾き $y$ を一つ決めると、その傾きで放物線に下から触れる直線がちょうど一本に定まり、その 切片 が傾きごとに変わっています。傾きが大きいほど切片は下に沈みます。

この「傾き $y$ ごとに決まる切片」こそ、次に学ぶ Fenchel共役の正体です。共役関数は、各傾きに対して支持直線の切片を記録した「台帳」だと思ってください。

Fenchel共役の定義と幾何

支持直線の切片を傾きの関数として取り出す、というアイデアを式にします。Fenchel共役(凸共役、ルジャンドル変換の一般化) は次のように定義されます。

$$ \begin{equation} f^*(y) = \sup_{x} \left( \langle x, y\rangle – f(x) \right) \end{equation} $$

いきなり sup が出てきて戸惑うかもしれません。でも幾何で見ると単純です。各 $x$ について、傾き $y$ の原点を通る直線 $xy$ と、関数の値 $f(x)$ との 縦方向の差 $xy – f(x)$ を考えます。この差を $x$ について最大化したものが $f^*(y)$ です。

なぜこれが「支持直線の切片」と結びつくのでしょうか。傾き $y$ の支持直線を $g(x) = yx – c$ と書くと、$f(x) \geq yx – c$ がすべての $x$ で成り立つ最小の $c$ は、$c = \sup_x (yx – f(x)) = f^*(y)$ です。つまり支持直線の切片は $-f^*(y)$。共役の値は、支持直線の切片を符号反転したもの なのです。

絵で確認しましょう。

Fenchel共役の幾何

左の図では、傾き $y=2$ を固定し、原点を通る点線と放物線の差が最大になる点(緑の縦線)を探しています。その最大ギャップの大きさが $f^*(2)$ で、ちょうどそのとき放物線に下から触れる赤い破線が支持直線、その切片が $-f^*(2)$ です。右の図は、傾き $y$ を横軸に取って $f^*(y)$ をプロットしたものです。$f(x)=x^2$ の共役は $f^*(y)=y^2/4$ という、またしても放物線になっています。

ここで大切な視点を一つ。Fenchel共役は、関数を「点と値のペア」ではなく「傾きと切片のペア」で記述し直す変換 です。同じ凸関数を、縦に切って見る(普通の表現)か、横に倒して傾きで見る(共役表現)か、という双対的な見方の切り替えです。この「見方の切り替え」が、後で f-GAN や最適輸送で「inf を sup に裏返す」魔法の源になります。

次に、具体的な関数の共役を計算して、共役のカタログを作りましょう。

代表的な共役の例

共役は手を動かして覚えるのが近道です。いくつかの基本関数で計算してみます。

二乗関数は(ほぼ)自己共役

$f(x) = \tfrac{1}{2}x^2$ の共役を求めます。定義に従い、$\sup_x (xy – \tfrac{1}{2}x^2)$ を計算します。中身を $x$ で微分して 0 と置くと:

$$ \frac{d}{dx}\left( xy – \tfrac{1}{2}x^2 \right) = y – x = 0 \quad \Rightarrow \quad x = y $$

最大点 $x=y$ を代入すると:

$$ f^*(y) = y\cdot y – \tfrac{1}{2}y^2 = \tfrac{1}{2}y^2 $$

つまり $\tfrac{1}{2}x^2$ の共役は $\tfrac{1}{2}y^2$ で、形が変わりません。これを自己共役と呼びます。ガウス分布のお椀がそのまま裏返っても同じ形、というのは後でガウス系の計算が綺麗になる伏線です。なお $f(x)=x^2$(係数1)なら $f^*(y)=y^2/4$ で、係数だけが変わります。

指数関数と $y\ln y – y$

$f(x)=e^x$ の共役を求めます。$\sup_x (xy – e^x)$ を $x$ で微分して 0 と置くと $y – e^x = 0$、つまり $x = \ln y$($y>0$ のとき)です。代入すると:

$$ f^*(y) = y\ln y – e^{\ln y} = y\ln y – y \quad (y > 0) $$

$y \leq 0$ では $xy – e^x$ が上に有界でなく $\sup = +\infty$ になります。指数の共役 $y\ln y – y$ は、後で登場するエントロピー系の関数の親戚です。

負エントロピーと log-sum-exp(softmaxの母体)

ここが本記事のハイライトの一つです。確率ベクトル $p=(p_1,\dots,p_n)$ 上で定義される 負エントロピー $f(p) = \sum_i p_i \ln p_i$ を考えます(単体 $\sum_i p_i = 1,\ p_i\geq0$ 上)。この共役を計算すると、有名な関数が出てきます。

$$ f^*(y) = \sup_{p\in\Delta} \left( \sum_i p_i y_i – \sum_i p_i \ln p_i \right) $$

制約 $\sum_i p_i = 1$ のもとでラグランジュ未定乗数 $\lambda$ を使って最大化します。$p_i$ で微分して 0 と置くと:

$$ y_i – \ln p_i – 1 – \lambda = 0 \quad \Rightarrow \quad p_i = e^{y_i – 1 – \lambda} $$

これを $\sum_i p_i = 1$ に代入して $\lambda$ を消すと、最適な $p$ はまさに softmax になります:

$$ p_i = \frac{e^{y_i}}{\sum_j e^{y_j}} $$

この最適 $p$ を目的関数に戻すと、共役は:

$$ f^*(y) = \ln \sum_i e^{y_i} $$

つまり 負エントロピーの共役は log-sum-exp です。ニューラルネットで毎日使う softmax と log-sum-exp が、エントロピーと共役のペアとして自然に現れる。この対応は決して偶然ではありません。

負エントロピーとlog-sum-exp

左の図は単体上の負エントロピーで、下に凸なお椀になっています。右の図がその共役 log-sum-exp で、$\max$ 関数を滑らかにした形(ソフトマックスの「ソフト」の由来)になっています。$y$ が大きく離れているところでは log-sum-exp は $\max(y,0)$ にほぼ一致し、近いところでは丸くなだらかにつながります。

ノルムと指示関数

最後に、もう一つ重要なペアを挙げます。ノルム $f(x)=\|x\|$ の共役は、双対ノルム単位球の指示関数 です:

$$ f^*(y) = \begin{cases} 0 & \|y\|_* \leq 1 \\ +\infty & \text{otherwise} \end{cases} $$

ここで $\|\cdot\|_*$ は双対ノルムです。これは Wasserstein GAN で「判別器を1-Lipschitzに制約する」操作の背後にいます。$\ell^1$ ノルムの共役は $\ell^\infty$ 球の指示関数、というように、ノルムの共役は「双対側の制約」に化けます。制約 $\leftrightarrow$ ペナルティの入れ替えこそ、双対性の本質です。

さて、二乗 $\leftrightarrow$ 二乗の例をもう一度図で確認しておきましょう。

共役関数の例

左が二乗関数とその共役(重なって自己共役)、右が指数関数 $e^x$ とその共役 $y\ln y – y$ です。左で実線と破線がぴったり重なることが、自己共役であることの視覚的な証拠です。右では、急峻に立ち上がる指数の共役が、ゆるやかに立ち上がる別の凸関数になっています。

共役の例が揃ったので、次は共役どうしを結ぶ最も基本的な不等式に進みます。

Fenchel-Young不等式

共役の定義 $f^*(y) = \sup_x (xy – f(x))$ を、ほんの少し書き換えるだけで、極めて有用な不等式が得られます。sup は「どの $x$ でもこれ以上にはならない上限」ですから、任意の $x, y$ に対して:

$$ f^*(y) \geq xy – f(x) $$

これを移項すると、Fenchel-Young不等式 が出ます:

$$ \begin{equation} f(x) + f^*(y) \geq \langle x, y\rangle \end{equation} $$

この式は「関数の値とその共役の値を足すと、内積を下回ることはない」と言っています。どんな凸関数についても無条件で成り立つ、強力な不等式です。

そして等号が成り立つ条件がとても綺麗です。等号 $f(x)+f^*(y)=\langle x,y\rangle$ が成り立つのは、$y$ が $f$ の $x$ における劣勾配であるとき、すなわち $y \in \partial f(x)$(微分可能なら $y = \nabla f(x)$)のとき に限ります。先ほどの $\tfrac{1}{2}x^2$ の例なら、$\nabla f(x) = x$ なので、等号は $y = x$ のときに成立します。

Fenchel-Young不等式

この図では、放物線 $f(x)=\tfrac{1}{2}x^2$ と原点を通る傾き $y$ の直線の間の縦の隙間(赤い線分)が、$f(x)+f^*(y)-\langle x,y\rangle$ に対応します。$x$ が最適点 $x=y$(緑の点)に来ると隙間が 0 になり、等号が成立します。それ以外の $x$ では必ず正の隙間が残ります。

この不等式は単なる道具ではありません。後で f-ダイバージェンスの変分表現を作るとき、まさにこの不等式の「等号で最適、それ以外は下界」という構造を使って下界を組み立てます。下界を最大化すると真値に届く、という MINE の発想の核がここにあります。

不等式の次は、共役をもう一度かけたら何が起きるか、という「双共役」を見ます。

双共役 $f^{**}=f$ と凸包

共役 $f^*$ もまた一つの関数です。ならば、その共役 $f^{**} = (f^*)^*$ を取れます。これを 双共役 と呼びます。驚くべきことに、$f$ が 閉凸関数(凸かつ下半連続)なら:

$$ \begin{equation} f^{**} = f \end{equation} $$

が成り立ちます。共役を2回取ると元に戻る、という美しい対合性です。先ほどの $\tfrac{1}{2}x^2 \to \tfrac{1}{2}y^2 \to \tfrac{1}{2}x^2$ がまさにこれです。

では $f$ が凸でないとどうなるでしょうか。このとき $f^{**}$ は $f$ そのものには戻りません。代わりに、$f$ の下からの凸包(convex envelope、$f$ 以下で最大の凸関数) になります。

双共役と凸包

この図は、二つの谷を持つ非凸関数(灰色)と、その双共役(赤い破線)です。双共役は二つの谷の底を直線でつなぎ、間のコブを「埋めて」しまっています。これが凸包です。非凸最適化で「凸緩和」と呼ばれる操作の正体は、まさにこの双共役による凸包化なのです。

双共役が教えてくれるのは、共役という操作は本質的に「凸の世界」でだけ可逆 だということです。だからこそ、双対性を使う議論では「凸」「閉」という前提がいつも顔を出します。f-ダイバージェンスの定義に出てくる凸関数 $f$ が閉凸であることが要求されるのも、この $f^{**}=f$ を使って変分表現を導くためです。

ここまでは1変数・無制約の話でした。次に、制約つき最適化の世界の双対(Lagrange双対)と、Fenchel共役がどう結びつくかを見ます。

Lagrange双対との関係:弱双対と強双対

最適化の授業で習う Lagrange双対 も、実は Fenchel共役と同じ家族です。制約つき最小化問題(主問題)を考えます:

$$ p^* = \min_x f_0(x) \quad \text{s.t.}\quad f_i(x) \leq 0 $$

制約をペナルティとして目的関数に取り込むため、ラグランジュ乗数 $\lambda_i \geq 0$ を使って ラグランジアン を作ります:

$$ L(x, \lambda) = f_0(x) + \sum_i \lambda_i f_i(x) $$

これを $x$ について最小化したものが 双対関数 $d(\lambda) = \min_x L(x,\lambda)$ です。この $\min_x$ の操作は、まさに共役 $\sup_x(\langle x,y\rangle – f(x))$ と符号違いの同じ操作で、双対関数は主問題の各部品の共役で書けます。

最も基本的な性質が 弱双対 です。任意の $\lambda \geq 0$ に対して:

$$ d(\lambda) \leq p^* $$

つまり 双対問題はいつも主問題を下から押さえる のです。理由は単純で、実行可能な $x$ では $\sum_i \lambda_i f_i(x) \leq 0$ なので $L(x,\lambda) \leq f_0(x)$、これを最小化しても不等号の向きは変わらないからです。双対の最良値 $d^* = \max_\lambda d(\lambda)$ と主問題の最適値 $p^*$ の差 $p^* – d^*$ を 双対ギャップ と呼びます。

弱双対と双対ギャップ

この図は、主問題の値が上から、双対問題の値が下から、それぞれ最適値に近づいていく様子です。オレンジで塗った隙間が双対ギャップです。問題が で、かつ Slater条件(厳密に内点で制約を満たす点が存在する、すなわち $f_i(x) < 0$ となる $x$ がある)を満たすとき、このギャップは 0 になります。これを 強双対 と呼び、$p^* = d^*$ が成り立ちます(緑の点線)。

強双対が成り立つと何が嬉しいのか。それは 「解きにくい主問題を、解きやすい双対問題に置き換えてよい」 という保証が得られることです。f-GAN も最適輸送も、もともとは inf(最小化)の問題ですが、強双対のおかげで sup(最大化)の変分問題に裏返して、ニューラルネットで最大化できるようになります。論文の「sup を取る式」は、この裏返しの産物なのです。

では、いよいよその裏返しを f-ダイバージェンスで具体的に見ていきましょう。

f-ダイバージェンスの変分表現

二つの確率分布 $P, Q$ の隔たりを測る f-ダイバージェンス は、凸関数 $f$($f(1)=0$)を使って次のように定義されます:

$$ D_f(P\|Q) = \int q(x)\, f\!\left( \frac{p(x)}{q(x)} \right) dx = \mathbb{E}_Q\!\left[ f\!\left( \frac{p}{q} \right) \right] $$

ここに密度比 $p/q$ が出てくるのがポイントです。密度比を直接推定するのは難しい。そこで Fenchel共役の出番です。$f$ は凸なので $f^{**}=f$、すなわち $f(u) = \sup_t (ut – f^*(t))$ と書けます。これを定義に代入します:

$$ D_f(P\|Q) = \mathbb{E}_Q\!\left[ \sup_t \left( \frac{p}{q}\,t – f^*(t) \right) \right] $$

各点で取っていた sup を、点ごとに値を返す関数 $T(x)$(witness、証人関数)の sup に格上げします。sup と期待値を入れ替える(下界になる方向)と:

$$ \begin{equation} D_f(P\|Q) \geq \sup_{T} \left( \mathbb{E}_Q\!\left[ \frac{p}{q} T \right] – \mathbb{E}_Q[f^*(T)] \right) = \sup_{T} \left( \mathbb{E}_P[T(x)] – \mathbb{E}_Q[f^*(T(x))] \right) \end{equation} $$

最後の等号で $\mathbb{E}_Q[(p/q)T] = \mathbb{E}_P[T]$ を使いました($P$ での期待値に化けるのが鍵です)。十分に表現力のある $T$ の族で sup を取れば、この下界は等号で達成されます。これが f-ダイバージェンスの変分表現 です。

この式の威力は、密度比を一切計算せず、$P$ と $Q$ からのサンプルだけで $D_f$ を下から推定できる 点にあります。$\mathbb{E}_P[\cdot]$ は $P$ のサンプル平均、$\mathbb{E}_Q[\cdot]$ は $Q$ のサンプル平均で置き換えるだけです。

f-ダイバージェンスの変分表現

この図は、KL ダイバージェンス($f(u)=u\ln u$、$f^*(t)=e^{t-1}$)を、$P=\mathcal{N}(1,1)$、$Q=\mathcal{N}(0,1)$ のサンプルから変分表現で推定したものです。witness を線形族 $T(x)=ax+b$ に限り、係数 $a$ を動かしています。横線が真の KL($=0.5$)で、変分下界は真値を 超えない(常に下にある)ことが分かります。線形という貧弱な族では真値ちょうどには届きませんが、族を豊かにすれば近づきます。この「下から最大化する」構造が、次の f-GAN と MINE の心臓部です。

f-GAN:判別器は密度比推定器

変分表現の $T$ をニューラルネット $T_\omega$ で表し、生成器 $Q_\theta$ が作る分布と真の分布 $P$ の f-ダイバージェンスを、判別器 $T_\omega$ で最大化・生成器で最小化する。これが f-GAN です:

$$ \min_\theta \max_\omega \left( \mathbb{E}_P[T_\omega(x)] – \mathbb{E}_{Q_\theta}[f^*(T_\omega(x))] \right) $$

$f$ に何を選ぶかで、オリジナルの GAN(Jensen-Shannon)、KL-GAN、$\chi^2$-GAN などが統一的に得られます。そして変分表現の等号条件(Fenchel-Young の等号)から、最適な判別器は 密度比 $p/q$ の関数 になります。つまり 判別器を学習することは密度比を推定すること に他なりません。GAN の判別器が「本物か偽物か」を見分けるのは、裏では密度比を測っているのです。

MINE / Donsker-Varadhan:相互情報量を推定する

KL ダイバージェンスには、もう一つ有名な変分表現があります。Donsker-Varadhan表現 です:

$$ \begin{equation} D_{\mathrm{KL}}(P\|Q) = \sup_{T} \left( \mathbb{E}_P[T] – \ln \mathbb{E}_Q[e^{T}] \right) \end{equation} $$

これも KL の共役構造から出ます(先ほどの一般形より少しタイトな下界になります)。相互情報量 $I(X;Y) = D_{\mathrm{KL}}(P_{XY} \| P_X P_Y)$ は KL なので、$P = P_{XY}$(同時分布)、$Q = P_X P_Y$(周辺の積)として上式に当てはめれば、サンプルから相互情報量を推定できます。$T$ をニューラルネットにしたものが MINE(Mutual Information Neural Estimation) です。

Donsker-Varadhanによる相互情報量推定

この図は、相関係数 $\rho$ のガウス同時分布で相互情報量を推定したものです。真値は $-\tfrac{1}{2}\ln(1-\rho^2)$ で解析的に分かります。同時分布のサンプル $(x,y)$ と、$y$ をシャッフルして作った周辺の積のサンプル $(x, y’)$ を使い、Donsker-Varadhan の下界を簡単な critic 族で最大化しています。推定値(破線)は真値(実線)に 下から 近づいており、変分下界の性質が見て取れます。critic の表現力が限られているため $\rho$ が大きい領域では下界が緩みますが、向きと傾向は正しく捉えています。

f-GAN も MINE も、骨格はまったく同じ「f-ダイバージェンスの Fenchel 双対を最大化する」です。次に、一見毛色の違う最適輸送も同じ枠に入ることを見ます。

最適輸送のKantorovich双対との対応

砂の山を別の形に移すのに必要な最小コストを測るのが 最適輸送 です。その主問題(Kantorovich の定式化)は、輸送計画 $\pi$ についての最小化です:

$$ W_c(P,Q) = \inf_{\pi \in \Pi(P,Q)} \int c(x,y)\, d\pi(x,y) $$

これも凸最適化なので強双対が使え、Kantorovich双対 という sup 形式に裏返ります:

$$ W_c(P,Q) = \sup_{\varphi, \psi} \left( \mathbb{E}_P[\varphi(x)] + \mathbb{E}_Q[\psi(y)] \right) \quad \text{s.t.}\quad \varphi(x) + \psi(y) \leq c(x,y) $$

ここで二つのポテンシャル $\varphi, \psi$ が、Lagrange乗数(双対変数)の役割を果たします。さらに最適なポテンシャルは $c$-変換 と呼ばれる関係 $\psi(y) = \inf_x (c(x,y) – \varphi(x))$ で結ばれます。この $c$-変換は、コスト $c(x,y)=\langle x,y\rangle$ の場合に Fenchel共役(符号を除いて) に一致します。実際 $\psi(y)=\inf_x(\langle x,y\rangle-\varphi(x))=-\sup_x(\varphi(x)-\langle x,y\rangle)=-\varphi^*(y)$ で、符号を反転した共役(凹共役)になります。いずれにせよ $c$-変換は共役の一般化であり、両者は同じ「最適なポテンシャルのペア」を与えます。

特にコストを距離 $c(x,y)=\|x-y\|$ に取ると、ポテンシャルの制約は「$\varphi$ が1-Lipschitz」に縮約され、双対は次の見慣れた形になります:

$$ W_1(P,Q) = \sup_{\|\varphi\|_L \leq 1} \left( \mathbb{E}_P[\varphi] – \mathbb{E}_Q[\varphi] \right) $$

これが Wasserstein GAN の目的関数です。1-Lipschitz 制約は、前の節で見た「ノルムの共役は双対球の指示関数」という事実と地続きです。WGAN の判別器(critic)を1-Lipschitzに保つ工夫(重みクリップや勾配ペナルティ)は、この双対制約を満たすための実装なのです。

最後に、ここまで登場した変分表現を一枚の表で俯瞰しましょう。

変分表現の対応表

この表が示すのは、f-ダイバージェンス・f-GAN・MINE・最適輸送・変分推論が、すべて 「原問題は inf、双対変数(witness/ポテンシャル/判別器)を導入して共役で sup に裏返す」 という同じ設計図で動いている、ということです。共役 $f^*$ が「$Q$ 側を補正する役」「制約をペナルティに変える役」を一貫して果たしています。

応用の総まとめ:同じ仕掛けの見抜き方

ここまでの内容を、論文を読むときの実用的な視点でまとめ直します。論文で $\sup_T (\dots)$ や $\max_\omega (\dots)$ を見たら、次の3点を確認してください。

  1. 元は最小化(inf)問題ではないか — 多くの変分表現は、解きにくい inf を共役で sup に裏返したものです。
  2. sup を取る関数 $T$ は何の役割か — それは witness(証人)であり、最適化すると密度比やポテンシャルといった「双対側の量」を推定しています。GAN の判別器、MINE の critic、最適輸送のポテンシャルは、すべてこの仲間です。
  3. 共役 $f^*$ がどこに現れているか — $f^*(T)$ の項、あるいは $\ln\mathbb{E}[e^T]$ のような項が、$Q$ 側を補正しています。これが Fenchel-Young の等号で初めてタイトになります。

変分推論の ELBO も同じ家族です。対数尤度 $\ln p(x)$ を、近似事後 $q$ を導入して下界(ELBO)で押さえる操作は、KL の非負性(=Fenchel-Young不等式の一例)を使った下界化です。VAE が ELBO を最大化するのは、まさに「下界を最大化して真値に近づける」MINE と同じ精神です。

こうして見ると、生成モデル・密度比推定・情報量推定・最適輸送・変分推論という、機械学習の主要な道具立てが、Fenchel共役という一本の幹 から枝分かれしていることが分かります。

Pythonでの実装と検証

最後に、これまでの主張を数値で確かめます。まず、いくつかの関数の Fenchel 共役を定義どおり $\sup_x(xy – f(x))$ で数値計算し、解析解および双共役 $f^{**}=f$ を確認します。

import numpy as np

# 共役を数値計算する関数(グリッド上で sup を取る)
def conjugate(f, y, xs):
    return np.max(y * xs - f(xs))

xs = np.linspace(-10, 10, 200001)

# f(x)=x^2 の共役は y^2/4 のはず
for y in [2.0, -3.0]:
    num = conjugate(lambda x: x**2, y, xs)
    print(f"conj(x^2) at y={y}: numeric={num:.4f}  analytic={y**2/4:.4f}")

出力は conj(x^2) at y=2.0: numeric=1.0000 analytic=1.0000y=-3.0: numeric=2.2500 analytic=2.2500 となり、数値計算が解析解 $y^2/4$ に一致します。共役の定義が、確かに「傾き $y$ ごとの最大ギャップ」を計算していることが確認できました。

次に、双共役を取って元の関数に戻ることを確かめます。

# 双共役 f**(x) = sup_y (xy - f*(y)) が元の f に戻るか
ys = np.linspace(-20, 20, 40001)
fstar_vals = ys**2 / 4   # f*(y) = y^2/4

for x0 in [1.5, -0.7]:
    fdd = np.max(x0 * ys - fstar_vals)   # f**(x0)
    print(f"biconj of x^2 at x={x0}: f**={fdd:.4f}  f={x0**2:.4f}")

出力は x=1.5: f**=2.2500 f=2.2500x=-0.7: f**=0.4900 f=0.4900 となり、双共役が元の凸関数 $x^2$ に正確に戻ります。閉凸関数で $f^{**}=f$ が成り立つことの数値的な裏付けです。

続いて、f-ダイバージェンスの変分表現が本当に下界になっているかを、KL で確かめます。

import numpy as np
rng = np.random.default_rng(0)

# P = N(1,1), Q = N(0,1)。真の KL は 0.5。
n = 200000
P = rng.normal(1, 1, n)
Q = rng.normal(0, 1, n)

# KL: f(u)=u log u -> f*(t)=e^{t-1}
# 下界 = E_P[T] - E_Q[f*(T)], witness T(x)=a x + b(線形族で sup を探す)
a_grid = np.linspace(-0.5, 2.0, 40)
vals = []
for a in a_grid:
    b = -0.5
    T_P = a * P + b
    T_Q = a * Q + b
    vals.append(T_P.mean() - np.exp(T_Q - 1).mean())
vals = np.array(vals)

print(f"KL 変分下界の最大: {vals.max():.4f}  (真の KL = 0.5)")

出力は KL 変分下界の最大: 0.3141 (真の KL = 0.5) です。線形 witness という貧弱な族なので真値 0.5 ちょうどには届きませんが、真値を超えない正しい下界 になっています。witness をニューラルネットにすれば、より真値に近い下界が得られます。これが f-GAN の判別器が学習している量です。

最後に、Donsker-Varadhan 表現で相互情報量を推定し、真値に下から近づくことを確認します。

import numpy as np
rng = np.random.default_rng(0)

# 相関 rho のガウス同時分布。真の MI = -0.5 log(1-rho^2)。
for rho in [0.5, 0.9]:
    m = 100000
    z = rng.normal(size=m)
    x = z
    y = rho * z + np.sqrt(1 - rho**2) * rng.normal(size=m)
    yp = rng.permutation(y)   # 周辺の積からのサンプル

    # DV: sup_T E_joint[T] - log E_marg[e^T]。critic T = a*x*y を a で探索
    best = -1e9
    for a in np.linspace(0, 2.0, 30):
        T_joint = a * x * y
        T_marg = a * x * yp
        val = T_joint.mean() - np.log(np.mean(np.exp(T_marg)))
        best = max(best, val)
    true_mi = -0.5 * np.log(1 - rho**2)
    print(f"rho={rho}: DV推定={best:.4f}  真のMI={true_mi:.4f}")

出力は rho=0.5: DV推定=0.1126 真のMI=0.1438rho=0.9: DV推定=0.3301 真のMI=0.8304 です。単純な critic 族 $T=axy$ では、相関が強い領域ほど下界が緩みますが、いずれも 真値を下から推定 しています。critic を表現力の高いネットワークにすれば、これが本物の MINE になり、推定はさらにタイトになります。

これらの実験を通して、共役の定義・双共役・変分下界・相互情報量推定という、本記事のすべての主張が数値で裏付けられました。

補遺:飛ばした証明を全行で

この補遺は読み飛ばしても大丈夫です。 ここから先は、本文で「成り立ちます」で済ませた主張を一行ずつ証明する部分です。前半までで「共役が変分表現の母体になる」というイメージは押さえられているので、結論を使えれば十分という方は次の節へ進んでください。証明を自分の手で追いたい方、論文の付録を読めるようになりたい方のための部分です。

ここまでは直感と図を優先して、いくつかの主張を「成り立ちます」で済ませてきました。この補遺では、それらを 一行も飛ばさずに 証明します。読者は「数学はできるがこの分野は初見」を想定し、記号も初出で補足します。出典は Rockafellar Convex Analysis、Boyd–Vandenberghe Convex Optimization、Nowozin et al. (2016) f-GAN に準拠します。

最初に記号を確認しておきます。

  • $\sup$(上限)は集合の「最小上界」、$\inf$(下限)は「最大下界」です。最大値・最小値が存在しないときでも定義できる点が $\max,\min$ との違いです。本記事では達成される場合は $\max,\min$ と同一視します。
  • $\langle x, y\rangle$ は内積です。1変数なら単なる積 $xy$、$\mathbb{R}^n$ なら $\sum_i x_i y_i$ を指します。
  • $\partial f(x)$ は $f$ の点 $x$ における 劣勾配(subdifferential) で、「$x$ で下から接する支持直線の傾き全体の集合」です。$y\in\partial f(x)$ は定義により $f(z)\geq f(x)+\langle y, z-x\rangle\ (\forall z)$ を意味します。微分可能なら $\partial f(x)=\{\nabla f(x)\}$ の一点集合です。
  • $\mathbb{E}_P[\cdot]$ は分布 $P$ に関する期待値(積分)$\int (\cdot)\, dP$ です。
  • 関数 $f$ が 閉(closed) とは下半連続(lower semicontinuous)であること、すなわちエピグラフ $\operatorname{epi} f=\{(x,t): t\geq f(x)\}$ が閉集合であることを言います。

証明1:Fenchel-Young不等式とその等号条件

主張. 任意の $x,y$ に対して $$ f(x) + f^*(y) \geq \langle x, y\rangle . $$ さらに $f$ が凸かつ閉のとき、等号が成り立つことと $y\in\partial f(x)$ は同値である。

不等式の証明(2行). 共役の定義 $f^*(y)=\sup_{z}\big(\langle z,y\rangle – f(z)\big)$ は、特定の $z=x$ を選んだ値を上回りません。よって $$ f^*(y) \;\geq\; \langle x, y\rangle – f(x). $$ 両辺に $f(x)$ を足して移項すれば $f(x)+f^*(y)\geq\langle x,y\rangle$ を得ます。$f$ の凸性すら使っていない点に注意してください。共役の定義だけから無条件で従います。

等号条件の証明(全行). 等号 $f(x)+f^*(y)=\langle x,y\rangle$ は、上の不等式の導出を逆にたどると $$ f^*(y) = \langle x, y\rangle – f(x) $$ と同値です。共役の定義 $f^*(y)=\sup_z\big(\langle z,y\rangle – f(z)\big)$ と見比べると、これは「上限 $\sup_z$ が $z=x$ で達成される」ことに他なりません。すなわち $$ \langle x, y\rangle – f(x) \;\geq\; \langle z, y\rangle – f(z) \qquad (\forall z). $$ この式の両辺を整理します。右辺の $\langle z,y\rangle$ を左辺へ、左辺の $f(x)$ を右辺へ移すと $$ f(z) \;\geq\; f(x) + \langle z, y\rangle – \langle x, y\rangle \;=\; f(x) + \langle y,\, z – x\rangle \qquad (\forall z). $$ 最後の等号では内積の線形性 $\langle z,y\rangle-\langle x,y\rangle=\langle y, z-x\rangle$ を使いました。得られた不等式 $f(z)\geq f(x)+\langle y, z-x\rangle\ (\forall z)$ は、まさに劣勾配の定義そのものです。したがって等号 $\Leftrightarrow y\in\partial f(x)$ が示されました。逆向き($y\in\partial f(x)$ なら等号)も、いま導いた同値変形を上から下へたどるだけで従います。微分可能な場合は $\partial f(x)=\{\nabla f(x)\}$ なので、等号条件は $y=\nabla f(x)$ になります。$\tfrac12 x^2$ なら $\nabla f(x)=x$ ゆえ等号は $y=x$ のとき、という本文の主張が確認できました。

証明2:双共役 $f^{**}=f$(閉凸関数)と凸包

主張. 任意の $f$ に対して $f^{**}\leq f$。さらに $f$ が 真(proper, どこかで有限かつ $-\infty$ を取らない)かつ閉かつ凸 なら $f^{**}=f$。一般の $f$ では $f^{**}$ は $f$ の閉凸包($f$ 以下で最大の閉凸関数)に一致する。

$f^{**}\leq f$ の証明(全行). 双共役は定義により $f^{**}(x)=\sup_y\big(\langle x,y\rangle – f^*(y)\big)$ です。一方、証明1で示した Fenchel-Young 不等式 $f(x)+f^*(y)\geq\langle x,y\rangle$ を移項すると、任意の $y$ について $$ \langle x, y\rangle – f^*(y) \;\leq\; f(x). $$ 左辺は $y$ に依存し、右辺 $f(x)$ は $y$ に依存しません。$y$ に依らない上界 $f(x)$ で左辺が上から押さえられているので、左辺の $y$ についての上限もこの上界を超えません: $$ f^{**}(x) = \sup_y\big(\langle x,y\rangle – f^*(y)\big) \;\leq\; f(x). $$ これで $f^{**}\leq f$ が無条件で従いました。

$f^{**}\geq f$ の証明(閉凸・分離定理を使う). 逆向きを示せば $f^{**}=f$ が完成します。背理法で、ある点 $x_0$ で $f^{**}(x_0) < f(x_0)$ と仮定します。値 $\alpha$ を $f^{**}(x_0) < \alpha < f(x_0)$ に取ります。点 $(x_0,\alpha)$ を考えると、$\alpha属しません。

ここで分離定理(supporting/separating hyperplane theorem)を使います。

分離定理(主張のみ). $C\subset\mathbb{R}^{n+1}$ を空でない閉凸集合、$w\notin C$ を一点とする。このとき $C$ と $w$ を厳密に分離する超平面が存在する。すなわち、あるベクトル $(y,-s)$ とスカラー $\beta$ があって、すべての $(z,t)\in C$ で $\langle y,z\rangle – s\,t \leq \beta$、かつ $\langle y,x_0\rangle – s\,\alpha > \beta$ が成り立つ。

直感的には、お椀型の領域(凸なエピグラフ)の外にある点は、必ず一枚の平らな板(超平面)で領域から切り離せる、という主張です。次の図のイメージです。

$f$ が閉かつ凸なので $\operatorname{epi} f$ は閉凸集合であり、$(x_0,\alpha)\notin\operatorname{epi} f$ なので定理が適用できます。分離超平面の法線を $(y, -s)$、オフセットを $\beta$ と書くと、 $$ \langle y, z\rangle – s\,t \;\leq\; \beta \quad \big(\forall (z,t)\in\operatorname{epi} f\big), \qquad\quad \langle y, x_0\rangle – s\,\alpha \;>\; \beta. \tag{$\star$} $$

ステップ A($s>0$ を示す). $\operatorname{epi} f$ では $t$ をいくらでも大きくできます。もし $s<0$ なら、左の不等式で $t\to+\infty$ とすると $-s\,t\to+\infty$ となり $\beta$ を超えてしまい矛盾。よって $s\geq 0$。残るは $s=0$ の排除です。$s=0$ なら分離超平面は $t$ 軸に平行な「鉛直」超平面になり、点 $(x_0,\beta)$ を $\operatorname{epi} f$ から分離することになります。ところが $f$ が真(少なくとも1点で有限値を取り、どこでも $-\infty$ にならない)で、$x_0$ が定義域の相対内部にあれば、$x_0$ の周りの両側に有限値の点があるため、鉛直超平面だけで分離するのは不可能です。よって $s>0$。$x_0$ が定義域の境界にある退化ケースは、相対内部の点で示した不等式を極限で延長して処理できます(Rockafellar の標準的扱い)。したがって一般性を失わず $s>0$ を取れます。

ステップ B(共役を取り出す). $s>0$ なので $(\star)$ の左の不等式を $s$ で割れます。$\operatorname{epi} f$ の点として特に境界 $t=f(z)$ を代入すると、すべての $z$ で $$ \langle y, z\rangle – s\, f(z) \leq \beta \;\;\Longrightarrow\;\; \Big\langle \tfrac{y}{s},\, z\Big\rangle – f(z) \leq \frac{\beta}{s}. $$ 左辺の $z$ についての上限を取ると、これは共役の定義そのものなので $$ f^*\!\Big(\tfrac{y}{s}\Big) = \sup_z\Big(\big\langle \tfrac{y}{s}, z\big\rangle – f(z)\Big) \leq \frac{\beta}{s}. \tag{A} $$

ステップ C(双共役の下界を出す). 一方 $(\star)$ の右の厳格不等式も $s>0$ で割ると $$ \Big\langle \tfrac{y}{s},\, x_0\Big\rangle – \alpha > \frac{\beta}{s} \;\;\Longrightarrow\;\; \Big\langle \tfrac{y}{s},\, x_0\Big\rangle – \frac{\beta}{s} > \alpha. \tag{B} $$ ここで $\hat y := y/s$ と置きます。双共役の定義は上限なので、特定の点 $\hat y$ での値を下回りません: $$ f^{**}(x_0) = \sup_{y’}\big(\langle x_0, y’\rangle – f^*(y’)\big) \;\geq\; \langle x_0, \hat y\rangle – f^*(\hat y). $$ 右辺に (A) すなわち $f^*(\hat y)\leq \beta/s$ を使い、続けて (B) を使うと $$ f^{**}(x_0) \;\geq\; \langle x_0,\hat y\rangle – f^*(\hat y) \;\geq\; \langle x_0,\hat y\rangle – \frac{\beta}{s} \;>\; \alpha. $$ 最初の不等号は上限の下界性、二つ目は (A)、最後の厳格不等号は (B) です。これで $f^{**}(x_0) > \alpha$ が出ました。しかし $\alpha$ は $f^{**}(x_0)<\alpha$ を満たすように取ったので $f^{**}(x_0)<\alpha$ でもあり、$f^{**}(x_0)>\alpha$ と矛盾します。背理法の仮定が誤りだったので、すべての $x$ で $f^{**}(x)\geq f(x)$。先の $f^{**}\leq f$ と合わせ、$f^{**}=f$ が証明されました。$\square$

凸包としての意味. 上の議論で「$f$ が閉凸」を使ったのは、$\operatorname{epi} f$ が閉凸であって分離定理が使える、という一点でした。$f$ が非凸だと $\operatorname{epi} f$ は凸でないため、点 $(x_0,\alpha)$ を分離できるのは「$\operatorname{epi} f$ を含む最小の閉凸集合」=閉凸包 $\overline{\operatorname{conv}}(\operatorname{epi} f)$ に対してだけです。よって $f^{**}$ のエピグラフはこの閉凸包に一致し、$f^{**}$ は「$f$ 以下で最大の閉凸関数」(closed convex envelope) になります。本文の図で、非凸関数の二つの谷を直線でつないでコブを埋めた赤い破線が、まさにこの凸包 $f^{**}$ です。これが非凸最適化の「凸緩和」の数学的正体です。

証明3:共役の計算例を全行で

本文では sup の1階条件だけ示しました。ここでは「停留点が本当に最大であること(凹性)」と境界・定義域の扱いまで補います。

(a) $f(x)=\tfrac12 x^2$ の自己共役. 目的関数を $g(x)=xy-\tfrac12 x^2$ と置きます。$g”(x)=-1<0$ なので $g$ は厳密に凹で、停留点が唯一の最大点です。 $$ g'(x) = y - x = 0 \;\Rightarrow\; x^\star = y. $$ 代入して $$ f^*(y) = g(x^\star) = y\cdot y - \tfrac12 y^2 = \tfrac12 y^2. $$ $f$ と $f^*$ が同形なので自己共役です。$f(x)=x^2$(係数1)なら $g(x)=xy-x^2$、$g'(x)=y-2x=0\Rightarrow x^\star=y/2$、$f^*(y)=y\cdot\tfrac{y}{2}-(\tfrac{y}{2})^2=\tfrac{y^2}{4}$。これは本文の数値検証コード(analytic=y**2/4)と完全に一致します。

(b) $f(x)=e^x$ と $y\ln y – y$. 目的関数 $g(x)=xy-e^x$。$g”(x)=-e^x<0$ で厳密凹。 $$ g'(x) = y - e^x = 0 \;\Rightarrow\; e^x = y \;\Rightarrow\; x^\star=\ln y \quad (y>0). $$ 代入して $$ f^*(y) = y\ln y – e^{\ln y} = y\ln y – y \qquad (y>0). $$ 境界の扱いを丁寧に見ます。$y=0$ では $g(x)=-e^x$ の上限は $x\to-\infty$ で $0$ なので $f^*(0)=0$(これは $\lim_{y\to0^+}(y\ln y – y)=0$ と整合)。$y<0$ では $g(x)=xy-e^x$ において $x\to-\infty$ とすると $xy\to+\infty$(負×負)かつ $-e^x\to0$ なので $g\to+\infty$、ゆえに $f^*(y)=+\infty$。したがって $$ f^*(y) = \begin{cases} y\ln y - y & y>0\\ 0 & y=0 \\ +\infty & y<0 \end{cases} $$ (規約 $0\ln 0=0$)。これは指数の共役が「$y\ln y - y$」であるという本文の記述を、定義域つきで厳密化したものです。

(c) 負エントロピー $\sum_i x_i\ln x_i$ と log-sum-exp. 単体 $\Delta=\{x: x_i\geq0,\ \sum_i x_i=1\}$ 上の負エントロピー $f(x)=\sum_i x_i\ln x_i$ の共役 $$ f^*(y)=\sup_{x\in\Delta}\Big(\sum_i x_i y_i – \sum_i x_i\ln x_i\Big) $$ を求めます。制約 $\sum_i x_i=1$ にラグランジュ乗数 $\lambda$ を付け、内点($x_i>0$)で非負制約は不活性として $$ \mathcal{L}(x,\lambda)=\sum_i x_i y_i – \sum_i x_i\ln x_i – \lambda\Big(\sum_i x_i – 1\Big). $$ $x_i$ で偏微分します。$\dfrac{\partial}{\partial x_i}\big(x_i\ln x_i\big)=\ln x_i + 1$ に注意して $$ \frac{\partial \mathcal{L}}{\partial x_i} = y_i – (\ln x_i + 1) – \lambda = 0 \;\;\Longrightarrow\;\; \ln x_i = y_i – 1 – \lambda \;\;\Longrightarrow\;\; x_i = e^{\,y_i – 1 – \lambda}. $$ 目的関数 $\sum_i x_i y_i – \sum_i x_i\ln x_i$ は $x$ について凹(負エントロピーは凸、その符号反転が凹、線形項は凹凸両用)なので、この停留点が最大点です。制約 $\sum_i x_i=1$ に代入して $\lambda$ を消します: $$ \sum_i e^{\,y_i-1-\lambda} = 1 \;\;\Longrightarrow\;\; e^{-1-\lambda}\sum_i e^{y_i} = 1 \;\;\Longrightarrow\;\; e^{-1-\lambda} = \frac{1}{\sum_j e^{y_j}}. $$ これを $x_i=e^{y_i-1-\lambda}=e^{y_i}\cdot e^{-1-\lambda}$ に戻すと、最適 $x$ はまさに softmax: $$ x_i^\star = \frac{e^{y_i}}{\sum_j e^{y_j}}. $$ 最後にこの $x^\star$ を目的関数へ代入して $f^*$ を出します。$\ln x_i^\star = y_i – \ln\sum_j e^{y_j}$ なので $$ \begin{aligned} f^*(y) &= \sum_i x_i^\star y_i – \sum_i x_i^\star \ln x_i^\star \\ &= \sum_i x_i^\star y_i – \sum_i x_i^\star\Big(y_i – \ln\textstyle\sum_j e^{y_j}\Big) \\ &= \sum_i x_i^\star y_i – \sum_i x_i^\star y_i + \Big(\ln\textstyle\sum_j e^{y_j}\Big)\underbrace{\sum_i x_i^\star}_{=1} \\ &= \ln\sum_j e^{y_j}. \end{aligned} $$ 3行目では $\ln\sum_j e^{y_j}$ が $i$ に依らない定数なので和の外に出し、$\sum_i x_i^\star=1$($x^\star$ は確率ベクトル)を使いました。こうして 負エントロピーの共役は log-sum-exp であり、その最大点が softmax である、という本文の主張が全行で示されました。これは深層学習で softmax と交差エントロピーが対になって現れる理由の数学的な根拠です。

証明4:f-ダイバージェンスの変分表現の完全導出

主張. $f$ を真な閉凸関数、$P,Q$ を $Q$ について絶対連続な確率分布(密度 $p,q$)とする。このとき $$ D_f(P\|Q) = \int q(x)\, f\!\Big(\frac{p(x)}{q(x)}\Big)\,dx \;\geq\; \sup_{T}\Big(\mathbb{E}_P[T] – \mathbb{E}_Q[f^*(T)]\Big), $$ であり、$T$ を十分豊かな可測関数の族($T(x)\in\partial f(p(x)/q(x))$ を実現できる族)で動かせば等号が成り立つ。

全行の証明. 出発点は双共役 $f^{**}=f$(証明2)です。$f$ は閉凸なので各実数 $u\geq0$ で $$ f(u) = f^{**}(u) = \sup_{t}\big(u\,t – f^*(t)\big). \tag{4.1} $$ これを密度比 $u=p(x)/q(x)$ に適用して $D_f$ の定義に代入します: $$ D_f(P\|Q) = \int q(x)\, f\!\Big(\frac{p(x)}{q(x)}\Big)\,dx = \int q(x)\,\sup_{t}\Big(\frac{p(x)}{q(x)}\,t – f^*(t)\Big)\,dx. \tag{4.2} $$ ここまでは点ごとに最適な $t$($x$ ごとに変わってよい)を選ぶ「点ごとの sup」です。

ステップ 1(点ごとの sup を関数 $T$ の sup へ持ち上げる). 任意の可測関数 $T:\mathcal{X}\to\mathbb{R}$ を一つ固定すると、各点で「$T(x)$ という特定の $t$」を選んだだけなので、点ごとの sup には及びません: $$ \frac{p(x)}{q(x)}\,T(x) – f^*(T(x)) \;\leq\; \sup_{t}\Big(\frac{p(x)}{q(x)}\,t – f^*(t)\Big) = f\!\Big(\frac{p(x)}{q(x)}\Big). \tag{4.3} $$ 両辺に $q(x)\geq0$ を掛けて $x$ で積分しても不等号の向きは保たれます: $$ \int q(x)\Big(\frac{p(x)}{q(x)}T(x) – f^*(T(x))\Big)dx \;\leq\; \int q(x)\, f\!\Big(\frac{p(x)}{q(x)}\Big)dx = D_f(P\|Q). \tag{4.4} $$

ステップ 2(左辺を期待値に書き換える). 左辺の第1項で $q(x)\cdot\dfrac{p(x)}{q(x)} = p(x)$ が成り立つので($q(x)>0$ の台の上、絶対連続性で $p$ の質量はここに乗る)、 $$ \int q(x)\,\frac{p(x)}{q(x)}\,T(x)\,dx = \int p(x)\,T(x)\,dx = \mathbb{E}_P[T]. $$ 第2項は定義どおり $\int q(x) f^*(T(x))dx = \mathbb{E}_Q[f^*(T)]$。よって (4.4) は $$ \mathbb{E}_P[T] – \mathbb{E}_Q[f^*(T)] \;\leq\; D_f(P\|Q) \qquad (\forall\, T). \tag{4.5} $$

ステップ 3($T$ について上限を取る). (4.5) は任意の $T$ で成り立つので、左辺の $T$ についての上限も右辺を超えません: $$ \sup_T\Big(\mathbb{E}_P[T]-\mathbb{E}_Q[f^*(T)]\Big) \;\leq\; D_f(P\|Q). \tag{4.6} $$ これで変分下界(不等号)が示せました。本文の図(線形 witness で真の KL を下回る)と「常に下にある」が一致します。

ステップ 4(等号の達成 = sup と積分の交換の正当化). 不等号 (4.3) の等号は、$T(x)$ が各点で点ごとの sup を達成するとき、すなわち $T^\star(x)\in\partial f\big(p(x)/q(x)\big)$(Fenchel-Young の等号条件、証明1)を満たすときに成立します。この $T^\star$ が考えている関数族に属していれば、(4.3) が各点で等号となり、積分しても (4.4)(4.5) が等号になり、(4.6) の sup が達成されます。すなわち $$ D_f(P\|Q) = \sup_T\Big(\mathbb{E}_P[T]-\mathbb{E}_Q[f^*(T)]\Big), $$ で 点ごとの sup と積分(期待値)の順序交換が正当化 されます。これが「点ごとの sup を関数上の sup に持ち上げる」操作の中身です。

Jensen との関係(補足). $f$ が凸なので Jensen の不等式から $D_f(P\|Q)=\mathbb{E}_Q[f(p/q)]\geq f(\mathbb{E}_Q[p/q])=f(1)=0$ となり、f-ダイバージェンスが非負であることも同時に従います($\mathbb{E}_Q[p/q]=\int q\cdot p/q\,dx=\int p\,dx=1$ を使用)。変分表現の sup が $0$ 以上であることと整合します。実装上は $\mathbb{E}_P,\mathbb{E}_Q$ をそれぞれのサンプル平均に置き換えるだけで、密度比 $p/q$ を一切評価せずに下界を計算できます。これが本記事のコードがやっていることです。

証明5:f-GANとMINE(Donsker–Varadhan)への帰着

(a) f-GAN. 変分表現 (4.6) で $T$ をパラメータ $\omega$ のニューラルネット $T_\omega$、$Q$ を生成器 $Q_\theta$ とすると $$ D_f(P\|Q_\theta) \approx \max_\omega\Big(\mathbb{E}_P[T_\omega] – \mathbb{E}_{Q_\theta}[f^*(T_\omega)]\Big), $$ これを生成器側で最小化すれば $\min_\theta\max_\omega(\cdots)$、すなわち f-GAN です。最適判別器は等号条件 $T^\star\in\partial f(p/q)$ から決まり、$f$ が微分可能なら $T^\star(x)=f’\big(p(x)/q(x)\big)$。これは密度比 $p/q$ の単調関数なので、判別器の学習は密度比推定に等しい という本文の主張が、証明1の等号条件から厳密に従います。Nowozin らの「variational divergence minimization」がこれです。

(b) KL と Donsker–Varadhan. KL は $f(u)=u\ln u$ の f-ダイバージェンスです。まずこの $f$ の共役を計算します。$g(t)=ut-f(u)$ ではなく共役は $f^*(t)=\sup_{u>0}(ut – u\ln u)$。$\dfrac{d}{du}(ut-u\ln u)=t-\ln u-1=0\Rightarrow u^\star=e^{t-1}$、$\big(\dfrac{d^2}{du^2}=-1/u<0\big)$ で最大。代入して $$ f^*(t) = e^{t-1}\,t - e^{t-1}(t-1) = e^{t-1}\big(t - t + 1\big) = e^{t-1}. $$ これを (4.6) に入れると、まず一般 f-ダイバージェンス型の下界が出ます: $$ D_{\mathrm{KL}}(P\|Q) \geq \sup_T\Big(\mathbb{E}_P[T] - \mathbb{E}_Q[e^{T-1}]\Big). \tag{5.1} $$ これが本文の KL 数値検証コード(f*(t)=e^{t-1})の根拠です。

次に、より「タイト」な Donsker–Varadhan 表現 を導きます。主張は $$ D_{\mathrm{KL}}(P\|Q) = \sup_T\Big(\mathbb{E}_P[T] – \ln\mathbb{E}_Q[e^{T}]\Big). \tag{5.2} $$ 全行の証明. 任意の有界可測 $T$ に対し、$Q$ を $T$ で「傾けた」分布 $G$ を密度 $$ \frac{dG}{dQ}(x) = \frac{e^{T(x)}}{\mathbb{E}_Q[e^{T}]} $$ で定義します(分母は正規化定数で、$\int dG=1$ を保証)。KL の非負性 $D_{\mathrm{KL}}(P\|G)\geq 0$ を出発点にします: $$ 0 \leq D_{\mathrm{KL}}(P\|G) = \mathbb{E}_P\Big[\ln\frac{dP}{dG}\Big] = \mathbb{E}_P\Big[\ln\frac{dP}{dQ}\cdot\frac{dQ}{dG}\Big] = \mathbb{E}_P\Big[\ln\frac{dP}{dQ}\Big] + \mathbb{E}_P\Big[\ln\frac{dQ}{dG}\Big]. $$ 2つ目の等号で連鎖律 $\dfrac{dP}{dG}=\dfrac{dP}{dQ}\cdot\dfrac{dQ}{dG}$、3つ目で対数の積→和を使いました。第1項は定義より $D_{\mathrm{KL}}(P\|Q)$。第2項は $$ \frac{dQ}{dG} = \frac{\mathbb{E}_Q[e^T]}{e^T} \;\;\Longrightarrow\;\; \mathbb{E}_P\Big[\ln\frac{dQ}{dG}\Big] = \mathbb{E}_P\big[\ln\mathbb{E}_Q[e^T] – T\big] = \ln\mathbb{E}_Q[e^T] – \mathbb{E}_P[T]. $$ ($\ln\mathbb{E}_Q[e^T]$ は $x$ に依らない定数なので期待値の外へ出ます。)以上を代入すると $$ 0 \leq D_{\mathrm{KL}}(P\|Q) + \ln\mathbb{E}_Q[e^T] – \mathbb{E}_P[T], $$ 移項して $$ \mathbb{E}_P[T] – \ln\mathbb{E}_Q[e^T] \;\leq\; D_{\mathrm{KL}}(P\|Q) \qquad (\forall T). \tag{5.3} $$ これで下界が示せました。等号は $D_{\mathrm{KL}}(P\|G)=0$、すなわち $G=P$ のときで、これは $e^{T(x)}\propto dP/dQ$、つまり $T^\star=\ln(dP/dQ)+\text{const}$ のときに達成されます。この $T^\star$ を許す族で sup を取れば (5.2) が等号で成立します。$\square$

相互情報量は $I(X;Y)=D_{\mathrm{KL}}(P_{XY}\|P_XP_Y)$ なので、(5.2) で $P=P_{XY}$(同時分布)、$Q=P_XP_Y$(周辺の積)と置けば $$ I(X;Y) = \sup_T\Big(\mathbb{E}_{P_{XY}}[T] – \ln\mathbb{E}_{P_XP_Y}[e^{T}]\Big). $$ $T$ をニューラルネットにしたものが MINE です。$P_XP_Y$ のサンプルは $y$ をシャッフルして作る——本文のコードの rng.permutation(y) がまさにこれであり、(5.2) の右辺をそのまま実装したものです。なお (5.1) と (5.2) はどちらも KL の正しい下界ですが、(5.2) の方が一般にタイトです(指数の平均の対数 $\ln\mathbb{E}_Q[e^T]$ が、補正項として最適に効くため)。

証明6:Lagrange双対 — 弱双対の証明と強双対(Slater)の主張

主問題を $$ p^\star = \inf_x\; f_0(x)\quad \text{s.t.}\quad f_i(x)\leq 0\ (i=1,\dots,m) $$ とし、ラグランジアン $L(x,\lambda)=f_0(x)+\sum_i\lambda_i f_i(x)$、双対関数 $d(\lambda)=\inf_x L(x,\lambda)$ を定めます($\lambda_i\geq0$)。

弱双対の証明(全行). $\lambda\geq0$ を固定し、$x$ を主問題の任意の 実行可能点($f_i(x)\leq0$ をすべて満たす点)とします。$\lambda_i\geq0$ かつ $f_i(x)\leq0$ なので各項 $\lambda_i f_i(x)\leq0$、よって $$ \sum_i \lambda_i f_i(x) \leq 0 \;\;\Longrightarrow\;\; L(x,\lambda) = f_0(x) + \sum_i\lambda_i f_i(x) \leq f_0(x). $$ 左辺を $x$ について下限を取ると、双対関数の定義より $d(\lambda)=\inf_{x’}L(x’,\lambda)\leq L(x,\lambda)$ なので、上を合わせて $$ d(\lambda) \leq L(x,\lambda) \leq f_0(x). $$ この不等式は すべての実行可能 $x$ で成り立つので、右辺の下限を取っても保たれます: $$ d(\lambda) \leq \inf_{x:\,\text{feasible}} f_0(x) = p^\star. $$ $\lambda\geq0$ は任意だったので $\lambda$ について上限を取って $$ d^\star := \sup_{\lambda\geq0} d(\lambda) \;\leq\; p^\star. $$ これが 弱双対 で、凸非凸を問わず常に成り立ちます。差 $p^\star – d^\star\geq0$ が 双対ギャップ です。本文の図でオレンジに塗った隙間がこれです。

共役との接続. 例えば $f_0(x)=f(x)$、制約が線形 $Ax\leq b$ の場合、$d(\lambda)=\inf_x\big(f(x)+\lambda^\top(Ax-b)\big)=-\lambda^\top b-\sup_x\big(\langle -A^\top\lambda, x\rangle – f(x)\big)=-\lambda^\top b – f^*(-A^\top\lambda)$ となり、双対関数が 共役 $f^*$ そのもの で書けます。$\inf_x L$ の操作が共役 $\sup_x(\langle\cdot,x\rangle-f)$ と符号違いで同型、という本文の記述の中身です。

強双対(Slater条件)の主張. 主問題が ($f_0,\dots,f_m$ が凸)で、かつ Slater条件——実行可能領域の相対内部に厳密内点 $\tilde x$ が存在し $f_i(\tilde x)<0$(非アフィン制約について)——を満たすなら、双対ギャップは $0$ になり強双対 $$ p^\star = d^\star $$ が成立し、しかも双対最適 $\lambda^\star$ が達成される。

強双対の骨子(簡潔に). 集合 $\mathcal{A}=\{(u,t): \exists x,\ f_i(x)\leq u_i,\ f_0(x)\leq t\}$ は凸($f_i$ が凸ゆえ)で、点 $(0,p^\star)$ はその境界上にある。分離定理(証明2と同じ道具)でこの境界を支持する超平面が取れ、その法線が双対最適 $\lambda^\star\geq0$ を与える。Slater 条件は、この支持超平面が 鉛直でない($t$ 成分の係数が $0$ にならない)ことを保証し、これが $\lambda^\star$ を有限・正則にしてギャップ $0$ を導きます。詳細は Boyd–Vandenberghe 5.3.2 を参照してください。

強双対が成り立つと、解きにくい inf 形の主問題を、解きやすい sup 形の双対問題に 同値に 置き換えられます。f-GAN・最適輸送・WGAN が inf を sup に裏返してニューラルネットで最大化できるのは、この強双対(および証明4の変分表現)が支えているからです。

これで本文で「成り立ちます」と述べた主張のすべて——Fenchel-Young の等号条件、双共役 $f^{**}=f$、3つの共役計算、変分表現、Donsker–Varadhan、弱・強双対——が一行も飛ばさずに証明されました。

まとめ

本記事では、凸双対と Fenchel共役を、その応用までひと続きに解説しました。

  • Fenchel共役 $f^*(y)=\sup_x(\langle x,y\rangle – f(x))$ は、関数を「傾きと支持直線の切片」で記述し直す変換である
  • Fenchel-Young不等式 $f(x)+f^*(y)\geq\langle x,y\rangle$ は無条件で成り立ち、等号は $y\in\partial f(x)$ のときだけ成立する
  • 閉凸関数なら 双共役 $f^{**}=f$。非凸なら凸包になる(凸緩和の正体)
  • Lagrange双対 は共役の制約つき版で、Slater条件下では強双対(双対ギャップ 0)が成り立つ
  • f-ダイバージェンスの変分表現 から、f-GAN(判別器=密度比推定)と MINE(相互情報量の下界推定)が同じ仕掛けで導かれる
  • 最適輸送の Kantorovich 双対($c$-変換)も、変分推論の ELBO も、同じ凸双対の家系に属する

論文の「sup を取る変分表現」を見たら、「inf を共役で裏返したもの」「witness で双対側の量を推定している」と読み替えられるようになったはずです。これで f-GAN・WGAN・MINE・最適輸送・VAE が、別々の手法ではなく、一本の幹から伸びた枝として見えてきます。

次のステップとして、以下の記事も参考にしてください。