機械学習では重み付けを行い学習を進めますが、そのモデルがどれくらいの精度を持っているのか評価するためには、専用の指標が必要になりますよね。こちらについてはいくつか種類がありますが、交差エントロピー誤差と呼ばれるものを利用すると効率的に評価が行えます。
なお、交差エントロピー誤差とは教師データの分布と予測データの分布を比較した際に、違いが少ないほど0に近づき、違いが大きいほど大きな値を出力するものです。そのため、精度の高いモデルを作成する際には交差エントロピー誤差を少なくなるように重みを調整します。
そこで、今回はこの交差エントロピーの基本と求め方についてお伝えしましょう。機械学習を適切に行っていくには交差エントロピーの理解が重要なので、しっかりと内容を把握した上で利用してください。
交差エントロピーとは
まずは、わかりやすいようにエントロピーの説明から交差エントロピーを解説します。エントロピーとは熱力学から生まれた概念であり、ある状態における不可逆性を表した物理量のことです。
そのため、氷から水、水からお湯、お湯から水蒸気になるケースを比較していくと、後者になるほど逆の状態に戻すのが難しくなる、つまり不可逆性を持つことになるのです。そこで、この不可逆性を数値として表す目的で用いられるようになったのがエントロピーです。
この概念によって、可逆性を持った理想的なモデルに近づけるには、受け取った熱量よりも温度変化が大きくなればよいことがわかりました。これにより熱を使った水蒸気機関やエンジンの開発では、エントロピーを比較することで効率性がどうなっているのか判断できるようになったのです。
その後、エントロピーという概念は統計力学にも適用され、さらに情報理論でも用いられるようになりました。これが今回お伝えする交差エントロピーに繋がるものであり、こちらはある分布の平均情報量を意味するものとして利用されており、数式で表すと以下のようになります。
=ΣP(ω)log(1/P(ω)) #確率P(ω)は確率
ω∊Ω
こちらは分布中のそれぞれの確立をlog(1/P(ω))(情報量とも呼ぶ)と積算して計算できるものであり、式中のlogは底eの自然対数です。具体例として以下のA港で獲れた魚の確率を2進法で表す場合のエントロピーを計算してみましょう。
鯖 0.25 00
あじ 0.25 01
ぶり 0.25 10
かんぱち 0.25 11
この場合は次のようにエントロピーが計算されます。
=0.25log2(1/0.25)+0.25log2(1/0.25)+0.25log2(1/0.25)+0.25log2(1/0.25)
=2.0
つまり、このケースでのエントロピーの値は2.0です。なお、エントロピーの値はH(P)の変数Pがどれくらいの値を取っていくのかで上下するもので、数が多くなるほど情報量は増えていき、少なくなるほど減っていきます。
極端な例として100%鯖しか取れない漁港の場合では、次のようなエントロピー値を取ります。
以上のような性質から情報理論でのエントロピーは情報の乱雑さを表す指標としても用いられます。そして、この性質を利用して考案されたのが交差エントロピーであり、こちらは以下の式で表すことができます。
ω∊Ω
エントロピーの計算との違いは変数がPとQの二つになり、乗算するもの対象が変わっています。こちらはある分布(P)によるエントロピーの計算方式を別の分布(Q)で計算した場合の平均情報量を示しており、これが交差エントロピーと呼ばれるものなのです。
一般的にP(ω)に対してはlog(1/P(ω))を乗算したものが、その場合での適切なエントロピーとなるのですが、別の分布(Q)での方式で計算すると乱雑さの値であるエントロピーが変化します。特に2つの方式で計算されたエントロピーを比べて、小さい数値の方式でもう片方の交差エントロピーを計算すると、その場合は以下のように値が大きくなります。
B方式での交差エントロピーH(Pa,Pb)>B方式のエントロピー
機械学習ではこの性質を利用して効率的な学習を行っています。この交差エントロピーが機械学習で必要になる理由を以下でお伝えしましょう。
交差エントロピーが機械学習で必要になる理由
機械学習ではいくつかの学習方法がありますが、中でも最も有名なのが教師あり学習です。こちらは正解付きの教師データを学習すると、未知のデータでも予測できるようになる方法です。
仕組みとしては入力データに対して重みを付加し、それらを総和したものを活性化関数に通すことで出力するか判断。この際に重要になるのが重みを更新することであり、これによって教師あり学習のモデルはなんらかのものを分類する能力などを持ちます。
そのため、学習を進めていくには重みを適切に更新していく必要がありますが、それを客観的にみていくには指標が必要になるでしょう。そこで、利用されるのが誤差関数(損失関数)と呼ばれるもので、上で解説した交差エントロピーを誤差関数としたものが交差エントロピー誤差になります。
ちなみになぜ交差エントロピーが誤差関数になり得るかというと、上で説明したように交差エントロピーではこの乱雑さを表す値が分布によって変化するからです。ここで、エントロピーと交差エントロピーの式を比較しましょう。
H(P)=Ep[log(1/P(ω)] =ΣP(ω)log(1/P(ω))
ω∊Ω
H(P,Q)=Ep[log(1/Q(ω))] =ΣP(ω)log(1/Q(ω))
ω∊Ω
以上を比較すると式の形はほとんど同じであり、違うのは交差エントロピーが別々の分布を扱っている点です。仮に両者の分布が一致する場合(P(ω)=Q(ω))では、交差エントロピーはエントロピーと同じになります。
しかし、両者の分布が異なる状態で交差エントロピーを計算するとエントロピーよりも高い値がでることがありました。この性質を利用して機械学習では片方の分布を教師データ、もう片方を予測データに当てはめて交差エントロピーを計算します。
すると両者の分布が一致する場合(P(ω)=Q(ω))に近くなるほど低い値を出力し、逆に両者が全く重ならないと高い値を出力するのです。つまり、以上をまとめると確率分布P(ω)とQ(ω)が近くなるほど最適解に近づき、遠くなるほど最適解ではなくなります。
なお、具体的にどのように誤差関数を評価していくかというと、微分して傾きを求めればよいです。このとき理想的なのは傾きが急な値からなだらかな値になっていくことで、そうなれば最適解に近づいていると判断でき、学習が進んでいるとみなせます。
そして、ここにも交差エントロピーを利用するメリットがあります。それは式中にeを底とする対数関数があることで、両者の確率分布が全く重ならない場合は傾きは限りなく大きくなります。これは学習を進めていく過程重みの更新を早くできることを意味しており、効率的な機械学習に繋がります。
したがって、重みの更新を効率的に行えるメリットからも、交差エントロピーを利用した誤差関数を機械学習では活用しているのです。
交差エントロピー誤差とは
それでは、交差エントロピーを利用した誤差関数である交差エントロピー誤差を解説します。まず、教師あり学習の場合には最終的な目標は分類することです。
例えば、犬の画像を分類する場合には、犬とそれ以外に分類できるのが目標です。この場合には2値変数の交差エントロピーを求めればよいので正解の分布をP、予想の分布をQとすると以下のように表現できます。
P(x1)=p 、P(x2)=1−p #x1は犬の場合、x2は犬以外の場合
Q(x1)=q、Q(x2)=1−q
−plogq−(1−p)log(1−q)
さらに、誤差関数をEとして一般化すると以下のようになります。
k=1
こちらについてはP(k)を0(犬ではない)と1(犬である)のみのtk、Q(k)を予測確率ykとすると次のようになります。
k=1
これが交差エントロピー誤差になります。例えば、ykが犬0.4、猫0.3、馬0.3の場合に犬の写真を分類すると以下のようになります。
=−log0.4
ちなみにこの値が−log1になると誤差が全くないことを意味し、−log0に近づけば限りなく誤差が大きくなります。
ニューラルネットワークの誤差関数についてとその求め方
普通の交差エントロピー誤差ではtkとykのワンセットで計算したものでした。しかし、ニューラルネットワークではデータが複数あれば、それに対応する損失関数を用意して合計していく必要があります。
これはニューラルネットワークが入力層と中間層、出力層で構成され、特に中間層が多層化しているからです。そして、各層には複数のパーセプトロンが並んでいる構造になっています。
そのため、総データ数をN、n個目のデータのk次元の数値をtnk、ynkとすると以下のようになります。
n k
例として以下のようなデータ数が2の交差エントロピー誤差を計算してみましょう。
すると以下のように計算できます。
=−1/2(-1.20-1.20-0.51-0.51)
=1.71
以上がニューラルネットワークにおける交差エントロピー誤差とその求め方になります。
実際に交差エントロピー誤差関数を定義する時の注意点
実際に交差エントロピー誤差関数を定義した際には勾配情報が必要である点に注意しましょう。交差エントロピー誤差関数はあくまでもその時点での精度の評価を行う際に利用するものです。
実際に重みの更新を行うには傾きがどうなっているのか確認するためには、微分値∂E/∂wを求める必要があります。こちらについてはまず以下のようにニューラルネットワークを設定します。
重み:w
途中式:y=∑xiwi
活性化関数:q(y)=σ
目標の出力:p
実際の出力:q=q(y)
その上で合成関数の微分より傾きは次のように表すことができます。
ここで、それぞれの項は以下のように計算可能です。
∂q/∂y=(1-q)q #3
∂E/∂q=-p/q+(1-p)/(1-q) #4
したがって、#1の式に#2~#4を当てはめていくと∂E/∂wiは以下のように計算できます。
=xi(q-p)
したがって、交差エントロピー誤差関数を利用して重みを更新していく際には、上の式を利用しながら勾配を求めていきましょう。そうすれば再び重みを更新した場合の交差エントロピー誤差と新しい勾配情報により、学習が進んでいるのか判断できます。
さて、今回はこの交差エントロピーの基本と求め方を含む以下の内容をお伝えしました。
- 交差エントロピーとはある分布(P)によるエントロピーの計算方式を別の分布(Q)で計算した場合の平均情報量を示すもの
- 交差エントロピーでは確率分布P(ω)とQ(ω)が近くなるほど最適解に近づく性質があるため、これを機械学習に当てはめれば交差エントロピーによって予測の精度を評価できる
- 交差エントロピー誤差は0と1のみのtk、予測確率ykとすると以下の式で表すことができる
E=−Σtklog(yk)
k=1- ニューラルネットワークの誤差関数は総データ数をN、n個目のデータのk次元の数値をtnk、ynkとすると以下の式で表すことができる
E=−1/NΣΣtnklog(ynk)
n k- 交差エントロピー誤差関数だけでは重みの更新はできないので必要となる勾配情報∂E/∂wを求めて活用する
教師あり学習において交差エントロピーは非常に有益な誤差関数なので、数式や求め方などをしっかりと理解した上で使ってみましょう。また、他にも有益な誤差関数というのは存在しているので、よろしければより深く学んで機械学習のスキルを向上させてください。
そうしていけばいずれ中級者の門をたたくことも可能になるでしょう。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。