[問題] 權重與梯度下降之間的相關與調整

看板DataScience作者 (金牌台灣啤酒)時間5年前 (2019/04/19 11:01), 5年前編輯推噓3(309)
留言12則, 5人參與, 5年前最新討論串1/1
大家早安 最近在做辨識手寫數字的類神經網路 參考程式碼如下 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://www.ptt.cc/bbs/DataScience/M.1555642900.A.5BA.html

04/19 14:40, 5年前 , 1F
剛剛找出問題了,在斜率公式裡面output_errors和hidde
04/19 14:40, 1F

04/19 14:40, 5年前 , 2F
n_errors前是有帶負號的,但程式碼裡面沒有加負號,所
04/19 14:40, 2F

04/19 14:40, 5年前 , 3F
以權重的確是要寫+=才會是正確的
04/19 14:40, 3F

04/19 14:42, 5年前 , 4F
也可以寫成
04/19 14:42, 4F

04/19 14:42, 5年前 , 5F
self.who -= self.lr * numpy.dot((-1*(output_error
04/19 14:42, 5F

04/19 14:42, 5年前 , 6F
s) * final_outputs * (1.0 - final_
04/19 14:42, 6F

04/19 14:42, 5年前 , 7F
outputs)), numpy.transpose(hidden_outputs))
04/19 14:42, 7F

04/19 14:43, 5年前 , 8F
對我而言會比較直覺一些
04/19 14:43, 8F

04/20 00:21, 5年前 , 9F
你誤會很大,權重增加不代表loss會增加
04/20 00:21, 9F
的確,權重增加可能會造成誤差增加或減少,端看當下在圖形上的斜率來決定,抑或是我還有哪裡沒有考量到?還請多指教,謝謝

04/20 21:00, 5年前 , 10F
樓上正解。不過版主應該能馬上轉過來。
04/20 21:00, 10F
※ 編輯: moodoa3583 (114.137.243.86), 04/21/2019 13:18:10

04/21 14:54, 5年前 , 11F
好像有人在呼喚板主,可是我看不懂有甚麼事需要板主...
04/21 14:54, 11F

04/23 03:20, 5年前 , 12F
應該是指文主?XD
04/23 03:20, 12F
文章代碼(AID): #1SkJeKMw (DataScience)
文章代碼(AID): #1SkJeKMw (DataScience)