活性化関数としてtanhがシグモイドよりも常に優れているのはなぜですか?


33

Andrew NgのCourseraニューラルネットワークとディープラーニングコースでは、tanhを使用することはを使用するよりもほぼ常に好ましいと述べていsigmoidます。

彼が与える理由は、を使用する出力tanhsigmoidの0.5 ではなく0を中心とし、これにより「次の層の学習が少し簡単になる」からです。

  1. アクティベーションの出力速度を中心に学習するのはなぜですか?バックプロップ中に学習が行われると、彼は前のレイヤーを参照していると思いますか?

  2. tanh推奨する他の機能はありますか?より急な勾配は、消失する勾配を遅らせますか?

  3. sigmoidが望ましい状況はありますか?

数学的に軽く、直感的な回答が望ましい。


13
シグモイド関数はS字型です(名前の由来)。おそらくあなたはロジスティック関数e xについて話しているex1+ex。スケールと場所を除いて、2つは本質的に同じです。logistic(x)=12+12tanh(x2)。実際の選択はあなたが間隔で出力するかどうかであるので、(1,1)または区間(0,1)
ヘンリー

回答:


21

Yan LeCunと他の人々は、Efficient BackPropで次のように主張しています。

δxδxδ与えられた入力パターンに対して。したがって、重みベクトルの方向を変更する必要がある場合、ジグザグによってのみ変更できますが、これは非効率的であるため非常に遅くなります。

これが、平均がゼロになるように入力を正規化する必要がある理由です。

同じロジックが中間層に適用されます:

このヒューリスティックはすべてのレイヤーに適用する必要があります。つまり、これらの出力は次のレイヤーへの入力であるため、ノードの出力の平均をゼロに近づけます。

Postscript @craqは、この引用符がReLU(x)= max(0、x)に対して意味をなさないことを指摘しています。これは広く普及しているアクティベーション関数になりました。ReLUはLeCunが言及した最初のジグザグの問題を回避しますが、平均をゼロにプッシュすることが重要であると言うLeCunによるこの2番目のポイントを解決しません。LeCunがこれについて何と言っているか知りたいです。いずれにせよ、バッチ正規化と呼ばれる論文があります。これは、LeCunの作業の上に構築され、この問題に対処する方法を提供します。

入力が白色化された場合、つまり平均値と単位分散がゼロになるように線形変換され、無相関化された場合、ネットワークトレーニングはより速く収束することが長く知られています(LeCun et al。、1998b; Wiesler&Ney、2011)。各レイヤーは下のレイヤーによって生成された入力を監視するため、各レイヤーの入力の同じホワイトニングを達成することが有利です。


ちなみに、Sirajによるこのビデオでは、10分でアクティベーション機能について多くのことを説明しています。


@elkoutは、「tanhがシグモイド(...)に比べて好まれる本当の理由は、tanhの微分係数がシグモイドの微分係数より大きいことです」と述べています。

これは問題ではないと思います。私はこれが文学の問題であることを見たことはありません。1つの導関数が他の導関数よりも小さいことに気がついた場合は、単にスケーリングすることができます。

σ(x)=11+ekxk=1k


Nitpick:tanhはシグモイド関数でもあります。S形状の関数はS字型です。あなたがシグモイドと呼んでいるのはロジスティック関数です。ロジスティック関数がより人気がある理由は歴史的な理由です。統計学者によって長い間使用されてきました。それに、生物学的にもっともらしいと感じる人もいます。


1
maxxσ(x)<maxxtanh(x)
σ(x)=σ(x)(1σ(x))0.25
0<σ(x)<1
tanh(x)=sech2(x)=2exp(x)+exp(x))1.0

それとは別に、ほとんどの場合、tanhの導関数はシグモイドの導関数よりも大きいと言いました。これは、私たちが周りに0であるときは、これを見て持つことが歓迎されているほとんどが起こるのリンクを、明確な答えに設けたここの誘導体ことを、彼らはまた、状態質問通常の誘導体よりも大きい。tanhsigmoid
ekoulier

ちょっと待ってください...それはもっともらしいことですが、中間層の平均出力をゼロにする必要がある場合、ReLUがうまく機能するのはなぜですか?それは矛盾ではありませんか?
craq

@ekoulier、の派生物がよりも大きいことは問題ではありません。気になる場合は、スケーリングできます。tanhsigmoid
リカルドクルス

@craq、良い点、それは確かにLeCunの議論の欠陥だと思う。バッチ正規化ペーパーへのリンクを追加しました。このペーパーでは、その問題と改善方法について詳しく説明しています。残念なことに、その論文はreluをtanhと比較せず、reluとロジスティック(シグモイド)を比較するだけです。
リカルドクルス

14

よりも必ずしも良いというわけではありません。言い換えれば、それはそれを改善する活性化機能の中心ではありません。そして、両方の機能の背後にある考え方は同じであり、同様の「傾向」を共有しています。言うまでもなく、関数は関数のシフトバージョンと呼ばれます。sigmoidtanhsigmoid

がに比べて好まれる本当の理由は、特にローカル(またはグローバル)最小値をすばやく見つけるのに苦労しているビッグデータに関しては、導関数がは導関数よりも大きくなり。つまり、をアクティベーション機能として使用すると、コスト関数をより早く最小化できます。tanhsigmoidtanhsigmoidtanh

しかし、双曲線正接の導関数が大きいのはなぜですか?非常に簡単な直観を与えるために、次のグラフを観察できます。

シグモイド対双曲線正接

範囲が0と1に比べて-1と1の間であるという事実により、この関数はニューラルネットワークにとってより便利になります。それとは別に、数学を使用すると、次のことを証明できます。

tanhx=2σ(2x)1

そして一般的に、ほとんどの場合、 。|tanh(x)x|>|σ(x)x|


では、なぜNg教授は、関数の出力を平均して付近にすることが有利であると言うのでしょうか?0
トム・ヘイル

2
高速化するのは、平均が0付近であることではありません。ゼロ付近であるということは、範囲もより大きく(場合の0.5に比べて)大きいことを意味し、より大きな導関数につながります。今ははっきりしていることを願っています。Ngは、0を中心とするため関数を好むことは正しいですが、彼は完全な正当化を提供しませんでした。tanhsigmoidtanh
ekoulier

ゼロセンタリングがより重要である、それはアクティベーションの配布をスキューとするので、比率それはパフォーマンスが痛いです。あなたが取る場合と小さい学習率は、並みの学びます。2xsigmoid(x) - 0.52xtanh
マキシム

「それは」ゼロセンタリングや、アクティベーションの分布をスキュー@Maxim?ゼロセンタリングが良いことだとしても、その「理由」が答えられたとは感じません。2x
トム・ヘイル

3

これまでのところ対処されていない質問の一部に答える:

Andrew Ngは、ロジスティック関数(一般にシグモイドとして知られている)の使用は、バイナリ分類ネットワークの最終層でのみ意味があると言います。

ネットワークの出力はから間であると予想されるため、ロジスティックは範囲が正確にあるため完全な選択です。スケーリングとシフトは不要です。01(0,1)tanh


出力については、確率を生成したい場合、ロジスティック関数は理にかなっていますが、私たちはそれに同意することができます。議論されているのは、中間層のアクティベーションとしてロジスティック関数よりもタンが好ましい理由です。
リカルドクルス

OPが意図したことをどのように知っていますか?彼は一般的な質問をしていたようです。
トム・ヘイル

2

それはすべて基本的に活性化関数の導関数に依存します。シグモイド関数の主な問題は、導関数の最大値が0.25であるということです。これは、Wとbの値の更新が小さいことを意味します。

一方、tanh関数には、最大1.0の派生性があり、Wとbの更新がはるかに大きくなります。

これにより、シグモイド関数ではなく、活性化関数(隠されたレイヤーの場合)としてtanh関数がほぼ常に向上します。

これを自分で(少なくとも単純なケースでは)証明するために、単純なニューラルネットワークをコーディングし、シグモイド、tanh、およびreluをアクティベーション関数として使用し、エラー値がどのように変化するかをプロットしました。

ここに画像の説明を入力してください

私が書いた完全なノートブックはこちらhttps://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning

それが役立つ場合、tanh関数とシグモイド関数の導関数のグラフがあります(垂直軸に注意してください!)

ここに画像の説明を入力してください

ここに画像の説明を入力してください


(-1)これは面白いアイデアですが、それだけでは成り立ちません。特に、DL / NNに使用されるほとんどの最適化手法は、学習率 1次勾配法です。1つの活性化関数に関する最大導関数が小さすぎる場合、学習率を簡単に上げることができます。α
クリフAB

より高い学習率で安定した学習曲線が得られないというリスクはありませんか?
フアンアントニオゴメスモリアーノ

デリバティブがより安定している場合、学習率を上げても推定が不安定になる可能性は低くなります。
クリフAB

それは公平なポイントです、これについてもっと学ぶことができるリンクがありますか?
フアンアントニオゴメスモリアーノ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.