2012-12-14 62 views
1

我想知道,MATLAB有一個removeconstantrows函數,它應該應用於前饋神經網絡輸入和目標輸出數據。該函數從數據中刪除常量行。例如,如果一個5輸入神經網絡的輸入向量是[1 1 1 1 1],那麼它將被移除。神經網絡和反向傳播,在MATLAB中去除常數的理由

谷歌搜索,我可以找到的最好的解釋是(解釋)「不需要恆定的行,可以通過適當調整輸出層的偏見來取代」。

有人可以詳細說明嗎?

這個調整是誰做的?

從我的書,對於簡單的梯度下降權重調整是:

Δweight_i = learning_rate * local_gradient * input_i

這意味着在所述第一隱藏層中的神經元的所有重量都調整同一量。但他們被調整。

回答

1

我覺得有一種誤解。 「行」不是輸入模式,而是一個特徵,即所有模式中的第i個組件。很顯然,如果某些功能在所有數據集上沒有很大的差異,則它不會提供有價值的信息,也不會在網絡培訓中發揮顯着的作用。

與偏差的比較是可行的(雖然我不同意,這適用於輸出層(僅),因爲它取決於常量行的位置 - 如果它在輸入數據中,那麼它是正確的以及第一個隱藏層,imho)。如果您記住,建議反向傳播網絡中的每個神經元都有一個特殊的偏置權重,連接到1個恆定信號。例如,如果一個訓練集包含一個全1的行,那麼這與額外的偏倚相同。如果常量行具有不同的值,那麼偏差將具有不同的效果,但是無論如何您都可以簡單地消除該行,並將該行的常數值添加到現有的偏差中。

聲明:我不是一個Matlab用戶。我的神經網絡背景完全來自編程領域。

+0

謝謝!這是有道理的。從我的角度來看,它應該被命名爲removeconstantcolumns。 :-)我不是一個Matlab用戶,但他們要求我們在學校使用它。否則,我會用一個普通的圖書館或寫我自己的。 –

+1

這個名字是因爲 - 雖然我不知道爲什麼 - MATLAB將行視爲特徵和模式作爲神經網絡任務的列,即矩陣應該轉置([某些信息在這裏](http://www.mathworks.com/) matlabcentral /答案/ 51807輸入格式到所述神經網絡))。 – Stan