2017-04-04 34 views
2

我指的是keras documentation來構建一個網絡,它以嵌入和一些其他重要特徵的形式獲取多個輸入。但是,如果我們已經定義了主要損失,我不明白輔助損失的確切影響。使用深度網絡的多輸入和多輸出模型中的輔助輸出的意義

在這裏,我們插入輔助損失,允許LSTM和嵌入層被平穩地訓練,即使模型中的主損失要高得多。

正如文檔中所提到的,我假設它有助於在嵌入/之前定義的任何其他圖層上平滑地進行訓練。我的問題是,如何確定輔助損失的權重。

我們編譯模型並給輔助損失分配一個0.2的權重。要爲每個不同的輸出指定不同的loss_weights或loss,可以使用列表或字典。

如果有人能夠解釋如何確定損失權重以及輔助損失權重的高/低值如何影響模型訓練和預測,我將非常感激。

回答

1

這是一個非常有趣的問題。 輔助分類器的想法並不罕見,正如人們所想的那樣。它用於例如在Inception架構。在這個答案我會努力爲您提供關於爲什麼這個調整實際上可能在訓練中幫助一些直覺:

  1. 幫助梯度向下傳遞到較低層:人們可能會想到一個損失定義對於輔助分類器在概念上與主要損失相似 - 因爲它們都衡量我們的模型是多麼的好。由於這個原因,我們可以假設漸變w.r.t.對於這些損失應該與下層類似。 A 消失漸變現象仍然是一種情況 - 儘管我們有像例如批量標準化 - 所以每個額外的幫助可能會提高您的培訓績效。

  2. 它使一個低級別的功能,更準確:,而我們正在訓練我們的網絡 - 如何好是model`s信息的低級別功能,以及如何改變它們必須throught的所有其他層你的網絡。這可能不僅使梯度消失 - 而且由於在神經網絡計算過程中執行的操作可能會非常複雜 - 這也可能會使有關您的較低級別功能的信息不相關。這在培訓的早期階段非常重要 - 當你的大部分特徵非常隨機時(由於隨機開始) - 以及推重的方向 - 可能在語義上是離奇的。 輔助輸出可能會解決此問題,因爲在此設置中 - 您的較低級別功能是從最早的培訓部分開始有有意義的

  3. 這可能被認爲是一種智能正規化:您正在對您的模型施加有意義的約束,這可能會防止過度擬合,特別是在小數據集上。

從我上面一書中寫道可以推斷出關於如何設置若干輔助減肥一些提示:

  1. 這是件好事,它更大開始的訓練
  2. 它應該有助於通過您的網絡傳遞信息,但它也不應該干擾培訓過程。所以其中更深入的輔助輸出的經驗法則 - 更大的損失重量是 - 是非常合理的。
  3. 如果你的數據集不夠大或者訓練時間不是很長 - 你可能會嘗試使用某種超參數優化來調整它。
  4. 你應該記住,你的主要損失是最重要的 - 即使產量可能會有所幫助 - 他們的體重減輕應該比主要損失體重要小。