Q&A
解決済
3回答
5641閲覧
総合スコア102
機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。
0グッド
1クリップ
投稿2018/09/20 07:24
0
1
ディープラーニングの勉強をしています。
なぜシグモイド関数では多クラス分類できず、ソフトマックス関数では多クラス分類できるのでしょうか? シグモイド関数は0〜1の間で出力を表現し、もっとも大きい出力値を持つのをそのクラスに属する、と分類できそうな気がしていて、多クラス分類にはソフトマックス関数のみが使われている理由を知りたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答3件
なぜシグモイド関数では多クラス分類できず、ソフトマックス関数では多クラス分類できるのでしょうか?
出力にソフトマックス関数を適用すると和が1になるので、クラス分類で N クラスの確率値をネットワークの出力としたい場合に都合がいいので、よく使われます。 ただ、ソフトマックス関数でないと多クラス分類問題ができないわけではありません。 実際、他の関数で多クラス分類問題を解いてるモデルもあります。(例: YOLOv3 はロジスティクス関数)
別にシグモイド関数でもよいと思いますし、そのほうが都合がいい場合もあります。 例えば、「人」と「男性」というクラスがあったら、「男性」が写っている画像は両方確率が 100% に近くなってほしいですよね。 ソフトマックス関数は排他的なので、このような場合は向いていません。
投稿2018/09/20 07:47
総合スコア21962
ベストアンサー
sigmoid関数で多クラス分類ができないというのは誤解があります。logistic回帰はsigmoid関数を用いていますが多クラス分類ができます。ただ、sigmoid関数を使って多クラス分類を行う場合、one-restアプローチのようなテクニックが必要となり、計算量が増えます。(one-restアプローチは、識別したいクラスとそれ以外の残りの二値問題に簡略化して境界線を決定すると処理をクラス数だけ行い、結果を組み合わせて各クラスに属する確率を求めるもの) softmaxは多クラス問題を効率的に計算できるものとして導入されたものです。もともとはlogitモデルで用いられていたものです。このlogitモデルの多クラスに属する割合を計算する手法をニューラルネットに応用したのでしょう。なお、softmax関数はsigmoid関数の多変量展開したものだそうです。つまり、数字的にはsoftmax関数が一般的でsigmoid関数は二値問題の特殊解なのかもしれません。
投稿2018/09/20 21:18
総合スコア3378
おっしゃる通り、sigmoidを出力層活性化関数とし、もっとも大きい出力値のクラスに属すると分類することは可能です。
softmaxを使うと、出力の総和が1になるような制約が働くので、確率として取り扱う上では便利です。また、精度の面でも多少のメリットがあるかもしれません。
投稿2018/09/20 08:00
総合スコア30939
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
なぜシグモイド関数では多クラス分類できず、ソフトマックス関数では多クラス分類できるのか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。