確率的勾配降下法を使用した混合ガウスモデルの近似
私は、確率的勾配降下法を使用してガウス混合モデルに適合するオンラインカテゴリ学習モデルに取り組んでいます。このモデルは、Toscano&McMurray(2010)で使用されているオンライン学習モデルに基づいています。 勾配降下法はカテゴリーの平均と頻度/混合確率を推定するのにかなりうまく機能しているようですが、混合成分の共分散の推定に問題があります。勾配降下法の更新に使用してきた偏微分は、Petersen&Pedersen(2008)(p。 で始まります p (x )= ∑kρkNバツ(μk、Σk)p(バツ)=ΣkρkNバツ(μk、Σk)p(x) = \sum _k \rho_k \mathcal N_x(\mu_k,\Sigma_k) ピーターセン&ペダーセンは、共分散行列に関して偏微分を与えるとしてΣΣ\Sigma δlnp (x )δΣj= ρjNバツ(μj、Σj)ΣkρkNバツ(μk、Σk)12[ - Σ− 1j+ Σ− 1j(X - μj)(X - μj)TΣ−1j]δlnp(バツ)δΣj=ρjNバツ(μj、Σj)ΣkρkNバツ(μk、Σk)12[−Σj−1+Σj−1(バツ−μj)(バツ−μj)TΣj−1]\frac{\delta \ln p(x)}{\delta \Sigma_j}=\frac{\rho_j\mathcal N_x(\mu_j,\Sigma_j)}{\sum _k \rho_k \mathcal N_x(\mu_k,\Sigma_k)}\frac{1}{2}[-\Sigma_j^{-1}+\Sigma_j^{-1}(x-\mu_j)(x-\mu_j)^T\Sigma_j^{-1}] Pythonで実装しているので、各の勾配降下ステップは次のです(これはわずかな簡略化であり、すべてのコンポーネントのは更新を実行する前に計算されます)。 Δ ΣΣjΣj\Sigma_jΔ ΣΔΣ\Delta\Sigma j.sigma += learning_rate*(G(x)/M(x))*0.5*(-inv(j.sigma) + inv(j.sigma).dot((x-j.mu).dot((x-j.mu).transpose())).dot(inv(j.sigma))) ここで、jは混合の番目の成分を表すオブジェクトであり、j.sigmaとj.muはその成分の平均と分散です。G(x)/ M(x)は、を計算するいくつかのコードのρ jのNは、 xは(μ J、Σ jは)jjjρjNバツ(μj、Σj)ΣkρkNバツ(μk、Σk)ρjNバツ(μj、Σj)ΣkρkNバツ(μk、Σk)\frac{\rho_j\mathcal …