機械学習における損失関数
定義
データ$Y = \begin{bmatrix} y_{1} \\ \vdots \\ y_{n} \end{bmatrix}$の推定値が$\widehat{Y} = \begin{bmatrix} \widehat{ y_{1} } \\ \vdots \\ \widehat{y_{n}} \end{bmatrix}$として与えられた時、データとその推定値の乖離を表すスカラー関数$L : \mathbb{R}^{n} \to [ 0 , \infty )$を損失関数と呼ぶ。
別名
損失関数は、学習を通じて得たデータの推定値が実際のデータとどれだけ違うかを評価する指標として使用される。この値が大きいほど、より間違えている意味であり、この値が$0$であることは、「無損失」つまり完璧に推定できることを意味する。これは数学で言うメトリックと大きく異なるわけではない。
もともと経済学で先に使われた言葉なので、$L$は時々**コスト関数Cost Function**とも呼ばれる。
種類
次の二つは代表的な損失関数であり、使用する際に適切に知っておくだけで十分である。
MSE(平均二乗誤差)
$$ L \left( \widehat{Y} \right) := {{1} \over {n}} \sum_{i=1}^{n} ( y_{i} - \widehat{ y_{i} } )^2 $$ MSEは、歴史がある損失関数であり、$y_{i} \in \mathbb{R}$時に有意義に使用できる。
クロスエントロピー
$$ L \left( \widehat{Y} \right) := - {{1} \over {n}} \sum_{i=1}^{n} \left< y_{i} , \log \left( \sigma ( \hat{y_{i}} ) \right) \right> $$
クロスエントロピーは、いわゆるワンホットエンコーディングを行う時に効果的な手段となり、$Y$がカテゴリカルデータである場合、$\widehat{Y}$が推計した各カテゴリの確率を用いて計算する。主に分類問題に使用される。
ワンホットエンコーディングとは、単に標準基底へのマッピングを意味する。$m$クラスがある場合、$\mathbb{R}^{n}$の標準基底は$\beta = \left\{ e_{i} \right\}_{i=1}^{m}$で表記されると、各々の$y_{i}$と$\hat{y_{i}}$は
$$ y_{i} \in \mathbb{R}^{m},\qquad \hat{y}_{i} \in \beta $$
のようなベクトルで表される。例えば、$Y$が3つのクラスを持つ場合、$y_{i}$が1番の分類に属しているなら$y_{i} = [1,0,0]^{t}$、$3$番の分類に属していれば$y_{i} = [0,0,1]^{t}$のように表される。
$\sigma$はソフトマックス関数であり、与えられたベクトルの値を$[0,1]$にバウンドして、確率分布の条件を満たすようにする関数だ。$\left< \cdot , \cdot \right>$は内積だ。$\sigma ( \hat{y_{i}} ) \in [0,1]$なので、$\log \left( \sigma ( \hat{y_{i}} ) \right) < 0$であり、$y_{i}$は$0$か$1$なので $$ L \left( \widehat{Y} \right) = - {{1} \over {n}} \sum_{i=1}^{n} \left< y_{i} , \log \left( \sigma ( \hat{y_{i}} ) \right) \right> \ge 0 $$ 容易に確認できる。
$y_{i} = ( y_{i1} , \cdots , y_{ij} , \cdots , y_{im} )$の推定値$\hat{ y_{i} } = ( \hat{ y_{i1} } , \cdots , \hat{y_{ij}} , \cdots , \hat{y_{im}} )$の各成分は、確率が高いほど大きな値、低ければ低い値を取る。これをソフトマックス関数に入れると、確率が高いほど$1$に近く、低いほど$0$に近い値に調整される。実際の成分が$1$であるが、確率を低く計算した場合$- 1 \cdot \log (c)$は$c\ll 1$となり、かなり大きな値になる。逆に、実際の成分が$0$であり、確率を高く計算しても$- 0 \cdot \log(c)$は大きな意味を持たない。従って、間違えれば間違えるほど、クロスエントロピーが急騰することが容易に予想できる。