2012-05-08 18 views
1

我正在訓練一個神經網絡,並從隨機權重開始。訓練後,權重發生變化,但神經網絡的準確性與起始權重相同。無論如何改變網絡的體系結構。隱藏層中的節點數量,迭代次數和特徵數量(使用PCA降維)它具有與開始時相同的精度。這可能是因爲關於功能數量的例子數量很少? (我有675個例子和9000個特徵)。或者這是因爲別的嗎?此外,我嘗試了使用logistic迴歸的相同數據集,它能夠達到64%的準確率,而不是比我在神經網絡訓練之前和之後得到的50%好得多。神經網絡權重和成本變化,但不是它的準確性

回答

3

一般來說,你的訓練樣例應該超過你的特徵數量級,而不是相反。除非您的PCA將事情降低很多,否則這將會傷害您。

你確實記得規範你的功能,對吧?這通常在PCA中處理,但有時您必須首先進行標準化,具體取決於您使用的軟件。

除此之外,你沒有提到改變學習率,使用自適應學習率,或使用動量項,所以我會建議你看看這些。此外,還有更多的權重更新算法,而不僅僅是普通的老式後備程序。 Levenberg-Marquardt Algorithm可能值得一試。假設你不是自己寫的,你的實現可能已經有了。

早期停止的某種形式也可能有用。

您沒有提及您是否嘗試分類或迴歸。如果您正在進行分類,請確保輸出節點上的激活功能與您正在使用的類標籤類型相匹配。 Logsig的範圍是0到1,而Tansig的範圍是-1到1.如果您正在進行迴歸,請確保輸出具有線性激活,或者至少可能的輸出範圍與您的訓練示例相匹配。

+0

潤通信息存在的。 PCA似乎降低了一些例子的特徵數量。這是分類。我在matlab中使用fmincg,我相信它具有自適應學習速率。我確實規範了它。 – cubearth

0

如果您正在進行分類,問題可能出現在您的標籤中。

我在用Octave訓練神經網絡時遇到了類似的問題。準確度約爲50%。我有兩個標籤0和1.我的準確度很低,因爲八度音階從1開始索引而不是0.您可能想要查看標籤。

0

首先,分類的準確性取決於數據集。所有人工智能方法都試圖在矢量空間中分離數據。但是,數據可能無法分開,有些情況下64%可能非常接近最佳結果。你使用的是什麼樣的數據集(它是衆所周知的基準之一,還是你試圖解決的某個特定問題?)

其次,權重變化並不一定意味着網絡是正在訓練。訓練結束後,您不應檢查權重是否改變,但如果總平方誤差減小。如果它沒有顯着減少,您的網絡可能根本沒有受過培訓。在你的情況下,如果訓練後精度仍然保持50%(我想你說的是兩級問題),但很可能這種方法根本不起作用。您應該首先嚐試一個更簡單的數據集,以檢查它是否有效。

此外:

  • 9000的功能太多,如果你想培養一個多層感知。您可能需要SVM來解決這樣一個複雜的問題。
  • 實例的數量,最有可能的,太小了這樣的問題(但是,如果兩個類之間的模式是太遠的問題空間)