接著我們就來到了蠻重要的問題,既然一個 hidden layer 的網路架構就可以逼近任何連續函數,那麼為什麼要深度學習?

對於這個問題,台大李宏毅老師有非常詳細的講解:

影片裏面實驗很多,所以我還是總結一下:

  1. 用邏輯電路類比神經網路的話,你一樣可以用單層的並聯將所有邏輯閘都起來成為一個電路,一樣可以達到相同的效果,但是用多層的串聯可以將所需要的邏輯閘數目減少(類比神經網路的神經元),所以可以達到減少參數的效果。
  2. 使用 ReLU 作為 activation function 就是要用分段線性的方式來逼近一個函數,在網路參數相進的情況下,單層網路所能產生的"段"比較少,多層網路所產生的"段"比較多,產生的線段較多就可以去逼近一個更複雜的函數,所以模型就比較強大。
  3. 計算分段線性的數量,當你有 $N$ 個神經元,單層網路裡最多只能產生 $N - 1$ 個線段,多層網路,每層安排兩個神經元,可以產生 $2^{\frac{N}{2}}$ 個線段。

更有文獻提到,計算線段的數量,如果你的網路每層有 $K$ 個神經元,而且有 $H$ 層,那麼至少會有 $K^H$ 個線段。

由於深度是放在指數上面,所以增加深度就可以簡單地提高模型的複雜度,也就可以讓模型變得比較強大。

計算複雜度

在一些電腦的問題上,我們常常形容問題是 NP 或者不是 NP,來描述一個問題的複雜度有多高。

一個問題的時間複雜度可以由現代電腦在多項式時間內解決,我們稱為 P(polynomial time)。如果一個問題至少跟 P 一樣或是更難,那我們稱為 NP(nondeterministic polynomial time)。

NP 的形式定義為:一個問題可以由 non-deterministic Turing machine 在多項式時間內解決的問題。

NP-complete 問題是 NP 問題當中最難的了,計算複雜度大概會是指數級成長,這種成長速度應該使用神經網路有辦法克服。