【第2回】 ゼロから作る Deep Learning (3章:ニューラルネットワーク前半) 解説ブログをやってみた

Python 機械学習

ゼロから作る Deep Learning を、データサイエンス初心者の私と一緒にやっていきませんか?

ゼロから作る Deep Learning とは

ゼロから作るDeep Learning とは、Python の基礎からのDeep Learning を実戦的に学べる書籍なのでぜひ手に取ってみてください。10万部以上のベストセラーです!

今回は第2回、第3章のニューラルネットワークの構築の前半についてやっていきたいと思います。

今回の目標

今回の目標は、活性化関数である
・ステップ関数
・シグモイド関数
・ReLU関数
の3つのプログラムを書いて、グラフの形と特徴を理解することです。

第3章 ニューラルネットワークについて

ニューラルネットワークとは、前に説明したパーセプトロンと同様にニューロンの信号を階層的に伝えるシステムです。

しかし、大きな違いとしてニューラルネットワークは、次のニューロンへの情報伝達時にステップ関数以外の活性化関数を導入する事で、複雑な回路の構築が可能になるのです。

それでは、早速ニューラルネットワークで使用する活性化関数について紹介していきます。

ステップ関数

ステップ関数は、パーセプトロンの所で使われた関数。
xが0以下なら0 を、xが0より大きければ1を返します。

その様子が階段のようなのでSTEP関数というんですね。

# ステップ関数の実装
def step_function(x):
  if x>0:
    return 1
  else:
    return 0

#ステップ関数のグラフ

x=np.arange(-5,5,0.1)
y=step_function(x)
plt.plot(x,y)
plt.title("step")
plt.show()

 

シグモイド関数

シグモイド関数とは、最小値0 最大値1 ですが、なだらかなS字を描いて増加していく曲線です。
(ギリシャ語のシグマ) の形から来てるみたいです。

 

#シグモイド関数の実装

def sigmoid(x):
  return 1/ (1+np.exp(-x))

#シグモイド関数のグラフ

x=np.arange(-5,5,0.1)
y=sigmoid(x)
plt.plot(x,y)
plt.title("sigmoid")
plt.show()

 

 

それではステップ関数とシグモイド関数のグラフを作って比較してみましょう。

共通点:どちらも 最小値0、最大値1 のグラフである
相違点:シグモイド関数はなだらかな曲線であるのに対し、ステップ関数は非連続的な変化

 

ReLU関数

 

最後にReLU関数を実装してみます。コレは近年よく使われている活性化関数で、xが負の時は0を返し、xが正の値の時はそのまま返すという関数です。

#ReLU関数の実装
def ReLU(x):
  return np.maximum(0,x)

まとめ

以上、3つの活性化関数を一緒に学んできました。
ステップ関数、シグモイド関数、ReLU関数の実装方法とグラフの形を理解することは、G検定対策としても非常に重要です。
次回は、これを踏まえて「入力層→中間層→出力層」の3層ニューラルネットワークの実装を行いたいと思います。

次の章:   作業中

前の章:【第1回】ゼロから作る Deep Learning (2章:パーセプトロン) 解説ブログをやってみた