2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[ゼロから作るDeep Learning]活性化関数 step関数・シグモイド関数・Relu関数を分かりやすく解説してみた

Posted at

はじめに

この記事はゼロから作るディープラーニング 4章ニューラルネットワークを自分なりに理解して分かりやすくアウトプットしたものです。
文系の自分でも理解することが出来たので、気持ちを楽にして読んでいただけたら幸いです。
また、本書を学習する際に参考にしていただけたらもっと嬉しいです。

step関数

step関数はパーセプトロンに使われている活性化関数です。

step関数の具体的な処理を説明すると、入力された値が0を超えた場合は1を出力して入力された値が0を超えない場合は0を出力します。
スクリーンショット 2019-10-16 19.16.53.png

# ステップ関数
def step_function(x):
    if x > 0:
        return 1
    elif x <= 0:
        return 0

パーセプトロンを理解している方は、同じことなので簡単だと思います。

シグモイド関数

シグモイド関数は昔からニューラルネットワークに使われてきた活性化関数です。
具体的な処理方法はstep関数のように言葉では表しにくいので、数式を使いたいと思います。
スクリーンショット 2019-10-16 19.24.10.png
xが入力された値を表して、eはネイビア数を表します。(ネイビア数は高校数学で習うので文系でも学習範囲だったはず)

ではシグモイド関数も実装したいと思います。

# シグモイド関数
def sigmoid_function(x):
    return 1 / (1 + np.exp(-x))
sigmoid_function(np.array([1,3,0.4,-3]))

array([0.73105858, 0.95257413, 0.59868766, 0.04742587])

Relu関数

Relu関数は最近ニューラルネットワークに使われ始めたNew関数です。
処理の内容は、入力値が0を超えた場合はそのまま出力して、0を超えない場合は0を出力します。
スクリーンショット 2019-10-16 19.40.39.png

# ReLU関数
def relu_function(x):
    return np.maximum(0,x)
print(relu_function(2))
print(relu_function(-1))
2
0

Relu関数はシグモイド関数に比べて結構分かりやすい関数なので、できればこっちを使って行きたいですね(笑)

次回は今日実装した活性化関数を使って簡単なニューラルネットワークを実装してみたいと思います!!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?