machine_learningヘッダファイルパッケージ マニュアル

(The documentation of machine_learning header file package)

Last Update: 2021/12/20


machine_learningヘッダファイルパッケージには 機械学習に用いるヘッダファイルをまとめてある。 主にニューラルネットワークモデルを用いている。
Header files used for machine learnings are included in machine_learning header file package. Mainly, the neural network model is used.

機械学習では非常に多数の添字や変数が登場する。 これらの添字や変数の使い方をシステム全体で統一しておかないと混乱の元である。 machine_learningヘッダファイルパッケージでは全体を通して 下表に示す通りの記号と変数名を用いている。
In the machine learning, a large number of indices and variables appear. To avoid confusions, notations of these indices and variables should be used consistently throughout a system. Throughout machine_learning header file package, the notations shown in the table below are used for the symbols and variable names.

マニュアル中の記号
Symbol in the documentations
プログラム中の変数名(型)
Variable name in the program codes (type)
意味・用途
Description
\(M\) M (int) 中間層の数。
The number of intermediate layers.
\(m\) m (int) 層番号。 \(m=0\)が入力層、 \(1\leq m\leq M\)が中間層、 \(m=M+1\)が出力層を表す。
The index of layer; \(m=0\) corresponds to the input layer, \(1\leq m\leq M\) does the intermediate layers, and \(m=M+1\) does the output layer.
\(N\) N (int) 教師データの個数。
The number of teaching data.
\(N_{tr}\) Ntr (int) 訓練データの個数。
The number of training data.
\(N_{te}\) Nte (int) 検証データの個数。
The number of test data.
\(n\) n (int) 教師データ番号(先頭は0)。
The index of teaching data (starting with 0).
\(J^{(m)}\) J[m] (int) \(m\)番目の層における変数の個数。
The number of variables in the \(m\)th layer.
\(i\) i (int) 1つの層の中での変数番号(先頭は0)。 1つの層のみを扱う場面や、 2つの連続した層を扱う場面で入力側の層の変数番号を表すために用いる。
The index of variable in a given layer (starting with 0). This variable is used in situations where one layer is considered alone, or to represent the index of variable in the input side when two consecutive layers are considered.
\(i’\) ii (int) 1つの層の中での2つ目の変数番号(先頭は0)。
The 2nd index of variable in a given layer (starting with 0).
\(i”\) iii (int) 1つの層の中での3つ目の変数番号(先頭は0)。
The 3rd index of variable in a given layer (starting with 0).
\(j\) j (int) 2つの連続した層を扱う場面での出力側の層の変数番号(先頭は0)。
The index of variable in the output side when two consecutive layers are considered (starting with 0).
\(j’\) jj (int) 2つの連続した層を扱う場面での出力側の層の2つ目の変数番号(先頭は0)。
The 2nd index of variable in the output side when two consecutive layers are considered (starting with 0).
\(j”\) jjj (int) 2つの連続した層を扱う場面での出力側の層の3つ目の変数番号(先頭は0)。
The 3rd index of variable in the output side when two consecutive layers are considered (starting with 0).
\(X_{i}^{(m)}\) X[m][i] (double) \(m\)番目の層における\(i\)番目の変数。
The \(i\)th variable in the \(m\)th layer.
\(x_{i}^{(m,n)}\) x[m][n][i] (double) \(m\)番目の層における\(i\)番目の変数の \(n\)番目の教師データにおける値。
The value of the \(i\)th variable in the \(m\)th layer for the \(n\)th teaching data.
\(Y_{j}^{(m)}\) Y[m][j] (double) \(X_{i}^{(m)}\) の\(j\)番目の線形結合の値。 (1) (2)
The value of the \(j\)th linear combination for \(X_{i}^{(m)}\). (1) (2)
\(y_{j}^{(m,n)}\) y[m][n][j] (double) \(x_{i}^{(m,n)}\) の\(j\)番目の線形結合の値。 (1) (2)
The value of the \(j\)th linear combination for \(x_{i}^{(m,n)}\). (1) (2)
\(W_{j,i}^{(m)}\) W[m][j][i] (double) \(m\)番目の層の\(j\)番目の線形結合 (\(Y_{j}^{(m)}\)や \(y_{j}^{(m,n)}\)) における\(i\)番目の変数 (\(X_{i}^{(m)}\)や \(x_{i}^{(m,n)}\)) に対する係数。 但し\(i\)=\(J^{(m)}\)に対しても 定義され、線形結合の定数項を表す。 (1)
The coefficient of the \(j\)th linear combination in the \(m\)th layer (\(Y_{j}^{(m)}\) or \(y_{j}^{(m,n)}\)) for the \(i\)th variable (\(X_{i}^{(m)}\) or \(x_{i}^{(m,n)}\)); however, this quantity is defined for \(i\) = \(J^{(m)}\), which means the constant term in the linear combination. (1)
\(f_{j}^{(m)}\)   \(Y_{j}^{(m)}\)から \(X_{j}^{(m+1)}\)への 変換を行う数学関数(ジグモイド、ソフトマックス、ReLUなど)。
A mathematical function for conversion from \(Y_{j}^{(m)}\) to \(X_{j}^{(m+1)}\); for example, sigmoid, softmax, or ReLU functions.
\(c^{(n)}\) c[n] (int) \(n\)番目の教師データの分類クラスの正解。
The correct grouping class for the \(n\)th teaching data.
\(t_{i}^{(n)}\) t[n][i] (double) \(x_{i}^{(M+1,n)}\) の正解。\(n\)番目の教師データが\(i\)番目のクラスに 分類されるなら1、分類されないなら0を取る(1-of-K表現)。
The correct answer for \(x_{i}^{(M+1,n)}\), which is 1 if the \(n\)th teaching data belongs to \(i\)th class, 0 if not (1-of-K representation).
E E (double) 交差エントロピー誤差。
The cross entropy error.
\(D_{i,j}^{(m,n)}\)   \(\partial x_{i}^{(M+1,n)} / \partial y_{j}^{(m,n)}\)
\(E_{j}^{(m,n)}\) Ej[m][n][j] (double) \(\sum_{i=0}^{J^{(M+1)}-1} t_{i}^{(n)}D_{i,j}^{(m,n)}/x_{i}^{(M+1,n)}\)
\(x_{i}^{(m,n;U)}\) xU[m][n][i] (double) \(x_{i}^{(m,n)}\) の規格化前の値。
An un-normalized value of \(x_{i}^{(m,n)}\).
\(x_{i,min}^{(m;U)}\) xUmin[m][i] (double) \(x_{i}^{(m,n;U)}\) の\(n\)に関する最小値。
The minimum value of \(x_{i}^{(m,n;U)}\) with respect to \(n\).
\(x_{i,max}^{(m;U)}\) xUmax[m][i] (double) \(x_{i}^{(m,n;U)}\) の\(n\)に関する最大値。
The maximum value of \(x_{i}^{(m,n;U)}\) with respect to \(n\).
\(x_{i}^{(m,n;N)}\) xN[m][n][i] (double) \(x_{i}^{(m,n)}\) の規格化後の値。
A normalized value of \(x_{i}^{(m,n)}\).
\(x_{min}^{(m;N)}\) xNmin[m] (double) \(x_{i}^{(m,n;N)}\) の\(n\)に関する最小値。 (3)
The minimum value of \(x_{i}^{(m,n;N)}\) with respect to \(n\). (3)
\(x_{max}^{(m;N)}\) xNmax[m] (double) \(x_{i}^{(m,n;N)}\) の\(n\)に関する最大値。 (3)
The maximum value of \(x_{i}^{(m,n;N)}\) with respect to \(n\). (3)
\(W_{j,i}^{(m;U)}\) WU[m][j][i] (double) 規格化していない変数 \(x_{i}^{(m,n;U)}\) に対応する \(W_{j,i}^{(m)}\)。
The value of \(W_{j,i}^{(m)}\) corresponding to the un-normalized variables \(x_{i}^{(m,n;U)}\).
\(W_{j,i}^{(m;N)}\) WN[m][j][i] (double) 規格化した変数 \(x_{i}^{(m,n;N)}\) に対応する \(W_{j,i}^{(m)}\)。
The value of \(W_{j,i}^{(m)}\) corresponding to the normalized variables \(x_{i}^{(m,n;N)}\).
\(\alpha\) alpha (double) モデルパラメータ \(W_{j,i}^{(m)}\) の反復推定における1回の反復での修正割合。 \(\partial E / \partial W_{j,i}^{(m)}\) の\(\alpha\)倍だけ修正する。
Ratio of the modification of the model parameter \(W_{j,i}^{(m)}\) in each round of the iterative refinement, defined such that the parameters are corrected by \(\alpha\) times \(\partial E / \partial W_{j,i}^{(m)}\).

  1. これらの変数は以下の関係式で定義される。
    These variables are defined by the relations below.
    \[ Y_{j}^{(m)}= \sum_{i=0}^{J^{(m)}-1} W_{j,i}^{(m)}X_{i}^{(m)}+W_{j,J^{(m)}}^{(m)} \] \[ y_{j}^{(m,n)}= \sum_{i=0}^{J^{(m)}-1} W_{j,i}^{(m)}x_{i}^{(m,n)}+W_{j,J^{(m)}}^{(m)} \]
  2. 線形結合 \(Y_{j}^{(m)}\), \(y_{j}^{(m,n)}\)については \(J^{(m+1)}\)個あり、 各線形結合が\(X_{j}^{(m+1)}\), \(x_{j}^{(m+1,n)}\) と1対1で対応することから\(i\)ではなく\(j\)を変数番号として用いている。 その意味では\(m\)+1番目の層の量と見なすこともできるが、 \(m\)番目の層の量と見なす方が \(m\)=0から始まるのでコーディング(配列要素番号の割り当て)に都合が良く、 また\(m\)番目の層の中で閉じた線形結合となるので \(W_{j,i}^{(m)}\) の意味が分かり易くなる。 このような事情から、\(m\)番目の層の量として扱いつつ 変数番号のみ\(j\)を用いる方式にしている。
    For the linear combinations \(Y_{j}^{(m)}\) and \(y_{j}^{(m,n)}\), not \(i\) but \(j\) is used as the index of variable because the number of linear combinations is \(J^{(m+1)}\) and each linear combination has a one-to-one relation with \(X_{j}^{(m+1)}\) and \(x_{j}^{(m+1,n)}\). To this point, the linear combinations may be regarded as the quantities in the (\(m\)+1)th layer; however, it is better to regard them as the quantities in the \(m\)th layer because: (1) by doing so, the index of layer starts from \(m\)=0, which is convenient for the coding based on arrays; and (2) the meaning of \(W_{j,i}^{(m)}\) becomes simple because the linear combination can be considered within the \(m\)th layer alone. For these reasons, the linear combinations are treated as the quantities in the \(m\) with using \(j\) as the index of variable.

  3. \(i\)によらず共通の値とする。
    They are set equal for all \(i\).

また、このヘッダファイルパッケージで用いている計算式を以下にまとめた。
The formulas used in this header file package are summarized below.

  1. 数学関数の定義と微分形 (Definitions and differential forms of mathematical functions)
  2. 交差エントロピー誤差 (Cross entropy error)
  3. モデルパラメータ\(W_{j,i}^{(m)}\)に対する制約条件 (Constraints on model parameters \(W_{j,i}^{(m)}\))
  4. 交差エントロピー誤差\(E\)のモデルパラメータ\(W_{j,i}^{(m)}\)による微分 (Derivative of the cross entropy error \(E\) with respect to model parameters \(W_{j,i}^{(m)}\))
  5. 入力変数\(x_i^{(0,n)}\)の規格化 (Normalization of the input variable \(x_i^{(0,n)}\))
  6. 複数の入力変数セットを持つ問題への応用 (An approcation to problems having multiple input variable sets)

machine_learningヘッダファイルパッケージ内の関数には Machine Learningの頭文字を取った「ML_」を冒頭に付けることにより、 他のパッケージ内の関数との名前の重複が起きないようにしている。
To avoid duplication of function names between this and other packages, “ML_” (capital letters of Machine Learning) is used at the head of all the function names in this header file package.

machine_learningヘッダファイルパッケージ内のヘッダファイルを以下に示す。 各ヘッダファイルの詳細はリンクをクリックして参照のこと。
Header files in machine_learning header file package are listed below. For details of individual header files, click the links.

◆特殊なヘッダファイル (Special header files)

ヘッダファイル名
Header file name
機能・用途
Purpose
machine_learning/index.h machine_learningヘッダファイルパッケージ内の 他のヘッダファイル一式をインクルードするためのヘッダファイル。
A header file to include all the other header files in machine_learning header file package.
machine_learning/prototype.h machine_learningヘッダファイルパッケージ内の関数のプロトタイプ。
Prototypes of functions in machine_learning header file package.

◆通常のヘッダファイル (Normal header files)

ヘッダファイル名
Header file name
機能・用途
Purpose
machine_learning/cross_entropy.h 交差エントロピーおよび関連する量を計算する関数。
Functions to calculate the cross entropy and related quantities.
machine_learning/estimate.h 機械学習におけるモデルパラメータ\(W_{j,i}^{(m)}\)の 最適値の推定を行う関数。
Functions to estimate the optimal values of the model parameters \(W_{j,i}^{(m)}\) in the machine learning.
machine_learning/evaluate.h 訓練データ・検証データを用いてモデルの評価を行う関数。
Functions to evaluate models using training and test data.
machine_learning/initialize.h 機械学習における様々な初期化や初期設定を行う関数。
Functions to conduct various initializations and initial settings for a machine learning.
machine_learning/mathfunc.h 機械学習で用いられる数学関数の計算を行う関数。
Functions to calculate mathematical functions used in a machine learning.
machine_learning/multi_input.h 計算式の6節で述べた 「複数の入力変数セットを持つ問題」 を扱う関数。
Functions to treat “problems having multiple input variable sets”, described in Section 6 of formulas.
machine_learning/readwrite.h 機械学習におけるパラメータや解析結果等のファイル入出力を行う関数。
Functions to read and write various quantities in machine learning (e.g., parameters or analysis results) from/to files.
machine_learning/unsupervised.h 教師なし学習を行う関数。
Functions to conduct an unsupervised learning.