<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>数学Python Tech</title>
	<atom:link href="https://tech.nkhn37.net/category/python/data-analysis/%E6%95%B0%E5%AD%A6/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Sun, 11 Jan 2026 07:16:25 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>数学Python Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>L1正則化とL2正則化の概要と効果</title>
		<link>https://tech.nkhn37.net/l1-l2-regularization/</link>
					<comments>https://tech.nkhn37.net/l1-l2-regularization/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Wed, 21 Sep 2022 20:00:00 +0000</pubDate>
				<category><![CDATA[数学]]></category>
		<category><![CDATA[L1正則化]]></category>
		<category><![CDATA[L2正則化]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=4965</guid>

					<description><![CDATA[機械学習の分野において汎化誤差を減少させる方法の 1 つである L1 正則化と L2 正則化について概要と効果についてまとめます。 過学習と正則化 機械学習では、モデルを決めたうえで学習データに対して学習を行い、テストデ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>機械学習の分野において汎化誤差を減少させる方法の 1 つである <span class="jinr-d--text-color d--marker1 d--bold">L1 正則化と L2 正則化</span>について概要と効果についてまとめます。</p>



<h2 class="wp-block-heading jinr-heading d--bold">過学習と正則化</h2>



<p>機械学習では、モデルを決めたうえで学習データに対して学習を行い、テストデータを使ってモデルの評価をするということを行います。</p>



<p>テストデータは、学習時には未知のデータであり、このような未知のデータに対する誤差を小さくできるようなモデルが望ましいです。未知のデータに対してモデルを適用できるようにすることを<span class="jinr-d--text-color d--marker1 d--bold">汎化</span>と言い、未知のデータに対する誤差を<span class="jinr-d--text-color d--marker1 d--bold">汎化誤差</span>と言います。</p>



<p>ただし、機械学習ではよく学習データに過度にモデルが適合してしまう<span class="jinr-d--text-color d--marker1 d--bold">過学習</span>という現象が起こります。過学習では、学習データに対する誤差は非常に小さくなるのですが、未知のデータであるテストデータに対する汎化誤差は大きくなってしまいます。</p>



<p>過学習発生しないようにして、汎化誤差を減少させる目的で学習のアルゴリズムに適用する変更の事を<span class="jinr-d--text-color d--marker1 d--bold">正則化</span>と言います。この記事では、正則化でよく用いられる方法である<span class="jinr-d--text-color d--marker1 d--bold">L1 正則化と L2 正則化</span>について、数式の意味や効果について紹介していきます。</p>



<h2 class="wp-block-heading jinr-heading d--bold">L1 正則化と L2 正則化の概要と効果</h2>



<p>以降では、L1 正則化と L2 正則化の式を紹介しつつ、数式の図的な意味とその効果について説明していきます。なお、以降では、損失関数を $\mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}})$、正則化を加えた目的関数 $\mathrm{R}$ と表現することとします。</p>



<h3 class="wp-block-heading jinr-heading d--bold">L1 正則化</h3>



<p>L1 正則化項を損失関数に加えた目的関数 $\mathrm{R}_{l1}$ は、以下の式のように表すことができます。なお、$\alpha$ は正則化項の影響の度合いを決定するハイパーパラメータで自分で決める必要があります。</p>



<p>\[<br>\mathrm{R}_{l1} = \mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}}) + \alpha\sum_{i=0}^{n}|w_{i}|<br>\]</p>



<p>L1 正則化項は、機械学習のモデルの重みパラメータの絶対値の和となっています。モデルを最適化する場合には、$\mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}})$ を最小化するのではなく、正則化項を加えた $\mathrm{R}_{l1}$ を最小化します。</p>



<p>L1 正則化は、数式を見ると分かるようにパラメータの値 $\boldsymbol{w}$ が大きくなると目的関数が大きくなってしまうため、$\boldsymbol{w}$ が大きくならないように制約をかけているという意味になります。</p>



<p>L1 正則化と後述する L2 正則化では、制限のかかり方が異なっており、それが性質の違いに現れます。では、L1 正則化がどのような効果を持っているのかについて以下の図を見ながら確認しましょう。この図はよく L1 正則化の説明で出てくる図です。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="952" height="787" src="https://tech.nkhn37.net/wp-content/uploads/2022/09/image-24.png" alt="L1正則化 概要図" class="wp-image-4975" srcset="https://tech.nkhn37.net/wp-content/uploads/2022/09/image-24.png 952w, https://tech.nkhn37.net/wp-content/uploads/2022/09/image-24-300x248.png 300w, https://tech.nkhn37.net/wp-content/uploads/2022/09/image-24-768x635.png 768w" sizes="(max-width: 952px) 100vw, 952px" /></figure>
</div>


<p>簡単のためにパラメータは $w_{1}$ と $w_{2}$ の 2 つとします。</p>



<p>オレンジの円は損失関数 $\mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}})$ の等高線だと思ってください。同じ線上では $\mathrm{E}$ の値は同じで円の内側ほど損失関数の値は小さいものとします。</p>



<p>また、青い線は L1 正則化項の等高線です。例えば $w_{1}+w_{2}=c$ ($c$ は定数) となるような線が図中のそれぞれの線になります。</p>



<p>この図を見たときに損失関数と正則化項を足した関数 $\mathrm{R}_{l1}$ が最小になる点を考えると損失関数と正則化項の等高線が接するような赤い点が最小です。なぜなら、上記図で同じ損失関数の値である円上の点のうち、正則化項が最小となるのはひし形を徐々に拡大していったときに、はじめて楕円と接する点であるためです。</p>



<p>ここでポイントは、損失関数と接する点では、上記の例では $w_{1}$ が 0 となるということです。このため、L1 正則化は、<span class="jinr-d--text-color d--marker1 d--bold">重要なパラメータをそのまま残して不要なパラメータを 0 にする効果</span>があります。このような状況を<span class="jinr-d--text-color d--marker1 d--bold">スパースである</span>と言います。</p>



<h3 class="wp-block-heading jinr-heading d--bold">L2 正則化</h3>



<p>L2 正則化項を損失関数に加えた目的関数 $\mathrm{R}_{l2}$ は、以下の式のように表すことができます。なお、$\alpha$ は正則化項の影響の度合いを決定するハイパーパラメータで自分で決める必要があります。</p>



<p id="block-29d96da2-8a7b-4b83-9381-ae697f0ffb85">\[<br>\mathrm{R}_{l2} = \mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}}) +\alpha\sum_{i=0}^{n}w_{i}^{2}<br>\]</p>



<p>L2 正則化項は、機械学習のモデルの重みパラメータの 2 乗の和となっています。モデルを最適化する場合には、$\mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}})$ を最小化するのではなく、正則化項を加えた $\mathrm{R}_{l2}$ を最小化します。</p>



<p>L2 正則化は、L1 正則化と同じように $\boldsymbol{w}$ が大きくなると目的関数が大きくなってしまうため、$\boldsymbol{w}$ が大きくならないように制約をかけるという意味があります。</p>



<p>では、L2 正則化がどのような効果を持っているのかについて、L1 正則化の時と同じように図を見ながら確認しましょう。この図はよく L2 正則化の説明で出てくる図です。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="945" height="678" src="https://tech.nkhn37.net/wp-content/uploads/2022/09/image-25.png" alt="L2正則化 概要図" class="wp-image-4976" srcset="https://tech.nkhn37.net/wp-content/uploads/2022/09/image-25.png 945w, https://tech.nkhn37.net/wp-content/uploads/2022/09/image-25-300x215.png 300w, https://tech.nkhn37.net/wp-content/uploads/2022/09/image-25-768x551.png 768w" sizes="(max-width: 945px) 100vw, 945px" /></figure>
</div>


<p>簡単のためにパラメータは $w_{1}$ と $w_{2}$ の 2 つとします。</p>



<p>オレンジの円は損失関数 $\mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}})$ の等高線です。同じ線上では $\mathrm{E}$ の値は同じで、円の内側に行くほど損失関数の値は小さいものとします。</p>



<p>また、青い線は L2 正則化項の等高線です。例えば $w_{1}^{2}+w_{2}^{2}=c$ ($c$ は定数) となるような線がそれぞれの円というようになります。</p>



<p>この図を見たときに、損失関数と正則化項を足した関数 $\mathrm{R}_{l2}$ が最小になる点を考えてみると損失関数と正則化項の等高線が接するような赤い点が最小です。なぜなら、上記図で同じ損失関数の値である円上の点のうち、正則化項が最小となるのは円を徐々に拡大していったときに、はじめて楕円と接する点であるためです。</p>



<p>ここでポイントは、<span class="jinr-d--text-color d--marker1 d--bold">L2 正則化は、パラメータを全体的に小さくする効果</span>があります。L1 正則化のように 1 部のパラメータを 0 に近づけるような効果はない点を覚えておきましょう。</p>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p>機械学習の分野において汎化誤差を減少させる方法の 1 つである <span class="jinr-d--text-color d--marker1 d--bold">L1 正則化</span>と <span class="jinr-d--text-color d--marker1 d--bold">L2 正則化</span>について概要と効果をまとめました。</p>



<p>L1 正則化と L2 正則化のそれぞれについて図的な意味についても紹介しています。それぞれの正則化の数式と効果をまとめてみると以下の通りです。<span style="font-size: 1em; letter-spacing: 0.05em; color: initial;"></span></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>正則化</th><th>数式</th><th>効果</th></tr></thead><tbody><tr><td>L1</td><td>$<br>\mathrm{R}_{l1} = \mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}}) + \alpha\sum_{i=0}^{n}|w_{i}|<br>$</td><td>重要なパラメータをそのまま残して不要なパラメータを 0 にする効果がある (スパース)</td></tr><tr><td>L2</td><td>$<br>\mathrm{R}_{l2} = \mathrm{E}(\boldsymbol{y}, \hat{\boldsymbol{y}}) +\alpha\sum_{i=0}^{n}w_{i}^{2}<br>$</td><td>パラメータを全体的に小さくする効果がある</td></tr></tbody></table></figure>



<p>L1 正則化も L2 正則化もパラメータが大きくならないように制約をかけるという点では同じですが、効果には特徴の違いがあります。よく効果の特徴を理解した上でモデルへの適用を検討してみてください。</p>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>


<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/l1-l2-regularization/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>正規分布間のKLダイバージェンス（Kullback-Leibler divergence）の導出</title>
		<link>https://tech.nkhn37.net/kullback-leibler-divergence-gaussian-distribution/</link>
					<comments>https://tech.nkhn37.net/kullback-leibler-divergence-gaussian-distribution/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Mon, 12 Sep 2022 19:00:00 +0000</pubDate>
				<category><![CDATA[数学]]></category>
		<category><![CDATA[KLダイバージェンス]]></category>
		<category><![CDATA[Kullback-Leibler divergence]]></category>
		<category><![CDATA[ガウス分布]]></category>
		<category><![CDATA[正規分布]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=4643</guid>

					<description><![CDATA[正規分布間のKLダイバージェンス（Kullback-Leibler divergence）について、導出を一度丁寧にしてみたので紹介します。 KLダイバージェンス（Kullback-Leibler divergence） [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>正規分布間の<span class="marker"><strong><span class="marker"><strong>KLダイバージェンス（Kullback-Leibler divergence）</strong></span></strong></span>について、導出を一度丁寧にしてみたので紹介します。</p>



<h2 class="wp-block-heading jinr-heading d--bold">KLダイバージェンス（Kullback-Leibler divergence）</h2>



<p><span class="marker"><strong>KLダイバージェンス（Kullback-Leibler divergence）</strong></span>とは、２つの確率分布の差を数値化したもので、機械学習の分野では損失関数の項目として使用されます。特に生成モデルで重要な考え方になってきます。</p>



<p>KLダイバージェンスの式は、確率分布$p(x)$、$q(x)$があった場合に以下のようになります。</p>



<p>\[<br>\begin{eqnarray}<br>D_{KL}[p(x)][q(x)] &amp;=&amp; \int_{-\infty}^{\infty}p(x) \log \frac{p(x)}{q(x)}dx \\<br>&amp;=&amp; \int_{-\infty}^{\infty}p(x) \log p(x)dx &#8211; \int_{-\infty}^{\infty}p(x) \log q(x)dx<br>\end{eqnarray}<br>\]</p>



<p>KLダイバージェンスには、$D_{KL}[p(x)][q(x)] \geq 0$という性質があり、$D_{KL}[p(x)][q(x)] = 0$となるのは、$p(x)$と$q(x)$の分布が完全に一致する場合になります。</p>



<p>この性質から、機械学習では損失関数にKLダイバージェンスの項を追加して最小化することで、分布間を近づけるように学習させるということがよく行われます。</p>



<p>本記事では、このKLダイバージェンスに関して正規分布間の計算をするとどういった式が導出されるかを具体的に計算してみようと思います。生成モデルである変分自己符号化器(Variational Auto Encoder）では、まさに正規分布のKLダイバージェンスが使用されているため理解しておくと役に立ちます。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox5 ">
			<i class="jif jin-ifont-v2speaker" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p>KL ダイバージェンスの注意点としては、一般的に $D_{KL}[p(x)][q(x)] \neq D_{KL}[q(x)][p(x)]$ である点です。どちらを基準にするかで変わるので注意しましょう。ちなみに、本記事では取り上げませんが、JS ダイバージェンス（Jensen-Shanon divergence）では、分布を入れ替えても同様の値が得られます。</p>
</div>
		</div></section>



<h2 class="wp-block-heading jinr-heading d--bold">正規分布間のKLダイバージェンスの導出</h2>



<h3 class="wp-block-heading jinr-heading d--bold">１次元正規分布の場合</h3>



<p>1次元正規分布の場合で正規分布間のKLダイバージェンスを導出してみようと思います。分布$p(x)$、$q(x)$を以下であるとします。</p>



<p>\[<br>\begin{eqnarray}<br>p(x) &amp;=&amp; \mathcal{N}(x|\mu_{1}, \sigma^{2}_{1}) \\<br>q(x) &amp;=&amp; \mathcal{N}(x|\mu_{2}, \sigma^{2}_{2}) <br>\end{eqnarray}<br>\]</p>



<p>なお、1次元の正規分布の式は以下のようになります。</p>



<p>\[<br>\mathcal{N}(x|\mu, \sigma^{2}) = \frac{1}{\sqrt{2\pi\sigma^{2}}}\exp\left(-\frac{1}{2\sigma^{2}}(x &#8211; \mu)^{2}\right)<br>\]</p>



<p>では、KLダイバージェンスの式の中の$\log\frac{p(x)}{q(x)}$について、まず計算してみましょう。</p>



<p>\[<br>\begin{eqnarray}<br>\log\frac{p(x)}{q(x)} &amp;=&amp; \log p(x) &#8211; \log q(x) \\<br>&amp;=&amp; \log\left(\frac{1}{\sqrt{2\pi\sigma^{2}_{1}}}\exp\left(-\frac{1}{2\sigma^{2}_{1}}(x &#8211; \mu_{1})^{2}\right)\right) <br>&#8211; \log\left(\frac{1}{\sqrt{2\pi\sigma^{2}_{2}}}\exp\left(-\frac{1}{2\sigma^{2}_{2}}(x &#8211; \mu_{2})^{2}\right)\right)\\<br>&amp;=&amp; \log\frac{\sigma_{2}}{\sigma_{1}} + \frac{1}{2\sigma^{2}_{2}}(x &#8211; \mu_{2})^{2} &#8211; \frac{1}{2\sigma^{2}_{1}}(x &#8211; \mu_{1})^{2}<br>\end{eqnarray}<br>\]</p>



<p>KLダイバージェンスは、上記の式の$p(x)$に関する期待値になっているのが分かるかと思います。$p(x)$の期待値を$E_{p}[\cdot]$と書くと、以下のように書くことができます。</p>



<p>\[<br>\begin{eqnarray}<br>\int_{-\infty}^{\infty}p(x) \log \frac{p(x)}{q(x)}dx &amp;=&amp; E_{p}\left[\log\frac{p(x)}{q(x)}\right] \\<br>&amp;=&amp; E_{p}\left[ \log\frac{\sigma_{2}}{\sigma_{1}} \right] + E_{p}\left[\frac{1}{2\sigma^{2}_{2}}(x &#8211; \mu_{2})^{2} \right] &#8211; E_{p}\left[ \frac{1}{2\sigma^{2}_{1}}(x &#8211; \mu_{1})^{2} \right]<br>\end{eqnarray}<br>\]</p>



<p>まず第1項については、$x$に依存しない項目であるのでそのままになります。</p>



<p>\[<br>E_{p}\left[ \log\frac{\sigma_{2}}{\sigma_{1}} \right] = \log\frac{\sigma_{2}}{\sigma_{1}}<br>\]</p>



<p>第2項は、数式を分解して計算してみましょう。以下の式では$E_{p}[x] = \mu_{1}$、$E_{p}[x^{2}] = \sigma^{2}_{1} + \mu^{2}_{1}$を使用しています。後者は分散の定義から導かれます。</p>



<p>\[<br>\begin{eqnarray}<br>E_{p}\left[\frac{1}{2\sigma_{2}^{2}}(x &#8211; \mu_{2})^{2} \right] &amp;=&amp; \frac{1}{2\sigma_{2}^{2}} \left( E_{p}[x^{2}] -2\mu_{2}E_{p}[x] + \mu_{2}^{2} \right)\\<br>&amp;=&amp; \frac{1}{2\sigma_{2}^{2}} ( \sigma_{1}^{2} + \mu_{1}^{2} -2\mu_{1}\mu_{2} + \mu_{2}^{2})\\<br>&amp;=&amp; \frac{1}{2\sigma^{2}_{2}} \left( \sigma_{1}^{2} + (\mu_{1} &#8211; \mu_{2})^{2} \right)<br>\end{eqnarray}<br>\]</p>



<p>第3項も同じように計算することができます。</p>



<p>\[<br>\begin{eqnarray}<br>E_{p}\left[\frac{1}{2\sigma_{1}^{2}}(x &#8211; \mu_{1})^{2} \right] &amp;=&amp; \frac{1}{2\sigma_{1}^{2}} \left( E_{p}[x^{2}] -2\mu_{1}E_{p}[x] + \mu_{1}^{2} \right)\\<br>&amp;=&amp; \frac{1}{2\sigma_{1}^{2}} ( \sigma_{1}^{2} + \mu_{1}^{2} -2\mu_{1}^{2} + \mu_{1}^{2})\\<br>&amp;=&amp; \frac{1}{2}<br>\end{eqnarray}<br>\]</p>



<p>これで各項目の計算ができたので、最後に整理します。</p>



<p>\[<br>\begin{eqnarray}<br>\int_{-\infty}^{\infty}p(x) \log \frac{p(x)}{q(x)}dx &amp;=&amp; E_{p}\left[\log\frac{p(x)}{q(x)}\right] \\<br>&amp;=&amp; \log\frac{\sigma_{2}}{\sigma_{1}} + \frac{1}{2\sigma^{2}_{2}} \left( \sigma_{1}^{2} + (\mu_{1} &#8211; \mu_{2})^{2} \right) &#8211; \frac{1}{2}\\<br>&amp;=&amp; \frac{1}{2}\left( \log\frac{\sigma_{2}^{2}}{\sigma_{1}^{2}} + \frac{\sigma_{1}^{2}}{\sigma_{2}^{2}} + \frac{(\mu_{1} &#8211; \mu_{2})^{2}}{\sigma_{2}^{2}} &#8211; 1 \right)<br>\end{eqnarray}<br>\]</p>



<p>以上が、1次元正規分布間のKLダイバージェンスの式変形でした。</p>



<h3 class="wp-block-heading jinr-heading d--bold">多次元正規分布の場合</h3>



<p>次は、多次元の正規分布の場合で正規分布間のKLダイバージェンスを導出してみようと思います。分布$p(x)$、$q(x)$を以下であるとします。</p>



<p>\[<br>\begin{eqnarray}<br>p(\boldsymbol{x}) &amp;=&amp; \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_{1}, \boldsymbol{\Sigma}_{1}) \\<br>q(\boldsymbol{x}) &amp;=&amp; \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_{2}, \boldsymbol{\Sigma}_{2}) <br>\end{eqnarray}<br>\]</p>



<p>なお、D次元の正規分布の式は以下のようになります。</p>



<p>\[<br>\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}, \boldsymbol{\Sigma}) = \frac{1}{\sqrt{(2\pi)^{D}|\boldsymbol{\Sigma}|}}\exp\left(-\frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu})^{\top}\boldsymbol{\Sigma}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu}) \right) <br>\] </p>



<p>では、KLダイバージェンスの式の中の$\log\frac{p(x)}{q(x)}$について、まず計算してみましょう。</p>



<p>\[<br>\begin{eqnarray}<br>\log\frac{p(x)}{q(x)} &amp;=&amp; \log p(x) &#8211; \log q(x) \\<br>&amp;=&amp;<br>\log\left( \frac{1}{\sqrt{(2\pi)^{D}|\boldsymbol{\Sigma}_{1}|}}\exp\left(-\frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu_{1}})^{\top}\boldsymbol{\Sigma}_{1}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu_{1}})\right) \right) \\<br>&amp;-&amp; \log\left( \frac{1}{\sqrt{(2\pi)^{D}|\boldsymbol{\Sigma}_{2}|}}\exp\left(-\frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu_{2}})^{\top}\boldsymbol{\Sigma}_{2}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu_{2}})\right) \right) \\<br>&amp;=&amp; \frac{1}{2}\log\frac{|\boldsymbol{\Sigma}_{2}|}{|\boldsymbol{\Sigma}_{1}|} <br>+ \frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu_{2}})^{\top}\boldsymbol{\Sigma}_{2}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu_{2}})<br>-\frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu_{1}})^{\top}\boldsymbol{\Sigma}_{1}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu_{1}})<br>\end{eqnarray}<br>\]</p>



<p>1次元の時と同じように、$p(x)$の期待値を$E_{p}[\cdot]$と書くとKLダイバージェンスは、以下のように書くことができます。</p>



<p>\[<br>\begin{eqnarray}<br>\int_{-\infty}^{\infty}p(x) \log \frac{p(x)}{q(x)}dx = E_{p}\left[\log\frac{p(x)}{q(x)}\right] &amp;=&amp; E_{p}\left[ \frac{1}{2}\log\frac{|\boldsymbol{\Sigma}_{2}|}{|\boldsymbol{\Sigma}_{1}|} \right] \\<br>&amp;+&amp; E_{p}\left[ \frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu_{2}})^{\top}\boldsymbol{\Sigma}_{2}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu_{2}}) \right] \\<br>&amp;-&amp; E_{p}\left[ \frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu_{1}})^{\top}\boldsymbol{\Sigma}_{1}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu_{1}}) \right]<br>\end{eqnarray}<br>\]</p>



<p>まず第1項については、$x$に依存しない項目であるのでそのままになります。</p>



<p>\[<br>E_{p}\left[ \frac{1}{2}\log\frac{|\boldsymbol{\Sigma}_{2}|}{|\boldsymbol{\Sigma}_{1}|} \right] = \frac{1}{2}\log\frac{|\boldsymbol{\Sigma}_{2}|}{|\boldsymbol{\Sigma}_{1}|}<br>\]</p>



<p>第2項と第3項については、少し数学の特徴を利用して変形していきます。具体的には、以下の2次形式とトレースの関係やトレースの性質を使用します。2次形式というのは$\boldsymbol{x}^{\top}\boldsymbol{A}\boldsymbol{x}$のように表されるもので、正規分布の$\exp$の中に現れるような形式です。また、トレースというのは行列の対角成分の和をとる計算で、$\mathrm{tr}(\cdot)$のように表します。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--simple-box1  "><div class="c--simple-box-inner">
<p><strong>【2次形式とトレースの関係】</strong></p>



<p>\[<br>\boldsymbol{x}^{\top}\boldsymbol{A}\boldsymbol{x} = \mathrm{tr}(\boldsymbol{A}\boldsymbol{x}\boldsymbol{x}^{\top})<br>\]</p>



<p><strong>【トレースの性質】</strong></p>



<p>\[<br>\mathrm{tr}(\boldsymbol{x}\boldsymbol{y}^{\top}) = \mathrm{tr}((\boldsymbol{x}\boldsymbol{y}^{\top})^{\top}) = \mathrm{tr}(\boldsymbol{y}\boldsymbol{x}^{\top})<br>\]</p>
</div></div></section>



<p>上記の特徴を利用して第2項の式を変形してみましょう。なお、$E_{p}[\boldsymbol{x}] = \boldsymbol{\mu}_{1}$、共分散の定義より$E_{p}[\boldsymbol{x}\boldsymbol{x}^{\top}] = \boldsymbol{\Sigma}_{1} + \boldsymbol{\mu}_{1}\boldsymbol{\mu}_{1}^{\top}$を使用します。</p>



<p>\[<br>\begin{eqnarray}<br>E_{p}\left[ \frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu_{2}})^{\top}\boldsymbol{\Sigma}_{2}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu_{2}}) \right]<br>&amp;=&amp;<br>\frac{1}{2} E_{p}\left[\mathrm{tr}\left(\boldsymbol{\Sigma}_{2}^{-1}(\boldsymbol{x} &#8211; \boldsymbol{\mu}_{2})(\boldsymbol{x} &#8211; \boldsymbol{\mu}_{2})^{\top} \right) \right]\\<br>&amp;=&amp;<br>\frac{1}{2} \mathrm{tr}\left(\boldsymbol{\Sigma}_{2}^{-1} E_{p}\left[ (\boldsymbol{x} &#8211; \boldsymbol{\mu}_{2})(\boldsymbol{x} &#8211; \boldsymbol{\mu}_{2})^{\top} \right] \right)\\<br>&amp;=&amp;<br>\frac{1}{2} \mathrm{tr} \left(\boldsymbol{\Sigma}_{2}^{-1} E_{p}\left[ \boldsymbol{x}\boldsymbol{x}^{\top} -\boldsymbol{x}\boldsymbol{\mu}_{2}^{\top} -\boldsymbol{\mu}_{2}\boldsymbol{x}^{\top} + \boldsymbol{\mu}_{2}\boldsymbol{\mu}_{2}^{\top} \right] \right) \\<br>&amp;=&amp;<br>\frac{1}{2} \mathrm{tr} \left( \boldsymbol{\Sigma}_{2}^{-1} \left( E_{p} \left[ \boldsymbol{x}\boldsymbol{x}^{\top}\right] &#8211; 2 E_{p} \left[ \boldsymbol{x}\boldsymbol{\mu}_{2}^{\top} \right] + E_{p} \left [\boldsymbol{\mu}_{2}\boldsymbol{\mu}_{2}^{\top} \right] \right) \right) \\<br>&amp;=&amp;<br>\frac{1}{2} \mathrm{tr} \left( \boldsymbol{\Sigma}_{2}^{-1} \left( \boldsymbol{\Sigma}_{1} + \boldsymbol{\mu}_{1}\boldsymbol{\mu}_{1}^{\top} &#8211; 2\boldsymbol{\mu}_{1} \boldsymbol{\mu}_{2}^{\top} + \boldsymbol{\mu}_{2}\boldsymbol{\mu}_{2}^{\top} \right) \right) \\<br>&amp;=&amp;<br>\frac{1}{2} \mathrm{tr}\left( \boldsymbol{\Sigma}_{2}^{-1}\boldsymbol{\Sigma}_{1} \right)  + \frac{1}{2} \mathrm{tr} \left( \boldsymbol{\Sigma}_{2}^{-1}(\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2})(\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2})^{\top} \right) \\<br>&amp;=&amp;<br>\frac{1}{2} \mathrm{tr}\left( \boldsymbol{\Sigma}_{2}^{-1}\boldsymbol{\Sigma}_{1} \right)  + \frac{1}{2} (\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2})^{\top}\boldsymbol{\Sigma}_{2}^{-1}(\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2})<br>\end{eqnarray}<br>\]</p>



<p>同様に第3項を変形します。途中で$E_{p}\left[ (\boldsymbol{x} &#8211; \boldsymbol{\mu}_{1})(\boldsymbol{x} &#8211; \boldsymbol{\mu}_{1})^{\top}\right]$が出てきますが共分散の定義そのものなので$\boldsymbol{\Sigma}_{1}$になります。</p>



<p>\[<br>\begin{eqnarray}<br>E_{p}\left[ \frac{1}{2}(\boldsymbol{x} &#8211; \boldsymbol{\mu_{1}})^{\top}\boldsymbol{\Sigma}_{1}^{-1} (\boldsymbol{x} &#8211; \boldsymbol{\mu_{1}}) \right] <br>&amp;=&amp;<br>\frac{1}{2} E_{p}\left[\mathrm{tr}\left(\boldsymbol{\Sigma}_{1}^{-1}(\boldsymbol{x} &#8211; \boldsymbol{\mu}_{1})(\boldsymbol{x} &#8211; \boldsymbol{\mu}_{1})^{\top} \right) \right]\\<br>&amp;=&amp;<br>\frac{1}{2} \mathrm{tr}\left(\boldsymbol{\Sigma}_{1}^{-1} E_{p}\left[ (\boldsymbol{x} &#8211; \boldsymbol{\mu}_{1})(\boldsymbol{x} &#8211; \boldsymbol{\mu}_{1})^{\top} \right] \right)\\<br>&amp;=&amp;<br>\frac{1}{2}\mathrm{tr}\left( \boldsymbol{\Sigma}_{1}^{-1} \boldsymbol{\Sigma}_{1} \right) \\<br>&amp;=&amp;<br>\frac{1}{2}\mathrm{tr}\left( \boldsymbol{I}\right) \\<br>&amp;=&amp;<br>\frac{D}{2}<br>\end{eqnarray}<br>\]</p>



<p>これで各項目の計算ができたので、最後に整理します。</p>



<p>\[<br>\begin{eqnarray}<br>\int_{-\infty}^{\infty}p(x) \log \frac{p(x)}{q(x)}dx &amp;=&amp; E_{p}\left[\log\frac{p(x)}{q(x)}\right] \\<br>&amp;=&amp;<br>\frac{1}{2}\log\frac{|\boldsymbol{\Sigma}_{2}|}{|\boldsymbol{\Sigma}_{1}|}<br>+\frac{1}{2} \mathrm{tr}\left( \boldsymbol{\Sigma}_{2}^{-1}\boldsymbol{\Sigma}_{1} \right)  + \frac{1}{2} (\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2})^{\top}\boldsymbol{\Sigma}_{2}^{-1}(\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2})<br>&#8211; \frac{D}{2}\\<br>&amp;=&amp;<br>\frac{1}{2}\left( \log\frac{|\boldsymbol{\Sigma}_{2}|}{|\boldsymbol{\Sigma}_{1}|} + \mathrm{tr}\left( \boldsymbol{\Sigma}_{2}^{-1}\boldsymbol{\Sigma}_{1} \right) + (\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2})^{\top}\boldsymbol{\Sigma}_{2}^{-1}(\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2}) &#8211; D \right)<br>\end{eqnarray}<br>\]</p>



<p>以上が、多次元であるD次元正規分布間のKLダイバージェンスの式変形でした。</p>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p>KLダイバージェンスに関して正規分布間の計算をするとどういった式が導出されるかを具体的に計算してみました。1次元正規分布間の場合と多次元であるD次元正規分布間の場合のそれぞれでKLダイバージェンスの式変形をしてみています。</p>



<p>具体的に計算したKLダイバージェンスの式は以下のようになります。</p>



<p><strong>【1次元正規分布間のKLダイバージェンス】</strong></p>



<p>$p(x) = \mathcal{N}(x|\mu_{1}, \sigma^{2}_{1})$、$q(x) = \mathcal{N}(x|\mu_{2}, \sigma^{2}_{2})$とするとき</p>



<p>\[<br>\begin{eqnarray}<br>D_{KL}[p(x)][q(x)] &amp;=&amp; <br>\int_{-\infty}^{\infty}p(x) \log \frac{p(x)}{q(x)}dx \\<br>&amp;=&amp;<br>\frac{1}{2}\left( \log\frac{\sigma_{2}^{2}}{\sigma_{1}^{2}} + \frac{\sigma_{1}^{2}}{\sigma_{2}^{2}} + \frac{(\mu_{1} &#8211; \mu_{2})^{2}}{\sigma_{2}^{2}} &#8211; 1 \right)<br>\end{eqnarray}<br>\]</p>



<p><strong>【D次元正規分布間のKLダイバージェンス】</strong></p>



<p>$p(\boldsymbol{x}) = \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_{1}, \boldsymbol{\Sigma}_{1})$、$q(\boldsymbol{x}) = \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_{2}, \boldsymbol{\Sigma}_{2})$とするとき </p>



<p>\[<br>\begin{eqnarray}<br>D_{KL}[p(x)][q(x)] &amp;=&amp; <br>\int_{-\infty}^{\infty}p(x) \log \frac{p(x)}{q(x)}dx \\ <br>&amp;=&amp;<br>\frac{1}{2}\left( \log\frac{|\boldsymbol{\Sigma}_{2}|}{|\boldsymbol{\Sigma}_{1}|} + \mathrm{tr}\left( \boldsymbol{\Sigma}_{2}^{-1}\boldsymbol{\Sigma}_{1} \right) + (\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2})^{\top}\boldsymbol{\Sigma}_{2}^{-1}(\boldsymbol{\mu}_{1} &#8211; \boldsymbol{\mu}_{2}) &#8211; D \right)<br>\end{eqnarray}<br>\]</p>



<p>生成モデルである変分自己符号化器(Variational Auto Encoder）等では、正規分布のKLダイバージェンスが使用されているため理解しておくと役に立ちます。</p>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/kullback-leibler-divergence-gaussian-distribution/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-04-28 13:20:39 by W3 Total Cache
-->