Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

分類問題の考え方

More than 3 years have passed since last update.

分類問題の考え方

よく巷にある画像の分類、ドキュメントのカテゴリ分けなどがあるが、それらは結局最終的には同じ出力形式になります。
それは以下のように、出力層で分類したいクラスの数値のユニットの数と同等になります。

例えば・・・ポジネガ判定はポジティブ、ネガティブの2つの値、MNISTは0-9などです。
ネガポジなどは実際の出力層は以下のような数式で表されます。
$$
f(x)=(0.4,0.6)^T
$$
ここでポイントなのは全ての項目を足すと1になるということです。
なので出力層ではそのそのまま確率を出すことが可能になります。

シングルラベルの場合

ここで言う確率とはそのデータが必ずどれか1つに入っている場合であり、他方が高くなるともう片方が低くなってしまいます。

Softmax関数

これを実装するにはSoftmax関数を使います。
$$
y_i = \frac{\exp(a_i)}{\sum_j^D \exp(a_j)}
$$
これは以下のように計算できますので、
$$
\sum_i^D y_i = \frac{\sum_i^D \exp(a_i)}{\sum_j^D \exp(a_j)}=1
$$
のように和が1となります。

交差エントロピー

これを損失関数として扱う場合には交差エントロピーを使います。
F.softmax_cross_entropyです。

$$
E=-\sum_n^N \sum_i^D t_{ni} \log y_i
$$

マルチラベルの場合

上記のシングルラベルの方法だと、どちらかの数値が高くなると必ず他の数値が下がります。
そのため、答えが複数あるようなものには使えません。
例えば・・・一般のニュース記事などで、タグ付けをする場合、「経済」、「政治」など複数のラベリングが必要になるとき

このときは別の関数を使うことになます。
また、分類問題でも「その他」というものが存在する場合もこの手法が使えます。未知のものというのは非常に学習させるのは難しいので。

その際にはシグモイド関数を使うことになります。sigmoid_cross_entropyです。
シグモイド関数を使うことにより、一方的な数値の偏りがなくなります。
次は具体例で説明しようと思います。

sou-kun
いろんなことをやっています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away