出力レイヤーのどのアクティベーション関数ですか?


44

隠しレイヤーのアクティベーション関数の選択は非常に明確ですが(主にシグモイドまたはtanh)、出力レイヤーのアクティベーション関数をどのように決定するのでしょうか。一般的な選択肢は、線形関数、シグモイド関数、およびソフトマックス関数です。ただし、いつどれを使用すればよいですか?


3
最近では、ReLUは隠しユニットのアクティベーション機能として人気があります。
-ijuneja

回答:


39
  • 回帰:線形(値には制限がないため)
  • 分類:softmax(単純なシグモイドも機能しますが、softmaxはより適切に機能します)

単純なシグモイドを使用するのは、出力に複数の「真の」回答、たとえば画像内のさまざまなオブジェクトの存在をチェックするネットワークを認める場合のみです。つまり、出力は確率分布ではありません(合計が1になる必要はありません)。


2
Softmaxは、分類に複数のグループがある場合にも重要です
-cdeterman

15
ソフトマックスがシグモイドよりも「優れている」と言うのは間違っていると思いますが、シグモイドを使用できない場合はソフトマックスを使用できます。バイナリ分類の場合、ロジスティック関数(シグモイド)とsoftmaxは同等に機能しますが、ロジスティック関数は数学的に単純であり、したがって自然な選択です。ただし、3つ以上のクラスがある場合、すべてのクラスの確率を知るために複数の出力が必要なので、ロジスティック関数のようなスカラー関数を使用できません。したがって、softmaxを使用します。
HelloGoodbye

1
softmaxはアクティベーションだとは思いません。一般的に、正規化(softmax)する前にアクティブ化する必要があります。
アーロン

23

私はパーティーに遅刻するかもしれませんが、ここで片付けなければならないことがいくつかあるようです。

まず第一に、出力層での活性化関数はしばしばコスト関数に依存します。これは、最後の層の入力に関するコスト関数の微分を計算しやすくするために行われます。g(x)CzCz

として、平均二乗誤差損失を回帰設定で使用できます。(線形活性化関数)を設定することにより、微分 場合 と同じ簡単な式が得られますクロスエントロピー損失とロジスティックシグモイドまたはソフトマックスアクティベーション関数を組み合わせます。C(y,g(z))=12(yg(z))2g(x)=x

C(y,g(z))z=C(y,g(z))g(z)g(z)z=g(z)(12(yg(z))2)z(z)=(yg(z))1=g(z)y
Cz

これが、線形アクティベーションが回帰に使用され、バイナリ/マルチクラス分類のロジスティック/ソフトマックスアクティベーションが頻繁に使用される理由です。ただし、さまざまな組み合わせを試すことを妨げるものは何もありません。用の発現が多分素敵なようではありません、それはあなたの活性化機能が悪化し実行することを意味するものではありません。Cz

次に、非表示のレイヤーに使用できるアクティベーション関数がたくさんあることを付け加えます。シグモイド(ロジスティック関数や双曲線正接など)は実際にうまく機能することが証明されていますが、Jatinが示すように、ネットワークが深くなりすぎると勾配が消失します。その場合、ReLUが一般的になりました。私が強調したいのは、より多くの活性化機能が利用可能であり、異なる研究者が新しいものを探し続けていることです(例えば、指数線形単位(ELU)、ガウス誤差線形単位(GELU)、...)より良い特性

結論:最高のアクティベーション機能を探すときは、創造力を発揮してください。さまざまなことを試して、どの組み合わせが最高のパフォーマンスにつながるかを確認してください。


補遺:損失関数とアクティベーションのより多くのペアについては、おそらく(正規の)リンク関数を探したいでしょう。


なぜこれが最良の答えではないのですか?直観的で完全に科学的だと思う
Vikram Murthy

13

シグモイドとtanhは、隠れ層のアクティベーション関数として使用しないでください。これは、勾配が消失するためです。つまり、入力が高い側(シグモイドが平坦になる)にある場合、勾配はゼロに近くなります。これにより、重みが本当に小さな値で更新されるため、逆伝播中に学習が非常に遅くなるか、まったく学習されなくなります。

詳細な説明はこちら:http : //cs231n.github.io/neural-networks-1/#actfun

したがって、隠れ層の最適な機能はReLuです。


11
質問は出力層を求めています。-1
Euler_Salter

1
同意した。質問の最初の行に基づいて回答を追加しました。たぶん、これは答えではなくコメントだったはずです。
ジャティン

さて、しかし、「デッドReLUニューロンの問題」も発生しませんか?さらに、vanishijg勾配の問題は、バッチ正規化によって「解決」できます。ReLUアクティベーションと同じようにいくつかのニューロンを「非アクティブ化」したい場合は、ドロップアウトによってニューロンをランダムにオフにすることができます。私は終わりだと思うので、それはすべての問題に依存し、ちょうど最高の作品何を使う
Kevvyキム・

5

Softmaxの出力は、負でない合計1のベクトルを生成します。相互に排他的なカテゴリがある場合に役立ちます(「これらの画像には猫または犬のみが含まれ、両方は含まれません」)。相互に排他的なラベルがある場合は、softmaxを使用できます。2,3,4,5,...

シグモイド出力を使用すると、各要素が確率であるベクトルが生成されます。相互に排他的でないカテゴリがある場合に役立ちます(「これらの画像には猫、犬、または猫と犬の両方を含めることができます」)。シグモイドニューロンはカテゴリと同じ数だけ使用し、ラベルは相互に排他的であってはなりません。2,3,4,...

かわいいトリックは、相互に排他的なバイナリ問題がある場合、単一のシグモイドユニットを使用することもできます。単一のシグモイド単位を使用してを推定できるため、コルモゴロフの公理は意味します。p(y=1)1p(y=1)=p(y=0)

アイデンティティ関数を出力として使用すると、出力に制限がない場合に役立ちます。一部の企業の四半期の損益は、どちらの側でも制限されない可能性があります。

ReLUユニットまたは同様のバリアントは、出力が上または下に制限されている場合に役立ちます。出力が負でないようにのみ制限されている場合、ReLUアクティベーションを出力関数として使用することは理にかなっています。

同様に、出力が何らかの形でにあるように制約されている場合、tanhは理にかなっています。[1,1]

ニューラルネットワークの良い点は、非常に柔軟なツールであることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.