如何評判一個訓練集的好壞
如果我們希望得到一個訓練集,並且用該訓練集所訓練出來的模型,在訓練集上的誤差和在整個資料空間上的誤差相距較小,即寫成如下表示式:
那麼訓練集\(D_{train}\)應該滿足的條件為:
即對於假設空間中的任何模型在訓練集上的誤差和在整個資料空間上的誤差之間的誤差都小於某個值。推導過程如下:
因此,我們總希望得到一個好的樣本集,其能夠滿足:
下面則來探討一下我們選取到壞的資料集的機率。
由前述的討論可知,一個\(D_{train}\)是壞的,則至少存在一個h使得它不滿足上式,那麼可以認為:
那麼可以看到:增加訓練集樣本的資料\(N\)或者減少假設空間的大小\(\lvert H \rvert\)都可以使得拿到壞資料集的機率降低
但在實際運用中很少採用這樣來進行衡量,因為隨機計算一下上界就大於1了,這只是給我們啟發如何做而已。
而在現實中通常另外收集資料這個方法很難實現,那如果刻意去減少\(H\)的大小呢,這雖然可以使上界降低,但如果使得\(H\)都沒有能夠讓損失函式很小的假設,那這個減少就很沒有意義了。如下圖,雖然在更小的\(H\)能夠讓訓練假設的誤差更接近於完美假設的誤差,但這個完美假設是在這個小的假設空間中選出來的,很可能它本身的誤差就很大。
那麼有沒有可能有一個loss很低的完美假設,同時還能夠讓現實訓練出來的假設和理想很接近呢?,即圖中兩個small都要。
魚與熊掌可以兼得的機器學習
承接上文,如果我們要有一個loss很低的完美假設,同時還能夠讓現實訓練出來的假設和理想很接近,那麼最簡單的想法當然是假設空間很小,但是假設空間裡面的假設都是能夠讓損失函式非常小的好假設
這裡需要補充一下前面講過的內容“為什麼需要隱含層”,可以看我這篇文章點此跳轉,具體即講述了神經網路是如何利用隱含層來逼近任何函式的。
那麼是不是隻要一個隱含層就夠了呢?那麼為什麼還需要深度學習呢?
事實上,在實現同一個複雜函式時,使用深度較大寬度較小的網路,相較於只有一層而寬度很大的網路來說,其引數量會小很多,也就是說其效率會更高,同時引數量小也就說明需要的訓練資料量也會小,也就更加不容易過擬合。
那麼結合前面的說法,深度學習可以使得\(H\)的大小減小,並且效果也能夠與\(H\)很大的寬度方向的神經網路相當。而在一些函式是複雜但有一定規律的情況下,深度學習的效果可以更好,其引數量可以更小。