logo

機械学習における損失関数 📂機械学習

機械学習における損失関数

定義

データY=[y1yn]Y = \begin{bmatrix} y_{1} \\ \vdots \\ y_{n} \end{bmatrix}の推定値がY^=[y1^yn^]\widehat{Y} = \begin{bmatrix} \widehat{ y_{1} } \\ \vdots \\ \widehat{y_{n}} \end{bmatrix}として与えられた時、データとその推定値の乖離を表すスカラー関数L:Rn[0,)L : \mathbb{R}^{n} \to [ 0 , \infty )損失関数と呼ぶ。

別名

損失関数は、学習を通じて得たデータの推定値が実際のデータとどれだけ違うかを評価する指標として使用される。この値が大きいほど、より間違えている意味であり、この値が00であることは、「無損失」つまり完璧に推定できることを意味する。これは数学で言うメトリックと大きく異なるわけではない。

もともと経済学で先に使われた言葉なので、LLは時々**コスト関数Cost Function**とも呼ばれる。

種類

次の二つは代表的な損失関数であり、使用する際に適切に知っておくだけで十分である。

MSE(平均二乗誤差)

L(Y^):=1ni=1n(yiyi^)2 L \left( \widehat{Y} \right) := {{1} \over {n}} \sum_{i=1}^{n} ( y_{i} - \widehat{ y_{i} } )^2 MSEは、歴史がある損失関数であり、yiRy_{i} \in \mathbb{R}時に有意義に使用できる。

クロスエントロピー

L(Y^):=1ni=1n<yi,log(σ(yi^))> L \left( \widehat{Y} \right) := - {{1} \over {n}} \sum_{i=1}^{n} \left< y_{i} , \log \left( \sigma ( \hat{y_{i}} ) \right) \right>

クロスエントロピーは、いわゆるワンホットエンコーディングを行う時に効果的な手段となり、YYがカテゴリカルデータである場合、Y^\widehat{Y}が推計した各カテゴリの確率を用いて計算する。主に分類問題に使用される。

ワンホットエンコーディングとは、単に標準基底へのマッピングを意味する。mmクラスがある場合、Rn\mathbb{R}^{n}の標準基底はβ={ei}i=1m\beta = \left\{ e_{i} \right\}_{i=1}^{m}で表記されると、各々のyiy_{i}yi^\hat{y_{i}}

yiRm,y^iβ y_{i} \in \mathbb{R}^{m},\qquad \hat{y}_{i} \in \beta

のようなベクトルで表される。例えば、YYが3つのクラスを持つ場合、yiy_{i}が1番の分類に属しているならyi=[1,0,0]ty_{i} = [1,0,0]^{t}33番の分類に属していればyi=[0,0,1]ty_{i} = [0,0,1]^{t}のように表される。

σ\sigmaソフトマックス関数であり、与えられたベクトルの値を[0,1][0,1]にバウンドして、確率分布の条件を満たすようにする関数だ。<,>\left< \cdot , \cdot \right>内積だ。σ(yi^)[0,1]\sigma ( \hat{y_{i}} ) \in [0,1]なので、log(σ(yi^))<0\log \left( \sigma ( \hat{y_{i}} ) \right) < 0であり、yiy_{i}0011なので L(Y^)=1ni=1n<yi,log(σ(yi^))>0 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 容易に確認できる。

yi=(yi1,,yij,,yim)y_{i} = ( y_{i1} , \cdots , y_{ij} , \cdots , y_{im} )の推定値yi^=(yi1^,,yij^,,yim^)\hat{ y_{i} } = ( \hat{ y_{i1} } , \cdots , \hat{y_{ij}} , \cdots , \hat{y_{im}} )の各成分は、確率が高いほど大きな値、低ければ低い値を取る。これをソフトマックス関数に入れると、確率が高いほど11に近く、低いほど00に近い値に調整される。実際の成分が11であるが、確率を低く計算した場合1log(c)- 1 \cdot \log (c)c1c\ll 1となり、かなり大きな値になる。逆に、実際の成分が00であり、確率を高く計算しても0log(c)- 0 \cdot \log(c)は大きな意味を持たない。従って、間違えれば間違えるほど、クロスエントロピーが急騰することが容易に予想できる。

参照