この記事では、さまざまな活性化関数を紹介し、活性化関数の長所と短所を比較します。この記事は、人工ニューラルネットワーク (AAN) の基礎知識があることを前提としています。そうでない場合は、Synced が紹介している関連記事を読むことをお勧めします: DNN の概要論文: フィードフォワード、畳み込み、およびリカレント ニューラル ネットワーク技術の詳細な説明 1. 活性化関数とは何ですか? 生物学的ニューラル ネットワークは人工ニューラル ネットワークの開発に影響を与えました。しかし、ANN は脳の働きを近似的に表現するものではありません。しかし、人工ニューラル ネットワークで活性化関数が使用される理由を理解する前に、生物学的ニューラル ネットワークが活性化関数とどのように関連しているかを理解しておくと役立ちます。 典型的なニューロンの物理的構造には、細胞体、他のニューロンに信号を送る軸索、および他のニューロンから送られた信号や情報を受信する樹状突起が含まれます。 生物学的ニューラルネットワーク 上の画像では、赤い円は 2 つのニューロンが通信する領域を表しています。ニューロンは樹状突起を通じて他のニューロンからの信号を受信します。樹状突起の重みはシナプス重みと呼ばれ、受信信号に掛けられます。樹状突起からの信号は細胞体に蓄積され、信号強度が一定の閾値を超えると、ニューロンは情報を軸索に伝達します。そうでない場合、信号はニューロンによって「殺され」、それ以上伝播できなくなります。 活性化関数は信号を渡すかどうかを決定します。この場合、必要なのは 1 つのパラメーター (しきい値) を持つ単純なステップ関数だけです。さて、私たちが何か新しいことを学ぶとき(または何かを学ばないとき)、一部のニューロンの閾値とシナプスの重みが変化します。これにより、ニューロンと脳の間に新しい接続が形成され、新しいことを学習できるようになります。 この概念をもう一度理解してみましょう。ただし、今回は人工ニューロンを使用します。 上の図では、(x_1、...、x_n) は信号ベクトルであり、これに重み (w_1、...、w_n) が乗算されます。次に、それらを合計します (つまり、合計 + バイアス項 b)。最後に、累積された合計に活性化関数 f が適用されます。 注: 重み (w_1、...、w_n) とバイアス項 b は、入力信号に対して線形変換を実行します。活性化関数は信号に対して非線形変換を実行し、入力と出力間の任意の複雑な変換を学習できるようにします。 これまでにも多くの関数が提案されてきましたが、ニューラル ネットワークの学習をより良く、より速くする活性化関数を見つけることは、現在でも活発な研究方向です。 2. ニューラルネットワークはどのように学習するのでしょうか? ニューラル ネットワークがどのように学習するかについて基本的な理解が必要です。ネットワークの予想される出力が y (ラベル付けされた値) であるが、ネットワークの実際の出力が y' (予測値) であるとします。予測出力と期待出力の差 (y - y') は、メトリック、損失関数 (J) に変換できます。ニューラル ネットワークが多くの間違いを犯すと損失は大きくなり、ニューラル ネットワークが少数の間違いを犯すと損失は小さくなります。トレーニングの目標は、トレーニング セットの損失関数を最小化する重み行列とバイアス ベクトルを見つけることです。 下の図では、損失関数はボウルのような形をしています。トレーニング プロセスのどの時点でも、勾配に関する損失関数の偏微分は、その場所の勾配になります。偏微分によって予測される方向に移動することで、谷底に到達し、損失関数を最小化できます。関数の偏微分を使用して局所最小値を繰り返し見つける方法は、勾配降下法と呼ばれます。 人工ニューラル ネットワークの重みは、バックプロパゲーション法を使用して更新されます。損失関数の勾配に対する偏微分も重みの更新に使用されます。ある意味では、ニューラル ネットワーク内のエラーは、微分の連鎖律に従って逆伝播されます。これは反復的に実装されます。複数回の反復の後、損失関数は最小値に達し、その導関数は 0 になります。 バックプロパゲーションについては別の記事で取り上げる予定です。ここで主に指摘されているのは、トレーニング プロセス中に発生する導出ステップです。 3. 活性化関数の種類 線形活性化関数: これは、f(x) = x という式を持つ単純な線形関数です。基本的に、入力は変更されずに出力に渡されます。 線形活性化関数 非線形活性化関数: 非線形に分離可能なデータを分離するために使用され、最も一般的に使用される活性化関数です。非線形方程式は入力から出力へのマッピングを制御します。非線形活性化関数には、Sigmoid、Tanh、ReLU、LReLU、PReLU、Swish などがあります。これらの活性化関数については以下で詳しく説明します。 非線形活性化関数 4. 人工ニューラル ネットワークに非線形活性化関数が必要なのはなぜですか? ニューラル ネットワークは複雑な関数を実装するために使用され、非線形活性化関数により、ニューラル ネットワークは複雑な関数を任意に近似できるようになります。活性化関数によってもたらされる非線形性がなければ、多層ニューラル ネットワークは単層ニューラル ネットワークと変わりません。 ここで、非線形性がなければニューラル ネットワークが XOR ゲートや XNOR ゲートなどの単純な関数を近似することさえできない理由を理解するために、簡単な例を見てみましょう。下の図はXORゲート関数です。十字と円はデータセットの 2 つのカテゴリを表します。 2 つの特徴 x_1 と x_2 が同じ場合、カテゴリ ラベルは赤い十字になります。異なる場合は青い円になります。 2つの赤い十字は入力値(0,0)と(1,1)に対して出力値が0になり、2つの青い円は入力値(0,1)と(1,0)に対して出力値が1になります。 XORゲート機能の図 上の図から、データ ポイントは非線形に分離可能であることがわかります。つまり、青い円と赤い十字を分ける直線を描くことはできません。したがって、それらを分離するには非線形の決定境界が必要です。 活性化関数は、ニューラル ネットワークの出力を特定の範囲内に圧縮する際にも重要です。ニューロンの出力値は非常に大きくなる可能性があります。この出力は、変更されずに次のニューロン層に送られると、より大きな値に変換されますが、このプロセスには大量の計算能力が必要です。活性化関数のタスクの 1 つは、ニューロンの出力を境界領域 (たとえば、0 と 1 の間) にマッピングすることです。 このような背景を念頭に置いて、さまざまな種類の活性化関数を見てみましょう。 5. 非線形活性化関数のさまざまなタイプ (1)シグモイド シグモイドはロジスティック活性化関数とも呼ばれ、実数値を0〜1の範囲に圧縮し、予測確率の出力層にも使用できます。この関数は、大きな負の数値を 0 に変換し、大きな正の数値を 1 に変換します。数式は次のとおりです。 次の図はシグモイド関数とその導関数を示しています。 シグモイド活性化関数 シグモイド導関数 シグモイド関数には主に 3 つの欠陥があります。
次に説明する非線形活性化関数は、シグモイド関数の範囲がゼロにならないことが予想される問題を解決します。 (2)タン Tanh活性化関数 正接微分 Tanh 活性化関数は、双曲正接活性化関数とも呼ばれます。 Sigmoid 関数と同様に、Tanh 関数も true 値を使用しますが、それらを -1 ~ 1 の範囲に圧縮します。 Sigmoid とは異なり、Tanh 関数の出力は、間隔が -1 から 1 の間であるため、ゼロを中心とします。 Tanh 関数は、2 つのシグモイド関数を組み合わせたものと考えることができます。実際には、Sigmoid 関数よりも Tanh 関数が優先して使用されます。負の入力は負の値として扱われ、ゼロの入力値はゼロに近い値にマッピングされ、正の入力は正の値として扱われます。 唯一の欠点は、Tanh 関数にも勾配消失の問題があり、飽和すると勾配も「消滅」してしまうことです。 勾配消失の問題を解決するために、別の非線形活性化関数である正規化線形ユニット (ReLU) について説明します。これは明らかに前の 2 つの関数よりも優れており、最も広く使用されている関数です。 (3)整流線形ユニット(ReLU) ReLU活性化関数 ReLU微分 上の図からわかるように、ReLU は下から始まる半補正関数です。数式は次のとおりです。 入力 x<0 の場合、出力は 0 になり、x>0 の場合、出力は x になります。この活性化関数により、ネットワークの収束が速くなります。飽和しない、つまり少なくとも正の領域 (x>0) では勾配消失問題と戦うので、ニューロンは領域の少なくとも半分ですべてのゼロを逆伝播しません。 ReLU は、単純なしきい値設定が使用されるため、計算効率が優れています。しかし、ReLU ニューロンにはいくつかの欠点もあります。
ReLU 活性化関数の勾配消失問題を解決するために、x < 0 の場合、デッド ReLU 問題の修正を試みる関数である Leaky ReLU を使用します。 Leaky ReLU を詳しく見てみましょう。 (4) リーキーReLU リーキーReLU活性化関数 この関数は、dead ReLU 問題を軽減しようとします。数式は次のとおりです。 Leaky ReLU の概念は、x < 0 の場合、0.1 の正の勾配が得られるというものです。この関数は、dead ReLU 問題をある程度軽減しますが、この関数を使用した結果は一貫していません。効率的な計算、高速収束、正の領域での飽和がないなど、ReLU 活性化関数のすべての特性を備えています。 Leaky ReLU はさらに拡張できます。 x に定数項を掛ける代わりに、x にハイパーパラメータを掛けます。これは、Leaky ReLU よりもうまく機能するようです。この拡張機能は Parametric ReLU です。 (5) パラメトリックReLU PReLU 関数の数式は次のとおりです。 ここで、y はハイパーパラメータです。これにより、バックプロパゲートできるため学習可能なランダムなハイパーパラメータが導入されます。これにより、ニューロンは負の領域で最適な勾配を選択できるようになり、この機能により、ニューロンは ReLU または Leaky ReLU になることができます。 一般的には ReLU を使用するのが最適ですが、Leaky ReLU または Parametric ReLU を試して、どちらが問題に適しているかを確認することもできます。 (6)スウィッシュ スウィッシュ活性化関数 この関数は自己ゲーティング活性化関数とも呼ばれ、最近 Google の研究者によって公開されました。数式は次のとおりです。 論文(https://arxiv.org/abs/1710.05941v1)によると、Swish 活性化関数のパフォーマンスは ReLU 関数よりも優れています。 上図から、x 軸の負の領域における曲線の形状が ReLU 活性化関数の形状と異なることがわかります。そのため、入力値が増加しても Swish 活性化関数の出力が減少する可能性があります。ほとんどの活性化関数は単調です。つまり、入力値が増加しても出力値が減少することはありません。 Swish 関数が 0 の場合、片側有界性の特性を持ち、滑らかで非単調です。コードの行を変更して、それがどのように機能するかを確認するのは興味深いようです。 原文: https://www.learnopencv.com/understanding-activation-functions-in-deep-learning/ [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
>>: Reddit のホットトピック: あなたも NLP の現状に失望していますか?
百度がこのほど発表した「百度人気検索・2022年大学入試ビッグデータ」レポートによると、人工知能は3...
[[252981]]ビッグデータダイジェスト制作編纂者:李磊、大潔瓊、雲周過去数年間にブラウザを開い...
現代のコンピューティングは造船や海洋工学における設計および建設プロセスを大幅に改善していますが、限ら...
昨日、OpenAI は初のテキスト生成ビデオ モデル Sora をリリースし、コミュニティに衝撃を与...
私たちは「技術の爆発」と「共有とオープンソース」の時代に生きています。先進技術の更新と反復の速度は、...
[[252430]]ビッグデータダイジェスト制作編纂者:江宝尚今年 9 月に開催された Deep L...
[[329518]]企業が損失を避けるために機械学習の博士号取得者にどれくらいの金額を要求すべきでし...
農業は、国の経済発展における主要産業として、国民経済の重要な一環であり、常に国民経済の建設と発展を支...
デジタル技術は私たちが暮らす世界のあらゆる側面を変えており、小売店は消費者がこの変化を経験する主な場...
著者 | 李世馨翻訳者 | 朱 仙中編纂者:Qianshan人工知能に関する議論にはしばしば論争が伴...
最近またFaceAPPが人気になってきているので、編集者もダウンロードして試してみました。大丈夫です...
[[378409]]人工知能は間違いなく将来のトレンドであり、AIは将来の経済の発展を推進するでしょ...