KATUBLO | エンジニアの日常BLOG

プログラミング、数学、旅行などを中心に役立つ情報をお届け

2018年11月02日

【ディープラーニング】交差エントロピーとは?初心者が数学的に解説

こんにちは。KATUOです。今回はディープラーニングでよく出てくる用語、交差エントロピーについて解説していこうと思います。かなり間違い等が発生する可能性ありなのでその点はご了承ください。

 

交差エントロピーとは

交差エントロピーの定義

交差エントロピーやクロスエントロピー(英: cross entropy)とは、情報理論において2つの確率分布の間に定義される尺度である。符号化方式が、真の確率分布 [math]{\displaystyle p} [/math] ではなく、ある所定の確率分布[math]{\displaystyle q}  [/math] に基づいている場合に、とりうる複数の事象の中からひとつの事象を特定するために必要となるビット数の平均値を表す。

引用:「交差エントロピー」

https://ja.wikipedia.org/wiki/交差エントロピー

 

これはちょっとすぐに理解できないです。用語用語1つずつ理解しながら全体の意味を理解してきましょう。

 

確率統計の知識

ここで確率統計の用語を整理しておきましょう。

確率密度について

確率密度関数(かくりつみつどかんすう、英: probability density function, PDF)とは、確率論において、連続型確率変数がある値をとるという事象の確率密度を記述する関数である。確率変数がある範囲の値をとる確率を、その範囲にわたって確率密度関数を積分することにより得ることができるよう定義される。確率密度関数の値域は非負の実数であり、定義域全体を積分すると1である。

引用:「確率密度関数」

https://ja.wikipedia.org/wiki/確率密度関数

 

まとめると、確率変数のある範囲の値をとる確率(指定の範囲の条件を満たす確率)を、その範囲で積分することで求められるようにする関数のことを確率密度と言います。もっと簡単にいうならば、「〜以上の条件が起きる確率を求めたいときに、その指定の条件でこの関数を積分するとその条件がおきる確率がもとめられる」っていう感じ。

 

確率変数について

確率変数(かくりつへんすう、英: random variable, aleatory variable, stochastic variable)とは、確率論ならびに統計学において、起こりうることがらに割り当てている値(ふつうは実数や整数)を取る変数。

引用:「確率変数」

https://ja.wikipedia.org/wiki/確率変数

 

引用内容とは別に、簡単に確率変数は「表」「裏」といった条件を表す変数のことを指します。例をあげて説明すると、Xを確率変数とした時に、コインを投げて、表なら、[math] X = 1 [/math]、裏なら、[math] X = 0 [/math] といったように確率変数はある事象に対して値で定義します。この場合、表の時の確率は[math] P(1) = 1/2 [/math]といったように表すことも可能です。

 

確率分布について

確率分布(かくりつぶんぷ、英: probability distribution)は、確率変数に対して、各々の値をとる確率を表したものである。

引用:「確率分布」

https://ja.wikipedia.org/wiki/確率分布

 

確率分布は簡単で確率変数に対応する確率を返す関数です。グラフ化する場合は一般的に確率変数が横軸、確率分布が縦軸になります。

 

分布関数について

累積分布関数(るいせきぶんぷかんすう、英: cumulative distribution function, CDF)や分布関数(ぶんぷかんすう、英: distribution function)とは、確率論において、実数値確率変数 X が x 以下になる確率の関数のこと。連続確率分布では、負の無限大から x まで確率密度関数を定積分した物。

引用:「累積分布関数:」

https://ja.wikipedia.org/wiki/累積分布関数

 

簡単に例を出してまとめると、分布分布というのは確率変数Xがとる値がa(aは実数)以下である確率のことを指します。先ほどのサイコロの例を出して挙げると、確率変数Xがとる値が3以下である(サイコロの目が1、2、3のどれかである確率)は[math] 1/2[/math]となる。確率分布関数は一般的に確率変数の値が大きくなるにつれて、分布関数の値が増加する性質があります。これは確率変数が大きくなるとより多くの事象を含むということから当たり前ですよね。例として、縦軸を分布関数とした時のグラフで以下にサイコロを振った際のの分布関数の図を示しておきます。

 

ディープラーニングを効率的に学ぶには多少の確率統計の知識が必要

 

確率・統計 (理工系の数学入門コース 7)

 

の参考書ですが、私自身、東工大の教授に進められて購入しました。確率・統計に関してどう素人の自分でも一冊読むことでかなり苦手意識がなくなりました。少し本自体は古いですが、良書だと思います。ディープラーニングにおいて数学で苦戦しているかたはぜひ読んでみてください。

 

 符号化方式

符号化方式の定義

符号化方式(ふごうかほうしき)は、デジタル処理・伝送・記録のための、情報のデジタルデータへの変換方式のことである。変換されたデータを符号と呼び、符号から元の情報へ戻すことを復号と呼ぶ。

引用:「符号化方式」

https://ja.wikipedia.org/wiki/符号化方式

 

具体例をあげると、「あ」という文字をデジタルで表現しようとするとき、どのように表記するでしょうか?デジタルは「0」「1」の値しか持たないでのこの2つの値を組み合わせて、表現することになります。この変換方式を符号化方式といいます。

 

 

では交差エントロピーの定義のなかにあった、「符号化方式が、真の確率分布  p ではなく、ある所定の確率分布  q に基づいている場合」という部分について考えて行こうと思います。いっていることは単純で、符号化方式が2つの確率分布を持つとして、適当なグラフで考えると、

2つの確率分布の間にほぼGAPがある。つまり、基づく確率分布が変わるとそれぞれの確率分布を比べると確率に差(GAP)が生まれる可能性が高いことがわかりますよね。このような場面の中「とりうる複数の事象の中からひとつの事象を特定するために必要となるビット数の平均値を表す。」というのは異なる確率分布に基づいていた状況下で、考えれる複数の事象の中から1つの事象を特定したい場合に必要なとるビット数の平均値が交差エントロピーといっているのです。

 

 

交差エントロピーを具体例で解説

ここまではかなり抽象的な話になってしまったので、ここからは具体性を持たせた解説をしていこうと思います。

 

エントロピーとは

A国、B国、C国に置けるその日の天気を表した表を以下に定義します。

この時それぞれの天気のエンコード方法は以下のようにするとします。

この時、メモリの容量が1KB(8000bit)だとすると、

 

[math]\frac{8000[bit]}{2[bit]} =4000[日][/math]

 

のデータを保存できる。

 

しかし、このエンコード方法は無駄があることがわかるでしょうか?なぜなら、B国では晴れの日が50%である為、以下の表のように、エンコードした際に使うbit数を1にすると、容量を節約することができ、同じ8000bitのメモリで4500日以上分のデータを保存できる。

 

 

 

[math]H(P_b) = E_{P_b} [log_{2}(\frac1{P_{b}(\omega)})]  \\ =  0.5log_{2}(\frac1{0.5})+0.25log_{2}(\frac1{0.25}) \\ +0.125log_{2}(\frac1{0.125})+0.125log_{2}(\frac1{0.125}) = 1.75[/math]

 

最適なコードの割り当て方法は数学的証明により、求められており

 

[math]確率P(\omega)[/math]で起こる事象には長さ[math]log_2(\frac1{P(\omega)})[/math]のコードを割り当てるのが最適とされている。また、期待値(1回の試行の結果を伝えるのに要する平均ビット数)をエントロピー(平均情報量)とよびます。一応定義も掲載しておきます。

 

エントロピー(英: entropy)は、熱力学および統計力学において定義される示量性の状態量である。熱力学において断熱条件下での不可逆性を表す指標として導入され、統計力学において系の微視的な「乱雑さ」[注 1]を表す物理量という意味付けがなされた。統計力学での結果から、系から得られる情報に関係があることが指摘され、情報理論にも応用されるようになった。

引用:「エントロピー」

https://ja.wikipedia.org/wiki/エントロピー

 

交差エントロピーとは

ではここでそれぞれの国の最適エントロピーを上のような数学的方法によって求めてみましょう。まずは、ある国の最適なエンロピーの求め方で、他の国のエンロトピーを求めた場合を考える。

 

[例] B国の最適エントロピーの求め方で、A国のエントロピーを求める。

 

[math]E_b [log_{2}(\frac1{P_{b}(\omega)})]  \\ =  0.25log_{2}(\frac1{0.5})+0.25log_{2}(\frac1{0.25}) \\ +0.25log_{2}(\frac1{0.125})+0.25log_{2}(\frac1{0.125}) = 2.25[/math]

 

 

A国の最適エントロピーの求め方をしていないので、0.25[bit]分無駄が生じてしまっています。このように、ある確率分布に最適化された方式で別の確率分布をエンコードした時の平均ビット長を「交差エントロピー」と呼ぶんです。ここでQのエントロピー最適化法でPのエントロピーを求めたときの式を以下に定義しておきます。

 

[math]H ( P , Q ) = E _ { P } \left[ \log \frac { 1 } { Q ( \omega ) } \right] = \sum _ { \omega \in \Omega } P ( \omega ) \log \frac { 1 } { Q ( \omega ) } [/math]

 

 

参考文献:「 交差エントロピーって何」

http://cookie-box.hatenablog.com/entry/2017/05/07/121607

 

参考書

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習を開始。現在は「ToC向け大規模サービスを運営するメガベンチャー」と「AIスタートアップ」でインターンで修行中。2020年4月からwebエンジニアとして社会人生活スタート。

広告

特集記事