関数ML_cross_entropy マニュアル

(The documentation of function ML_cross_entropy)

Last Update: 2024/10/9


◆機能・用途(Purpose)

交差エントロピー誤差を計算する。
Calculate a cross entropy error.


◆形式(Format)

#include <machine_learning/cross_entropy.h>
inline double ML_cross_entropy
(const int N,const int J,double ∗const ∗x, double ∗const ∗t)


◆引数(Arguments)

N 教師データ数\(N\)。
The number of teaching data \(N\).
J 出力層における変数の数\(J^{(M+1)}\)。
The number of variables, \(J^{(M+1)}\), in the output layer.
x 出力層における変数の値を並べた\(N\times J^{(M+1)}\)の2次元配列。 各n,iについてx[n][i]\(=x_i^{(M+1,n)}\)とする。
A 2-D array of \(N\times J^{(M+1)}\) composed of the values of variables in the output layer; x[n][i]\(=x_i^{(M+1,n)}\) for each n and i.
t 教師データにおける出力層の正解値を並べた\(N\times J^{(M+1)}\)の2次元配列。 各n,iについてt[n][i]\(=t_i^{(n)}\)とする。
A 2-D array of \(N\times J^{(M+1)}\) composed of the values of correct values in the output layer; t[n][i]\(=t_i^{(n)}\) for each n and i.


◆戻り値(Return value)

交差エントロピー誤差の値。
The value of the cross entropy error.


◆使用例(Example)

int N=4;
int J=3;
double x[][J]
  ={{0.7,0.2,0.1},
     {0.3,0.5,0.2},
     {0.6,0.2,0.2},
     {0.1,0.3,0.6}};
double t[][J]
  ={{1.0,0.0,0.0},
     {0.0,1.0,0.0},
     {1.0,0.0,0.0},
     {0.0,0.0,1.0}};
double E=ML_cross_entropy(N,J,x,t);


◆計算式(Formula)

計算式 の(1)式が用いられる。 なお\(x_i^{(M+1,n)}\)は \(n\)番目の教師データが\(i\)番目のクラスに分類される理論確率であるので \(0\leq x_i^{(M+1,n)}\leq 1\)の範囲の値を取りうるが、 \(x_i^{(M+1,n)}=0\)のときに\(ln x_i^{(M+1,n)}=-\infty\)となってしまう。 これを避けるため、定数マクロ ZERO_THRESHOLD を用いて \(x_i^{(M+1,n)}\)<ZERO_THRESHOLD のときは\(ln x_i^{(M+1,n)}\)をln(ZERO_THRESHOLD)に置き換えて計算を行う。
Eq. (1) of Formula is used. Because \(x_i^{(M+1,n)}\) is the theoretical probability that the \(n\)th teaching data is classified as the \(i\)th group, it takes a value in \(0\leq x_i^{(M+1,n)}\leq 1\). When \(x_i^{(M+1,n)}=0\), \(ln x_i^{(M+1,n)}=-\infty\). To avoid this, \(ln x_i^{(M+1,n)}\) is replaced by ln(ZERO_THRESHOLD) if \(x_i^{(M+1,n)}\)<ZERO_THRESHOLD, where ZERO_THRESHOLD is a constant defined by macro.h.