機器學習入門階段程式設計師易犯的5個錯誤
怎樣進入機器學習領域沒有定式。我們的學習方式都有些許不同,學習的目標也因人而異。
但一個共同的目標就是要能儘快上手。如果這也是你的目標,那麼這篇文章為你列舉了程式設計師們在通往機器學習高手道路上常見的五種錯誤。
1.將機器學習看得高不可攀
機器學習不過是另一堆技術的集合,你可以用它來解決複雜問題。這是一個飛速發展的領域,因此,機器學習的學術交流一般出現在學術期刊及研究生的課本里,讓它看起來高不可攀又難於理解。
要想高效掌握機器學習,我們需要轉變觀念,從技術轉到方法,由精確變為“足夠好”,這也同樣適用於程式設計師感興趣的其它複雜技術。
2.編寫機器學習程式程式碼
由編碼開始入門機器學習會很困難,因為你需要解決的問題從一個變成兩個:瞭解一項技術以便你實現它以及對於給定問題如何應用該項技術。一次解決一個問題,並利用機器學習、統計分析環境以及演算法庫來學習如何將一項技術應用於某一問題,這樣就會容易很多。這能讓你對於若干演算法進行相對快速的抽查和調整,而無需花上大量時間閱讀研究論文中含糊的演算法描述再將其編碼。
實現一個演算法可以作為一個單獨的專案晚些再完成,比如作為一個練習或是等到原型系統需要投入執行時。一時只學一事,我建議從有GUI的機器學習框架開始入門,不論你是不是程式設計師。
3.手動搞定工作
實用機器學習包括問題定義、資料準備、結果表達等步驟,它們與演算法的測試和調整都能夠並應該實現自動化。
在現代軟體開發的編譯、測試和部署中,自動化操作佔有重要地位。對資料準備、演算法測試除錯、結果的表達編寫自動指令碼可以在準確性和改進速度方面獲得巨大的優勢。在專業軟體開發課程中學習的知識要牢記於心並不斷應用。
可能很多學習機器學習的程式設計師看的書、上的課對於這一領域的應用本質關注不多,導致很多人入門階段沒有使用自動化手段。實際上,將自動化技術應用到實用機器學習的方方面面會是程式設計師的巨大機遇。
4.對常見問題重複求解
你正要實現的演算法,或是與你正在求解的問題相似的問題,可能早有千百人解決了,就利用他們的經驗吧。
解決機器學習問題的知識非常多,當然它們可能都在書本或學術出版物中,但你可以訪問它們。做好你的功課,在谷歌谷歌圖書谷歌學術上搜尋,還可以去機器學習的網路社群。
如果你正要實現一個演算法:
- 必須實現它嗎?可不可以在某個庫或工具中找到開源的實現複用呢?
- 你的實現必須從頭做起嗎?可不可以對現有的開源實現進行程式碼審查,從中學習或是移植呢?
- 你必須對標準演算法描述編碼嗎?在其它書論文或是帖子中沒有別的演算法描述可供程式碼審查及借鑑呢?
如果你正要求解某個問題:
- 你必須測試針對這個問題的所有演算法嗎?這一問題或是同一大類相似問題有沒有研究成果顯示一些演算法或演算法類表現良好可供利用?
- 你必須自己蒐集資料嗎?有沒有公開的資料集或是API你可以直接使用或是作為你問題的替代,以快速弄清哪種方法可以有良好表現?
- 你必須優化演算法的引數嗎?在對演算法的研究和論文中有沒有可用的啟發式方法來配置演算法呢?
如果你在程式設計函式庫或是特定某一資料結構方面遇到問題,你會選擇什麼策略,在機器學習領域就用相同的策略吧。參與網路社群並尋求可供利用的資源,可以加速你的學習和專案開發程式。入門階段可以考慮論壇和問答網站,之後可以與學者和專家聯絡。
5.忽視數學
起步階段你並不需要數學理論,但是數學在機器學習中地位重要。因為它能提供最有效、最清晰的方法描述問題及系統的行為。
忽略演算法中的數學方法會導致諸多問題,如對某一方法理解有限或是對演算法編碼時受到限制。舉個例子,很多機器學習演算法的核心優化是增量式的演進。如果你能明白優化的本質(凸函式),你就能利用這些知識來使用高效的優化演算法。
將演算法的數學方法內化於心過程緩慢,但你的功力卻也隨之提升。特別是如果你要從零開始實現高階演算法,包括演算法的內部優化,多多花時間從數學角度來理解演算法吧。
總結
你從本帖學到了程式設計師在機器學習的入門階段容易犯的5個錯誤。5個教訓是:
- 別把機器學習看得高不可攀
- 別寫機器學習的程式碼
- 別手動搞定一切
- 別對常見問題重複求解
- 別忽視數學
原文連結: machine learning mastery 翻譯: 伯樂線上 - toolate
相關文章
- 9 條 PHP 程式設計小知識及易犯的小錯誤PHP程式設計
- Java程式設計師可能會犯的幾個錯誤, 看看你是不是躺槍了?Java程式設計師
- [譯] 我在程式設計初級階段常犯的錯誤程式設計
- 工程師犯的最大錯誤?工程師
- 大神的分享:Java程式設計師的學習生涯中各個階段的建議Java程式設計師
- 程式設計師入門,7個方法幫助你提高學習效率!程式設計師
- 程式設計師的苦與樂:一開始程式設計師可能會犯的錯誤,真是太真實了!程式設計師
- Python新手入門最容易犯的錯誤有哪些?Python
- 程式設計師不能一直停留在愛學習的階段程式設計師
- 寫給程式設計師的機器學習入門 (十二) - 臉部關鍵點檢測程式設計師機器學習
- Java初學者容易犯的程式碼錯誤Java
- 程式設計師到高階架構師,必須經歷的三個階段!程式設計師架構
- 寫給程式設計師的機器學習入門 (十四) - 對抗生成網路 如何造假臉程式設計師機器學習
- 寫給程式設計師的機器學習入門 (九) - 物件識別 RCNN 與 Fast-RCNN程式設計師機器學習物件CNNAST
- 初學Java的5個階段,你在哪個階段?Java
- 跳槽季的查漏補缺,談談對Java程式設計師學習當中各個階段的建議(第四階段)Java程式設計師
- 跳槽季的查漏補缺,談談對Java程式設計師學習當中各個階段的建議(第五階段)Java程式設計師
- 跳槽季的查漏補缺,談談對Java程式設計師學習當中各個階段的建議(第六階段)Java程式設計師
- 《javascript高階程式設計》學習筆記 | 21.2.錯誤處理JavaScript程式設計筆記
- Include檔案易犯編譯錯誤編譯
- Python入門教程 | Python學習的必經階段Python
- 好程式設計師分享JavaScript幾個最常見的錯誤程式設計師JavaScript
- 一個JS程式設計師對機器學習的概念簡單手記JS程式設計師機器學習
- 好程式設計師web前端分享H5高階工程師學習思路程式設計師Web前端H5工程師
- 程式設計師入門選擇書籍學習的利與弊程式設計師
- 好程式設計師大資料學習路線分享Hadoop階段的高可用配置程式設計師大資料Hadoop
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- macOS小白容易犯的24個錯誤Mac
- 識別這5個錯誤,進階高階web前端工程師!Web前端工程師
- 90%的Java開發人員都會犯的5個錯誤Java
- 好程式設計師Java學習路線分享Redis快速入門程式設計師JavaRedis
- 5 個 Linux 新手會犯的失誤Linux
- SDL程式設計入門(23)高階定時器程式設計定時器
- Java入門基礎學習,成為一個Java程式設計師的必備知識Java程式設計師
- go新手容易犯的三個致命錯誤Go
- 使用 Kubernetes 最容易犯的 10 個錯誤!
- 機器學習入門(三) — 迴歸模型(進階案例)機器學習模型
- 更好的前端設計形式——設計者犯的常見錯誤及修改方法前端
- 好程式設計師Python學習路線之python爬蟲入門程式設計師Python爬蟲