談談如何訓練一個效能不錯的深度神經網路

查志強發表於2015-08-11

【原文:http://blog.csdn.net/kuaitoukid/article/details/45821891

深度學習大火,將各個資料集的state of the art不斷地重新整理,到了開原始碼一放出,有種全民皆可刷排名的節奏。


不過可別把刷資料想的那麼簡單,不然大家去哪發paper,怎麼混飯吃= = 但是我不想發paper就想佔坑刷資料怎麼辦,看到cifar10都尼瑪刷到了95%了,我這用caffe自帶的小demo才得出78%的結果,caffe你確定不是在騙我?


caffe確實沒在騙你= =今天我給大家介紹一下如何刷出一個效能接近paper的神經網路


以CNN為例,基本分為三步:

第一步使用leaky relu,dropout(具體參見blog.kaggle.com/2015/01/02/cifar-10-competition-winners-interviews-with-dr-ben-graham-phil-culliton-zygmunt-zajac/


第二步,資料擾動,將資料上下左右平移,放大縮小,泛綠,泛紅,反色等等,做很多的合理的擾動,


第三步,固定步長學習,直到訓練不動,找一個高精度的solverstate作為起點,將學習率下降再訓練,按理說降到1e-4就訓練的差不多了


其實當你研究多了就發現,真正提高效能的還是第二步,其他的只能說是錦上添花,資料擾動才是根本,當然這也揭示了分類器本身的缺陷。


當然了,有人問,你網路結構還沒給呢,這個嘛,paper跟實驗接觸多了,自己自然就會設計了,我倒是覺得網路結構不是主要的,因為CNN的致命缺陷其他分類器也都有,要解決只能說是都一起解決。


MNIST我靠資料擾動將結果刷到了99.58%,結構很簡單粗暴無腦,cifar10擾動太少只是88%,做多了上90%應該很輕鬆,ImageNet,呵呵,看看金連文老師微博上對百度在ImageNet上的評論你就知道我想說什麼了。

百度把指標刷到了4.58%,主要的工作就是(1)更多的銀子(144塊GPU叢集)(2)更大的網路(6個16層212M的模型整合)(3)更多的資料(每張圖合成出上萬種變化)——金連文



相關文章