[可視化]動力系統觀點下的神經網路最優化

[可視化]動力系統觀點下的神經網路最優化

鑒於我數學比較差,就不扯最優化的收斂性等問題了。因而我主要的概念都是從動力系統或者統計物理借來的。

1. 背景

先從動力系統的角度考慮: 假設目標函數(h)為神經網路M=({w},{b})提供了一個梯度。 考慮最小化目標函數h_S(M)

M in mathbb{R}^{dm} \ S = {s_1,s_2,dots,s_k} \ h: M 
ightarrow mathbb{R}

梯度下降可以看成是一個由梯度所確定的動力系統。 令lambda為學習率,可得

frac{delta M}{delta t} = - lambda 
abla_M h


abla_M h是參數空間上的梯度場)。 考慮目標函數的時變率frac{delta h}{delta t},

egin{aligned} frac{delta h}{delta t} &= frac{delta h}{delta M}. frac{delta M}{delta t} \ &= - frac{delta h}{delta M}. lambda 
abla_M h \ &= - lambda (
abla_M h . 
abla_M h) \ &=- lambda |
abla_M h|^2 end{aligned}

可見目標函數的時變率是負定的,因此是該動力系統的Lyapunov函數。

注意: 以上分析必須基於h(M)有良好的連續性。而通常情況下h(M)是不連續的。

2. 優化器

將所有優化器寫成frac{delta M}{delta t}的形式。

  1. 幼稚梯度下降(Naive Gradient Descent, NGD)frac{delta M}{delta t} = - lambda 
abla_M h
  2. 隨機梯度下降(Stochastic Gradient Desent, SGD)

    使用隨機梯度G_M(h)替代梯度。 對Bootstrap而言G_M(h)=
abla_M h_{{s}},h_{{s}}(M)是次樣本(subsample)上的損失函數,{s}={s_{i_1},s_{i_2},dots,s_{i_n}},~~	ext{for}~~ i_1,dots,i_n,in [1,K]

    如果h{s}的線性函數,則可估計一階矩:E[G_M(h)] = 
abla_M h

    但是其二階矩性質不明:E[G_M(h) G_M(h)^T] = dots?egin{aligned} frac{delta M}{delta t} = - lambda G_M(h) \ end{aligned}
  3. 其他

3. 可視化:

(激動人心的時刻啊哈哈哈哈)

既然Minmathbb{R}^{dm},那麼顯然我們可以分別顯示M_1(t),M_2(t),...,...M_{dm}(t)模擬時取lambda delta t=0.5

損失函數h(M,S)是以下兩項的和:

  • 在雙半月數據上的比特交叉熵(binary crossentropy)
  • 一個L2正則項0.1 cdot E_i[|M_i|^2]
  • 架構:4層全鏈接隱含層,4*6 ReLu Unit。 輸出層一個Logistic Unit。

數據量: 200x2

  1. 幼稚梯度下降(Naive Gradient Descent, NGD)

  1. 隨機梯度下降(Stochastic Gradient Desent, SGD)

    次樣本大小=32

結論

SGD在僅使用次樣本迭代的前期收斂和NGD不相上下,因而有巨大的計算量優勢。但是在收斂後期兩者的動力學出現巨大區別。

NGD在穩態附近做類似極限環的震蕩,並且對L2有更強的限制。

SGD的震蕩好像並不那麼規則,對L2正則的限制也沒那麼強烈。


推薦閱讀:

TAG:神經網路 | 動力系統數學概念 | 最優化 |