0
3

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]簡易的なニューラルネットワークを分かりやすく実装してみた

Posted at

はじめに

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

ニューラルネットワークの構造

ニューラルネットワークは入力層・中間層・出力層の三層で出来ており、そのため三層ネットワークとも呼ばれたりします。
しかし三層とは言っても中間層は一層構造では無く、多層構造なので実際は三層です。多層パーセプトロンのように層を深くしたいときは中間層を深くします。
スクリーンショット 2019-10-17 18.21.35.png
前回も書いた通り、ニューラルネットワークと多層パーセプトロンの違いは活性化関数の違いです。
後の構造はほとんど同じなのです。

ではコードで実装してみます。

# 3層ニューラルネットワーク実装
X = np.array([1.0,0.5,2.0])#入力層
B1 = np.array([0.1,0.2])
W1 = np.array([
    [0.1,0.3],
    [0.2,0.4],
    [0.4,0.5]
])
A1 = np.dot(X,W1) + B1 # 各ニューロンの入力信号の総和 + 各ニューロンのバイアス
A1 #各ニューロンの入力値

# 中間層一層目
Z1 = sigmoid_function(A1)
Z1#一層目の出力信号

# 中間層二層目
W2 = np.array([
    [0.1,0.4,0.6],
    [0.2,0.5,0.8]
])
B2 = np.array([0.1,0.2,0.4])

A2 = np.dot(Z1,W2) + B2
Z2 = sigmoid_function(A2)
Z2#二層目の出力信号

W3 = np.array([
    [0.2,0.3],
    [0.3,0.4],
    [0.4,0.9]
])
B3 = np.array([0.1,0.2])
A3 = np.dot(Z2,W3) + B3
# 出力層の活性化関数
def identity_function(x):
    return x

identity_function(A3)

今回はまだ学習を実装する前なので重みやバイアスなどのパラメータは手動設定ですが、上のコードでニューラルネットワークの実装ができます。
上を見るとわかるのですが、ほとんどパーセプトロンの構造と同じなので説明はほとんど入りませんよね。
違う部分は活性化関数がstep関数じゃ無くシグモイド関数というところだけです。

後もう一つ出力層がニューラルネットワークにはありますのでそこの解説が必要です。
ですが上の実装だと出力層の説明が全くできていませんので、出力層の解説は次回させていただきます。

0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?