2017-10-20 218 views
0

我有一個多層感知器,每個感知器有5個隱藏層和256個神經元。當我開始訓練時,每次訓練樣本都會得到不同的預測概率,直到時期50,但隨後重複預測的次數增加,在時期300,我已經有30%的重複預測,這是沒有意義的,因爲輸入數據是不同的所有訓練樣本。任何想法是什麼導致這種行爲?Tensorflow:在訓練時增加重複預測的次數

澄清:

與「重複預測」,我指的是完全相同的預測概率項目屬於A類(這是一個二元分類問題)

我有200 4000個訓練樣本每個和所有樣本的特徵都不相同,但重複預測的數量在訓練時增加到30%是沒有意義的。所以我想知道什麼會導致這種行爲。

+1

可以是很多東西。例如你的NN可以學習一個常量。請顯示代碼,最好是數據。 – Maxim

+1

重複預測是什麼意思? –

+0

湯姆,你應該編輯你的問題來改進它,而不是添加答案。現在添加這樣的答案標誌着你的問題被回答,並減少了任何人都會看到它的可能性。我已將這些答案的文本移至問題中,我已將它們標記爲不是答案,因此您的問題得到了適當的關注。 –

回答

0

有一點,你說你正在做二元預測,當你說「重複預測」時,即使有你的澄清,也很難理解你的意思。我猜測你的二元分類器有兩個輸出,一個用於A類,另一個用於B類,對於給定的樣本,你得到的值大致相同。如果是這種情況,那麼首先要做的就是使用1個輸出。一個二元分類問題更好地建模爲1個輸出,範圍介於0和1之間(S形輸出神經元)。這樣就不會產生歧義,網絡必須選擇一個或另一個,或者當它感到困惑時,你會得到〜0.5,這將是明確的。

其次,網絡開始學習得很好,然後在過度訓練之後表現更差,這是非常普遍的。特別是對於小數據集,比如你擁有的數據集。事實上,即使我對你的數據集的知識知之甚少,我也會投入一點小小的賭注,使你像XGA Boost這樣的算法獲得更好的性能而不是神經網絡(我假設你使用的是神經網絡,而不是字面上的感知器)。

但是關於隨着時間的推移性能下降。當發生這種情況時,您希望查看一些名爲「提前停止」的內容。在某個時候,網絡將開始記憶輸入,並且可能是發生的一部分。基本上你要訓練,直到你的測試數據的表現開始惡化。

爲了解決這個問題,您可以應用各種形式的正則化(L2正則化,丟失,批處理歸一化)。您還可以減少網絡的大小。 5層256個神經元對於這個問題聽起來太大了。嘗試修剪它,我敢打賭你的結果會改善。神經網絡中有一個適合建築規模的最佳位置。當你的網絡太大時,它可能並經常會過度適應。當它太小時,對於數據來說不夠充分。 Angge Ng的課程對於處理這個問題有一些有用的實用建議。