寫給大家看的機器學習書(第一篇)
1. 前言
這個世界不缺少專家,我只是期待他們中有一位能把事情說清楚。
機器學習很火。
機器學習專家很貴。所有大型互聯網公司都駕著機器學習的馬車朝著人工智慧前進。然而今天哪怕是互聯網從業者,大部分也是不知道機器學習到底是什麼的。機器如何學習?機器學到的是什麼?為什麼機器經過學習能夠神奇的預測用戶的喜好、股票的漲跌?人們好奇又渴望。
這裡所說的從業者可能是開發工程師,可能是產品經理,也可能是運營,他們與機器學習專家們在同一家公司工作,參與同一個項目,但機器學習演算法對他們仍然像黑魔法一樣,神秘又疑惑。這樣的局面未免讓人沮喪,畢竟如果相對論都可以在高等教育中得到普及,有什麼領域是複雜到沒辦法好好說清楚的呢。據我有限的觀察,造成這個局面的原因無非兩種:
- 不少專業人士樂於將機器學習包裝得晦澀曲折,以享用他人迷惑眼神中的優越感。
- 很少人把機器學習以直接的、讓人容易理解的方式說出來。有那麼幾個在這樣做的人,面向的也是專業領域學習者而非一般的科普受眾。
我鄙視第一種人類。
我希望所有的寫作者都能夠追逐Richard Stevens的光芒,把複雜的東西變簡單,追求簡潔明了,追求直接易懂。這個系列文章,我將試著為開發工程師,產品經理、設計師、所有希望了解學習機器學習的人,介紹機器學習的原理、方法和實戰技巧。
我追求它儘可能好理解的同時,也會保持它的準確度和實用度。理論方面,以周志華的《機器學習》西瓜書,林軒田機器學習系列課程(FoundationsTechniques),Andrew Ng"s Machine Learning 為學習資料,結合我個人的理解及日常與朋友同事的討論。實用實戰方面,我將以手機淘寶中第一款**** DAU (Daily Active User) 導購產品——有好貨為例子,如果你從事導購或者電商相關工作那麼對例子中的場景一定非常熟悉。如果你對導購併不了解也不用擔心,講解的重點仍是機器學習原理和方法的普世應用,理解了原理方法之後可以在任何適合機器學習的場景中進行實踐。這是這個系列的第一篇,看完這篇您將知道
- 什麼是機器學習?
- 機器學到的到底是什麼?
- 什麼樣的問題適合用機器學習來解決?
2. 什麼是機器學習?機器學到的到底是什麼?
2.1 什麼是機器學習?
在討論機器學習之前,我們首先看看人類是如何學習的。如圖1上半部分所示,人類通過閱讀書籍、查閱資料,觀察得到信息,這些信息經過人腦學習,最後習得了某種技能。
機器學習也是類似,只不過機器學習的輸入是數據(Data),學到的結果叫模型(Model)(備註1)。從數據中學得模型這個過程通過執行某個學習演算法(Learning Algorithm)來完成。
- 數據(Data)
- 學習演算法(Learning Algorithm)
- 模型(Model)
是機器學習的三個要素。
圖1:
當然,上面的類比可能還比較抽象。下面就以「有好貨」這個產品為例子,來理解一下機器學習的概念。
首先介紹下有好貨(圖2所示)。有好貨是手機淘寶的一款導購產品,在首頁第一屏就能看到產品入口。這款產品在2015-2016我們用了一年的時間,將每日用戶數從****做到了****,成為第一個每日用戶數破****的導購產品。這裡面的一大秘訣就是將個性化推薦技術、機器學習技術與產品設計做了深層次的融合,以個性化推薦和機器學習為內核驅動產品設計的演進和決策。(有好貨的故事我將另寫一個系列)
這裡以有好貨的「瀑布流」頁面(圖2中間)為例。這個頁面是一個完全個性化的頁面,不同的用戶進入到有好貨瀑布流頁看到的商品推薦是不同的。
有限的屏幕空間,我們希望給每個用戶展現他最有可能點擊的商品。那什麼商品是當前用戶最可能點擊的呢?這個預測就由機器學習完成。類比圖一的概念,這個場景下的數據、學習演算法和模型分別對應著:- 數據:輸入數據包括:用戶對商品的瀏覽、點擊歷史行為數據以及相應的用戶商品特徵數據。這些歷史數據記錄了什麼樣的用戶點擊了什麼樣的商品,什麼樣的用戶對什麼樣的商品看了沒有點擊。我們認為這些歷史數據中蘊含了某種規律,希望機器學習能把這種規律挖掘出來,在將來面對新的用戶和商品時,就能預測是否會點擊。
- 學習演算法:機器學習演算法有很多,邏輯回歸、隨機森林都適用於這個場景,但這裡我們先不對具體的演算法作展開,暫時讀者只需要概念性的知道,基於輸入數據執行「學習演算法」便可產生模型(模型就代表了學習演算法從數據中挖掘出的規律)。
- 模型:學得模型之後,面對新的用戶和商品,模型就能作出相應的判斷,用戶會點擊還是不會點擊。利用模型的這個「技能」,我們便可以做到給每個用戶推薦他最感興趣的商品了。
總而言之,機器學習是一門研究「學習演算法」的學問,「學習演算法」基於歷史的經驗數據產生模型,進而使計算機有了對新情況進行預判和預測的「技能」(比如預測用戶的喜好或股票的漲跌)。
圖2:
2.2 機器學到的到底是什麼?
理解了機器學習的概念,我們知道機器學習無非三個要素(1)數據,(2)學習演算法,(3)模型
- 數據很好理解,當我們希望預測用戶是否會點擊某個商品,就把歷史上用戶對商品的點擊瀏覽行為餵給機器學習演算法,希望從歷史數據中中挖掘出某種規律。
- 學習演算法有很多,上面提到過的邏輯回歸、隨機森林只是眾多演算法中的兩種。事實上對各種不同學習演算法的討論是機器學習書籍的重點,一章介紹一種,就厚厚一本書了。讀者不必著急,這部分我們將慢慢展開。
- 在這一小節,我想重點討論的是,我們說機器學習學得的模型可以預測用戶是否會點擊某個商品,可是模型在機器內部到底是怎麼表示的呢?機器學到的模型到底是什麼?許多人覺得機器學習非常神秘,是因為人類習得的技能並沒有一個直觀的展示形式,因此很難想像機器學到的模型到底是什麼,其實答案非常簡單:
機器學到的模型是一個映射。
映射,在數學的許多分支就等價於函數(備註2)。而函數,我們再熟悉不過了,給定一個(輸入集合中的)元素,函數唯一對應(輸出集合的)一個輸出值。
比如函數,給定任意實數,的平方就是函數的輸出。
比如函數,當是確定的,那麼給定一組,就能唯一確定一個輸出值。(事實上這個就是最簡單的一種機器學習模型——線性模型)。
而在有好貨的例子中,機器學習學到的模型就是這樣一個函數:
給定一個用戶和商品,這個函數就能夠唯一輸出一個分數,表示用戶點擊該商品的可能性。
這就是機器學習的秘密。
3. 什麼樣的問題適合用機器學習來解決?
不少計算機科學專業的同學可能會有些疑惑,計算機科學在本科階段教授了大量的演算法——字元串匹配演算法、排序演算法、貪心、動態規劃,演算法導論厚厚一千多頁,可這些都不屬於機器學習的範疇,機器學習也不是計算機科學本科的必修課。
那到底演算法導論中的演算法跟機器學習演算法有什麼區別呢?
什麼樣的問題適合用機器學習來解決?什麼情況需要使用機器學習呢?
答案是:難以用規則解決的問題,可以嘗試用機器學習來解決。(備註3)
演算法導論中經典的排序問題,無論解法是快排還是歸併排序,解法已經是一個確定的規則。但是機器學習問題,比如垃圾郵件識別,比如辨識一張圖片中的物體是不是樹葉,就很難用規則來解決。前者的規則難以窮舉,後者則根本很難描述辨別樹葉的規則。
因此,仍然以規則堆砌的觀念來看待演算法的朋友們注意了,
永遠不要跟機器學習專家說:「加條規則唄」永遠不要跟機器學習專家說:「加條規則唄」永遠不要跟機器學習專家說:「加條規則唄」God Bless You~3.1 適合用機器學習解決的問題的必要條件
另外,在2.2節我們提到:當我們希望預測用戶是否會點擊某個商品,就把歷史上用戶對商品的點擊瀏覽行為餵給機器學習演算法,因為我們認為歷史數據中隱藏著用戶是否會點擊商品的某種規律。
這其實道出了能用機器學習解決的問題需要具備這樣的必要條件
有大量數據,並且數據中有隱藏的某種規律或模式
如果某些問題沒有任何的規律,比如拋硬幣,那麼無論有多少數據也是不行的。
3.2 小測試
讀到這裡,不如試試看你對機器學習理解的怎麼樣了。
判斷下面這些問題適不適合用機器學習解決。能不能用機器學習解決。問題:預測下一次六合彩的中獎號碼。
答案:不能用機器學習解決,因為跟投硬幣一樣搖獎是隨機的,並沒有規律。問題:判斷一個圖形是否是圓。
答案:無需用機器學習解決,因為有明顯的規則。問題:預測股票的漲跌。
答案:可以用機器學習輔助交易並盈利。要是你發現自己能很好的解這個問題,請跟我做朋友吧 :)
問題:預測一個10歲的小朋友長大了會喜歡的女孩子的類型。
答案:可能不能用機器學習解決,因為缺少「大量數據」這點必要條件。4. 小結和預告
這是系列文章的第一篇,我們首先介紹了機器學習的基本概念,機器學習的三個要素:數據,學習演算法,還有模型。
然後我們揭示了機器學到的模型,本質上就是一個映射,或者函數。
最後我們總結了機器學習適合解決的問題,是那些難以用規則解決的問題。並且機器學習的必要前提不僅是有大量的數據,而且需要數據中確實存在隱藏的某種規律,機器學習才能幫的上忙。
希望我有把事情說清楚,有任何疑惑或者問題,歡迎留言。我回答後會把FAQ附在每篇文章的後面。下一篇將細化具體的機器學習原理,可能會引出一個入門級的機器學習模型。您有什麼希望了解學習的內容,也可以留言。
祝開心。
- 在這個系列文章中,「模型」泛指從數據中學到的結果。 ?
- https://en.wikipedia.org/wiki/Map_(mathematics) ?
- 另一種說法是,機器學習求解的問題,都難以用程序控制結構求解——程序控制結構包括順序、分支、循環、跳轉。 ?
推薦閱讀:
※中國網民最關心這6項黑科技,一個比一個「黑」,個個改變世界
※AlphaGo下贏了柯潔,還下出了一盤營銷大棋
※如何評價AI Challenger的比賽結果?
※你想刁難的是哪個胖虎?