1. 程式人生 > >機器學習與計算機視覺(開篇)

機器學習與計算機視覺(開篇)

【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】

    這幾年,機器學習非常火。自從alpha go戰勝了韓國的李世石之後,深度學習又將機器學習推向了新的高度。不可否認,機器學習是非常有用的。不管是模式識別、自然語言處理、計算機視覺,還是推薦系統、機器發掘、語音識別等方面,機器學習都發揮了巨大的作用。機器學習作為基礎學科,它為其他學科的發展作出了很大的貢獻,不斷貢獻著新的理論和演算法,推動技術不斷髮展。

    從另一方面,學習機器學習也是有一定困難的。因為,對於希望學好這門課程的同學來說,除了掌握必要的程式設計方法和程式設計技巧之外,你還需要了解基本的數學方法,比如優化、概率、矩陣、隨機數學等等。很多同學看到這些數學公式就一下子手足無措,不知道如何下手。

    下面,我就從自己個人的角度推薦一下,作為一個it工程師應該如何學習好機器學習?

1)機器學習應該選用什麼程式語言?

    如果大家平時留意的話,會發現大家用來編寫演算法的時候什麼語言都有,比如c、c++、java、matlab、python、R等等。我建議大家如果是自己編寫演算法,最好使用python指令碼語言,編寫起來很快,語法和c差不多,基本不需要除錯。如果是別人寫的演算法,那麼只需要自己會編譯會修改就可以了。比如說,機器學習中svm這塊,大家用的比較多的都是libsvm庫,最早的庫是用c++庫,大家只要能看懂會使用就可以了。還有一些公開發表的論文,這些論文大部分是用matlab編寫的,大家也只要能看懂就可以了,如果需要的話,可以自己轉換成python或者c程式碼。

2)python常用的庫有哪些?

    只需要numpy、pandas和matplotlib就可以了,前者主要處理矩陣使用,後者畫圖使用。

3)怎麼編寫演算法?

    可以先看懂機器演算法的基本原理,然後編寫程式碼,最後再看推倒的數學公式。it工程師比較擅長的是看程式碼,所以可以從自己擅長的領域著手。大部分的機器學習程式碼都在100~200行之間,我指的是python程式碼,所以理解上不會有太大的困難。即使自己不會寫,先看看別人的也可以。

4)有沒有什麼好的機器學習庫?

    sklearn,python下面最簡單的機器學習庫。所有的程式碼基本上都分成三個步驟,建模、訓練、預測。

5)常用的機器學習的書有哪些?

    我自己經常看的書就三本,《機器學習實戰》、《統計學習方法》和周志華的《機器學習》。大家在看書的時候,儘量找適合自己的書籍。大牛的書籍不一定適合自己,反而是一些實戰的書特別適合入門。

6)機器學習最重要的是什麼?

    比演算法和測試資料集本身更重要的,是希望大家尋找更多機器學習的應用場景,讓這門學科更好地服務於我們的生活。

7)掌握機器學習的步驟是什麼?

    先利用現成的庫(比如sklearn)用好演算法,後面可以根據演算法定理實現好演算法,最後再根據使用經驗發覺演算法的不足,改進好演算法,讓更多的人從你的工作中收益。這是一個持續的過程,沒有辦法一蹴而就。

8)公司用的機器學習和學術界的機器學習有什麼區別?

    公司用的演算法往往都是穩定、簡潔、可靠的演算法,比如說logistic迴歸、決策樹、bayes等等,而學術中的機器學習更偏向於效能和結果,在效率和成本和演算法可理解性方面考慮的不多。比如大家學習中遇到的svm、pca、lda、神經網路、深度學習,在生產中可能沒有大家想象的那麼多。當然也不能說,學術的演算法就沒有意義,也許隨著計算機處理效率的提高和大資料時代的到來,學術中的某些演算法會成為新的主流趨勢,這也說不定。

9)有沒有什麼比較好的視訊教程?

    斯坦福大學Andrew NG的《機器學習》課程。