質問編集履歴
6
質問の補足。
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,78 +32,42 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
-
という事で、これに代入したら導出できるんでしょうか?
|
35
|
+
という事で、これに代入したら導出できるんでしょうか?
|
36
|
-
|
37
|
-
まずベクトルは2成分まで、行列のタプルは2,2までで、エクセルで表現してみたいのですが・・・
|
38
36
|
|
39
37
|
|
40
38
|
|
39
|
+
回答者に進めて貰った
|
40
|
+
|
41
|
+
このhttps://youtu.be/X8hK4ovQoLg動画を見たんですが、
|
42
|
+
|
43
|
+
式がこの下の画像の式のように表されるという事が、なんとなく分かったのですが、
|
44
|
+
|
41
|
-
![イメージ説明](
|
45
|
+
![イメージ説明](a216cc68c6edcc0b0e28d369f8d7e758.png)
|
46
|
+
|
47
|
+
しかし、この式と、記事の式は、そもそも違うように思います。
|
42
48
|
|
43
49
|
|
44
50
|
|
45
|
-
|
51
|
+
※また、少し脱線しますが、動画内でδは出力層の値から辿っていけば分かる、、とあるのですが、
|
46
52
|
|
47
|
-
|
53
|
+
どのような関係式になっているのでしょうか?k+1番目とk番目が、その説明がないような・・・。
|
48
|
-
|
49
|
-
wh[0,1]{t[0]-f(wh[0,0]f(wi[0,0]i[0]+wi[0,1]i[1])+wh[0,1]f(wi[0,0]i[0]+wi[0,1]i[1]))}+wh[1,1]{t[1]-f(wh[1,0]f(wi[0,0]i[0]+wi[0,1]i[1])+wh[1,1]f(wi[0,0]i[0]+wi[0,1]i[1]))}
|
50
54
|
|
51
55
|
|
52
56
|
|
53
|
-
画像では末尾にいらない記号ついてますが、e_hの式はこうですね。
|
54
|
-
|
55
|
-
これが重みの式のf(x)だから、w[i]で偏微分すればいいのでしょうか・・・?
|
56
|
-
|
57
|
-
iで偏微分というのもよく分からないのですが・・・
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
またミスがあれば教えて下さい。
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
別のアプローチで、
|
68
|
-
|
69
|
-
このhttps://youtu.be/X8hK4ovQoLg動画を見ることで、
|
70
|
-
|
71
|
-
式がこの下の画像の式のように表されるという事が、なんとなく分かりました。
|
72
|
-
|
73
|
-
![イメージ説明](a216cc68c6edcc0b0e28d369f8d7e758.png)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
まぁたぶん、この計算を、全ての重みに対していちいち行う必要がある所を、
|
78
|
-
|
79
|
-
行列を用いて一気に行っているんだろうと思うのですが、
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
57
|
+
記事の
|
84
|
-
|
85
|
-
|
86
58
|
|
87
59
|
self.w_ho += self.lr * np.dot((e_o * self.daf(o_o)), o_h.T)
|
88
60
|
|
61
|
+
この式を、自分なりに考えてみたのですが(他の質問の回答も元に)、
|
89
62
|
|
63
|
+
o_oは出力値なので、これをシグモイド導関数に代入して、傾きを求めるというのは分かります。
|
90
64
|
|
91
|
-
|
65
|
+
f(x)をシグモイド関数の式とすると、f'(o_o)であり、これはつまり、
|
92
66
|
|
93
|
-
|
67
|
+
o_o = f(x_o)である事から、
|
94
68
|
|
95
|
-
o
|
69
|
+
誤差関数を(t-f(x_o))^2/2とかで置いて、これをある変数で微分すると、
|
96
70
|
|
71
|
+
(t-o_o)*f'(x_o)*(x_o)'とかになるので、この(t-o_o)がe_oであり、f'(x_o)はself.daf(e_o)になりそうなのですが・・・(記事ではe_oでなくo_o)。
|
97
72
|
|
98
|
-
|
99
|
-
これって、誤差とシグモイドの導関数との積は成分積?なのに、
|
100
|
-
|
101
|
-
その積とo_h.Tの積はなぜ行列積?なんでしょうか??
|
102
|
-
|
103
|
-
|
73
|
+
そうなるとして、o_h.Tを掛ける理由も、これだけ行列積として掛ける理由も分かりません・・・。
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
また、δは出力層の値から辿っていけば分かる、、とあるのですが、
|
108
|
-
|
109
|
-
どのような関係式になっているのでしょうか?k+1番目とk番目が、その説明がないような・・・。
|
5
補足質問編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -96,9 +96,11 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
-
これって、誤差とシグモイドの導関数との積
|
99
|
+
これって、誤差とシグモイドの導関数との積は成分積?なのに、
|
100
100
|
|
101
|
-
|
101
|
+
その積とo_h.Tの積はなぜ行列積?なんでしょうか??
|
102
|
+
|
103
|
+
両方成分積?ではなぜいけないのでしょうか?画像の式ではただの積なので、区別が分かりません。
|
102
104
|
|
103
105
|
|
104
106
|
|
4
編集しますた。
test
CHANGED
File without changes
|
test
CHANGED
@@ -98,9 +98,7 @@
|
|
98
98
|
|
99
99
|
これって、誤差とシグモイドの導関数との積とo_h.Tの積は、
|
100
100
|
|
101
|
-
|
101
|
+
列ベクトル×行ベクトルとなり、上手い事計算できるんでしょうか・・・?
|
102
|
-
|
103
|
-
o_h.Tって列ベクトルではない・・・?
|
104
102
|
|
105
103
|
|
106
104
|
|
3
編集しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -98,7 +98,9 @@
|
|
98
98
|
|
99
99
|
これって、誤差とシグモイドの導関数との積とo_h.Tの積は、
|
100
100
|
|
101
|
-
|
101
|
+
行ベクトル×列ベクトルだから・・・あれ、スカラーになりませんかね?
|
102
|
+
|
103
|
+
o_h.Tって列ベクトルではない・・・?
|
102
104
|
|
103
105
|
|
104
106
|
|
2
訂正、補足。
test
CHANGED
File without changes
|
test
CHANGED
@@ -96,6 +96,12 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
-
これ
|
99
|
+
これって、誤差とシグモイドの導関数との積とo_h.Tの積は、
|
100
100
|
|
101
|
-
|
101
|
+
列ベクトルと行ベクトルの積だから、行ベクトルになって、結局上手い事計算されている事になるんでしょうか???
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
また、δは出力層の値から辿っていけば分かる、、とあるのですが、
|
106
|
+
|
107
|
+
どのような関係式になっているのでしょうか?k+1番目とk番目が、その説明がないような・・・。
|
1
補足質問。
test
CHANGED
File without changes
|
test
CHANGED
@@ -59,3 +59,43 @@
|
|
59
59
|
|
60
60
|
|
61
61
|
またミスがあれば教えて下さい。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
別のアプローチで、
|
68
|
+
|
69
|
+
このhttps://youtu.be/X8hK4ovQoLg動画を見ることで、
|
70
|
+
|
71
|
+
式がこの下の画像の式のように表されるという事が、なんとなく分かりました。
|
72
|
+
|
73
|
+
![イメージ説明](a216cc68c6edcc0b0e28d369f8d7e758.png)
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
まぁたぶん、この計算を、全ての重みに対していちいち行う必要がある所を、
|
78
|
+
|
79
|
+
行列を用いて一気に行っているんだろうと思うのですが、
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
まぁたぶん、
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
self.w_ho += self.lr * np.dot((e_o * self.daf(o_o)), o_h.T)
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
この、self.daf(o_o))はシグモイドの導関数だから、画像ではh'(z)にあたり?
|
92
|
+
|
93
|
+
e_oは誤差だからδにあたり?
|
94
|
+
|
95
|
+
o_h.Tは重みwにあたるんだと思うのですが、、
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
これなんで、この式では誤差とシグモイドの導関数は内積的な積の取り方(呼び方が分からない)をしていて、
|
100
|
+
|
101
|
+
その積とo_h.Tは通常の行列同様の積の取り方をしているのでしょうか???
|