2017-06-13 34 views
-1

假設我有一個softmax層的神經網絡作爲分類任務的最後一層。 softmax圖層中的這個數量的神經元將是類的數量。可伸縮神經網絡softmax分類器

但是,如果隨着新數據的進入增加類的數量,我將不得不改變網絡架構並從頭開始重新訓練整個模型。

什麼是製作可伸縮分類器的最佳方法?

PS:神經網絡模型是一個RNN-LSTM,帶有2個LSTM層,後面跟着一個softmax層。我想這種方法在softmax層之前將獨立於NN架構。

任何幫助,將不勝感激! :)

+0

你能說清楚「可擴展」是什麼意思嗎?如果你使用的是像tf或keras這樣的框架,你只需要修改你的模型聲明。 –

+0

是的,但問題是,當我增加類的數量,因爲體系結構的變化,我將不得不從頭開始重新訓練模型。所以所有學習到的權重都會丟失。 – Pranav

回答

0

假設您有一個神經網絡,它僅對0至4(0,1,2,3,4)之間的MNIST數據集中的手寫數字進行分類。

你要做的是,你要建立一個神經網絡,指定1個輸入層,k個隱藏層和1個輸出層,大小爲5.然後訓練網絡上的100萬個只包含數字的樣本0至4.

現在,假設您的神經網絡已經學會了預測0到4之間的數字,準確率爲95%。您希望它能夠將手寫數字分類爲6.但是,神經網絡之前沒有接受過6次的訓練,並且不知道該怎麼做 - 這是一種錯誤分類。這意味着你的網絡是有偏見輸入範圍從數字0到4.

如果你想讓你的神經網絡預測數字5以及其他5位數字。因此,您需要放棄現有的大小爲5的輸出圖層,並將其替換爲大小6.這意味着也會丟棄最終圖層的權重和偏差。

現在,問題是,你可以保留已經被訓練的先前圖層的權重嗎?問題是肯定的,不是。雖然你不需要完全丟棄它們,但是需要更多地訓練它們以計算數字5.

好消息是,對於內層你不需要訓練網絡來自以前的所有100萬個樣本。只是一個較小的數據集,其中大部分是5位數字的樣本,只有少量的其他數字爲了公平就足夠了。壞消息是,對於最後一層,你將不得不訓練所有100萬個樣本,加上新的5位數樣本。

所以,現在你的任務將涉及到稍微重新訓練內層,完全重新訓練外層,然後驗證和微調連接兩者,因爲他們沒有受過相同的訓練。

如果你覺得這是值得的麻煩,那麼你可以。但是,從頭開始重新訓練會更簡單。