活性化関数としても使われている「シグモイド関数」とは?

科学・テクノロジー

 ディープラーニングなどの機械学習では「シグモイド関数」という活性化関数が使われることがあります。

 とはいえ、数式の意味もわからずに何となく使うのは気持ち悪いですよね。

 そこで今回は、シグモイド関数とはどのような関数なのか簡単に紹介したいと思います。




スポンサーリンク

 シグモイド関数とは?

 まずは数式とグラフから。ちなみに、グラフは\(a=1\)としています。

$$ς_a(x) = \frac{1}{1+\exp(-ax)}  (a>0)$$

 シグモイド関数の特徴は、\(x\)が負の無限大に近づくと、分母が正の無限大になるので、\(ς_a(x)\)の値が\(0\)に近づき、

 反対に、\(x\)が正の無限大に近づくと、分母が\(1\)に近づくので、\(ς_a(x)\)の値も\(1\)に近づくような関数です。

 \(x\)が\(0\)のときは、\(ς_a(x)\)は\(0.5\)になります。グラフに示されている通りですよね。

 また、\(a\)の値が大きくなるほど変化の度合いが大きくなり、\(a=1\)のときのシグモイド関数を「標準シグモイド関数」と呼びます。

 さて、このシグモイド関数は、機械学習では活性化関数として使われることが多いです。

 シグモイド関数は、非線形分離(=曲線で分離すること)ができるため、複雑な関係性も表現することができるからです。

 シグモイド関数をグラフ化するPythonコード

 では最後に、今回表示したグラフを出力するためのPythonコードを紹介します。参考にしてください。

◆サンプルプログラム:

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(-5, 5, 0.1)
e = math.e
a = 1

y = 1 / (1 + e**(-a*x))

plt.plot(x, y)
plt.show()

 このサンプルプログラムでは、\(x\)に\(-5\)から\(5\)まで値を\(0.1\)刻みで保持しておき、シグモイド関数に入力して\(y\)を求めています。その結果をグラフ表示しているんですよね。

 実際に手を動かして\(a\)の値を大きくしていけば、変化の度合いが大きくなることがわかりますよ。

 最後に

 今回は、シグモイド関数について簡単に説明してきました。ディープラーニングは、このような関数の組み合わせで実現されているので、ぜひ基本的なところから理解を深めていきましょう。

[amazonjs asin=”4046021969″ locale=”JP” title=”人工知能プログラミングのための数学がわかる本”]

コメント

タイトルとURLをコピーしました