tanhの入力に係数を乗算することにより、消失勾配問題を解決できますか?


7

私の理解では、各活性化関数の勾配が1未満のときにニューラルネットワークをトレーニングすると消失勾配問題が発生し、補正が多くの層で逆伝播すると、これらの勾配の積は非常に小さくなります。

整流器活性化関数のような他の解決策があることを知っていますが、私の質問は、よく使用されるtanh関数のバリエーションを単純に使用できない理由です。

アクティベーション機能が次の形式の場合 tanh(nx) 次に、可能な最大勾配は n。したがって、n>1勾配の積が必ず 0になるケースはなくなりました。

このようなアクティベーション機能が失敗する理由は何かありますか?


さて、DNNのトレーニングでミニバッチを使用する場合-今では一般的ですが、確率/統計量/ランダム性は間違いなく入ります。このための理解しやすい情報源の1つは、ニールセンの本「ニューラルネットワークとディープラーニング」です。いくつかの実験を実行して、これを自分で確認し、後で見つけたものを報告してみませんか?
-Tuyen

ここでメタ質問-私は今この質問を解決したと思います(以下の私の回答を参照)が、それでもまだ報奨金があります-それがオプションであった場合、以前に回答したことがある人にそれを与えたいと思いますが、ここに慣例があるかどうか疑問に思います-誰かが私の答えを練り上げて具体化したいのなら、彼らもそれを歓迎します!
Zephyr

1
使用を提案するかなりの数のリソースがあります 1.7159tanh(23x)。。。私は常にそれがバッチ正規化と同様の考えであると想定してきました-グラデーションへの影響を含む、隠れ層の特徴の理想的な分布に近づけることについて。
Neil Slater

@NeilSlater-あなたが見ることを提案する参照はありますか?
Zephyr

実はそうではありませんが、「1.7159 tanh」を検索すると、それが一般的に使用されているバリアントであることがわかります
Neil Slater

回答:


9

あなたは正しいです。ためにn>1、誘導体の乗算はない必ずしも各誘導体があり得るので、ゼロに潜在的に 1つ(最大よりも大きいですn)。

しかし、実際的な目的のために、この状況を維持するのがいかに簡単であるか(導関数の乗算をゼロから遠ざけること)を自問する必要がありますか?これは、微分爆発 = 1を与えるReLUと比較して非常に難しいことが判明しました。特に、勾配爆発の可能性もあるときです。

前書き

私たちが持っていると仮定します K 導関数(深さを表す) K)以下のように乗算されます

g=f(x)x|x=x1f(x)x|x=xK
それぞれ異なる値で評価 x1xK。ニューラルネットワークでは、それぞれxi前のレイヤーからの出力重み付き合計です。たとえば、です。hx=wth

増加、我々はそれがの消失を防止するために必要なものを知ってほしい。たとえば、場合、を除いて各導関数は1より小さいため、これを防ぐことはできませんつまり、 ただし、提案に基づいて新しい希望があります。以下のために、誘導体まで行くことができる、すなわち Kg

f(x)=tanh(x)
x=0
f(x)x=tanh(x)x=1tanh2(x)<1 for x0
f(x)=tanh(nx)n>1
f(x)x=tanh(nx)x=n(1tanh2(nx))<n for x0.

力のバランスはいつですか?

さて、これが私の分析の中核です:

可能な最大の導関数であるをキャンセルするために、がからどれだけ離れてよりも小さい導関数を持つ必要がある か?x01nn

をから遠ざける必要があるほど、未満の導関数を生成することが難しくなるため、乗算の消失を防ぐのが容易になります。この質問は、良いがゼロに近いことと悪いがゼロから遠いことの間の緊張を分析しようとするものです。たとえば、良いと悪いのバランスが取れていると、ような状況が発生します。 とりあえず、1任意にゼロに近づけることができるので、任意に大きい考慮しないことで、楽観的になるようにしています。x01n x xx

g=n×n×1n×n×1n×1n=1.
xig

特別な場合のために、任意、導関数はになります。したがって、深さが増加しても、バランスを保つ(が消えないようにする)ことはほぼ不可能です。たとえば、 n=1|x|>0<1/1=1gK

g=0.99×0.9×0.1×0.9950.

の一般的なケースでは、次のように進めます したがって、、導関数はより小さくなります。したがって、1より小さいという点では、およびでの2つの導関数の乗算 n>1

tanh(nx)x<1nn(1tanh2(nx))<1n11n2<tanh2(nx)11n2<|tanh(nx)|x>t1(n):=1ntanh1(11n2)or x<t2(n):=t1(n)=1ntanh1(11n2)
|x|>t1(n)1nx1R|x2|>t1(n)n>1任意の導関数に相当しつまり、 言い換えると、n=1
(tanh(nx)x|x=x1R×tanh(nx)x|x=x2,|x2|>t1(n))tanh(x)x|x=z,zR{0}.

K言及した微分のペアは 、微分と同じくらい問題があります。n>1Kn=1

がいかに簡単(または難しい)かを確認します、とプロットしましょう(しきい値は連続に対してプロットされます)。|x|>t1(n)t1(n)t2(n)n

ご覧のとおり、導関数を持つために、最大の間隔はまだ狭いで達成されます!この間隔は、意味します 場合、導関数はより小さくなります。注:連続にできる場合は、少し大きい間隔を実現できます。1/nn=2[0.658,0.658]|x|>0.6581/2n

この分析に基づいて、結論を出すことができます。

が消えないようにするには、の約半分以上がような間隔の中にある必要がありますgxi[0.658,0.658]

したがって、それらの導関数が他の半分とペアになっている場合、各ペアの乗算はせいぜい 1 より大きくなります(が大きな値に遠く離れていないことが必要です)。つまり、 しかし、実際には、それは可能性の半分以上有することの外側またはいくつ '大きな値とS、原因ゼロに消える。また、ゼロに近いが多すぎるという問題があります。x

(f(x)x|x=x1R×f(x)x|x=x2[0.658,0.658])>1
x[0.658,0.658]xgx

以下のために、あまりにも多くのゼロの近くには、大きな勾配につながる(潜在的に最大)に移動(爆発)大きな値に重み()、をさらに大きな値に移動します()良いを(非常に)悪い変換する。n>1xg1nKwt+1=wt+λgxxt+1=wt+1tht+1x

大きすぎますか?

ここでは、同様の分析を実行して、

どのくらいから離れて移動する必要がより誘導体小さい有すること 他相殺するのは、それらは非常にゼロに近いされていると仮定し、取得しました可能な最大勾配?x01nK1K1 x

この質問に答えるために、以下の不平等を導き出します

tanh(nx)x<1nK1|x|>1ntanh1(11nK)

たとえば、深さおよび場合、外の値は導関数を生成します。この結果は、いくつかの 5〜10程度であれば、良いの大部分をキャンセルするのがいかに簡単かを直感させます。K=50n=2[9.0,9.0]<1/249xx

一方通行のアナロジー

以前の分析に基づいて、次のように勾配動的な振る舞いを大まかにモデル化する2つの状態とマルコフ連鎖を使用して定性的なアナロジーを提供できます[g0][g0]g

システムが状態になるとき、値を状態に戻す(変更する)ための勾配はあまりありません。これは、トレーニングの収束が発生しない場合に十分な時間(十分なエポック)を与えれば最終的に通過する一方通行の道路に似ています(そうでない場合、勾配の消失を経験する前に解決策を見つけました)。[g0][g0]

勾配の動的挙動のより高度な分析は、実際のニューラルネットワーク(損失関数、ネットワークの幅と深さ、データ分布などの多くのパラメーターに依存する可能性がある)でシミュレーションを実行することで可能になり、

  1. 勾配分布または結合分布(、)または(、)に基づいて消失が発生する頻度を示す確率モデルgxgwg
  2. どの初期点(重みの初期値)が勾配消失につながるかを示す決定論的モデル(マップ)。初期値から最終値までの軌跡を伴う可能性があります。

グラデーション問題の爆発

の「消失勾配」の側面について説明しました。逆に、「勾配の爆発」の場合、ゼロに近いが多すぎると、周りに勾配が生じ、数値が不安定になる可能性があるので、心配する必要があります。この場合、不等式基づく同様の分析 は、場合、の約半分以上がtanh(nx)xnK

tanh(nx)x>1|x|<1ntanh1(11n)
n=2xi[0.441,0.441]gO(1)O(nK)。これにより、にさらに小さな領域が、関数がうまく機能します(消失も展開もされません)。その思い出させる爆発勾配問題はありません。RKK tanh(nx)tanh(x)


これは素敵な答えです-それを読んで楽しんだ!-とはいえ、長引く質問が1つ残っています。ニューラルネットワークがトレーニングされ、重みとバイアスが変化するので、これをランダムな勾配のサンプルとして見るのは公正ですか?-勾配の積が1に近い状態に開始状態を制限する場合、ネットワークがそのような調和のとれた構成から自然に離れることは明らかですか?
ゼファー

1
@Zephyrありがとう!私はあなたが勾配の確率論的または動的分析に向かっていると思います。これらの質問に対する明確な回答はありませんが、これに関していくつかの指示を追加しました。
エスマイリアン

それは大丈夫です-私はこれが答えへの1つのステップからの美しいマッピングだと思います-それは前払いします:)
Zephyr

3

次の図で、あなたが何を参照しているかをプロットしました。ご覧のとおり、tanh関数の入力として係数を使用することにより、軸に関する関数の変更範囲を制限しています。これには悪影響があります。その理由は、ドメイン内の非常に小さな領域の勾配をより鋭くしているにもかかわらず、ドメイン内の他のポイントの微分をよりゼロに近づけているためです。消失の問題は、ニューロンの出力がゼロから遠くなり、2つの方向のそれぞれにバイアスされるために発生します。その後、微分値は非常に小さくなり、1未満から始まり、ゼロより大きくなるため、それ自体のような他の微分を掛けるとさらに小さくなります。x

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

もう1つの良い質問は、係数値が1より小さいということです。次の図でそのことを説明しました。この図では、ドメインのより多くのポイントで以前よりも大きい微分が存在するように関数を変更していますが、ここでも1より小さくなっています。これは、深いネットワークでは価値がありません。

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

すでに述べたように、係数を使用するどちらの場合でも、導関数は1より小さくなり、深いネットワークには役立ちません。


1
リンクが機能しない
oW_

私はあなたの議論を理解します-そしてそれは理にかなっていると思います-しかし、それが同じ問題であることは私にははっきりしません tanh(x)関数を使用すると、多くの勾配の積は常に減少しますが、(たとえば)tanh(2x)を使用すると、勾配の積は確実に消失しますが、任意の値を取ることもできます(最大2 ^ n、nは、非表示レイヤーの数)
Zephyr

ポイントは、場合はで消失するが、場合はで消失することです。機能を制限しています。いくつかのステップの後、ニューロンはそれぞれの方向にバイアスされます。tanh(n)1tanh(2n)1/2
メディア

これは不完全な引数のようです-勾配<1の場合、製品の常にゼロに近い値が1つあるため、合計がゼロに近いことが保証されます-勾配が1より大きい場合、ゼロに近い値は複数の> 1値でオフセットできます-そして、tanh(x)のケースに関する議論はハード上限に基づいていますが、tanh(2x)のケースでは、平均にフォールバックしますが、はるかに強力な論理的ステートメントではありません-上記の結論が間違っているとは言っていませんが、それはより深い正当化を必要とするだけです-あなたは何か関連する研究や例を知っていますか?
Zephyr

伝えたいことがよくわかりませんでした。
メディア

1

tanh(x)の導関数はsech(x)^ 2で、sech(x)= 2e ^ x /(1 + e ^(2x))です。したがって、勾配が0に減少すると、xは+/-無限大に収束します。tanh(nx)を考慮する場合、導関数はn sech(nx)^ 2であり、sech(nx)^ 2は、xが+/-無限大に収束するとき、nが無限大に収束するよりも速く0に収束します。したがって、ヒューリスティックな方法では、引数により大きいnを掛けると、状況が悪化します。


0

素晴らしい回答をしてくれた皆に感謝します-彼らはこの問題について考えるのを本当に助けてくれました-そして私はこの問題に興味がある人に一見することをお勧めします-答えへのはるかに簡単なルートがあります:

活性化関数としてをに置き換えると、活性化関数のパフォーマンスについては何も変更されていませんtanh(x)tanh(nx)

これまでに行ったのは、ネットワークのすべての重みとバイアスを再スケーリングすることです。これは自由に行うことができます。これはネットワークのパフォーマンスには影響しませんが、初期化には影響します。以前はトレーニングにも影響しないと述べていましたが、自信を持ってこれを述べることができるかどうかはわかりません。


DNNが実際にコスト関数のグローバル最小値を計算する場合、はい、おそらくあなたは正しいです。ただし、実際には勾配降下法を使用し、標準的な方法を使用する場合は学習率を固定します。次に、あなたの主張は説明を必要とします。(学習率と勾配降下プロセスの開始点も再スケールする場合を除きます。)
Tuyen

私の意味の詳細:f(\ alpha)が、アクティベーション関数がtanh(x)のときにDNNによって提供されるコスト関数である場合、f(n \ alpha)は、アクティベーション関数tanh(nxに対応するコスト関数です。 )。ここで、\ alphaはDNNのパラメーターのセットです。ここで、(標準の)勾配降下法を、学習率\ deltaおよび初期点\ alpha _0で実行すると、最初の2つのステップは次のようになります。\ alpha _1 = \ alpha _0-\ delta n \ nabla f(n \ alpha _0)、および\ alpha _2 = \ alpha _1- \ delta n \ nabla f(n \ alpha _1)。したがって、新しいコスト関数の動作は明らかです...
Tuyen

...は以前のコスト関数と同じではありません。大域的最小値のみを見る場合を除いて、主張が正しいことは事実です。そうでなければ、私はあなたの主張がどのように正当化されるかわかりません、そしてより多くの説明が必要です。学習率をn倍に変更しても、状況は大きく異なります。
Tuyen、

これは興味深い議論であり、私はそれを調査しています-これを今のところ答えとしてマークを外します-簡単な質問ですが-これは、単に学習率\ deltaを再スケーリングすることと同じではないのですか?
Zephyr

1
私は確かに私の派生物を間違えていました-Tuyenの忍耐に感謝します!
Zephyr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.