機械学習における損失関数
📂機械学習機械学習における損失関数
定義
データY=y1⋮ynの推定値がY=y1⋮ynとして与えられた時、データとその推定値の乖離を表すスカラー関数L:Rn→[0,∞)を損失関数と呼ぶ。
別名
損失関数は、学習を通じて得たデータの推定値が実際のデータとどれだけ違うかを評価する指標として使用される。この値が大きいほど、より間違えている意味であり、この値が0であることは、「無損失」つまり完璧に推定できることを意味する。これは数学で言うメトリックと大きく異なるわけではない。
もともと経済学で先に使われた言葉なので、Lは時々**コスト関数Cost Function**とも呼ばれる。
種類
次の二つは代表的な損失関数であり、使用する際に適切に知っておくだけで十分である。
MSE(平均二乗誤差)
L(Y):=n1i=1∑n(yi−yi)2
MSEは、歴史がある損失関数であり、yi∈R時に有意義に使用できる。
クロスエントロピー
L(Y):=−n1i=1∑n⟨yi,log(σ(yi^))⟩
クロスエントロピーは、いわゆるワンホットエンコーディングを行う時に効果的な手段となり、Yがカテゴリカルデータである場合、Yが推計した各カテゴリの確率を用いて計算する。主に分類問題に使用される。
ワンホットエンコーディングとは、単に標準基底へのマッピングを意味する。mクラスがある場合、Rnの標準基底はβ={ei}i=1mで表記されると、各々のyiとyi^は
yi∈Rm,y^i∈β
のようなベクトルで表される。例えば、Yが3つのクラスを持つ場合、yiが1番の分類に属しているならyi=[1,0,0]t、3番の分類に属していればyi=[0,0,1]tのように表される。
σはソフトマックス関数であり、与えられたベクトルの値を[0,1]にバウンドして、確率分布の条件を満たすようにする関数だ。⟨⋅,⋅⟩は内積だ。σ(yi^)∈[0,1]なので、log(σ(yi^))<0であり、yiは0か1なので
L(Y)=−n1i=1∑n⟨yi,log(σ(yi^))⟩≥0
容易に確認できる。
yi=(yi1,⋯,yij,⋯,yim)の推定値yi^=(yi1^,⋯,yij^,⋯,yim^)の各成分は、確率が高いほど大きな値、低ければ低い値を取る。これをソフトマックス関数に入れると、確率が高いほど1に近く、低いほど0に近い値に調整される。実際の成分が1であるが、確率を低く計算した場合−1⋅log(c)はc≪1となり、かなり大きな値になる。逆に、実際の成分が0であり、確率を高く計算しても−0⋅log(c)は大きな意味を持たない。従って、間違えれば間違えるほど、クロスエントロピーが急騰することが容易に予想できる。
参照