逆伝播ニューラルネットワークで非線形活性化関数を使用する必要があるのはなぜですか?


139

私はニューラルネットワークについていくつか読んでおり、単層ニューラルネットワークの一般的な原理を理解しています。追加のレイヤーの必要性を理解しましたが、なぜ非線形活性化関数が使用されるのですか?

この質問の後に、次の質問が続きます。逆伝搬で使用されるアクティベーション関数の派生物は何ですか?


回答:


167

アクティベーション機能の目的は、ネットワークに非線形性を導入することです

これにより、説明変数によって非線形に変化する応答変数(ターゲット変数、クラスラベル、またはスコア)をモデル化できます。

非線形( -これの単語である直線にレンダリング出力と同じでない出力は、入力の線形結合から再生することができないことを意味するアフィン)。

もう1つの考え方:ネットワークに非線形活性化関数がない場合、NNは、レイヤーの数に関係なく、単一レイヤーのパーセプトロンのように動作します。これらのレイヤーを合計すると、別の線形関数が得られるためです。 (上記の定義を参照)。

>>> in_vec = NP.random.rand(10)
>>> in_vec
  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])

>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
 array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

-2から2に評価される、バックプロップ(双曲線タンジェント)で使用される一般的な活性化関数:

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


15
なぜ直線性を排除したいのですか?
corazza 2012年

17
モデル化したいデータが非線形の場合、モデルでそれを考慮する必要があります。
doug

38
1つの文の答え:<<単一のパーセプトロンのように動作する層の数に関係なく(線形関数を追加すると線形関数が得られるため)>>。いいね!
自治

12
これは少し誤解を招きやすいです-eskiが述べたように、修正された線形活性化関数は非常に成功します。そして、私たちの目的が関数のモデル化/近似のみである場合、すべてのステップで非線形性を排除することは必ずしも正しい答えではありません。十分な線形要素があれば、ほとんどすべての非線形関数を高度な精度で近似できます。:私はこのユニットの作業リニア整流理由の良い説明見つかっstats.stackexchange.com/questions/141960/...
tegan

11
@tegan 整流線形活性化関数は非線形です。コメントと回答の関係がわかりません。
内部石

49

線形アクティブ化機能を使用できますが、ごく限られた場合に使用できます。実際、アクティベーション関数をよりよく理解するには、通常の最小二乗法または単に線形回帰を調べることが重要です。線形回帰は、入力と組み合わせたときに、説明変数とターゲット変数間の垂直効果が最小になる最適な重みを見つけることを目的としています。つまり、予想される出力が以下に示すように線形回帰を反映している場合は、線形活性化関数を使用できます(上図)。しかし、下の2番目の図のように、線形関数は望ましい結果を生成しません:(中央の図)。ただし、以下に示すような非線形関数を使用すると、望ましい結果が得られます。

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

線形活性化関数を使用したニューラルネットワークは、アーキテクチャの複雑さに関係なく、1層の深さでのみ有効であるため、活性化関数を線形にすることはできません。ネットワークへの入力は通常、線形変換(入力*重み)ですが、実世界と問題は非線形です。入力データを非線形にするために、活性化関数と呼ばれる非線形マッピングを使用します。活性化機能は、特定の神経機能の存在を決定する意思決定機能です。0と1の間でマッピングされます。0は機能がないことを意味し、1は機能があることを意味します。残念ながら、重みで発生する小さな変化は、0または1のいずれかしか取ることができないため、アクティベーション値に反映できません。したがって、非線形関数は連続的であり、この範囲で微分可能でなければなりません。ニューラルネットワークは-infinityから+ infiniteまでの任意の入力を取得できる必要がありますが、{0,1}または{-1,1}の範囲の出力にマップできる場合があります。アクティベーション機能が必要です。ニューラルネットワークにおけるその目的は、重みと入力の非線形の組み合わせを介して非線形の決定境界を生成することであるため、活性化関数には非線形性が必要です。


1
+1、それでは、完全な境界を確立するために非線形関数が使用されていると推定できますか?
SIslam

1
はい、正確に。単に0または1を生成するのではなく、0.4または0.78を生成して、境界の範囲にわたって連続させることができます。
chibole

3
ニューラルネットワークは、入力を-infinityから+ infiniteまで取ることができる必要がありますが、{0,1}または{-1,1}の間の範囲の出力にマップできる必要があります... ReLUの制限は、ニューラルネットワークモデルの非表示レイヤー内でのみ使用する必要があることです。
Cloud Cho

21

ニューラルネットワークで線形活性化関数のみを許可する場合、出力は入力の線形変換になりますが、これはユニバーサル関数近似を形成するには不十分です。このようなネットワークは、行列の乗算として表すことができ、そのようなネットワークから非常に興味深い動作を得ることができません。

すべてのニューロンがアフィン活性化関数(つまり、フォーム上の活性化関数f(x) = a*x + c、ここでacは定数であり、線形活性化関数の一般化です)がある場合も同じことが起こり、入力から出力へのアフィン変換になります。 、それもあまりエキサイティングではありません。

ニューラルネットワークには、出力層などの線形活性化機能を持つニューロンが含まれている可能性がありますが、ネットワークの他の部分に非線形活性化機能を持つニューロンの会社が必要です。

注:興味深い例外は、DeepMindの合成勾配です。これは、小さなニューラルネットワークを使用して、アクティブ化の値を指定して、バックプロパゲーションパスの勾配を予測します。また、非表示レイヤーのないニューラルネットワークと、線形アクティベーションのみ。


1
高次関数は、複数の隠れ層を使用した線形活性化関数で近似できます。普遍近似定理は、隠れ層が1つしかないMLPに固有です。
エスキー、2016年

実際、あなたはアフィン変換関数をもたらすアフィン活性化関数についてのあなたの記述は正しいと思いますが、変換が逆伝播(または他の手段)によって学習されるという事実は、元の質問に関する限り、完全に役に立たないわけではありません。
eski、

4
@eskiいいえ、線形アクティベーション関数のみで高次関数を近似することできません。線形(または最後のレイヤー以外に追加の定数ノードがある場合は、アフィン)関数と変換のみをモデル化できます。持ってる。
HelloGoodbye 2016年

活性化関数の主な目的は、ニューラルネットワークが非線形の決定境界を生成することを可能にすることであると言うのは正しいですか?
stackoverflowuser2010

@ stackoverflowuser2010それはそれを見る一つの方法でしょう。しかし、アクティベーション機能にはそれだけではありません。Wikipediaのアクティベーション関数に関する記事には、いくつか(すべて1つを除く)が非線形であるアクティベーション関数がリストされており、アクティベーション関数が持つさまざまな品質を比較しています。
HelloGoodbye

9

線形アクティブ化と任意の数の非表示層を持つフィードフォワードニューラルネットワークは、非表示層がない線形ニューラルネットワークと同等です。たとえば、2つの非表示レイヤーがあり、アクティブ化されていないニューラルネットワークについて考えてみましょう。 ここに画像の説明を入力してください

y = h2 * W3 + b3 
  = (h1 * W2 + b2) * W3 + b3
  = h1 * W2 * W3 + b2 * W3 + b3 
  = (x * W1 + b1) * W2 * W3 + b2 * W3 + b3 
  = x * W1 * W2 * W3 + b1 * W2 * W3 + b2 * W3 + b3 
  = x * W' + b'

複数の線形変換の組み合わせを1つの変換に置き換えることができ、複数のバイアス項の組み合わせは単一のバイアスに過ぎないため、最後のステップを実行できます。線形活性化を追加しても結果は同じです。

したがって、このニューラルネットを単一層のニューラルネットに置き換えることができますn。これは層に拡張できます。これは、層を追加しても線形ニューラルネットの近似力がまったく増加しないことを示しています。非線形関数を近似するには非線形活性化関数が必要であり、現実世界のほとんどの問題は非常に複雑で非線形です。実際、活性化関数が非線形の場合、十分な数の隠れユニットを持つ2層ニューラルネットワークは、普遍的な関数近似器であることが証明できます。


5

「本論文では、Stone-Weierstrassの定理とGallantおよびWhiteのコサインスクワッシャーを利用して、基本的な多層フィードフォワードネットワークアーキテクチャが、任意の関数を任意の精度で近似できることを証明しています。ユニットが利用可能です。」(Hornik et al。、1989、Neural Networks

スカッシング関数は、たとえば、シグモイドアクティベーション関数のように[0,1]にマッピングされる非線形アクティベーション関数です。


3

純粋な線形ネットワークが有用な結果をもたらすことがある場合があります。形状(3、2、3)を持つ3つのレイヤーのネットワークがあるとします。中間層を2次元のみに制限することで、元の3次元空間で「最適な平面」という結果が得られます。

ただし、NMF、PCAなど、この形式の線形変換を見つける簡単な方法があります。ただし、これは、多層ネットワークが単一層パーセプトロンと同じように動作しない場合です。


2

非線形アクティベーション関数の背後にあるロジックを理解するには、まずアクティベーション関数が使用される理由を理解する必要があります。一般に、現実世界の問題には、自明ではない非線形の解が必要です。したがって、非線形性を生成するためにいくつかの関数が必要です。基本的に、アクティベーション関数が行うことは、入力値を目的の範囲にマッピングしながら、この非線形性を生成することです。

ただし、線形アクティベーション関数は、線形回帰などの非表示レイヤーが不要な非常に限られたケースで使用できます。通常、このような問題に対してニューラルネットワークを生成しても意味はありません。これは、隠れ層の数に関係なく、このネットワークは1ステップで実行できる入力の線形結合を生成するためです。つまり、単一のレイヤーのように動作します。

連続微分可能性などの活性化関数には、さらにいくつかの望ましいプロパティがあります。逆伝播を使用しているため、生成する関数はいつでも微分可能でなければなりません。トピックをよりよく理解するために、ここからアクティブ化機能についてウィキペディアのページを確認することを強くお勧めします。


2

いくつかの良い答えがここにあります。クリストファー・M・ビショップの著書「パターン認識と機械学習」を指摘するのは良いことです。これは、MLに関連するいくつかの概念についての深い洞察を得るために参照する価値のある本です。229ページからの抜粋(セクション5.1):

ネットワーク内のすべての隠しユニットのアクティブ化関数が線形であるとすると、そのようなネットワークでは、隠しユニットのない同等のネットワークを常に見つけることができます。これは、連続する線形変換の構成自体が線形変換であるという事実から来ています。ただし、非表示ユニットの数が入力ユニットまたは出力ユニットのいずれかの数よりも少ない場合、ネットワークで生成できる変換は、入力から出力への最も一般的な可能な線形変換ではありません。隠しユニット。12.4.2節では、線形ユニットのネットワークが主成分分析を引き起こすことを示します。ただし、一般に、線形ユニットの多層ネットワークにはほとんど関心がありません。


1

私が覚えているように、シグモイド関数は、BPアルゴリズムに適合するそれらの導関数が簡単に計算できるために使用されます。f(x)(1-f(x))のような単純なものです。数学を正確に覚えていません。実際には、導関数を持つ任意の関数を使用できます。


7
私が覚えているように、関数はまだ単調に増加することを望んでいます。したがって、関数はありませ
Novak

1

複数のニューロンの階層化されたNNを使用して、線形的に分離できない問題を学習できます。たとえば、XOR関数は、ステップ活性化関数を持つ2つのレイヤーで取得できます。


0

できるだけ簡単に説明します。

ニューラルネットワークはパターン認識で使用されていますか?また、パターン検出は非常に非線形な手法です。

引数として、すべてのニューロンに線形活性化関数y = wX + bを使用し、if y> 0-> class 1 else class 0のように設定するとします。

これで、二乗誤差損失を使用して損失を計算し、それを逆伝播して、モデルが正しく学習できるようにしますか?

違う。

  • 最後の非表示レイヤーの場合、更新された値はw {l} = w {l}-(alpha)* Xになります。

  • 最後から2番目の非表示レイヤーの場合、更新される値はw {l-1} = w {l-1}-(alpha)* w {l} * Xになります。

  • 最後のi番目の非表示レイヤーの場合、更新された値はw {i} = w {i}-(alpha)* w {l} ... * w {i + 1} * Xになります。

これにより、すべてのウェイトマトリックスが乗算され、結果として可能性が生じます。A)w {i}勾配の消失による変化はほとんどないB)w {i}勾配の爆発による劇的かつ不正確な変化C)w {i}の変化私たちに良い適合スコアを与えるのに十分です

Cが発生した場合、これはおそらく、分類/予測の問題が単純な線形/ロジスティックリグレッサーベースの問題であり、そもそもニューラルネットワークを必要としなかったことを意味します。

NNの堅牢性やハイパーチューニングに関係なく、線形アクティベーション関数を使用すると、非線形を必要とするパターン認識の問題に取り組むことができなくなります。


-3

それは全く必要条件ではありません。実際、修正された線形活性化関数は、大規模なニューラルネットワークで非常に役立ちます。勾配の計算ははるかに速く、最小範囲を0に設定することでスパース性を誘導します。

詳細については、次を参照してください。https//www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks


編集:

整流された線形活性化関数を線形関数と呼ぶことができるかどうかについては、いくつかの議論がありました。

はい、x = 0の点では線形ではないため、技術的には非線形関数ですが、他のすべての点では線形であると言っても間違いはないので、ここで簡単に説明することはそれほど役に立ちません。

アイデンティティ関数を選択することもできましたが、それでも真実ですが、最近の人気のため、ReLUを例として選択しました。


8
整流された線形活性化関数も非線形です(その名前にもかかわらず)。それはちょうど正の値について線形である
プランカルキュール

4
あなたは技術的に正しい、それはドメイン全体、特にx = 0で線形ではありません(f(x)= 0は線形関数なので、実際にはx <0の場合線形です)。また、微分もできないため、勾配関数も完全には計算できませんが、実際には、これらの技術は簡単に克服できます。
eski 2015

4
彼は技術的に正しいだけでなく、実際にも正しいです(またはそのようなもの)。それらを有用にするのは、ReLUの非直線性です。彼らは直線的であったであろう場合は、フォーム上の活性化機能を持っているだろうf(x) = a*x(つまりがある線形活性化関数の唯一のタイプであるため)である、無用活性化関数として(あなたは非線形活性化関数とそれを組み合わせるしない限り、 )。
HelloGoodbye 2016年

10
Rectified Linear Unit(ReLU)は線形ではなく、人々が気にかけているのは単なる「細部」ではなく、そもそもそれが有用である重要な重要な理由です。単位関数または正規化線形単位がアクティブ化関数として使用されているニューラルネットワークは、非線形関数をモデル化できません。それが0を超えて線形であるからといって、実際には線形関数であるとは限りません。漏れのあるReLUも0未満では「線形」ですが、それでも線形関数ではないため、単位関数で置き換えることはできません。非線形性は、間違いなく要件です。
エッサムアルマンスーリ2016

3
これは区分線形関数と呼ばれる概念です。
eski 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.