活性化関数っていっぱいあるの?活性化関数の種類について

活性化関数っていっぱいあるの?活性化関数の種類について

どーもアイーンです。

いや~季節の変わり目ですね。

季節の変わり目には、くしゃみをするだけで鼻血が吹き出すほど粘膜ゆるっゆるになるのが玉に瑕。

桜やモミジなど、もっと季節を感じる場面があるにもかかわらず、鼻血で「あ、もうすぐ春か」と感じられる私はもはや新人類なのでしょう。

 

 

さて今日は、活性化関数の種類について解説してみたいと思います。

活性化関数とは、入力値と重みをかけ、さらにバイアスを足したものをいい感じに変換してくれるものでしたね。

それでは、どのような種類があるのでしょうか。

いってみましょう。

 

ステップ関数

ステップ関数とは、ある閾値を超えた入力があった場合、1を出力

それ以外は0を出力するとっても単純な関数です。

別名を階段関数といいます。

グラフはこれ

カックカクですね。キレが良い。

0を閾値とし、それ以上の入力だった場合は1を出力していますね。

Pythonでこれを再現すると・・・

 

def step_function(x):

  if x < 0:

    return 1

  else:

    return 0

 

と書きます。

 

 

 

シグモイド関数

シグモイド関数とは、入力値を 0から 1までの範囲の数値にこまか~く変換してくれる関数です。

グラフはこれ

滑らかですね~、とろけそうです。

365などの数値もこの関数を通すと1に

ー2018などのマイナスも0に変換してくれます。

また、この滑らかさがディープラーニングを行う上でとても重要で

実数(0.32345とか0.99993)を出力できるのが特徴です。

ステップ関数がデジタルなら、シグモイド関数は人間に近いアナログであると言えるでしょう。

Pythonで実装すると

 

import numpy as np

 

def sigmoid_function(x):

  return 1 / (1 + np.exp(-x))

 

numpy(ナムパイ)についての解説はまた別の機会に。

 

ReLU関数

ReLU(レル)関数とは

入力値が0以下なら0を出力

0より大きければ、そのままの値を出力するという関数です。

グラフはこれ

マイナスなところが一つもなく、前向きなヤツです。

 

10が入力されたらそのまま10を出力しています。

ちなみに現在の主流の関数で、他の人のコードの中でもよく見かけます。

ホントによく見かけるので、そろそろ挨拶してしまいそうです。

Pythonで入れるなら

 

import numpy as np

 

def relu_function(x):

  return np.maximum(0, x)

 

恒等関数

恒等関数は、入力値をそのまま出力する関数です。

主に出力層で使用されます。

 

 

必要性がまだ理解できません。

 

Pythonなら


def koutou_function(a):
  return a

やっぱり必要性がまだわかりません。

ソフトマックス関数

これも出力層で使用される関数です。

ソフトマックス関数は0~1の実数で表されます。

複数ある出力層の全てに入力された数値を使用して算出され

出力値を確率として解釈することができる関数です。

グラフはこれ

 

Pythonで書くなら

 

import numpy as np

 

def softmax(a):

  exp_a = np.exp(a)

  sum_exp_a = np.sum(exp_a)

  y = exp_a / sum_exp_a

  return y

 

まとめ

いかがでしたでしょうか。

紹介していない関数もまだあるようですが、活性化関数を理解する目的では十分お分かりいただけたのではないでしょうか。

中間層で使用される関数もありますし、出力層で使用される関数もあります。

これからビシビシ開発をするために、適切な時に正しい関数を選べるよう

関数の内容をしっかり確認しないとイカンと気を引き締めていきたいと思います。

 

それではまた。