回答:
単純なシグモイドを使用するのは、出力に複数の「真の」回答、たとえば画像内のさまざまなオブジェクトの存在をチェックするネットワークを認める場合のみです。つまり、出力は確率分布ではありません(合計が1になる必要はありません)。
私はパーティーに遅刻するかもしれませんが、ここで片付けなければならないことがいくつかあるようです。
まず第一に、出力層での活性化関数はしばしばコスト関数に依存します。これは、最後の層の入力に関するコスト関数の微分を計算しやすくするために行われます。
例として、平均二乗誤差損失を回帰設定で使用できます。(線形活性化関数)を設定することにより、微分
場合
と同じ簡単な式が得られますクロスエントロピー損失とロジスティックシグモイドまたはソフトマックスアクティベーション関数を組み合わせます。
これが、線形アクティベーションが回帰に使用され、バイナリ/マルチクラス分類のロジスティック/ソフトマックスアクティベーションが頻繁に使用される理由です。ただし、さまざまな組み合わせを試すことを妨げるものは何もありません。用の発現が多分素敵なようではありません、それはあなたの活性化機能が悪化し実行することを意味するものではありません。
次に、非表示のレイヤーに使用できるアクティベーション関数がたくさんあることを付け加えます。シグモイド(ロジスティック関数や双曲線正接など)は実際にうまく機能することが証明されていますが、Jatinが示すように、ネットワークが深くなりすぎると勾配が消失します。その場合、ReLUが一般的になりました。私が強調したいのは、より多くの活性化機能が利用可能であり、異なる研究者が新しいものを探し続けていることです(例えば、指数線形単位(ELU)、ガウス誤差線形単位(GELU)、...)より良い特性
結論:最高のアクティベーション機能を探すときは、創造力を発揮してください。さまざまなことを試して、どの組み合わせが最高のパフォーマンスにつながるかを確認してください。
補遺:損失関数とアクティベーションのより多くのペアについては、おそらく(正規の)リンク関数を探したいでしょう。
シグモイドとtanhは、隠れ層のアクティベーション関数として使用しないでください。これは、勾配が消失するためです。つまり、入力が高い側(シグモイドが平坦になる)にある場合、勾配はゼロに近くなります。これにより、重みが本当に小さな値で更新されるため、逆伝播中に学習が非常に遅くなるか、まったく学習されなくなります。
詳細な説明はこちら:http : //cs231n.github.io/neural-networks-1/#actfun
したがって、隠れ層の最適な機能はReLuです。
Softmaxの出力は、負でない合計1のベクトルを生成します。相互に排他的なカテゴリがある場合に役立ちます(「これらの画像には猫または犬のみが含まれ、両方は含まれません」)。相互に排他的なラベルがある場合は、softmaxを使用できます。
シグモイド出力を使用すると、各要素が確率であるベクトルが生成されます。相互に排他的でないカテゴリがある場合に役立ちます(「これらの画像には猫、犬、または猫と犬の両方を含めることができます」)。シグモイドニューロンはカテゴリと同じ数だけ使用し、ラベルは相互に排他的であってはなりません。
かわいいトリックは、相互に排他的なバイナリ問題がある場合、単一のシグモイドユニットを使用することもできます。単一のシグモイド単位を使用してを推定できるため、コルモゴロフの公理は意味します。
アイデンティティ関数を出力として使用すると、出力に制限がない場合に役立ちます。一部の企業の四半期の損益は、どちらの側でも制限されない可能性があります。
ReLUユニットまたは同様のバリアントは、出力が上または下に制限されている場合に役立ちます。出力が負でないようにのみ制限されている場合、ReLUアクティベーションを出力関数として使用することは理にかなっています。
同様に、出力が何らかの形でにあるように制約されている場合、tanhは理にかなっています。
ニューラルネットワークの良い点は、非常に柔軟なツールであることです。