天天看點

建構深度學習系統的十條經驗

深度學習是機器學習的一個子領域,它有着自己的獨特研究對象。以下是我們在建構深度學習系統時總結的10條經驗。這些經驗雖然看似有些籠統,但他們确實是關于深度學習在結構化和非結構化資料領域裡的應用。

<b>更多的專家會更好</b>

通過使用更多的網絡來進行推理和整合結果确實能夠提高精确度。事實上,像dropout這類技術就是建立“隐含聚合”的方法,就是建立共享權重的疊加網絡的多個子集。

<b>尋找具備豐富标記資料的問題</b>

目前,隻有當在一個受監督的上下文環境中,深度學習才能很好地工作。而最重要的一點就是每條規則大約需要1000個左右的樣本。是以,當你需要解決的問題沒有足夠多的資料來進行訓練時,那嘗試尋找一個具有更多資料的中間問題來進行訓練,然後用一個更簡單的算法來處理這個中間問題的訓練結果,進而解決最終的問題。

<b>探索合成資料的方法</b>

并不是所有的資料都已經為機器學習做好了準備和标記。許多情況下,你手頭有的資料标記得并不那麼理想。如果你可以加入來自不同資料源的資料來實作一個弱标記資料集合,那麼這種方法會給你帶來意想不到的效果。最著名的例子就是word2vec,其中的單詞了解訓練就是從恰好與該單詞意思接近的其他單詞開始的。

<b>利用預先訓練的網絡</b>

引導一個已經經過訓練的網絡在新的領域中進行訓練,這種方法的效率也往往令人非常滿意。這也是深度學習網絡的一個突出特性。

<b>不要忘記增加資料</b>

資料通常會擁有一些人類能夠意識到,而機器卻永遠發現不了的意義。一個簡單的例子就是時間特征。從人類的角度來看,一星期中的某一天或一天中某個時間點可能是重要的屬性,然而深度學習系統可能永遠不能了解其中的重要性。因為對系統來說,時間這個概念從unix誕生以來都是以秒來進行表述的。這就需要我們為深度學習系統添加新的時間資料來對其進行訓練。<b></b>

<b>探索不同的正則化</b>

l1和l2正則化并不是唯一的正則化。 通過觀察每個層次來探索不同類型的正則化。<b></b>

<b>擁抱随機性</b>

我們有許多技術能夠在訓練之前對學習網絡進行初始化。事實上,當你隻訓練學習網絡的最底層,而其上層多數是随機産生的話,你能得到更出色的效果。這種技術将加快超調探索的速度。<b></b>

<b>不要隻注重深度學習</b>

很多深度學習的研究人員熱衷于隻在深度學習領域内進行研究。然而事實是深度學習離不開與外部技術的結合。比如,如果離開了蒙特卡洛樹搜尋,alphago就不會如此成功。

<b>避免分布式</b>

盡量避免同時訓練多台機器(除了超級參數調優)。訓練單台機器是最有效的方法。

<b>卷積網絡功能強大 且不單單對圖檔資料而言</b>

卷積網絡顯然是深度學習領域中最成功的網絡。更重要的是,它不僅能用于處理圖像資料,還可以使用它作用于其他類型的資料(如,聲音,時間序列和文本資料)<b></b>

以上就是我想分享的經驗。 當然還有很多其他的經驗這裡沒有提到。 如果你在工作中遇到了,也請分享給大家。

繼續閱讀