ディープラーニングでよく使われる8つの活性化関数

ディープラーニングでよく使われる8つの活性化関数

活性化関数(変換関数とも呼ばれる)は、ニューラル ネットワークを設計するための鍵となります。活性化関数は、ニューラル ネットワークの出力を決定するために使用されるという意味で重要です。結果の値は、関数に応じて 0 から 1 または -1 から 1 などにマッピングされます。活性化関数にはスクワッシング関数と呼ばれる別名があり、活性化関数の範囲が制限されている場合に使用されます。活性化関数はニューラル ネットワークの各ノードに適用され、そのニューロンを「発火」/「活性化」するかどうかを決定します。

活性化関数を選択することがなぜ重要なのか。

活性化関数の選択は、隠し層と出力層に実装するときに重要です。モデルの精度と損失は活性化関数に大きく依存します。さらに、モデルに対する期待に基づいて選択する必要があります。たとえば、バイナリ分類問題では、シグモイド関数が最適な選択です。

活性化関数のタイプ。これらは大まかに 2 つのカテゴリに分けられます。

線形活性化関数。

非線形活性化関数。

表示の便宜上、次のライブラリをインポートします。

  1. 数学をmとしてインポート
  2. matplotlib.pyplot をpltとしてインポートします。
  3. numpyをnpとしてインポートする
  4. テンソルフローをtfとしてインポートする
  5. テンソルフローからkerasをインポート
  6. tensorflow.kerasからレイヤーをインポートする

シグモイド

シグモイド活性化関数はロジスティック関数とも呼ばれます。シグモイド関数は回帰問題や分類問題で非常によく使用されます。シグモイド関数によって与えられる値の範囲は 0 から 1 です。

  1. シグモイド(x)を定義します:
  2. 1 / (1 + m.exp(-x))を返すシグモイドの値 = []
  3. xの値 = []
  4. i範囲(-500,500,1)内にある場合:
  5. 私 = 私*0.01
  6. x の値を追加します(i)
  7. シグモイドの値.append(シグモイド(i))plt.plot(xの値,シグモイドの値)
  8. plt.xlabel( "xの値" )
  9. plt.ylabel( "シグモイドの値" )

タンH

この関数はシグモイド活性化関数と非常によく似ています。この関数は、-1 から 1 の範囲の任意の実数値を入力として受け入れ、任意の実数値を出力します。入力が大きい (正の値が大きい) ほど、出力値は 1.0 に近くなり、入力が小さい (負の値が大きい) ほど、出力は -1.0 に近くなります。 Tanh 活性化関数は次のように計算されます。

  1. tanh(x)を定義します:
  2. (m.exp(x) - m.exp(-x)) / (m.exp(x) + m.exp(-x))を返すvalues_of_tanh = []
  3. xの値 = []
  4. i範囲(-500,500,1)内にある場合:
  5. 私 = 私*0.001
  6. x の値を追加します(i)
  7. tanh の値.append(tanh(i))plt.plot( x の値、tanh の値)
  8. plt.xlabel( "xの値" )
  9. plt.ylabel( "tanhの値" )

ソフトマックス

Softmax 活性化関数は、合計が 1.0 になる値のベクトルを出力します。これは、クラス メンバーシップの確率として解釈できます。 Softmax は、尤度出力の「勝者がすべてを獲得する」機能を可能にする argmax 関数の「ソフト」バージョンです。

  1. 定義softmax(x):
  2. e_x = np.exp(x - np.max (x))
  3. e_x / e_x.sum ( )values_of_x = [i*0.01、 i範囲(-500,500)]を返します
  4. plt.plot(スコア、softmax(xの値))
  5. plt.xlabel( "xの値" )
  6. plt.ylabel( "ソフトマックスの値" )

RELU 整流器リニアユニット

ReLU はおそらく、隠し層に使用される最も一般的な関数です。また、Sigmoid や Tanh など、以前によく使われていた他の活性化関数の制限を効果的に克服することもできます。具体的には、飽和ユニットなどの他の問題が発生する可能性はあるものの、深層モデルのトレーニングを妨げる勾配降下法消失問題の影響は受けにくくなります。

  1. ReLU(x)を定義します。
  2. 戻る 最大(0,x) の relu 値 = []
  3. xの値 = []
  4. i範囲(-500,500,1)内にある場合:
  5. 私 = 私*0.01
  6. 値_of_x.append(i)
  7. 値_of_relu.append(ReLU(i))plt.plot(値_of_x,値_of_relu)

リーキーReLU

ReLU の問題: ReLU に負の値が与えられると、すぐにゼロになり、モデルがデータから適切に適合またはトレーニングする能力が低下します。つまり、ReLU 活性化関数への負の入力は、グラフ内でその値を即座にゼロに変換し、その結果、負の値が不適切にマッピングされて結果のグラフに影響を及ぼします。

この問題を克服するために、Leaky ReLU が導入されました。

  1. 定義leaky_ReLU(x):
  2. 戻る 最大(0.1*x,x) の L_relu の値 = []
  3. xの値 = []
  4. i範囲(-500,500,1)内にある場合:
  5. 私 = 私*0.01
  6. x の値を追加します(i)
  7. values_of_L_relu.append(leaky_ReLU(i))plt.plot(values_of_x,values_of_L_relu)

以下の関数はすべて RELU のバリエーションです。基本的には Leaky に似ており、活性化関数が負の場合に戻り値を最適化します。

エル

  1. activation_elu = レイヤー.Activation('elu')x = tf.linspace(-3.0, 3.0, 100)
  2. y = activation_elu(x) # レイヤーは一度作成されると、 functionplt.figure(dpi=100)と同じように呼び出すことができます
  3. plt.plot(x, y)
  4. plt.xlim(-3, 3)
  5. plt.xlabel(“入力”)
  6. plt.ylabel(“出力”)
  7. plt.show()

セル

  1. activation_selu = レイヤー.Activation( 'selu' )x = tf.linspace(-3.0, 3.0, 100)
  2. y = activation_selu(x) # レイヤーは一度作成されると、 functionplt.figure(dpi=100)と同じように呼び出すことができます
  3. plt.plot(x, y)
  4. plt.xlim(-3, 3)
  5. plt.xlabel( "入力" )
  6. plt.ylabel( "出力" )
  7. plt.show()

シュッシュ

  1. activation_swish = レイヤー.Activation('swish')x = tf.linspace(-3.0, 3.0, 100)
  2. y = activation_swish(x) # 一度作成されると、レイヤーは関数 plt.figure(dpi=100)と同じように呼び出すことができます
  3. plt.plot(x, y)
  4. plt.xlim(-3, 3)
  5. plt.xlabel(“入力”)
  6. plt.ylabel(“出力”)
  7. plt.show()

要約する

よく使われる隠れ層の活性化関数:

一般的に、リカレント ニューラル ネットワークでは Tanh またはシグモイド活性化関数、あるいはその両方が使用されます。たとえば、LSTM では通常、再帰接続にシグモイド活性化を使用し、出力に Tanh 活性化を使用します。

1. 多層パーセプトロン (MLP): ReLU 活性化関数。

2. 畳み込みニューラル ネットワーク (CNN): ReLU 活性化関数。

3. リカレント ニューラル ネットワーク: Tanh および/またはシグモイド活性化関数。

どの活性化関数を使うべきかわからない場合は、さまざまな組み合わせを試して最適なものを見つけることもできますが、まずはRELUから始めることができます。

出力層の活性化関数:

出力層の活性化関数は、解決しようとしている問題の種類に基づいて選択する必要があります。たとえば、線形回帰の問題がある場合、線形活性化関数が役立ちます。以下は、直面する可能性のある一般的な問題と、使用されるアクティベーション関数です。

バイナリ分類: 1 つのノード、シグモイド活性化。

マルチクラス分類: クラスごとに 1 つのノード、ソフトマックス活性化。

マルチラベル分類: クラスごとに 1 つのノード、シグモイド活性化。

以下は、よく使用される活性化関数の数式と視覚化です。お役に立てば幸いです。

<<:  これはホログラムではありません!多角度から視聴できる真の3D画像

>>:  次世代のサイバー脅威はAIから生まれる

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

機械学習を使用してデータセンターの電力を管理するにはどうすればよいでしょうか?

[[249391]] [51CTO.com クイック翻訳] データセンターがますます複雑になってい...

Ant Group は、動画の著作権侵害検出用に 16 万本の動画ペアと 28 万本のクリップペアからなる大規模なデータセットを公開しました。

従来の著作権保護業界は、時間がかかり、労働集約的で、コストがかかります。膨大な量のコンテンツを完全に...

2020 年の AI と機械学習の重要なトレンドは何ですか?

競争が激化するテクノロジー市場において、ハイテク新興企業から世界的な多国籍企業まで、誰もが人工知能を...

...

AIを活用してモノのインターネットを次のレベルに引き上げる方法

世界中の企業が人工知能を広く導入しています。モノのインターネットもすぐ後に続きます。実際、モノのイン...

地球全体をシミュレート: Nvidia の Earth-2 スーパーコンピューターが間もなくオンラインになります

「未来を今日どのように実現するか。その答えはシミュレーションだ」と、NVIDIAの創業者兼CEOのジ...

...

アルゴリズムの法則から法則のアルゴリズムへ、アルゴリズムの時代を巻き起こす

ビッグデータの出現、クラウド コンピューティング テクノロジーの成熟度の向上、ディープラーニング ア...

生体認証市場における 4 つの「ホットアイテム」: 音声認識、顔認識など。

生体認証市場を見ると、顔認証や虹彩認証などの割合が増加しており、一般の人々のこれらの技術に対する理解...

1万語の要約 | 2023年のビッグモデルと自動運転の論文を簡単に見る

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

10行のPythonコードで画像認識

[[226981]]ディープラーニングアルゴリズムの台頭と普及により、人工知能の分野、特にコンピュー...

...

...

アリババ・ダモ・アカデミーがAI防疫技術を再現:CT画像を20秒で解釈、認識精度は96%

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

人工知能はデータの管理と処理を改善する素晴らしい方法です

初期の AI マシンは不完全であり、明確に定義された指示に従ってのみ動作できました。しかし、コンピュ...