【原】深度學習的一些經驗總結和建議 | To do v.s Not To Do

前言:本文同步發佈於公衆號:Charlotte數據挖掘,歡迎關注,得到最新干貨~  算法

  昨天看到幾篇不一樣的文章寫關於機器學習的to do & not to do,有些觀點贊同,有些不贊同,是如今算法崗位這麼熱門,已經不像幾年前同樣,可能跑過一些項目、懂點原理就能夠了,如今對你們的要求更高,尤爲工程能力更不可缺乏,只跑過一些iris鳶尾花分類、啤酒與尿布、貓狗分類等的同窗須要再提升提升,由於競爭太激烈了,我在這裏結合我本身的經驗總結一下吧~數組

 

To Do

  • 作項目時,邊蒐集數據能夠邊用已經蒐集好的少部分數據跑模型。不用等到全部數據都蒐集好了再跑。框架

  • 不知道什麼算法合適,能夠直接把全部的算法都跑一遍,看效果再選擇,多跑幾個應用場景你就知道什麼算法適合什麼場景,什麼數據對不一樣的算法會有什麼影響了。dom

  • 不知道什麼參數是最佳參數,能夠用random search或者grid search自動搜索最佳參數組合,有經驗之後對於每一個參數的大概範圍內心會有個數。機器學習

  • 必定要練習工程能力,只會調參的demo俠如今很難找到工做啦。函數

  • 模型復現和刷題是很好的鍛鍊工程能力的一種方式。學習

  • 刷題不要追求數量,要總結不一樣類型的題目的經驗,並結合以前的業務中,看能不能優化以前的業務邏輯。優化

  • 模型復現能夠給本身規定一個任務,譬如在一個月內,把某篇論文的Tensorflow實現的代碼,復現成Pytorch或者PaddlePaddle等其餘框架的代碼,不是閒着沒事作,而是模型復現能夠迅速提升你對框架的熟悉度和代碼能力。spa

  • 模型復現的過程當中,最難的是寫新的op和模型效果(精度和速度)的對齊。這可能很折磨人,可是收穫也很大。code

  • 若是要作新項目,能夠先看看有沒有預訓練模型,能夠快速作遷移學習的,若是有,那麼總體的模型週期會快不少。

  • 若是跑完算法,必定要有一個成品的形態,最好不要只作算法這一塊,譬如跑完模型將其打包封裝成服務接口(服務端和移動端等),達到讓人可用的狀態最好。

  • 領導不想知道過程,只想知道結果。沒有可用的東西和可視化的結果,他會以爲你啥也沒作。

  • 上條只針對部分領導。

  • 沒有人會比你更關心模型的參數調整致使模型的效果提高了0.1%仍是1%,大多數人,尤爲是leader、或者leader的leader,只關心它有什麼用,真實場景的效果好很差。

  • 能夠多和同事、同行等互相交流,參加線下的學習會、交流會等,可能會有意想不到的收穫。

  • 學習新的算法,先把代碼跑起來再說,再來看理論、數學推導、本身手寫實現等。

  • 除了調參之外,還須要關注關注部署上線、模型壓縮等方面的內容。

     

  

Not To Do

  • 訓練數據不要太乾淨了,由於真實場景的數據每每和實驗數據差不少,嘗試加點噪音吧,作些數據加強和mixup等。

  • 論文裏的效果不必定能復現。能夠嘗試論文的思路,可是不要太過相信論文裏的效果數據。

  • 作一個項目就好好深挖,不只僅要作出來,還要不斷的優化,否則每一個項目都只是跑通了,效果還行,不必寫到簡歷裏,不如寫一個作的很深刻,嘗試了各類優化方法並有效果提高的項目。

  • 不要由於以爲本身數學很差就先去惡補數學,買一堆高等代數、數學分析、實變函數、複變函數等純數學書,若是必定要看,推薦《線性代數》《信息論》《凸優化》《數值分析》。

  • 上條推薦的四本數學書也不用全看,凸優化太厚了,其餘三本能夠在本身有大塊時間能夠刷書的時候,規定本身在一個月或者幾個月的時間迅速刷完。線性代數是基礎,數值分析是優化方法(也不用全看),凸優化與信息論與目標函數相關,涉及機器學習的不少理論知識。

  • 不要以爲你訓練的模型效果多好就多麼厲害,除非是作科研、打比賽、工業界更關注能不能落地,能不能應用產生價值,不要自high = =

  • 若是把你的算法封裝成服務了,也要作作壓測,學習下工程方面的內容。

  • 最好的狀態是,工程能力強,又懂算法,二者結合,效果更佳。不要只注重某一方面的提高,多關注下本身的代碼風格,不要讓你的同事code review的時候犯難 - -

 

 

  暫時想到這些,每條都是試錯後的血淚教訓的總結T_T,有補充的歡迎你們在下面留言~

 

相關文章
相關標籤/搜索