[問題] max pooling的梯度問題

看板DataScience作者 ( )時間2年前 (2021/10/17 18:07), 編輯推噓2(2021)
留言23則, 5人參與, 2年前最新討論串1/1
在max polling中,因為只取最大的資料點,其他都丟棄, 因此只有最大的點的變動會影響下一層layer,也就是說除了他以外其他點的梯度都是零 那這樣不是只有那一點的相關權重有梯度且會被更新到,其他的權重都不會更新到了呢? 例如[a1, a2, a3], 當前最大值是a1, 那梯度就是[a1, 0, 0] 因此只有a1相關的權重會被更新,a2, a3就永遠不會被更新到 假設我們要找的optimization是在當a2為max的時候,要怎樣才會跳脫出a1為最大的狀態呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.248.45 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1634465239.A.4E5.html

10/17 19:16, 2年前 , 1F
你如果真的很確定你的情況不適用max pooling,那就換成別
10/17 19:16, 1F

10/17 19:17, 2年前 , 2F
種如average-pooling啊,為什麼要硬用
10/17 19:17, 2F

10/17 19:18, 2年前 , 3F
或者每種pooling都跑多個不同參數測試看哪種好啊,也許你
10/17 19:18, 3F

10/17 19:19, 2年前 , 4F
所想的問題其實會在某些參數設定下緩解
10/17 19:19, 4F

10/18 01:37, 2年前 , 5F
convolution後面接pooling不會有這問題啊
10/18 01:37, 5F

10/18 01:38, 2年前 , 6F
你pooling的方向是資料不是channel耶
10/18 01:38, 6F

10/18 01:40, 2年前 , 7F
不喜歡這個問題可以把資料做平移
10/18 01:40, 7F

10/18 13:32, 2年前 , 8F
你的a是算出來的值還是權重?
10/18 13:32, 8F

10/18 13:33, 2年前 , 9F
看你模型怎麼設計 如果a都是權重那當然不會更新
10/18 13:33, 9F

10/18 15:26, 2年前 , 10F
max底下的值是同一個filter和不同資料區段運算得到的值
10/18 15:26, 10F

10/18 15:27, 2年前 , 11F
所以不管是a1 a2 a3實際上都是update同一個filter
10/18 15:27, 11F

10/18 15:28, 2年前 , 12F
(假設max pool是接在convolution後面)
10/18 15:28, 12F

10/18 21:13, 2年前 , 13F
所以重點是因為前面有convolution讓不管最大值在哪個點,
10/18 21:13, 13F

10/18 21:14, 2年前 , 14F
都能update到同一個filter的權重嗎?那如果前面是
10/18 21:14, 14F

10/18 21:14, 2年前 , 15F
dense-layer, 很可能就只會持續更新一開始擁有最大值的點嗎
10/18 21:14, 15F

10/19 01:58, 2年前 , 16F
情況類似relu,但更嚴苛,夠深夠寬就幾乎不會
10/19 01:58, 16F

10/19 14:12, 2年前 , 17F
對 只會更新擁有最大值的點 但那只是中間值而已= =
10/19 14:12, 17F

10/19 14:12, 2年前 , 18F
難不成你的輸入資料都不會變?
10/19 14:12, 18F

10/19 14:14, 2年前 , 19F
實際上update的到底是hidden feature還是weight
10/19 14:14, 19F

10/19 14:14, 2年前 , 20F
你應該釐清一下
10/19 14:14, 20F

10/19 14:18, 2年前 , 21F
即使換成dense layer 不同資料產生的最大值也不一樣
10/19 14:18, 21F

10/19 14:18, 2年前 , 22F
所以實際上所有的weight幾乎99.999%都會更新到
10/19 14:18, 22F

10/19 14:20, 2年前 , 23F
在你的例子裡 要跳脫出a1的方法就會是靠其他的input
10/19 14:20, 23F
文章代碼(AID): #1XQ_NNJb (DataScience)