Loading [MathJax]/jax/output/CommonHTML/jax.js

学習の種類と損失関数

学習の種類と損失関数(誤差関数)

以下の説明で使う変数一覧

  • K: 出力素子数
  • N: 訓練データのサンプル数
  • (xn,dn) : 訓練データ
  • dn=(dn1,,dnK) 訓練データの入力 xn に対する望ましい出力
  • y(xn;w)=yn=(yn1,,ynK): 入力xnに対するネットワークの出力

回帰(regression)

目的: 滑らかな関数(y=f(x))を学習

損失(誤差)関数: 平均二乗誤差 (Kerasでの名称: mean_squared_error,mse)が一般的

E(w)=12Nn=1||dnyn||2

多クラス分類

目的: 入力をKクラス(K3)に分類する。(K=2の場合は後述)

方法:

  • 出力層の素子数Kは分類したいクラス数と同じにし,訓練データが第kクラスのときその教師データは [0,,0,1,0,0],とk番目の要素のみを1とする。
  • ニューラルネットワークモデルの出力yの各要素は,各クラスの出現(推定)確率に対応付ける。
  • 出力素子からの各出力は0から1の範囲とし,総和は1になるようにsoftmax法等で正規化する

損失(誤差)関数

クロスエントロピー (交差エントロピー, Kerasでの名称は categorical_crossentropy)が一般的

N個の訓練データに対する対数尤度L(w)=logP(data|model)は次式になる。

これをNで割って符号を反転したものがクロスエントロピーになる。

dk=1なる訓練データに対してのみ(N=1),上式を計算するとlogykになる。

二クラス分類

目的: 入力を2クラスに分類する

方法 : 1出力とし,その出力y[0,1]の値が1/2より大きいか否かでクラス判定をする。

誤差関数 : 二値交差エントロピー (Kerasでの名称:binary_crossentropy, logloss)を使うことが多い。 考え方は多クラス分類と同じだが,出力y1yがそれぞれクラス1,2に属する確率を表すことを使って変形すると以下になる。

E(w)=Nn(dnlogyn+(1dn)log(1yn))

Kerasで使える誤差関数

Kerasでは,学習において最小化したい関数をloss function,学習とは無関係にモデルの性能評価のために用意する関数をmetricと呼び,日本語マニュアルでは前者を誤差関数,後者を評価関数と訳している。