GMMのMstepの更新式について

# はじめに
[NEC デジタルテクノロジー開発研究所 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/nec-dt-labs) 12日目の記事です。
入社当時に計算した混合ガウス分布の計算について当時のノートを掘り起こして記事にします。
# 本掲載について
本記事ではクラスタリングアルゴリズムの一種である混合ガウス分布のMstepで用いられる対数尤度関数を最大化する平均${\boldsymbol \mu}_k$、分散共分散行列${\boldsymbol \Sigma}_k$、混合係数$\pi_k$が以下の式で与えられることを確認します。データ数をN、次元をD、クラスター数をKとします。
```math
\begin{align}
{\boldsymbol \mu}_k &= \dfrac{1}{N_k}\sum_{n=1}^{N}r_{nk}{\boldsymbol x}_k\tag{1}\\
{\boldsymbol \Sigma}_k&=\dfrac{1}{N_k}\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T\tag{2}\\
\pi_k &=\dfrac{N_k }{N}\tag{3}
\end{align}
```
対数尤度関数Lと負担率$r_{nk}$は以下の式の形とします。
```math
\begin{align}
L &= \sum_{n=1}^{N} \mathrm{ln}\Bigl(\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)\Bigr)\tag{4}\\
r_{nk} &= \dfrac{\pi_k {\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}\tag{5}
\end{align}
```
(1)(2)(3)に出てくる$N_k$は各クラスターにあるデータ数の期待値で
```math
N_k = \sum_{n=1}^{N}r_{nk}
```
また混合係数$\pi_k$についてkについて和を取ると
```math
\sum_{n=1}^{N}\pi_k=1
```
となります。
# 平均の計算
対数尤度関数を最大にする平均${\boldsymbol \mu}_k$は
```math
\begin{align}
\dfrac{\partial L}{\partial \boldsymbol{\mu}_k} =0\tag{6}
 \end{align}
```
を満たします。左辺を具体的に計算すると
```math
\begin{align}
\dfrac{\partial L}{\partial \boldsymbol{\mu}_k} &=\dfrac{\partial L}{\partial \boldsymbol{\mu}_k}\sum_{n=1}^{N} \mathrm{ln}\Bigl(\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)\Bigr)\\
 &=\sum_{n=1}^{N}\dfrac{\dfrac{\partial L}{\partial \boldsymbol{\mu}_k} \sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}\\
&=\sum_{n=1}^{N}\dfrac{\pi_k \dfrac{\partial}{\partial \boldsymbol{\mu}_k}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}\tag{7}
 \end{align}
```
となります。分子に注目すると
```math
 \begin{align}
\dfrac{\partial}{\partial \boldsymbol{\mu}_k}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k) &= \dfrac{\partial}{\partial \boldsymbol{\mu}_k}\dfrac{\exp \Bigl(-{\tiny \dfrac{1}{2}}( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr)}{\sqrt{(2\pi)^{K}|{\boldsymbol \Sigma}_k|}}\\
&= \dfrac{1}{\sqrt{(2\pi)^{K}|{\boldsymbol \Sigma}_k|}}\dfrac{\partial}{\partial \boldsymbol{\mu}_k}\exp \Bigl(-{\tiny \dfrac{1}{2}}( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr)\\
&= -\dfrac{1}{2}\dfrac{\exp \Bigl(-{\tiny \dfrac{1}{2}}( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr)}{\sqrt{(2\pi)^{K}|{\boldsymbol \Sigma}_k|}}\dfrac{\partial}{\partial \boldsymbol{\mu}_k} \Bigl(( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr)\\
&= -\dfrac{1}{2}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)\dfrac{\partial}{\partial \boldsymbol{\mu}_k}\Bigl(( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr)\\
ここの計算は長いので{\mathrm {Appendix}.1}に書きます。\\
&= -\dfrac{1}{2}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)(-2{\boldsymbol  \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k))\\
&= {\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k){\boldsymbol  \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\tag{8}
\end{align}
```
(7)(8)より
```math
\begin{align}
\dfrac{\partial L}{\partial \boldsymbol{\mu}_k}&=\sum_{n=1}^{N}\dfrac{\pi_k \dfrac{\partial}{\partial \boldsymbol{\mu}_k}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}\\
&=\sum_{n=1}^{N}\dfrac{\pi_k {\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k){\boldsymbol  \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}\\
&={\boldsymbol  \Sigma_k}^{-1}\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\tag{9}
\end{align}
```
途中で負担率の式(5)を用いた。
(6)(9)より
```math
\begin{align}
{\boldsymbol  \Sigma_k}^{-1}\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)=0
\end{align}
```
左から${\boldsymbol  \Sigma_k}$をかけて
```math
\begin{align}
\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)=0
\end{align}
```
```math
\begin{align}
\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)&=\sum_{n=1}^{N}r_{nk}{\boldsymbol x}_k-{\boldsymbol \mu}_k\sum_{n=1}^{N}r_{nk}\\
&=0
\end{align}
```
```math
\begin{align}
{\boldsymbol \mu}_k = \dfrac{\sum_{n=1}^{N}r_{nk}{\boldsymbol x}_k}{\sum_{n=1}^{N}r_{nk}}
= \dfrac{1}{N_k}\sum_{n=1}^{N}r_{nk}{\boldsymbol x}_k
\end{align}
```
となり平均の式の形(1)を得る。
# 分散共分散行列
対数尤度関数を最大化する${\boldsymbol \Sigma}_k $は${\boldsymbol \mu}_k $と同様に
```math
\begin{align}
\dfrac{\partial L}{\partial {\boldsymbol \Sigma}_k} =0\tag{10}
 \end{align}
```
を満たします。左辺を具体的に計算すると
```math
\begin{align}
\dfrac{\partial L}{\partial \boldsymbol{\Sigma}_k} &=\dfrac{\partial L}{\partial \boldsymbol{\Sigma}_k}\sum_{n=1}^{N} \mathrm{ln}\Bigl(\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)\Bigr)\\
 &=\sum_{n=1}^{N}\dfrac{\dfrac{\partial L}{\partial \boldsymbol{\Sigma}_k} \sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}\\
&=\sum_{n=1}^{N}\dfrac{\pi_k \dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}\tag{11}
 \end{align}
```
分子に注目して
```math
 \begin{align}
\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k) &=\dfrac{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k) \\
&={\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)\dfrac{ {{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}^{'}}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)} \\
&={\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\mathrm{ln}({{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}) \\
&={{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\mathrm{ln}  \Bigl(\dfrac{\exp (-{\tiny{\dfrac{1}{2}}}( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) )}{\sqrt{(2\pi)^{K}|{\boldsymbol \Sigma}_k|}}\Bigr)\\
&={{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k} \Bigl({\mathrm {ln}}\exp\Bigl(-{\tiny{\dfrac{1}{2}}}( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr)-{\mathrm {ln}}(\sqrt{\tiny{(2\pi)^{K}|{\boldsymbol \Sigma}_k|}})\Bigr)\\
&={{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k} \Bigl(-{\tiny{\dfrac{1}{2}}}( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) )-{\mathrm {ln}}(\sqrt{\tiny{(2\pi)^{K}|{\boldsymbol \Sigma}_k|}})\Bigr)\\
&={{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k} \Bigl(-{\tiny{\dfrac{1}{2}}}( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) )-{\tiny\dfrac{1}{2}}{\mathrm {ln}}({(2\pi)^{K}|{\boldsymbol \Sigma}_k|})\Bigr)\\
&=-\dfrac{1}{2}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k} \Bigl(( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) )+{\mathrm {ln}}({(2\pi)^{K}|{\boldsymbol \Sigma}_k|})\Bigr)\\
&=-\dfrac{1}{2}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\Bigl(\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\Bigr)+\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl({\mathrm {ln}}({(2\pi)^{K}|{\boldsymbol \Sigma}_k|})\Bigr)\Bigr)\\
&=-\dfrac{1}{2}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\Bigl(\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\Bigr)+\dfrac{\partial }{\partial \boldsymbol{\Sigma}_k}\Bigl({\mathrm {ln}}({(2\pi)^{K}|{\boldsymbol \Sigma}_k|})\Bigr)\Bigr)\\
&=-\dfrac{1}{2}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\Bigl(\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\Bigr)+\dfrac{\partial }{\partial \boldsymbol{\Sigma}_k}\Bigl({\mathrm {ln}}({(2\pi)^{K}})+{\mathrm {ln}}(|{\boldsymbol \Sigma}_k|)\Bigr)\Bigr)\\
&=-\dfrac{1}{2}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\Bigl(\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\Bigr)+\dfrac{\partial }{\partial \boldsymbol{\Sigma}_k}\Bigl({\mathrm {ln}}(|{\boldsymbol \Sigma}_k|)\Bigr)\Bigr)\\
&=-\dfrac{1}{2}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}\Bigl(\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\Bigr)+\dfrac{1}{|{\boldsymbol \Sigma}_k|}\dfrac{\partial |{\boldsymbol \Sigma}_k|}{\partial \boldsymbol{\Sigma}_k}\Bigr)\\
&ここの計算は長いので\mathrm {Appendix2}、\mathrm {Appendix3}で説明します。\\
&=-\dfrac{1}{2}{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}(-{\boldsymbol \Sigma}_k^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}_k^{-1}+({\boldsymbol \Sigma}_k^{T})^{-1})\tag{12}
\end{align}
```
(11)(12)から
```math
\begin{align}
\dfrac{\partial L}{\partial \boldsymbol{\Sigma}_k} &=\sum_{n=1}^{N}\dfrac{\pi_k {\tiny \dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}}{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}\\
&=-\dfrac{1}{2}\sum_{n=1}^{N}\dfrac{\pi_k{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}(-{\boldsymbol \Sigma}_k^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}_k^{-1}+({\boldsymbol \Sigma}_k^{T})^{-1})\\
&=-\dfrac{1}{2}\sum_{n=1}^{N}r_{nk}(-{\boldsymbol \Sigma}_k^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}_k^{-1}+({\boldsymbol \Sigma}_k^{T})^{-1})\\
&=-\dfrac{1}{2}\sum_{n=1}^{N}r_{nk}(-{\boldsymbol \Sigma}_k^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}_k^{-1}+{\boldsymbol \Sigma}_k^{-1})\\
&=-\dfrac{1}{2}{\boldsymbol \Sigma}_k^{-1}\sum_{n=1}^{N}r_{nk}(-({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma}_k^{-1}+{\boldsymbol I})\tag{13}
 \end{align}
```
(13)について-2倍して左右から${\boldsymbol \Sigma}_k$をかけて
```math
\begin{align}
\sum_{n=1}^{N}r_{nk}(-({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T+{\boldsymbol \Sigma}_k)=0
 \end{align}
```
となる。
これを満たす${\boldsymbol \Sigma}_k$が大数尤度関数を最大にする${\boldsymbol \Sigma}_k$である。変形して
```math
\begin{align}
\sum_{n=1}^{N}r_{nk}{\boldsymbol \Sigma}_k&=\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T\\
 {\boldsymbol \Sigma}_k\sum_{n=1}^{N}r_{nk}&=\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T\\
\sum_{n=1}^{N}r_{nk}&=N_kであるから\\
 {\boldsymbol \Sigma}_kN_k&=\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T
 \end{align}
```
よって
```math
\begin{align}
 {\boldsymbol \Sigma}_k&=\dfrac{1}{N_k}\sum_{n=1}^{N}r_{nk}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^T
\end{align}
```
(2)を得ます。
# 混合係数
対数尤度関数Lを最大化する${\pi}_k$を求めます。
```math
\sum_{n=1}^{N}\pi_k=1
```
なのでラグランジュの未定乗数を$\lambda$として
```math
\begin{align}
G = L + \lambda\Bigl(\sum_{k=1}^{K}\pi_k-1\Bigr)
\end{align}
```
両辺を$\pi_k$で微分して
```math
\begin{align}
\dfrac{\partial }{\partial \pi_k} G &=\dfrac{\partial }{\partial \pi_k} L + \dfrac{\partial }{\partial \pi_k}\lambda\Bigl(\sum_{k=1}^{K}\pi_k-1\Bigr)\\
&=\dfrac{\partial }{\partial \pi_k} L + \dfrac{\partial }{\partial \pi_k}\lambda\Bigl(\sum_{k=1}^{K}\pi_k-1\Bigr)\\
&=\dfrac{\partial }{\partial \pi_k} \sum_{n=1}^{N} \mathrm{ln}\Bigl(\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)\Bigr) + \dfrac{\partial }{\partial \pi_k}\lambda\Bigl(\sum_{k=1}^{K}\pi_k-1\Bigr)\\
&= \sum_{n=1}^{N}\dfrac{{\tiny{\dfrac{\partial L}{\partial \pi_k}}}\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)} + \lambda\\
&分子の{\tiny{\dfrac{\partial L}{\partial \pi_k}}}\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)について展開して微分すると残る項は\\
&{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)だけなので\\
&=\sum_{n=1}^{N}\dfrac{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)} + \lambda\\
&=\dfrac{\pi_k}{\pi_k}\sum_{n=1}^{N}\dfrac{{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_k,{\boldsymbol  \Sigma}_k)}{\sum_{j=1}^{K}\pi_j{\mathcal{N}}({\boldsymbol x}_n|{\boldsymbol \mu}_j,{\boldsymbol  \Sigma}_j)} + \lambda\\
&r_{nk}の更新式(5)より\\
&=\dfrac{1}{\pi_k}\sum_{n=1}^{N}r_{nk} + \lambda\\
&=\dfrac{N_k}{\pi_k} + \lambda
\end{align}
```
Lが最大のとき
```math
\begin{align}
\dfrac{N_k}{\pi_k} + \lambda=0\\
N_k+ \lambda\pi_k =0\tag{14}
\end{align}
```
クラスターで総和を取れば
```math
\begin{align}
\sum_{k=1}^{K}\dfrac{N_k}{\pi_k} + \sum_{k=1}^{K}\lambda=0\\
\sum_{k=1}^{K}N_k + \lambda\sum_{k=1}^{K}\pi_k=0\\
N + \lambda =0\\
\lambda =-N\tag{15}
\end{align}
```
(14)(15)から
```math
\pi_k =\dfrac{N_k }{N}
```
と(3)を得る。
# 結び
師走に書いた記事ということもありいくつかtypoがあると思います。見つけた場合はコメントで教えていただけると幸いです。
# Appendix1
本節では$\dfrac{\partial}{\partial \boldsymbol{\mu}_k}\Bigl(( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr)$の計算を行う。そのための準備として
まず${\boldsymbol  \Sigma}_k$を
```math
\begin{align}
{\boldsymbol  \Sigma}_k=\begin{pmatrix}
\sigma_{11} & \cdots & \sigma_{1i} & \cdots & \sigma_{1D}\\
\vdots & \ddots & & & \vdots \\
\sigma_{i1} & & \sigma_{ii} & & \sigma_{iD} \\
\vdots & & & \ddots & \vdots \\
\sigma_{D1} & \cdots & \sigma_{Di} & \cdots & \sigma_{DD}
\end{pmatrix}
\end{align}
```
とする。
```math
${\boldsymbol  \Sigma}_k^{-1}$は
\begin{align}
{\boldsymbol  \Sigma}_k^{-1}=\begin{pmatrix}
\overline\sigma_{11} & \cdots & \overline\sigma_{1i} & \cdots & \overline\sigma_{1D}\\
\vdots & \ddots & & & \vdots \\
\overline\sigma_{i1} & & \overline\sigma_{ii} & & \overline\sigma_{iD} \\
\vdots & & & \ddots & \vdots \\
\overline\sigma_{D1} & \cdots & \overline\sigma_{Di} & \cdots & \overline\sigma_{DD}
\end{pmatrix}
\end{align}
```
となる。$( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma}^{-1}$を具体的に書くと
```math
\begin{align}
( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma}^{-1} = \Bigl(\sum_{i=1}^{D}\overline\sigma_{i1}(x_{ni}-\mu_{ki}),\cdots,\sum_{i=1}^{D}\overline\sigma_{iD}(x_{ni}-\mu_{ki})
\Bigr)
\end{align}
```
```math
\begin{align}
( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma}^{-1}( {\boldsymbol x}_k-{\boldsymbol \mu}_k) = \sum_{i=1}^{D}\sum_{j=1}^{D}\overline\sigma_{ij}(x_{ni}-\mu_{ki})(x_{nj}-\mu_{kj})
\end{align}
```
ここで計算の説明のため一度$f =( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)$とする。
```math
\begin{align}
\dfrac{\partial}{\partial \boldsymbol{\mu}_k}\Bigl(( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr) = \Bigl(\dfrac{\partial f}{\partial \mu_{k1}},\cdots,\dfrac{\partial f}{\partial \mu_{kl}},\cdots,\dfrac{\partial f}{\partial \mu_{kD}}\Bigr)
\end{align}
```
```math
\begin{align}
\dfrac{\partial f}{\partial \mu_{kl}} &= \dfrac{\partial }{\partial \mu_{kl}}\Bigl(\sum_{i=1}^{D}\sum_{j=1}^{D}\overline\sigma_{ij}(x_{ni}-\mu_{ki})(x_{nj}-\mu_{kj})\Bigr)\\
&= \sum_{i=1}^{D}\sum_{j=1}^{D}\overline\sigma_{ij}(x_{ni}-\mu_{ki})\dfrac{\partial }{\partial \mu_{kl}}(x_{nj}-\mu_{kj})+\sum_{i=1}^{D}\sum_{j=1}^{D}\overline\sigma_{ij}(x_{nj}-\mu_{kj})\dfrac{\partial }{\partial \mu_{kl}}(x_{ni}-\mu_{ki})\\
&= \sum_{i=1}^{D}\overline\sigma_{il}(x_{ni}-\mu_{ki})\dfrac{\partial }{\partial \mu_{kl}}(x_{nl}-\mu_{kl})+\sum_{j=1}^{D}\overline\sigma_{lj}(x_{nj}-\mu_{kj})\dfrac{\partial }{\partial \mu_{kl}}(x_{nl}-\mu_{kl})\\
&= -\sum_{i=1}^{D}\overline\sigma_{il}(x_{ni}-\mu_{ki})-\sum_{j=1}^{D}\overline\sigma_{lj}(x_{nj}-\mu_{kj})\\
&分散共分散行列は対称行列で\overline\sigma_{il}=\overline\sigma_{li}より\\
&= -\sum_{i=1}^{D}\overline\sigma_{il}(x_{ni}-\mu_{ki})-\sum_{j=1}^{D}\overline\sigma_{jl}(x_{nj}-\mu_{kj})\\
&= -2\sum_{i=1}^{D}\overline\sigma_{il}(x_{ni}-\mu_{ki})
\end{align}
```
よって
```math
\begin{align}
\dfrac{\partial}{\partial \boldsymbol{\mu}_k}\Bigl(( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol  \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k) \Bigr) &= \Bigl(\dfrac{\partial f}{\partial \mu_{k1}},\cdots,\dfrac{\partial f}{\partial \mu_{kl}},\cdots,\dfrac{\partial f}{\partial \mu_{kD}}\Bigr)\\
&= \Bigl(-2\sum_{i=1}^{D}\overline\sigma_{i1}(x_{ni}-\mu_{ki}),\cdots,-2\sum_{i=1}^{D}\overline\sigma_{iD}(x_{ni}-\mu_{ki})\Bigr)\\
&=-2{\boldsymbol  \Sigma}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)
\end{align}
```
# Appendix2
右辺第二項の計算
Appendix1と同様に${\boldsymbol  \Sigma}_k$を
```math
\begin{align}
{\boldsymbol  \Sigma}_k=\begin{pmatrix}
\sigma_{11} & \cdots & \sigma_{1i} & \cdots & \sigma_{1D}\\
\vdots & \ddots & & & \vdots \\
\sigma_{i1} & & \sigma_{ii} & & \sigma_{iD} \\
\vdots & & & \ddots & \vdots \\
\sigma_{D1} & \cdots & \sigma_{Di} & \cdots & \sigma_{DD}
\end{pmatrix}
\end{align} 
```
とする。
行列式$|{\boldsymbol  \Sigma}_k|$の${\boldsymbol  \Sigma}_k$による微分は
```math
\begin{align}
\dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial {\boldsymbol  \Sigma}_k}=\begin{pmatrix}
\dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial \overline\sigma_{11}} & \cdots & \dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial\overline\sigma_{1i}} & \cdots & \dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial\overline\sigma_{1D}}\\
\vdots & \ddots & & & \vdots \\
\dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial\overline\sigma_{i1}} & & \dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial\overline\sigma_{ii}} & & \dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial\overline\sigma_{iD}} \\
\vdots & & & \ddots & \vdots \\
\dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial\overline\sigma_{D1}} & \cdots & \dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial\overline\sigma_{Di}} & \cdots & \dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial\overline\sigma_{DD}}\tag{16}
\end{pmatrix}
\end{align}
```
となる。
${\boldsymbol \Sigma}_k$の(i,j)成分における余因子を${\boldsymbol \Sigma}_{k,ij}$として
```math
\begin{align}
\dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial {\boldsymbol  \Sigma}_k}=
\begin{pmatrix}
{\boldsymbol  \Sigma}_{k,11} & \cdots & {\boldsymbol  \Sigma}_{k,i1} & \cdots & {\boldsymbol  \Sigma}_{k,D1}\\
\vdots & \ddots & & & \vdots \\
{\boldsymbol  \Sigma}_{k,i1} & & {\boldsymbol  \Sigma}_{k,ii} & & {\boldsymbol  \Sigma}_{k,Di} \\
\vdots & & & \ddots & \vdots \\
{\boldsymbol  \Sigma}_{k,D1} & \cdots & {\boldsymbol  \Sigma}_{k,Di} & \cdots & {\boldsymbol  \Sigma}_{k,DD}\tag{17}
\end{pmatrix}
\end{align} 
```
${\boldsymbol  \Sigma}_k$の因子行列を$\tilde{{\boldsymbol  \Sigma}}_k$とすると余因子行列の定義から
```math
\begin{align} 
\tilde{{\boldsymbol  \Sigma}}_k=\begin{pmatrix}
{\boldsymbol  \Sigma}_{k,11} & \cdots & {\boldsymbol  \Sigma}_{k,1i} & \cdots & {\boldsymbol  \Sigma}_{k,1D}\\
\vdots & \ddots & & & \vdots \\
{\boldsymbol  \Sigma}_{k,1i} & & {\boldsymbol  \Sigma}_{k,ii} & & {\boldsymbol  \Sigma}_{k,iD} \\
\vdots & & & \ddots & \vdots \\
{\boldsymbol  \Sigma}_{k,1D} & \cdots & {\boldsymbol  \Sigma}_{k,iD} & \cdots & {\boldsymbol  \Sigma}_{k,DD}
\end{pmatrix}
\end{align}
```
であるから(17)は余因子行列の転置行列を用いて
```math
\begin{align} 
\dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial {\boldsymbol  \Sigma}_k}={\tilde{{\boldsymbol  \Sigma}}_k}^{T}
\end{align}  
```                                                                         

逆行列は余因子行列と行列式を用いて
```math
\begin{align}
{\boldsymbol  \Sigma}_k^{-1}=\dfrac{\tilde{{\boldsymbol  \Sigma}}_k}{|{\boldsymbol  \Sigma}_k|}
\end{align}                                                                           
```
で表されるので
```math
\begin{align}
\dfrac{\partial |{\boldsymbol  \Sigma}_k|}{\partial {\boldsymbol  \Sigma}_k}&=(|{\boldsymbol  \Sigma}_k|{\boldsymbol  \Sigma}_k^{-1})^{T}\\
&=|{\boldsymbol  \Sigma}_k|({\boldsymbol  \Sigma}_k^{-1})^{T}
\end{align}
```
と書ける。
# Appendix3
右辺第1項の計算
```math
\begin{align}
\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl(( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\Bigr)\\
\end{align}
```
二次形式と行列のトレースから
```math
\begin{align}
{\boldsymbol x}^{T}A{\boldsymbol x}={\mathrm {Tr}}(A{\boldsymbol x}{\boldsymbol x}^{T})
\end{align}
```
であるから
```math
\begin{align}
( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)&={\mathrm {Tr}}({\boldsymbol \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^{T})\\
\end{align}
```
と変形できる。
よって
```math
\begin{align}
\dfrac{\partial}{\partial A}{\mathrm {Tr}}(A^{-1}B) = -(A^{-1}BA^{-1})^{T}
\end{align}
```
```math
\begin{align}
\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl(( {\boldsymbol x}_k-{\boldsymbol \mu}_k)^T{\boldsymbol \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)\Bigr)&=\dfrac{\partial}{\partial \boldsymbol{\Sigma}_k}\Bigl({\mathrm {Tr}}({\boldsymbol \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^{T})\Bigr)\\
&=-({\boldsymbol \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^{T}{\boldsymbol \Sigma_k}^{-1})^{T}\\
&=-({\boldsymbol \Sigma_k}^{-1}({\boldsymbol x}_n-{\boldsymbol \mu}_k)({\boldsymbol x}_n-{\boldsymbol \mu}_k)^{T}{\boldsymbol \Sigma_k}^{-1})
\end{align}
```
### 参考文献
- [EMアルゴリズム徹底解説](https://qiita.com/kenmatsu4/items/59ea3e5dfa3d4c161efb)
- [パターン認識と機械学習 下 (ベイズ理論による統計的予測)](https://www.amazon.co.jp/dp/4621061240/ )
- [パターン認識と機械学習の学習―ベイズ理論に負けないための数学 ](https://www.amazon.co.jp/dp/4873100933/ )