Classification

你的模型可能有多少個參數?

  • October 2, 2015

這是在參加深度學習演講時想到的一個相當普遍的問題。已經用 32x32 圖像訓練了一個深度網絡,有 10 個類(CIFAR 數據集)。數據集中大約有 60000 張圖像。演講者表示,該網絡已經學習了超過 1000 萬個參數。這對我來說似乎有點奇怪,因為所有這些圖像中的像素數都在這個順序附近。如何使用這麼多參數證明模型的合理性?過度擬合數據集的機會不會隨著參數數量的增加而增加嗎?

是的,在 CIFAR-10 上訓練的模型不應該有 1000 萬個參數,因為它的輸入維度很小(32323 = 3072)。它幾乎不能達到數百萬個參數,但該模型容易過度擬合。這是在 CIFAR-10 上訓練的合理的捲積網絡結構;

2個卷積層1個全連接層和1個分類層(也是全連接的)。大多數參數都集中在最後兩層,因為它們是完全連接的。

  • 第一個卷積層的過濾器大小為 7x7@32
  • 第一個池化層的池化大小為 2x2
  • 第二個卷積層的過濾器大小為 5x5@16
  • 第二個池化層的池化大小為 1x1(無池化)

我假設池化的有效卷積和步幅數等於池化大小。在他的配置下,第一個特徵圖的維度是 (32-7+1)/2 x (32-7+1)/2 = 13x13@32。第二個特徵圖的維度是 (13-5+1)/1 x (13-5+1)/1 = 9x9@16

由於卷積層在進入全連接層之前被滾動成向量,所以第一個全連接層的維度是 9916 = 1296。假設最後一個隱藏層包含 500 個單元(這個超參數是最重要的一個參數總數)。最後一層是10。

參數總數為 7732 + 5516 + 1296500 + 50010 = 1568 + 400 + 648000 + 5000 = 654968。

但我希望較小的網絡可以產生更好的結果,因為樣本數量相對較少。因此,如果將 500 個神經元減少到 100 個神經元,則參數總數減少到 1568 + 400 + 129600 + 5000 = 136568。也許最好在第二層包括另一個池化層,或者丟棄第一個全連接層。

如您所見,大部分參數都集中在第一個全連接層。我不認為更深的網絡可以產生顯著的收益,因為輸入層的維度很小(相對於 ImageNet)。所以你的觀點是對的。

如果您擔心過度擬合,可以查看Alex 的 convnet 論文的“Recuding overfitting”部分

引用自:https://stats.stackexchange.com/questions/175259

comments powered by Disqus