[解決済み] LSTMでtanhを使う直感とは?[クローズド]
質問
LSTMネットワークにおいて( LSTMの理解 )では、なぜ入力ゲートと出力ゲートにtanhが使われているのですか?
直感的にはどうなのでしょうか?
単なる非線形変換なのでしょうか?もしそうなら、両方を別の活性化関数(ReLUなど)に変えてもいいのでしょうか?
どのように解決するのですか?
シグモイド の3つのゲート(in, out, forget)のゲート関数として使用されます。 LSTM の3つのゲートのゲート関数として使用されます。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
この論文 では,楽しい活性化関数が紹介されている.読んでみてください。
関連
-
[解決済み] RuntimeError: 次元が範囲外([-1, 0]の範囲にあると期待されたが、1が得られた)
-
[解決済み] kerasのtrain_on_batch()の使い道は?
-
[解決済み] ロジットとは何ですか?softmaxとsoftmax_cross_entropy_with_logitsの違いは何ですか?
-
[解決済み] サポートベクターマシンに対する人工ニューラルネットワークの優位性は何ですか?[終了しました]
-
[解決済み] KerasのLSTMを理解する
-
[解決済み】教師あり学習と教師なし学習の違いは何ですか?[終了しました]
-
[解決済み] 期待値最大化手法の直感的な説明とは?[クローズド]
-
[解決済み] word2vec: ネガティブサンプリング(平たく言うと)?
-
[解決済み] 多層パーセプトロン(MLP)アーキテクチャ:隠れ層の数とサイズを選択する基準?[クローズド]
-
[解決済み] トレーニング中のナンの原因
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Keras - KerasRegressorを使用して予測を実行する方法は?
-
[解決済み] Kerasにおける "Flatten "の役割とは?
-
[解決済み] コスト関数、線形回帰、シータをハードコーディングしないようにする。オクターブ
-
[解決済み] サポートベクターマシンに対する人工ニューラルネットワークの優位性は何ですか?[終了しました]
-
[解決済み】データセットをトレーニングセットとバリデーションセットに分割する方法には法則性があるのでしょうか?[クローズド]
-
[解決済み] 期待値最大化手法の直感的な説明とは?[クローズド]
-
[解決済み] トレーニング中のナンの原因
-
[解決済み] pytorch - loss.backward() と optimizer.step() の間の接続。
-
[解決済み] Keras カーネル・レギュラライザーとアクティビティ・レギュラライザーの違い
-
[解決済み] 機械学習とは?[終了しました]