質問編集履歴

6

質問の補足。

2021/04/09 13:32

投稿

退会済みユーザー
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
- ![イメージ説明](8512cd00af95d53afeeed6e1d9ffc587.png)
45
+ ![イメージ説明](a216cc68c6edcc0b0e28d369f8d7e758.png)
46
+
47
+ しかし、この式と、記事の式は、そもそも違うように思います。
42
48
 
43
49
 
44
50
 
45
- e_h
51
+ ※また、少し脱線しますが、動画内でδは出力層の値から辿っていけば分かる、、とあるのですが、
46
52
 
47
- wh[0,0]{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,0]{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]))}
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
- この、self.daf(o_o))はシグモイドの導関数だから画像ではh'(z)
65
+ f(x)シグモイド関数の式とするとf'(o_o)あり、これはつまり、
92
66
 
93
- e_oは誤差だからδにあたり?
67
+ o_o = f(x_o)である事から
94
68
 
95
- o_h.Tは重みwにんだと思うのです
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

補足質問編集

2021/04/09 13:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -96,9 +96,11 @@
96
96
 
97
97
 
98
98
 
99
- これって、誤差とシグモイドの導関数との積とo_h.T積は
99
+ これって、誤差とシグモイドの導関数との積は成分積?な
100
100
 
101
- 列ベクトル×行ベクトルとなり、上手い事計算できるんでしょうか・・・
101
+ その積o_h.Tの積はぜ行列積?なんでしょうか?
102
+
103
+ 両方成分積?ではなぜいけないのでしょうか?画像の式ではただの積なので、区別が分かりません。
102
104
 
103
105
 
104
106
 

4

編集しますた。

2021/04/08 15:00

投稿

退会済みユーザー
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

編集しました

2021/04/08 14:49

投稿

退会済みユーザー
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

訂正、補足。

2021/04/08 14:40

投稿

退会済みユーザー
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
- その積o_h.Tは通常の列同様の積の取り方をしているでしょうか???
101
+ 列ベクトルと行ベクトルの積だから、行ベクトルになっ、結局上手事計算されてい事になるんでしょうか???
102
+
103
+
104
+
105
+ また、δは出力層の値から辿っていけば分かる、、とあるのですが、
106
+
107
+ どのような関係式になっているのでしょうか?k+1番目とk番目が、その説明がないような・・・。

1

補足質問。

2021/04/08 13:52

投稿

退会済みユーザー
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は通常の行列同様の積の取り方をしているのでしょうか???