LSTM ネットワーク ( LSTM について) では、入力ゲートと出力ゲートが tanh を使用するのはなぜですか?
この背後にある直感は何ですか?
それは単なる非線形変換ですか?もしそうなら、両方を別のアクティベーション関数 (ReLU など) に変更できますか?
LSTM ネットワーク ( LSTM について) では、入力ゲートと出力ゲートが tanh を使用するのはなぜですか?
この背後にある直感は何ですか?
それは単なる非線形変換ですか?もしそうなら、両方を別のアクティベーション関数 (ReLU など) に変更できますか?
具体的には、 SigmoidはLSTMの 3 つのゲート (in、out、forget) のゲーティング関数として使用されます。これは、0 と 1 の間の値を出力し、ゲート全体に情報を流さないか完全に流すことができるためです。
一方、勾配消失問題を克服するには、二次導関数がゼロになる前に長い範囲で維持できる関数が必要です。Tanh
は、上記の性質を持つ優れた関数です。
優れたニューロン ユニットは、境界があり、微分が容易で、単調 (凸最適化に適している) で、扱いやすいものである必要があります。これらの品質を考慮すればReLU
、関数の代わりに使用できると思います。これらtanh
は互いに非常に優れた代替手段であるためです。
ただし、アクティベーション関数を選択する前に、他の選択よりも利点と欠点が何であるかを知っておく必要があります。いくつかのアクティベーション関数とその利点について簡単に説明します。
シグモイド
数式:sigmoid(z) = 1 / (1 + exp(-z))
一次導関数:sigmoid'(z) = -exp(-z) / 1 + exp(-z)^2
利点:
(1) The sigmoid function has all the fundamental properties of a good activation function.
タン
数式:tanh(z) = [exp(z) - exp(-z)] / [exp(z) + exp(-z)]
一次導関数:tanh'(z) = 1 - ([exp(z) - exp(-z)] / [exp(z) + exp(-z)])^2 = 1 - tanh^2(z)
利点:
(1) Often found to converge faster in practice
(2) Gradient computation is less expensive
ハードタン
数式:hardtanh(z) = -1 if z < -1; z if -1 <= z <= 1; 1 if z > 1
一次導関数:hardtanh'(z) = 1 if -1 <= z <= 1; 0 otherwise
利点:
(1) Computationally cheaper than Tanh
(2) Saturate for magnitudes of z greater than 1
ReLU
数式:relu(z) = max(z, 0)
一次導関数:relu'(z) = 1 if z > 0; 0 otherwise
利点:
(1) Does not saturate even for large values of z
(2) Found much success in computer vision applications
リーキーReLU
数式:leaky(z) = max(z, k dot z) where 0 < k < 1
一次導関数:relu'(z) = 1 if z > 0; k otherwise
利点:
(1) Allows propagation of error for non-positive z which ReLU doesn't
この記事では、いくつかの楽しいアクティベーション関数について説明します。読んでみるとよいかもしれません。
LSTM は、何らかの関数の出力を追加するときに値が増減できる内部状態ベクトルを管理します。シグモイド出力は常に負ではありません。州の値は増加するだけです。tanh からの出力は正または負になり、状態の増減が可能になります。
そのため、内部状態に追加する候補値を決定するために tanh が使用されます。LSTM の GRU いとこには 2 番目の tanh がないため、ある意味で 2 番目の tanh は必要ありません。詳細については、Chris Olah のUnderstanding LSTM Networksの図と説明を確認してください。
関連する質問「LSTM でシグモイドが使用されるのはなぜですか?」また、関数の可能な出力に基づいて回答されます。「ゲーティング」は、0 と 1 の間の数値を乗算することによって達成され、それがシグモイドの出力です。
シグモイドと tanh の導関数の間には、実際には意味のある違いはありません。tanh は、再スケーリングされ、シフトされたシグモイドです。 Richard Socher のNeural Tips and Tricksを参照してください。二次導関数が関連する場合、その方法を知りたいです。