在深度學習中,如果我們已經定義了網絡,輸入,以及輸出,那麼接下來就是損失函數,優化策略,以及一般由框架完成的BP反傳。這篇博文我們主要探討一下深度的BP反傳算法(以梯度下降爲例),尤其是mini_batch的BP反傳,目標是如何更新網絡的參數:權重和偏置。
首先,我們來看網絡中基本參數的一些定義。
使用梯度下降法,一般計算所有樣本的損失函數的平均值,進而計算梯度方向。但是,當樣本n特別多的時候,計算會比較困難。因此,提出了隨機梯度下降的方法,即我們從樣本集中隨機抽取m個樣本,其計算的平均梯度近似於通過全部樣本計算的平均梯度。
當m=1時,SGD算法如下:
當m=k時,mini_batch算法如下:
通過對比m=1和m=k算法流程,我們發現,mini_batch方法的梯度是由mini_batch裏的樣本共同決定(平均值),計算出來的梯度一般比k=1的時候準確。
關於算法中的公式,我們通過以下方法進行推導: