2

我正在嘗試使用神經網絡進行分類(我正在使用tensorflow)。 不幸的是,我的神經網絡訓練陷入了42%的精度。 我有4個類,我試圖分類數據。 不幸的是,我的數據集是不均衡的,這意味着:神經網絡卡住

    數據
  1. 43%屬於1類(是的,我的網絡卡預測僅此)
  2. 37%,至2級
  3. 13%至3類
  4. 7%至4類

我使用的優化是AdamOptimizer和成本函數是tf.nn.softmax_cross_entropy_with_logits。

我在想,如果我的培訓卡在42%的原因實際上是因爲我的數據集不夠平衡,或者因爲數據的性質真的是隨機的,並且實際上沒有模式找到。

目前我NN包括:

  1. 輸入層
  2. 2卷積層
  3. 7完全連接層
  4. 輸出層

我試圖改變網絡的這種結構,但結果總是相同的。 我也嘗試過支持向量分類,結果幾乎相同,變化很小。

有人遇到過類似的問題嗎? 任何人都可以請我提供一些提示如何擺脫這個問題?

感謝, 傑拉德

+0

你能與學習速率調度檢查? –

+0

不,我沒有。感謝提示。例如,當我檢測到結果傾向於陷入局部最小值時,我正在考慮提高學習率。 – nutrina

+0

這篇文章爲什麼有一個TensorFlow標記? –

回答

0

我會假設你已經雙人間,三人間和四人間,檢查該數據將在被匹配你的期望。


這個問題是相當開放的,甚至是一個研究課題。但有些東西可以提供幫助。

在更好的訓練方面,有兩種常用的方法可以訓練神經網絡與不平衡的數據集。

  • 對較低頻率的示例進行過採樣,使得網絡看到的每個類的示例比例相等。例如在每批中,強制執行1/4示例來自第1類,第4類來自第2類,等等。
  • 按照它的比例對每個類進行錯誤分類的權重。例如正確分類1類的例子值得四十三分之百,而正確分類4類的例子值得100/7

話雖這麼說,如果你的學習速度好,神經網絡往往會最終(後許多小時坐在那裏)跳出只預測一個班級,但他們仍然很難結束與一個嚴重偏斜的數據集。


如果你想知道是否有模式在您的數據能夠確定,有一個簡單的方法來做到這一點。

通過從所有類中隨機選擇元素來創建一個新的數據集,使得它們具有偶數個數(即,如果有700個4級示例,則通過從每個類隨機選擇700個示例構造一個數據集)

然後你可以在這個新的數據集上使用你所有的技術。

雖然,this paper表明,即使使用隨機標籤,它也應該能夠找到它理解的某種模式。

+0

謝謝。我一定會嘗試你的建議。 – nutrina

0

首先,您應該檢查您的模型是否過度配合或欠適合,這兩者都可能導致精度低。檢查訓練集和開發集的準確性,如果訓練集的準確度遠高於開發/測試集,則模型可能過度膨脹,並且如果訓練集的準確度與開發/測試集的準確度一樣低,則它可能不足。

至於overfiiting,更多的數據或簡單的學習結構可以工作,而讓你的結構更加複雜和較長的訓練時間可以解決欠擬合問題