関数が滑らかな場合、なぜ勾配降下を高速化するのですか?


10

私は「Scikit-LearnとTensorFlowを使用した実践的な機械学習」というタイトルの本を読み、第11章で、ELU(Exponential ReLU)の説明について次のように説明しています。

第3に、関数はz = 0付近を含むすべての場所で滑らかであり、z = 0の左と右にそれほど跳ね返らないため、勾配降下の高速化に役立ちます。

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

z上のグラフのX軸を意味します。z < 0ラインには曲線があり、その領域では微分はもはやに等しくないため、微分は滑らかであることを理解してい0ます。

しかし、関数が「z = 0付近を含め、どこでも滑らか」である場合、勾配降下が高速になるのはなぜですか?


ところで私は正しいSEにいますか?データサイエンス、人工知能、相互検証済み(およびMathSE)...多くのトピックは互いに非常に関連しているようです...
Blaszard 2017

2
この質問は、こちらのデータサイエンスまたはCross Validatedのいずれかに投稿しても安全だと思います。人工知能も問題ないかもしれませんが、私はそのサイトにあまり詳しくありません。
Neil Slater

良い質問。滑らかさを使用すると、次のステップで勾配が大幅に変化する可能性があるため、赤ちゃんのステップを一時的にとるのではなく、正しい方向に大胆なステップをとることができます。収束分析については、たとえば、スムーズで強力な凸最適化のためのNesterovの高速勾配降下法を
Emre

@NeilSlater AIのスコープは非常に不明確です。彼らはそのような質問を締めくくります。したがって、DSとCVが最良のオプションです:)
Dawny33

回答:


1

ReLUは0で不連続な導関数を持っているので、これは導関数によるものだと私は推測しています。したがって、次の定義を使用すると、

ff(x+ϵ)f(xϵ)2ϵ

そして非常に0に近いです、あなたはそれらの「ジャンプ」の多くを取得します。x


0

予備:ここには関連する関数の3つの属性があります。連続、単調、微分可能です。RELUは連続的で単調なナットで、z = 0では微分できません。指数的reluまたはELUは、これらの属性の3つすべてです。

微分または勾配は方向を示します。関数の導関数が点で定義されていない場合、勾配の方向はその点で不確定です。

勾配降下法を適用するときは、損失関数が着実に減少するようにパラメーターを継続的に変更したいと考えています。

ある時点で損失関数の導関数が定義されていない場合、勾配は不確定です。これは、勾配降下が誤った方向に移動する可能性があることを意味します。この不確定性によって引き起こされる遅延の大きさは、学習率と他のハイパーパラメーターに依存します。ハイパーパラメーターに関係なく、統計的には、z = 0でのRELUの未定義の導関数は、勾配降下の収束の遅延に寄与します。


初期化後にパラメータが正確にz = 0になることはほとんどありません。
Pieter 2017

0

より速くまたはより低くなることは相対的な用語であり、それが何と比較されているかという文脈で理解されなければなりません。したがって、これを理解するには、最初に勾配降下法が他のタイプの活性化関数とどのように連携するかを考慮する必要があります。

設定例

サイズが1の非表示層を持つMLPを考えます。n

z1=W1x+b1

a1=f(z1)

...

zn=Wnan1+bn

y=f(zn)

ここで、はアクティブ化関数です。f

タンとシグモイド-グラデーションの消失

仮定する TANH又はシグモイド活性化関数です。これらの関数の導関数は-1から1の範囲にあり、任意の正式にはです。ff(x)(1,1)x

これは、「勾配消失問題」として知られるディープラーニングで非常に重要な問題を引き起こします。 wrt導関数を考えてみましょう。連鎖規則により、 yW1

dfdW1=dfdWndWndWn1...dW2dW1

任意用、通知その 0<i<n

dXidXi1=f(Wi1ai2+bi1)×ai2(1,1)

(第1項は間にあるあるため前述のように囲まれとの間にもあるとしてスカッシュ入力値)。(1,1)fai2(1,1)

したがって、は基本的に、それぞれが(0、1)の間にある多くの項の積です。大きいほど(ネットワークが深いほど)、その項は乗算する必要があり、結果として指数関数的に小さくなります。この指数関係のため、勾配は急速に小さくなり、効果的にゼロと見なすことができます。勾配降下がゼロであることの結果は、勾配降下の更新ルールがその勾配に基づいているため、まったく学習できない可能性があります。dfdW1ndfdW1

RELUと死んだニューロン

Reluは、消失勾配問題に対処するために発明されましたこれは、場合、その導関数が常に1であるため、がRELUの場合、ようになります。 ai>0f

dXidXi1=ai2
dfdW1=a1a2a3...an1

場合はすべてうまくいきが、場合は常にバラバラになり。今回は、勾配がゼロに非常に近いだけでなく、純粋なゼロです。ニューロンが到達すると、元に戻る機会はまったくありません。これが「死んだニューロン」問題として知られている理由ですx < 0x>0x<0

漏れのあるRELUとELU

リーキーRELUとELUは、RELUの後の自然な発展です。これらはRELUに似ているため、場合は1に等しい導関数ですが、場合はゼロ微分を回避することで「死んだニューロン」を回避します。x < 1x>0x<1

2つの違いについては、元の論文を引用します。

LReLUとPReLUにも負の値がありますが、ノイズに強い非アクティブ化状態は保証されません。ELUは、入力が小さくなると負の値に飽和するため、前方に伝播する変動と情報が減少します。

直感的な説明は次のようになります。ELUでは、xが十分に小さくなると、勾配は本当に小さく飽和します(TanhとSigmoidの場合と同じように)。小さな勾配は、学習アルゴリズムが、飽和したニューロンとの対話性を心配することなく、他の重みの調整に集中できることを意味します。

3次元空間で滑らかな表面として表すことができる次数2の多項式を考えます。極小値を見つけるために、勾配降下アルゴリズムは、x方向とy方向の両方の勾配を考慮する必要があります。勾配がx方向とy方向の両方で負である場合、どちらの方法が優れているかは明らかではありません。したがって、その間のどこかにパスを選択するのが賢明です。しかし、すべてがx方向にフラット(勾配がゼロ)であることをすでに知っている場合は、y方向に進むのは簡単です。または、言い換えると、検索スペースがはるかに小さくなる。

特記

深層学習では、十分な経験的証拠やそれを裏付ける十分な理解のない主張がたくさんあります。ELUの場合、一部のデータセットの収束が速くなることは事実ですが、学習アルゴリズムが別のデータセットの極大値でスタックすることも事実です。私たちはまだ十分に知りません。


0

スムーズな関数の方が最適化の速度が速いが、数学的な証明など何もない理由は直観的です。

勾配降下法は、アクティベーション関数の導関数を計算して、重みの変化を決定します。アクティブ化関数にハードカットがある場合(ReLuのz = 0など)、重みを変更すると、特定のデータポイントのユニットのアクティブ化が根本的に(つまり、常にゼロまたは線形に)変化する可能性があります。

他の重みは、特定のデータポイントの特定のユニットのこの根本的に異なる動作に対応する必要があります。ただし、ユニットの動作が次のエポック中に再び急激に変化した場合、ネットワークは前のエポックの変化に順応し続けます。

スムーズな機能で、そのような根本的な変化はありません。したがって、ネットワークはより安定します。

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