看板 DataScience 關於我們 聯絡資訊
在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
ddavid: 你如果真的很確定你的情況不適用max pooling,那就換成別 10/17 19:16
ddavid: 種如average-pooling啊,為什麼要硬用 10/17 19:17
ddavid: 或者每種pooling都跑多個不同參數測試看哪種好啊,也許你 10/17 19:18
ddavid: 所想的問題其實會在某些參數設定下緩解 10/17 19:19
chang1248w: convolution後面接pooling不會有這問題啊 10/18 01:37
chang1248w: 你pooling的方向是資料不是channel耶 10/18 01:38
chang1248w: 不喜歡這個問題可以把資料做平移 10/18 01:40
yoyololicon: 你的a是算出來的值還是權重? 10/18 13:32
yoyololicon: 看你模型怎麼設計 如果a都是權重那當然不會更新 10/18 13:33
tsoahans: max底下的值是同一個filter和不同資料區段運算得到的值 10/18 15:26
tsoahans: 所以不管是a1 a2 a3實際上都是update同一個filter 10/18 15:27
tsoahans: (假設max pool是接在convolution後面) 10/18 15:28
subgn: 所以重點是因為前面有convolution讓不管最大值在哪個點, 10/18 21:13
subgn: 都能update到同一個filter的權重嗎?那如果前面是 10/18 21:14
subgn: dense-layer, 很可能就只會持續更新一開始擁有最大值的點嗎 10/18 21:14
chang1248w: 情況類似relu,但更嚴苛,夠深夠寬就幾乎不會 10/19 01:58
yoyololicon: 對 只會更新擁有最大值的點 但那只是中間值而已= = 10/19 14:12
yoyololicon: 難不成你的輸入資料都不會變? 10/19 14:12
yoyololicon: 實際上update的到底是hidden feature還是weight 10/19 14:14
yoyololicon: 你應該釐清一下 10/19 14:14
yoyololicon: 即使換成dense layer 不同資料產生的最大值也不一樣 10/19 14:18
yoyololicon: 所以實際上所有的weight幾乎99.999%都會更新到 10/19 14:18
yoyololicon: 在你的例子裡 要跳脫出a1的方法就會是靠其他的input 10/19 14:20