-1か1のみを取ります。その値の符号が分類結果となります。正であれば分類に成功しており、負であれば分類に失敗しています。正は大きな値である場合も小さな値である場合も分類結果は符号のみによって決められます。出力の大きさに関しては、10000と0.1では、「確実に正例」と「恐らく正例」くらいの差異があると考え損失の与え方を変えるのが通常の代理損失の設計方法です。0-1損失で図の見方を確認の領域は、分類に成功していることを意味しているので、損失を一切与えません。結果としてこの損失の値は、分類させたデータ点のうち、何個分類に失敗したのかを表しています。分類失敗の数が0になるのを目指して学習を行っていることになります。0に近いうちは損失を与えるようにします。領域では分類に失敗しているため、損失を与えます。負の値が大きい場合には、激しく間違えていると考えて大きな損失を与えるようにします。この損失関数は0になることは無いので、学習が進んだ末に分類が完全に成功したとしても損失は無くなりません。その場合の損失の大きさというのは、どれくらい確実に分類が上手くいっているのかの指標になります。ロジスティック回帰で用いられる損失関数です。(名前は回帰だが、これは分類に使われる手法である)指数損失ロジスティック損失と考え方は似ていますが、分類の間違いに対して非常に厳しい損失を与えます。利用している例を知らないです。直感的には、間違いに対する損失を強くしておけば学習が速く進みそうな気分にはなりますが、仮に外れ値が紛れ込んでいた場合(つまりデータの一部自体がおかしい場合)に、そのデータの損失に大きく引きずられることとなります。ヒンジ損失(分類が間違っている領域)では、出力の絶対値に対して直線的に増加する損失を与えるようにします。点から損失を与え始めることです。この点を分類が確実に上手くいっていると言える境目とみなしていることになります(従ってそれ以降は損失は与えません)。)データばかりになれば損失は0となります(が通常は機械学習では分類精度100%を過学習と疑うべき)。サポートベクターマシンに用いられる損失関数です。サポートベクターマシンについては以下s0sem0y.hatenablog.com平滑化ヒンジ損失ヒンジ損失と基本的に考え方は同じです。領域を二次関数にして、接続を滑らかにしたものです。数値的には、分類が成功しているがその確実性が低いと思われる場合への損失が、ヒンジ損失に比べると寛容です。基本的なのは「0-1損失」の間違えたら損失を与えるというものです。これは直接的に間違えた数を数えていることになります。他の損失は概ね、間違いの度合いが強いほど損失も強くし、正解していても、境界付近で怪しい場合には小さな損失を与えるようになっています。通常0-1損失はあまり使われません。(最も単純なパーセプトロンでは学習性能自体を評価するために使われていました)多くの場合は代理損失を立てて問題を考えていくことになります。これらの損失関数は機械学習のモデルとある程度セットで用いられることが多いようです。ヒンジ損失はサポートベクターマシンで用いられています。ロジスティック損失は、後の多層パーセプトロンやロジスティック回帰モデルで用いられています。割り振るというところから始まるのではなく、出力値を「あるクラスに属する確率」だと考えられるようにモデル化するところから始め、その最尤推定を考えた際に自然とロジスティック損失が尤度関数として導かれます。方の話ニューラルネットの多クラス分類では交差エントロピーが用いられますが、ロジスティック損失と同様に最尤推定という形で導かれます。このようにモデルの出力を確率だと考えて、その確率が高いクラスに分類するという形で分類問題のモデルを考えるものを識別モデルと呼びます。考える場合、これを識別関数と呼びます。今回は紹介していませんが、他に生成モデルというものもあり、データがあるクラスから生成される確率と、あるクラス自体の確率の積から、分類の確率を求める(ベイズの定理を用いる)モデルもあります。確率分布から開始する識別モデルや生成モデルになるほど、損失関数を設計していくという概念は薄くなっていきます(なぜならモデルを立てて、それを上手く推定するということを考えると、自然と損失関数に相当する何かが出てくるため)。そのモデルの意味が明確な状態で設計されていくため、パラメータの意味するところも人間にとって把握しやすいかもしれません。一方で分類だけが目的の場合は、損失関数からスタートして識別関数をパパっと考えてしまったほうがコストも精度も良いということは多々あります。機械学習の発展の上では、とりあえず損失関数からスタートしてみて、分類が上手くいく手法が出来上がり、後から調べたら●●という確率モデルと同等であったという後付である場合の方が多いです(ニューラルネットだって本来は識別関数である。後から確率を出力する識別モデルと考えることができると分かった。実は生成モデルにもできる)。識別関数や識別モデル、生成モデルの考え方の違いを明確に理解しつつ、実際に使うときには目的に応じて、簡単な方法(識別関数)から試したほうが良いかもしれません(簡単な方法といえど、結果的に生成モデルと同等の働きであることもある。それを明示していないだけ)。(もちろん目的が、データの生成をすることならば、生成モデルを考えなければならない)学習の評価は「正解・不正解」だけでない今回は2クラス分類という基本的なところからはじめました。実際に多クラスへ拡張する場合は、複数の2クラス分類器を組み合わせるなどの方法が取られます。その際には、単に正解・不正解だけでなく、どんな間違え方をしているのか(どのクラスをどのクラスと間違ってしまったかなど)も重要な指標になってきます。回帰では、ダイレクトに正解と出力との距離を測ることで損失を決定します。(従って直感的にはこちらのほうが分かりやすい。»プロフィール自分が勉強していく上で学んだことなどをまとめていきたいと思います。ML_deepスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。