1. はじめに
このページでは,著者が共通して用いる「数式」中の記法(notation)の,このサイトにおける基本ルールを整理する(2節).各記事で,数式中に定義されていない記号等が急に登場した場合は,このページの記法を参考にしていただきたい(特に用語辞典の各記事の数式).
ただし,機械学習・パターン認識界隈は,数式表記のルールはサブ分野ごとに微妙に異なり,必ずしも統一されていない.よって,あくまで著者の守備範囲である「コンピュータビジョン」「機械学習」あたりの論文やテキストにおいて見てきた規則を,経験的に採用している.
加えて,コンピュータビジョン・機械学習・パターン認識でよく用いられている「変数・関数の命名規則」をこのサイトでは採用している.それらの命名ルールについても,このページにまとめておく(3節).
2. 数式の記法
CVMLエキスパートガイドの数式は Mathjax (version3)を用いて,Latex形式で執筆している.
基本的には,以下の記法に基づいて著者は数式を書いている:
- スカラーは,イタリック体(≒斜体)で,($a,b , i, j , k , l, m,n , x, y, z$) のように表す.
- ベクトルは,太字のローマン体(立体)で ,$\bm{x},\bm{y}$のように小文字で表す(機械学習系の論文は,太字を立体にする方が,ベクトルや行列の積が縦に揃っていて見やすい.イタリック体だと,数式がたくさんのベクトル積や行列積で混みあっているときに見づらいと著者が思うのが理由).
- ベクトルは縦ベクトルとして扱う.ベクトルを構成する要素を明示する場合は$\bm{x} = (x_1, x_2, \ldots, x_D)^{\top}$のように定義する.これにより「行列の特殊系がベクトルである」とみなしていることとなる.
- 行列は,太字のローマン体(立体)で $\bm{X}$のように大文字で表す.行列は太字にしない学術分野もあるが,ベクトルを行列の一般系とみなしている意味で,行列も太字に揃えている.
- (3階以上の)テンソルも,行列と同じく,太字のローマン体で$\bm{X}$のように表す.
集合や群については,以下の記法を用いる:
- 集合は,波括弧(brace)をもちいて$\{ \}$で表す.
- ベクトルの各要素を表示する場合は,丸括弧(parenthesis) $()$で囲う.
- 行列の要素を表示する場合は,基本的には角括弧(bracket) $[ ]$で囲い,その場合,ベクトルも角括弧で囲う.ただし,たまに行列の要素表示も,丸括弧(parenthesis) $()$で囲うこともある.
- 実数の集合を$\mathbb{R}$と表す.
- 複素数の集合を$\mathbb{C}$と表す.
3. 変数・関数命名の基本ルール
基本的に「その記事が表している対象を,英語での名称の先頭文字」を,1文字の変数名や関数名として採用する.ただし,常用関数については$\sin, \cos, \log$などLatexで用意されている通り表記する.
なるべく,変数や添字の英語の意味に合わせて,その意味の通りの英語の先頭文字を用いるようにしている.ただし,特に$x,y$や$i,j,k,l$のような「多次元配列のインデックス」では,慣習通りアルファベット順にこれらの添字を用いて英語の元意味を用いないことも多い.
3.1 確率・ベイズ
- 確率密度関数は,$p(x)$や$p(\bm{v})$のように,小文字の$p(\cdot)$で表す(probabilityの$p$).
- その確率密度関数を,変分ベイズなどで近似した確率密度関数は,$q(\cdot)$で表す.
3.2 機械学習
- 識別モデル:
- 入力ベクトル:基本的に$\bm{x}$で表す.また$\bm{x}$次元(dimention)数を$D$次元とする.
- ターゲット:スカラーのクラス値のラベルである場合$y$と書く.
- ターゲット:softmax後の確率ベクトルや,one-hotベクトルの場合,$\bm{y}$と表す.ターゲットであることを強調したい場合は$\bm{t}$と表す場合が,このサイトではあまり用いない.
- モデルが推定した出力値は$\hat{y}$もしくは$\hat{\bm{y}}$で表す.
- 教師ラベルのクラス数を$K$個と書き,添字を$k$にすることが多い.
- 同じくクラスタ数も$K$クラスと書き,添字も$k$にする.
- $N$個の特徴ベクトルから構成されるデータセット集合を,$\mathcal{D} = \{\bm{x}_1, \bm{x}_2, \ldots, \bm{x}_i,\ldots, \bm{x}_N\}$と表し,添字(index)は$\{i \mid i = 1,2,….,N\}$と表す.
- 損失関数:
- 損失関数(Loss function)は$\mathcal{L}$と表す.
- 潜在変数:
- ニューラルネットの隠れ層(hidden layer)のベクトルは,$\bm{h}$で表す.
- 確率変数を用いたベイズモデルやグラフィカルモデルの潜在変数は,慣習に従って$\bm{z}$で表す.
- 統計・ベイズ:
- 期待値(Expectation)計算を行う関数は$\mathbb{E}[\cdot]$と表す.
- $\bm{x}$の集合から,平均値・期待値を算出したものを$\bar{\bm{x}}$と表すこともある.
- 確率的モデルのパラメータは$\bm{\theta}$で表す.
- 系列や,ネットワーク層,ステップ数の表記:
- 特徴ベクトルの系列データは,添字timeの$t$とし,括弧付きの上付きで$\bm{x}^{(1)},\bm{x}^{(2)}, \ldots,\bm{x}^{(t)} ,\ldots,\bm{x}^{(T)}$と表す.
- 同様に,ニューラルネットワークの$l$層目における,各(ニューロン)ユニットの出力値も,$\bm{X}_{jk}^{(l)}$のように表す.
3.3 画像処理・コンピュータビジョン
- モノクロ画像,もしくは3チャンネル画像において,
- チャンネル$k$の輝度値を,2次元配列$\bm{I} \in \mathbb{R}^{H \times W}$ と行列で表す.
- また,そのチャンネル画像の$y$行$x$列の要素値を$\bm{I}(y,x)$と表す.
- ステレオの視差(disparity)の値を$d$と表す.
- 畳み込みカーネル$\bm{W}$と画像$\bm{X}$の間での畳み込み演算は,畳み込み演算子$*$を用いて,$\bm{W} * \bm{X}$とあらわす.
- 空間フィルタや畳み込み層の,畳み込みカーネルの空間サイズは,[W, H] と表わす.
- 例:[3 x 3] (空間)サイズの カーネル.
- CNNの特徴マップなどの,3次元配列を [W x H] x C で表わす.
- 例: [7 x 7] x 256 のサイズの特徴マップ.
3.4 音響・音声解析
- STFT(短時間フーリエ変換)では,フレーム番号(number)を$n$、周波数(frequency)のbinを$f$で,それぞれ添字化する.
3.5 ディープニューラルネットワーク(DNN)
- (フィードフォワード)ニューラルネットワークの$l$層目の線形層について,重み全体を行列$\bm{W}^{(l)}$と表し,その重み係数パラメータを$w_{ji}^{(l)}$であらわす ($i$は入力数の添え字で,$j$は出力数の添え字である).また,バイアスは$b$と表す.
- フィードフォワードニューラルネットのうち,画像向け2D畳み込みニューラルネットワークでは,$l$層目の畳み込み層について,$c$チャンネル目のカーネル上の,各位置$(i,h)$における重みパラメータを$w_{i,j,c}^{(l)}$で表す.