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

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

推薦する

AI とブロックチェーンは 2020 年にモバイル アプリ業界にどのような革命を起こすのでしょうか?

新たな10年を迎えるにあたり、人々は過去10年間の経験と教訓を活用する必要があります。モバイル アプ...

60年ぶり! AI が新しい抗生物質の最初のバッチを発見し、MIT の主要な研究が Nature に掲載されました。人類はスーパーバグとの戦いに希望を持っている

60年間、人類は抗生物質の研究において大きな進歩を遂げていません。しかし、このギャップはAIによって...

生成AIはスマートホームの触媒となる

ラスベガスで開催される2024年コンシューマー・エレクトロニクス・ショーが終わりに近づく中、LGやサ...

アリババDAMOアカデミーがAIの人間の言語理解の向上を支援する論文でSemEval最優秀賞を受賞

世界最大のセマンティック評価コンテスト「SemEval-2022」は7月19日、今年唯一の「最優秀シ...

人工知能は人々の日常の職業生活をどのように変えているのでしょうか?

[[280560]]世界が急速に発展する中、専門家は生産性と仕事の効率性の向上に努めなければなりま...

マイクロソフトのAI画像ジェネレーターが自社の従業員から報告:有害な画像を生成する可能性がある

CNBCによると、3月7日、マイクロソフトのエンジニアが米連邦取引委員会(FTC)に、同社の人工知能...

人工知能のための 6 つの無料オープンソース ツール! 3 分で機械学習を始めましょう!

オープンソースでは、自分のアイデアがいかに独創的であったとしても、他の誰かがすでにそのコンセプトを実...

...

AI人材の確保をめぐる秘密の戦い:中国が勝利する可能性は?

[[251811]]画像ソース @Visual China人工知能の概念は、提唱されてから60年以...

未来の生活に革命をもたらす5つのテクノロジートレンド

テクノロジーは、絶え間ない進歩と常に変化する可能性により、私たちの日常生活に組み込まれるようになりま...

人工知能は伝染病との戦いに活用できるのか?

これまで、私たちは人工知能が医療業界にどのように貢献するかについて議論してきました。新型コロナウイル...

2023年の生成AIの包括的なレビュー

2023年には、生成AIが開発者のアプリケーション構築支援において飛躍的な進歩を遂げ、大手ツールベン...

...

自然言語処理のためのオープンソースツール12選

[[316192]]独自の NLP アプリケーションで使用できる 12 個のツールを見てみましょう。...

...