作者moodoa3583 (金牌台湾啤酒)
看板DataScience
标题[问题] 权重与梯度下降之间的相关与调整
时间Fri Apr 19 11:01:37 2019
大家早安
最近在做辨识手写数字的类神经网路
参考程式码如下
https://reurl.cc/3bkeV
但是对里面train部分其中两条程式码想不通
分别是
# update the weights for the links between the hidden and output layers
self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 - final_outputs)), numpy.transpose(hidden_outputs))
# update the weights for the links between the input and hidden layers
self.wih += self.lr * numpy.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)), numpy.transpose(inputs))
这边我的理解是透过斜率做梯度下降来调整权重
+=後面是学习率*斜率公式
但我的理解是在斜率为正的时候
权重应该是要下修的(减)
但这两行却是写
self.wih +=
self.who +=
这样在斜率为正的时候权重不就会增加了吗?这样应该会离低点越来越远吧?
不知道我是不是错过或误会了哪部分的运算,所以想在此请问各位了
不好意思还请各位拨空指教,谢谢各位
如果问题不好还请多包含
-----
Sent from JPTT on my HTC_D10i.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.137.243.86
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1555642900.A.5BA.html
1F:→ moodoa3583: 刚刚找出问题了,在斜率公式里面output_errors和hidde 04/19 14:40
2F:→ moodoa3583: n_errors前是有带负号的,但程式码里面没有加负号,所 04/19 14:40
3F:→ moodoa3583: 以权重的确是要写+=才会是正确的 04/19 14:40
4F:→ moodoa3583: 也可以写成 04/19 14:42
5F:→ moodoa3583: self.who -= self.lr * numpy.dot((-1*(output_error 04/19 14:42
6F:→ moodoa3583: s) * final_outputs * (1.0 - final_ 04/19 14:42
7F:→ moodoa3583: outputs)), numpy.transpose(hidden_outputs)) 04/19 14:42
8F:→ moodoa3583: 对我而言会比较直觉一些 04/19 14:43
9F:→ thefattiger: 你误会很大,权重增加不代表loss会增加 04/20 00:21
的确,权重增加可能会造成误差增加或减少,端看当下在图形上的斜率来决定,抑或是我还有哪里没有考量到?还请多指教,谢谢
10F:推 OnePiecePR: 楼上正解。不过版主应该能马上转过来。 04/20 21:00
※ 编辑: moodoa3583 (114.137.243.86), 04/21/2019 13:18:10
11F:推 st1009: 好像有人在呼唤板主,可是我看不懂有甚麽事需要板主... 04/21 14:54
12F:推 jack82822005: 应该是指文主?XD 04/23 03:20