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

ブログ    

推薦する

100万個のニューロンをリアルタイムでスキャンできるようになりました。脳細胞活動の画像化における新たなブレークスルーです。

数年前なら、コンピューターが 10,000 個のニューロンの活動を同時に記録していたらニュースになっ...

人工知能がクラウド業界を変える5つの方法

サイバー攻撃の巧妙さと深刻さが増すにつれ、IT 業界は協力して、サイバー攻撃からの保護と防止に使用さ...

...

...

ある日、お子さんが「お父さん、機械学習って何?」と尋ねたとします。

お父さん、機械学習って何ですか?答えるのは難しい!髪の毛が抜け始めた頭を掻いた後でも、お父さんはこの...

復旦NLPチームが大規模モデルエージェントの80ページのレビューを公開、AIエージェントの現状と将来を概観

最近、復旦大学の自然言語処理チーム (FudanNLP) が LLM ベースのエージェントに関するレ...

教室への人工知能の導入は論争を巻き起こしています。それは教育に役立つのでしょうか?境界はどこにあるのでしょうか?

「人工知能+スマート教育」が人気を集めています。しかし、生徒の表情を捉える「スマートアイ」や「顔ス...

人工知能市場の収益は今年1560億ドルに達する見込み

調査によると、人工知能(AI)ソリューションは現在急速に成長している市場であり、2020年までに1,...

ビデオ映像から間取り図を推測する新たなAI研究は目を見張るものがある

フロアプランは、空間を視覚化したり、ルートを計画したり、建物のデザインを伝えたりするのに役立ちます。...

MAEよりも強力なFAIRの新しいメソッドMaskFeatはHOGを使用して複数のSOTAを更新します

マスク・アンド・予測法は、コンピュータービジョンの分野における新しい流派となるかもしれません。自己教...

マインドタイピングがネイチャーの表紙に登場! 99%以上の正確さで1分間に90文字を書く

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