當前位置:
首頁 > 最新 > 我是如何在1天內構建一個深度學習模型並進擊Kaggle比賽的

我是如何在1天內構建一個深度學習模型並進擊Kaggle比賽的

------【導讀】------

我讀過很多關於機器學習的書,也參加過不少這方面的課程,但我認為Fast.ai是迄今為止最實用的深度學習入門課程。

Fast.ai是Jeremy Howard為結果導向型人群開設的深度學習在線課程。

我讀過很多關於機器學習的書,也參加過不少這方面的課程,但我認為Fast.ai是迄今為止最實用的深度學習入門課程。在本文中,我將與大家分享我在學完前兩課後的一些經驗。

從數學開始學習人工智慧是個錯誤的選擇

22年前,我在斯坦福大學學習Bernie Widrow的神經網路課程,這位數字濾波器之父諄諄善誘,向我們講解隨機梯度下降的原理。

學了一半的理論課程,我還是不能完成神經網路的實現,只學會了如何用MatLab構建神經網路。後來,當我需要編寫代碼來訓練我的網路權重時,我才終於理解了什麼是隨機梯度下降。

不過,這種窘境到現在也並未發生多大變化。大多數機器學習實戰工程師都有著學術背景;當專業程序員問他們 「我該如何開始學習人工智慧?」,多數工程師會向他們推薦一些偏重數學的學習資料,比如《深度學習》這本書(這種情況時有發生)。

對研究人員而言,Ian Goodfellow的這本書是一本很好的參考書,但對我們中的大多數人而言它並不是一本好的入門書籍。這本書關於梯度下降的章節使我回想起讀研究生時遇到的窘境:

上圖為Goodfellow等人所著的《深度學習》中關於梯度下降的一頁。這本書有很好的研究參考價值,但是對專業程序員而言,並不是一本實用的入門書。我在聖誕節期間讀完了本書三分之二的內容,但我還是不會構建神經網路。

對於研究人員或者人工智慧前沿的推進而言,理解理論是至關重要的一步。但是,對於大多數人工智慧商業應用而言,數學是個很大的干擾。

為什麼?因為企業面臨著一些更為嚴峻的挑戰,例如選擇正確的問題,組織數據,部署解決方案等。面對市場風險和執行風險,專業程序員不得不使用成熟的技術來開發應用——因此,懂得如何實現某一解決方案要比理解該方案的工作原理更為重要。

光讀不練假把式,必須實踐。

學習新技能的唯一方法就是:使用該技能練習構建。深度學習也一樣, JeremyHoward的Fast.ai課程注重實踐,是學習人工智慧最快的方法。

▌Fast.ai讓你通過實踐學習深度學習

課程的聯合創始人Jeremy Howard和Rachel Thomas實現了他們的承諾——「讓所有人都能運用機器學習的力量」。本文不對課程進行描述,我會推薦你閱讀學習者對該課程的評論並分享我早期的經驗。

我為什麼決定參加這個課程

在參加該課程之前,我已具備良好的深度學習理論基礎,並掌握了該技術各種應用的實踐知識。我參加這個課程是為了獲得更多實踐經驗。

構建簡單的解決方案能幫我更加有效地籌劃項目、僱用項目人員和進行工程學權衡——這是任何領導者都須具備的技能。

但是最關鍵的是,我想通過構建簡單的深度學習解決方案來實現理論和實踐的相結合。

▌如何建立一個演算法來檢測入侵物種

在一天內能達到什麼樣的水平?

學完前兩課後,我決定參加Kaggle比賽。

我的目標是:

在一天結束前進入排名的前50%。

自己動手編寫每行代碼,不用剪切和粘貼。

了解所有引用的庫和API。

我選擇了「入侵物種監測」競賽(Invasive Species Monitoring playground competition)。這是一個比較簡單的分類問題,對初學者而言算是一個很好的起點。

還有,它聽起來就很有趣。

上圖為 「入侵物種監測Kaggle競賽」中入侵性繡球花(繡球花:一種植物的分類)。

比賽的內容是開發出識別森林和葉子圖像中是否包含入侵性性繡球花的演算法。

早上七點,我沏了一壺咖啡後開始工作,在亞馬遜AWS上對GPU進行了加速。晚上9點,我的眼睛開始酸痛,我的大腦跟炸了一樣。

我決定將我的結果提交給Kaggle……

▌我的代碼

這是我在github上的完整筆記,裡面記錄了我工作計劃的7個步驟

不用對我的代碼感到驚訝——我使用的方法與課堂上學習的方法類似。任何一個具有1年工作經驗(或以上)的程序員應該都能寫出這樣的代碼。

我90%的時間都用於學習庫、組織數據和評估結果——都是一些與深度學習無關的簡單流程。

▌驗證結果

我使用90%的圖像訓練我的演算法,並用剩餘的10%來驗證結果。

預測精度

我的預測精度達到了91%。這是混淆矩陣:

混淆矩陣顯示了我的演算法檢測驗證集的有效性。最需要改進的的地方是漏報問題——在12個實例中演算法錯誤地將入侵物種識別為非入侵物種。您可以在下方查看該結果。

91%是什麼概念?就在3年前,最先進的計算機視覺識別技術也只能達到80%!我在第一次嘗試中就超越了它。

包含花的圖像被正確識別

我檢查了被演算法正確識別的圖像。大藍色繡球花似乎是關鍵特徵。

某些被錯誤識別的圖像存在明顯問題

這個演算法錯誤地識別了18個圖像。這是演算法需要改進的地方。

漏報的圖像似乎是未被正確識別的小花。我認為通過裁剪照片生成更多標記樣本,可以改善演算法的結果。

▌勝利!我進入了前50%!

在我的第一次嘗試中,我在52位參賽者中排名第21,進入前50%。

目標達成!

我在一天內進入了排名的前50%。

沒有最好只有更好。

▌Fast.ai是否適合你?

如果你的目標是加入Open.ai團隊或贏得ImageNet競賽,那麼Fast.ai課程並不十分適合你,因為你需要學習偏導函數。

但對於其他人,比如想要獲得實用的基礎知識介紹的團隊領導,希望學習深度學習工程師入門知識的專業程序員,想知道如何開發AI spec的產品經理,或者任何想對一噸樂高進行分類的人員來說,Fast.ai是個很好的開始。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 安卓網 的精彩文章:

16大國際知名企業品牌LOGO顏色互換,驚呆了設計師
1500元價位的人氣手機:四種處理器都齊了
如果價格便宜,你願意租一部手機用嗎?
一加3全系銷量突破250萬台,一加5備貨充足跟緊腳步
每天拿著這三款最新旗艦機是什麼樣的感受?

TAG:安卓網 |

您可能感興趣

利用 TensorFlow 一步一步構建一個多任務學習模型
基於 Keras 對深度學習模型進行微調的全面指南 Part 1
基於 Keras 對深度學習模型進行微調的全面指南 Part 2
這15家Apple Store堪比建築模型,值得一看
如何使用 Kubernetes 輕鬆部署深度學習模型
一步實現從TF到TF Lite,谷歌提出定製on-device模型框架
微軟Azure現在支持Nvidia的GPU Cloud進行深度學習模型的訓練和推理
不同的領域、框架,這是一份超全的深度學習模型GitHub集合
如何切換到一個自定義Django用戶模型Mid-Project
快到沒朋友的YOLO v3有了PaddlePaddle 預訓練模型
自動模型壓縮與架構搜索,這是飛槳PaddleSlim最全的解讀
在 Netflix 評論中做情感分析的深度學習模型
機器學習模型中的 bug 太難找?DeepMind 呈上了三種好方法
深度學習新應用:在PyTorch中用單個2D圖像創建3D模型
在新品iPhone發布之前,三個新的iPhone克隆模型被踩在了一起!
Github 項目推薦 | 微軟開源 MMdnn,模型可在多深度學習框架間轉換
Kaggle:一套完整的網站流量預測模型
Roofline Model 與深度學習模型的性能分析
ImageNet 帶來的預訓練模型之風,馬上要吹進 NLP 領域了
一台模型能換一台飛度,Amalgam 的工作室什麼樣?