はじめに
私の所属する生物測定学研究室では、PRML(パターン認識と機械学習)の輪読を行なっています。
今回、私が演習10.3の解説を担当することになったので、(他の方の記事を大いに参考にしながら)解答をまとめようと思います。
演習10.3
カルバック-ライブラーダイバージェンス$KL(p||q)$は以下の形式で書ける。
\leqalignno{
&KL(p\|q) = -\int p(\mathbf{Z}) \left[\sum_{i=1}^M \ln q_i(Z_i)\right] \,d\mathbf{Z} + C \tag{10.16}
}
ラグランジュ乗数法を用いて、$KL(p||q)$を因子の一つ$q_i(Z_i)$について他の因子を固定して最小化すると、下式(10.17)が得られることを示せ。
\leqalignno{
&q_j^*(\mathbf{Z}_j) = \int p(\mathbf{Z}) \prod_{i \ne j} d\mathbf{Z}_i = p(\mathbf{Z}_j) \tag{10.17}
}
解答
\leqalignno{
q(\mathbf{Z}) = \prod_{i=1}^{M} q_i(\mathbf{Z}_i) \tag{10.5}
}
この近似から、$q(Z)$は排反なグループに分割されていると言える。q(Z)は分布なので、その総和は1であり、
\leqalignno{
&\int q_j\,dZ_j - 1 = 0
}
が成り立つとわかる。
この条件を使い、KLの極値を求めるためのラグランジュ関数は
\leqalignno{
L = \mathrm{KL}(p \,\|\, q) + \lambda \left( \int q_j \, d\mathbf{Z}_j - 1 \right)
}
となる。これを使って式(10.16)を最小化するが、(10.16)に積分が含まれているため、変分法を用いる。
変分法について
筆者が変分法を何も知らなかったので少し調べた内容をまとめます。
微分法では変数$x$を微小変化させると変数$y$にどれくらいの感度があるのかを見ますが、
変分法では関数$y$を微小変化させると関数$I$にどれくらいの感度があるのかを見ます。
この関数$I$は汎関数と呼ばれ、関数$y(x)$を積分することで得られます。
\leqalignno{
I(y) \equiv \int_a^b f(x, y, z)\, dx \equiv \int_a^b f(x, y(x), y'(x))\, dx
}
$I(x)$を最小にするような関数$y(x)$を考える、このような問題を変分問題と呼ぶそうです。
変分法を用いるためには、
\leqalignno{
L(q_j) = \int G\left(q_j(z_j), q'_j(z_j), z_j\right) \, dz_j
}
の形で汎関数を設定しなくてはいけない。そこで、式(10.16)を変形し、ラグランジュ関数を上の汎関数の形にする。
$\int ・dz_i$の形にするために$p(Z)$を排反なグループの積に分割して、$i=j$の成分だけを残す。(他の成分は定数項に入れる。)
\leqalignno{
\begin{align*}
\mathrm{KL}(P \| Q)
&= - \int p(\mathbf{z}) \left[ \sum_{i=1}^{I} \ln q_i(z_i) \right] d\mathbf{z} + \text{const} \\
&= - \int p(\mathbf{z}) \ln q_j(z_j) \, d\mathbf{z} + \text{const} \\
&= - \int p(z_j) \ln q_j(z_j) \, dz_j + \text{const}
\end{align*}
}
なので、ラグランジュ関数は下記のように書ける。デルタ関数(積分したら1になる)を使って定数項も積分の中に入れることで、ラグランジュ関数を$q_j(z_j)$の汎関数の形にすることができる。
\leqalignno{
\begin{align*}
L &= - \int p(z_j) \ln q_j(z_j) \, dz_j
+ \lambda \left( \int q_j(z_j) \, dz_j - 1 \right) + \text{const} \\
&= \int \left[ -p(z_j) \ln q_j(z_j) + \lambda q_j(z_j) - (\lambda - \text{const}) \delta(z_j) \right] dz_j
\end{align*}
}
変分法における最適条件は下式で表される。
\leqalignno{
\frac{\delta L}{\delta q_j(z_j)} = 0
}
実際に微分を行い、
\leqalignno{
\frac{\delta}{\delta q_j(z_j)} \left( -p(z_j) \ln q_j(z_j) + \lambda q_j(z_j) \right)
= -\frac{p(z_j)}{q_j(z_j)} + \lambda = 0
}
よって、
\leqalignno{
q_j(z_j) = \frac{1}{\lambda} p(z_j)
}
ここで、以下の二つの正規化制約から、
\leqalignno{
\int p(z_j) \, dz_j = 1
}
\leqalignno{
\int q(z_j) \, dz_j = 1
}
以下の式が導かれ、$λ=1$とわかる。
\leqalignno{
\int q_j(z_j) \, dz_j = \int \frac{1}{\lambda} p(z_j) \, dz_j
= \frac{1}{\lambda} \int p(z_j) \, dz_j = \frac{1}{\lambda}
}
よって、
\leqalignno{
q_j(z_j) = \frac{1}{\lambda} p(z_j) = p(z_j)
}
さいごに
下記の記事を参考にさせていただきました。
ありがとうございました。
https://tips-memo.com/prml-10-3
https://sioramen.sub.jp/prml_wiki/doku.php/prml%E6%BC%94%E7%BF%9210.3