GD和Newton法其實都屬于導數下降方法。區別是GD以一階導數方向作為下降方向,牛頓法作優化問題時可以看做二階方法,牛頓法比GD有更快的下降速度,證明可以參考斯坦福大學Boyd大神的凸優化。導數方法最大優點是簡潔高效,缺點是遇到鞍點就玩完了。這就是為什么目前訓練深度學習網絡結構需要dropout避免過擬合。非凸問題比較難,目前可以參考進化算法比如GAPSODE。或者利用WotaoYin大神的NonconvexADMM,原理是針對不同的變量構造不同導數方向根據AugmentLagrange函數實現。
最后說點理論,因為根據范數等價原理,GD在其二階導數有界條件下,調節步長可以等效為Banach空間的壓縮算子,又因為有限范數線性組合是凸問題,所以利用壓縮映像原理,一定收斂于全局最優即不動點。當然,牛頓法有類似結論。對于深度學習中的dropout,是為了防止其梯度陷入局部最優值,如果在有限維的Banach空間討論,可以看做有界連續算子,利用閉圖像原理證明。其他情形,可以經過簡化抽象為緊算子,利用列緊的ε網證明即可。還有,GD和Newton在有限迭代情況下,其收斂點集合可以看做Fσ型集合,一定條件下也可以看做σ代數。順便說下,GD和Newton方法都可以看做一類算子的強收斂,弱于算子的一致收斂。
最后補充一點,最近剛剛實現了并行的NonconvexADMM用的ProximalProximalGD求稀疏解,CUDA8.0實現的并行化,nvcccompiler和CMakefile頭都大了…