見出し画像

PythonでDeepLearning - 活性化関数

まず、活性化関数とは

使われる活性化関数は時代とともに変化している。ニューラルネットワークの基礎となっている情報処理モデル「パーセプトロン」では「ステップ関数」という活性化関数が用いられていた。しかし、「バックプロパゲーション」が登場してからは「シグモイド関数」や「tanh関数」が使われるようになった。さらに、最近のディープニューラルネットワークでは「ReLU」がよく使われるようになっている。

https://atmarkit.itmedia.co.jp/ait/articles/2003/26/news012.html

出力層においてよく使われる主な活性化関数としては、

・分類問題(二値)の場合は「シグモイド関数」
・分類問題(多クラス)の場合は「ソフトマックス(Softmax)関数」
・回帰問題の場合は「(活性化関数なし)」もしくは(前述した)「恒等関数」

https://atmarkit.itmedia.co.jp/ait/articles/2003/26/news012.html

パーセプトロンではステップ関数

def step_function(x):
  if x>0:
    return 1
  else:
    return 0

簡潔にも書けて

def step(x):
  return 1.0 * (x >= 0.0)

これで0か1かの数字が出てきます。

引数にNumpyの配列を入れたいので、対応させると

import numpy as np

def step_function(x):
  y = x > 0
  return y.astype(int) 

引数"x"にNumpyの配列を入れて" x > 0"すると真偽値が出てくるので"y.astype(int) "で"0,1"に変換します。

これをグラフで書くと

import numpy as np
import matplotlib.pylab as plt

def step_function(x):
  y = x > 0
  return y.astype(int)

x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1)
plt.show()

Colabで実行。

「パーセプトロン」ではこの判定で分別します。

入力して重みずけされた数値を活性化関数で分離します。この場合は"1,0"を閾値として結果を出します。これが活性化関数の役割です。


この記事が気に入ったらサポートをしてみませんか?