https://pure-earth-7284.herokuapp.com/2016/09/07/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E7%9A%84%E5%AE%B9%E9%87%8F/
在設計神經網絡時,當訓練出的模型表現出欠擬合時,我們通常會嘗試增加神經網絡的層數或者某些層的神經元數目。這也被成為增加神經網絡的容量(Capacity)。一直以來,我都認為這個容量指的是神經網絡的大小,也就是神經元的個數。然而在讀Deep Learning Book的第五章時,發現以前的理解是有問題的。這個容量其實應該是指一個神經網絡的假設空間。
假設空間
假設空間(hypothesis space) 是指一個機器學習算法可以生成的所有函數的集合。這個函數集合就代表了一個機器學習算法的擬合能力。比如,一個線性回歸算法的數學表達式如下:
通過選擇不同的WW,該算法可以模擬所有xx的線性組合,因此可以說線性回歸算法的假設空間就是xx的所有線性函數。機器學習算法的目標就是在算法的假設空間中,尋找最符合待解決問題的函數。假如能夠解決問題的函數不在算法的假設空間,算法無論如何也沒辦法找到解決方案。比如線性回歸算法就不可能擬合一個一組符合sin(x)sin(x)函數的數據。
因此,一個算法的假設空間,決定了算法的能力邊界。
神經網絡容量與欠擬合
當神經網絡模型的測試結果表現出欠擬合時,用假設空間來解釋,可以理解為更符合訓練數據的函數在當前神經網絡的假設空間之外,所以神經網絡只能收斂在一個當前假設空間中,最接近目標函數的一個解。
因此,要想解決欠擬合問題,就要擴大神經網絡的假設空間。增加神經網絡的層數,或者擴大某些層的神經元個數,都可以達到擴大假設空間的目的[1]。除此之外,引入非線性函數(比如SVM中的核函數),也是擴大假設空間的一種方式。
正規化(regularization)與過擬合
一個神經網絡的假設空間越大,能夠滿足訓練數據的函數也就越多。那么在所有滿足訓練數據的函數中,我們要選擇哪一個作為問題的解呢?
我們可以通過正規化的方式,在多個候選解中選擇一個符合我們需要的。換句話說,正規化讓我們對假設空間中的函數有了傾向性。比如,對於線性回歸,我們可以將模型的評判標准改為最小均方誤差(MSE)和一個權值衰減部分的和:
這個公式表明,對於同樣能夠滿足訓練數據的函數,我們更加傾向平方L2L2范數更小的那一組權值。其中,λλ表示我們傾向於更小權重值的意願有多強烈。為什么選擇平方L2L2范數更小的權值呢?因為平方L2L2范數更小,表明WW中的每一個元素都比較小,甚至接近於0。這意味着得到的函數曲線更加平滑,起伏更小。而平滑的曲線正好是我們在遇到曲線過擬合時希望得到的結果。這種給損失函數增加一個表示傾向性的部分的做法,叫做正規化(Regularization),是解決過擬合問題的重要工具。
總結
假設空間的概念讓神經網絡有了更容易理解的解釋:神經網絡算法就是要在其假設空間中,找到最適合訓練數據的一個函數。如果最終沒有找到合適的函數,要么是假設空間不夠大,要么是尋找的方式不夠好。而理論上已經證明,神經網絡只要有足夠多的神經元,就可以擬合任意曲線,這是神經網絡算法能夠成為通用解決方案的理論基礎。剩下的,就是設計更好的尋找方式,能夠從假設空間中找到最合適的那個函數。