ディープラーニングでよく使われる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から生まれる

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

推薦する

人工知能がサービスと運用管理を改善する10の方法

ヨーロッパの多国籍通信会社は、BMC の Helix Chatbot を標準化して、全部門の 120...

概念から応用まで、人工知能の可能性

現在、AI の最大の可能性は、回帰や分類などの分析技術にあることが知られています。ニューラル ネット...

独自のデータを使ってシンプルな畳み込みニューラルネットワークを構築する

この記事では、花、車、猫、馬、人、自転車、犬の 7 種類の何千もの画像でトレーニングされ、特定の画像...

ちょうど今、人工知能に関する大きなニュースが発表されました

中国における人工知能熱の高まりは、テクノロジーとビジネスによって推進されているだけでなく、政府の推進...

この 13 年間の深い測定学習は無駄になったのでしょうか?

おそらく、どの分野においても、頭を下げて突き進むことと同じくらい、立ち止まって考えることが大切なので...

...

人工知能の時代において、女の子が将来勝てるようにするために親はどのような教育理念を持つべきでしょうか?

私は二人の女の子の母親です。親は子供に何でも良いものを残そうとすると言われていますが、子育ての過程で...

カメラ、レーダー、地図は不要、二足歩行ロボットは「自分の感覚」で歩く

二足歩行ロボットは高価で複雑、そして壊れやすい。バランスという観点で言えば、二足歩行は四足歩行よりは...

...

TensorFlow を使い始めるための重要なポイントをここにまとめました。まだ怠ける理由がありますか?

この記事の著者である Steven Dufresne は、初心者が TensorFlow を学習する...

...

業界の未来を牽引する8つのデジタル変革トレンド

さらに、2024 年までに、産業企業は自己管理テクノロジーと再設計された運用プロセスを組み合わせるこ...

...

...

データ汚染はAIシステムにとってますます大きな脅威となっている

ハッカーが制御を強めるために生成 AI モデルに偽の情報を挿入するなど、データ汚染の増加により AI...