- 產品經理的AI實戰:人工智能產品和商業落地
- 車馬
- 1946字
- 2020-06-08 18:04:56
2.3 理解機器學習的類型及其算法
2.3.1 機器學習的類型
機器學習是一個博大精深的領域,有多種劃分方法,也有很多容易混淆的概念。產品經理要想理解機器學習,就需要從重要的分類和概念入手。機器學習的類型及其關系如下圖所示。

機器學習的類型及其關系
機器學習可以分為以下5種類型。
1. 監督學習
監督學習就是機器在學習的過程中有人類進行監督。人類準備好用于訓練的數據,并對數據做標記(也叫打標簽),最后用做好標記的數據去訓練機器。
例如,人類為了讓機器能準確識別車或馬,就需要準備很多張車和馬的圖片,并將每張圖片進行標注,如圖片0016是車、圖片9302是馬等,通過用這些標注好的圖片來訓練機器,可使機器具備識別車或馬的能力。
監督學習有廣泛的用途。以反垃圾郵件為例,人類對大量的郵件進行標注(是否屬于垃圾郵件),并用這些標注數據去訓練機器。機器就能從中總結出垃圾郵件的規律,從而具備識別垃圾郵件的能力。
2. 無監督學習
人類準備訓練數據,但不對數據做標記,而是讓機器嘗試尋找出其中隱含的模式和規律。
人類不對數據做標記的原因主要有兩個:一是人類對有些數據缺乏足夠的先驗知識,因此難以對其做出標注;二是標注成本太高。
3. 半監督學習
半監督學習是介于監督學習和無監督學習之間的一種機器學習,它使用的數據包含有標簽和無標簽兩種。在實戰中,通常無標簽數據遠遠多于有標簽數據。
4. 強化學習
不同于監督學習和非監督學習,強化學習不要求預先給定數據。它的基本過程是機器不斷嘗試各種行為,并且計算獲得的回報,從而探索出總體回報較大的策略。
以戰勝我國棋手柯潔的AlphaGo Zero為例,它就是基于強化學習的。人類只給它輸入了基本的圍棋規則,并沒有教給它具體的下棋策略,而是讓它自己去摸索。沒有人類的指導也就意味著沒有人類的約束,也正因如此它才摸索出一些人類都沒有嘗試過的下棋策略。
因為整個學習過程都沒有人類監督,所以強化學習和無監督學習很容易混淆。其實兩者是有本質區別的,無監督學習探索的是數據的模式和規律,而強化學習探索的是策略。
5. 深度學習
深度學習與以上4種機器學習的類型都有部分重疊。深度學習的“深”是指它的模型層次多且深。
深度學習的模型有很多種,如CNN(卷積神經網絡)、RNN(遞歸神經網絡)等。CNN是目前計算機視覺領域的主要算法。RNN衍生出了LSTM(長短期記憶網絡)和GRU(門控循環單元)等算法。RNN及其衍生算法適合語音識別、機器翻譯等應用場景。
不同的機器學習類型有各自適用的場景。在同一個場景中,采用不同的機器學習類型也會獲得不同的效果。
以金融行業的反欺詐場景為例,針對這個場景,最初采用的是監督學習,本質就是讓風險控制人員來培訓機器識別欺詐。正因為依靠了人類監督,機器很難超越人的識別能力。新的欺詐方式(尤其是專業的團伙欺詐)往往不能被風險控制人員及時發現,而人類發現之后再去訓練模型就會有一定延遲,這期間金融機構可能已經遭受了很大損失。其實,在這樣的場景中,可以采用非監督學習,讓機器自己從海量的數據中找出欺詐規律,識別出更多的欺詐行為,從而避免更多損失。
不同的機器學習類型對產品經理的工作會有不同的影響。產品經理應該重點關注的是機器學習對產品工作的影響,而不是機器學習本身的細節。例如,選定了監督學習就意味著需要準備有標注的數據,產品經理就要對數據和標注工作做出相應的規劃,其所涉及的問題可能是“訓練數據從哪里來”“要做哪些標注”“由誰來標注”等。
2.3.2 機器學習的算法
以上介紹的5種機器學習的類型,每一種都包含了很多具體的算法。機器學習的部分算法如下圖所示。

機器學習的部分算法
機器學習具體的算法數以百計,就算專業的技術人員也不可能掌握如此多算法的細節,因此產品經理對算法有整體理解即可。為了便于讀者理解,我專門準備了一個小例子。
想象一個場景:在一家馬術俱樂部的停車場停了幾輛車,俱樂部的馬因為好奇走進了停車場,車和馬混在了一起。我們從空中俯拍了一張照片,現在要機器把照片中的車和馬區分開。人一眼就能看出來,但機器需要算法。這是一個分類問題,需要用到分類算法,下圖就展示了邏輯回歸、支持向量機、決策樹3種分類算法及對應的結果。

邏輯回歸、支持向量機、決策樹的算法及結果
上圖中的矩形框代表停車場,矩形框內的圖標代表車和馬,虛線是算法做出的分類。
第一種算法:邏輯回歸只能通過直線來分離數據。在本例中,這個算法的效果不佳——有兩輛車、一匹馬沒有被正確區分。
第二種算法:支撐向量機沒有直線限制。在本例中,這個算法完美地完成了任務——準確地區分出了車和馬。
第三種算法:決策樹使用自動生成的規則來分類。在本例中,這個算法也完美地完成了任務。
AI的“智能”源于算法,它是通過數值計算的方式來解決問題的,這和我們人類有很大不同。它在解決問題時,針對同一個問題可能使用多個算法來解決,一個算法也可以用于解決多個問題。