前言:
對於不同的人,對機器學習的看法不一樣。首先這裏給出一篇大佬對機器學習的看法(強烈推薦)。
這篇文章介紹了互聯網界與機器學習大牛結合的趨勢,以及使用機器學習的相關應用,可以幫助對與學習機器學習的人較爲清晰的理解一下幾點內容:
- 什麼是機器學習?
- 機器學習是如何定義的?
- 機器學習的範圍?
- 機器學習有哪些方法?
- 機器學習的應用?
- 機器學習與深度學習的關係?
- 機器學習與人工智能的關係?
- 作者對人工智能的思考?
這篇文章基本上可以當做機器學習的科普讀物。當然也解決了我心中一直苦苦追尋得不到的結果,比如一直搞不清楚機器學習與數據挖掘、統計學習、深度學習和人工智能等這些之間的關係。
但是,這篇文章並沒有介紹機器學習中具體的算法分類(有監督、無監督、半監督、強化學習)和一些常用的具體算法,此外,對於算法的基本思想、底層實現、算法評估、算法選擇、算法改進等深一步的知識並未提及。所以,在接下來的日子,我將對這些疑問通過不斷地學習,一步一步的瞭解,並去實現。
個人對機器學習的見解
很多人在學習機器學習的過程中基本上都是使程序封裝好的庫函數(算法),所以很多人人爲機器學習就是在調庫。
1. 不反對調庫
首先,就我來說,我是並不反對調庫的。事實上,在我們真正的生產環境中,無論是出於對效率的考慮、還是出於對穩定性的追求,調庫本身是沒有任何問題的。真正應該反對的是對那些只會調庫的,卻對自己所調用的庫函數API沒有深入理解。這就好比事實上我們在實現一個加法運算:a+b時,本身可以利用變量a去加上變量b。但是,通常我們並不會去這樣進行運算,而是利用已有的函數(np.sum())來進行完成的,我們只需要考慮在什麼時候利用這兩種解決辦法來高效的解決所需要解決的問題。所以,這就需要我們對這些解決辦法的內部實現原理有深入的瞭解。
2. 深入算法代碼內部
機器學習中有許多的算法,每一種算法都有其特定的思想和應用場景。對於如何選擇算法就要對其內部思想和原理進行詳細理解,所以需要深入算法代碼內部,從底層試着實現它(需要強大的數學知識)。所以在接下來的每一個具體算法中,嘗試利用已有學習資料,試着實現這些底層實現代碼,以便更好地幫助我們理解算法,甚至選擇算法。
3. 改進算法
生活中的情況往往復雜多變,有時候我們很可能遇到現有的算法不能很好的解決這些問題的時候。在這種情況下,我們可能就會對原始的算法進行對這些特殊問題而進行的改進(創造是永遠不可能創造的)。
以上就是個人對機器學習的見解,最後附上黃海廣博士開設公衆號裏面的一篇文章。
機器學習入門的百科全書-2018年“機器學習初學者”公衆號文章彙總
https://mp.weixin.qq.com/s/5BqOEbpzqH1wO2yB0Qfs_w