今天我們終於要介紹梯度下降法了,可能會有的讀者有疑惑,爲什麽這麽晚才介紹梯度下降法?而且梯度下降法還有什麽好介紹的,不就是微積分求梯度嘛。不不不,這個梯度下降法實際上還是有點學問在裏面的,今天就讓我們來聊聊梯度下降法有關的概念。
梯度下降法對於神經網路來説太重要了,可以説沒有梯度下降法,就沒有現在的神經網路。我們知道,機器學習其實就三個步驟:
損失函數的計算就是要比較機器找到的模型和理想中的模型之間的差距定量的表達出多少。找到差距以後,就是希望盡可能地縮短二者之間的差距,要做到這一件事,我們就勢必要調整我們模型裏面的參數,若是簡單的模型那還容易,但如果是深度學習的話,現在的神經網絡的參數動輒上億,有這麽多的參數要調整,如果沒有一個策略而盲目調整的話,是不可能調的好的,因此我們的梯度下降就有了用武之地。
我們調整參數的策略叫做反向傳播(Backpropagation),而梯度下降法就是反向傳播的其中一種方法,其他的還有牛頓法、沖量法等。
一般來説我們在傳遞信息的過程都是正向的,比如將一個vector輸入到神經網絡,這個vector會沿著神經元一層一層地傳播下去,最後到輸出層。
而所謂的反向傳播,聼名字就知道是把某些信息反方向的進行傳遞,想象今天有一個神經網絡,其中的某些參數如w和b,這些參數的其中一個w和b對最終的結果有重大影響導致偏差,所以當我們找到這個偏差了之後,一定會想方設法找到這個對結果有重大影響的w和b,對他們進行調整。這個反向傳播就會把我們找到的偏差傳遞到每個參數上,然後根據每個參數對於偏差的貢獻的大小,讓它相對應的承擔修改的責任。簡單來説,就是某個參數對偏差貢獻越多,就越會優先調整這個參數,讓其承擔相對應的責任。