ニューラルネットワークは行列計算 第9回 人工知能
今回の回は、詳しくは、
が参考になります。
前々回のときに悩んでいたニューラルネットワークの計算が行列という話。
なんとなくつかんできたんで、メモ。
ニューラルネットワークでの計算は、これ↓
で、多層ニューラルネットワークでは、こんな風に複雑になる↓
で、これを分かりやすくするためにそれぞれに記号を付ける。
xは、データのインプット
wは、重要度。重さのこと。
バイアスというのがあるんだけど、ここでは一旦無視する。
このときにy1の計算は、上記の内容を踏まえるとこんな感じ↓
それぞれを掛けて足すという流れ。これ行列と同じ計算。
行列
http://www.sist.ac.jp/~kanakubo/research/hosoku/gyoretu.html
じゃ、上のモデルを行列に変えると
じゃ、次
真ん中の計算
これに行列を合わせると
じゃ、次
これを行列に加えると
つまりこの行列を計算するプログラムがニューラルネットワークの計算になるみたい。
例として
x1 = 1 , x2 = 2
w1 = 1 , w2 = 2 , w3 = 3 , w4 = 4 , w5 = 5 , w6 = 6とした場合
とした場合
pythonで計算してみる。
まず
で、x の行列を設定
次にwの行列を設定
じゃ計算。
計算は簡単。dotを使う。
一発で計算できてる。なるほど、便利だ。
---まとめると---
x1 から繋がっているwはw1, w3 , w5となる。
なので、こうなる↓
そして、x2の場合は
つながりをまとめると
で、一気に計算するときは、numpyのdotで一発。
これが行列計算が必要な理由っぽい。
ゼロから作るDeep learningの P57 の 3.3.3 [ネットワークの行列の積]
が参考になります。
前々回のときに悩んでいたニューラルネットワークの計算が行列という話。
なんとなくつかんできたんで、メモ。
で、多層ニューラルネットワークでは、こんな風に複雑になる↓
で、これを分かりやすくするためにそれぞれに記号を付ける。
xは、データのインプット
wは、重要度。重さのこと。
バイアスというのがあるんだけど、ここでは一旦無視する。
このときにy1の計算は、上記の内容を踏まえるとこんな感じ↓
行列
http://www.sist.ac.jp/~kanakubo/research/hosoku/gyoretu.html
じゃ、上のモデルを行列に変えると
じゃ、次
真ん中の計算
これに行列を合わせると
じゃ、次
これを行列に加えると
つまりこの行列を計算するプログラムがニューラルネットワークの計算になるみたい。
例として
x1 = 1 , x2 = 2
w1 = 1 , w2 = 2 , w3 = 3 , w4 = 4 , w5 = 5 , w6 = 6とした場合
とした場合
pythonで計算してみる。
まず
import numpy as np
で、x の行列を設定
x = np.array([1,2])
次にwの行列を設定
w = np.array([[1,3,5],[2,4,6]])
じゃ計算。
計算は簡単。dotを使う。
y = np.dot(x,w)
じゃ、確認をする。
print(y)
で出力。
[5,11,17]
一発で計算できてる。なるほど、便利だ。
---まとめると---
x1 から繋がっているwはw1, w3 , w5となる。
なので、こうなる↓
そして、x2の場合は
つながりをまとめると
で、一気に計算するときは、numpyのdotで一発。
これが行列計算が必要な理由っぽい。
コメント
0 件のコメント :
コメントを投稿