AI

活性化関数を実装する【ステップ関数とシグモイド関数】

こんにちは、インフラエンジニアのryuです。

今回は、ニューラルネットワークの活性化関数について解説します。活性化関数とは、ニューラルネットワークの計算で使用されるもので、出力信号を変換する関数のことです。いくつかの種類があり、良く分からない人も多いと思います。今回はステップ関数とシグモイド関数をpythonで実装しながら解説します。

活性化関数を実装する【ステップ関数とシグモイド関数】

活性化関数とは、ニューラルネットワークの計算で使用されるもので、出力信号を変換する関数のことです。

活性化関数には、以下のようなものがあります。

  • ステップ関数
  • シグモイド関数
  • ReLu関数
  • 恒等関数
  • ソフトマックス関数

その他にも種類がありますが、上記の関数を理解しておけば大丈夫です。その他のものは、上記の関数から派生したものが多いです。

今回は、上2つの”ステップ関数”と”シグモイド関数”について解説します。

では、早速実装してみましょう。実装にはpythonを使用しています。

ステップ関数

ステップ関数とは、0以上の場合は1を出力して、それ以外は0を出力する関数です。

グラフにすると以下のようになります。

ステップ関数のグラフ

ステップ関数は、2値分類で使われます。パーセプトロンが登場したころに使われていましたが、今は後で説明するシグモイド関数が2値分類では使われます。

では、pythonで実装してみましょう。

import numpy as np
import matplotlib.pylab as plt #グラフを表示するモジュール

#ステップ関数の定義
def step_function(x):   
    return np.array(x > 0, dtype=np.int)

x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)

plt.plot(x,y)

上記コードの解説を行います。

まず、2つのモジュールをインポートします。numpyは学術計算をするモジュールで、人工知能を作成するときによく使います。matplitlibはグラフを表示するモジュールです。

def step_function(x):にて、ステップ関数の定義を行っています。numpyをつかって、xが0以上なら1を出力、それ以外は0を出力するようにしています。詳しく説明すると、np.array(x>0)で”true”or”false”が出力されます。それをdtype=np.intをつかってtrueなら1を、falseなら0を出力するようにしています。

最後にmatplotlibを使ってグラフを表示させています。

シグモイド関数

シグモイド関数はニューラルネットワークで良く使われる関数です。グラフにすると↓のようになります。

ステップ関数を滑らかにしたものです。ステップ関数は0か1しか返さないのに対して、シグモイド関数は0~1の値を返します。そうすることで、ニューラルネットワークの精度が増します。

では、pythonで実装してみましょう。

import numpy as np
import matplotlib.pylab as plt 

#シグモイド関数の定義
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)

plt.plot(x,y)

ステップ関数同様、numpyとmatplotlibをインポートします。

defからシグモイド関数を定義します。シグモイド関数は、以下の数式で定義されます。

この数式をnumpyを使って実装しています。

次にx=np.arrange(-5.0, 5.0, 0.1)で-5~5までの間で0.1間隔の数列を作ります。

-5.0 -4.9 -4.8 ・・・・・4.9 5.0 のようになります。

そして、その数字をシグモイド関数に入れ、yに格納します。

最後にmatplotlibでグラフにして終了です。

活性化関数の実装まとめ

今回は、pythonを使ってステップ関数とシグモイド関数を実装しました。活性化関数はニューラルネットークを理解する上で必要な知識です。pythonで実装し、どのような動作をするのか理解しましょう。

また、私自身がAIをどのように勉強したのかを詳しくまとめたので、興味ある方はこちらもご覧ください。

【初心者必見】高卒からAIエンジニアになるための勉強方法を紹介! こんにちは、インフラエンジニアのryuです。 今回は高卒からAIエンジニアになるための勉強法を紹介していきます。私は現在インフラ...

ABOUT ME
ryu
大手メーカのIT部門でインフラエンジニアやってます。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!