【講講科普】 當你有了三個孩子他們分別叫監督式學習、非監督式學習與強化式學習

Jason Kuan
5 min readAug 26, 2017

--

大部分的機器學習入門課當中,最一開始也最基礎的觀念就是三大類機器學習方式,它們分別是監督式學習(Supervised learning)、非監督式學習(Unsupervised learning)與強化式學習(Reinforcement learning),不過在沒有任何概念下,讀了好幾次的定義還是無法對其產生感覺,這邊我嘗試用教養小孩的方式來解釋,如果有任何疏漏之處,歡迎大家的指教。

機器學習到底機器是在學什麼習

從字面上來看,「機器學習」就是讓機器(電腦)學習一件事情,就和我們一樣,從小到大,我們深受父母、教師或朋友等影響,形成了現在的我們,機器學習也是一樣,讓我們假設今天電腦是你的小孩,你可以選擇採用哪種教育方針教導它,使它未來能得到你預期的結果。

個性一板一眼的大兒子:監督式學習 Supervised learning

它的個性單純、踏實,大部分的事情你必須先跟它解釋夠多遍,它才有足夠的判斷力做出決定。舉例來說,你今天帶著它來到公園,為了讓他了解什麼是植物,你指向榕樹、矮樹林、灌木叢與草地,看!這些都是植物,接著指著天空、汽車和房子說這些不是植物,帶著它認識大部分的物件後,大兒子最終找到了規律(綠色、有根或葉),學會了如何判斷什麼是植物。

所以,監督式學習必須要在資料有標記(labeled)的狀況下套用,在現實例子中,有拍賣網或大型電商,他們手上可能有一份記錄著顧客月收入、年齡、性別等標記的清單,將這份資料餵給電腦處理,便可讓電腦從中根據指標來判斷下一個使用者出現時,會購買商品的機率是多少。

餵給電腦的有標記的資料
預測新會員會不會購買

明察秋毫、善於分類的女兒:非監督式學習 Unsupervised learning

喜歡將看到的物件依照結構分門別類、劃分成不同群組的它,當你將一箱動物玩具放在它面前時,它很快就能夠從中分出不同的小圈子,讓你感到驚訝的是,你事先並沒有告訴它每隻動物是哪種分類,它卻可以透過觀察分成有翅膀能夠飛的、能在水中生活的或只能在路上爬的動物,有些甚至有它獨特的分類方法是你沒想到的,這就是非監督式學習,你不必透過監督,就從玩具中透過觀察解析結構將資訊做好分類。

非監督式學習可以只需要無標記( unlabeled)資料,便能實作。換成現實中的例子,想到的是消費者喜好分析,一般在分類不同消費群組時,我們習慣根據性別、年紀等做分群,但假如今天你發現有個會員會在白天購買化妝品、傍晚購買啤酒、晚上買電動,而且這族群數量還不算少,若只看性別和年紀應該會滿頭霧水,覺得這個消費者是不是得了精神分裂症。而這組會員其實就是家庭,全家爸爸、媽媽、小孩共用同一個帳號網購累積紅利,若套用非監督式學習去分析消費者的行為,便有機會篩檢出這麼樣有相同屬性的客群。

失敗就是進步,越挫越勇的老么:Reinforcement learning

而最小的老么最喜歡下棋,常常要求你跟它對弈,一開始你一定會竊笑它的思路缺乏常識,總是下險棋犯些很明顯的錯誤,但經過一局又一局的對弈之後,它不斷思考每一局的過錯是不是有改變的可能,所以它越下越好,思考的套路也更加深層,沒錯!AlphaGo就是強化式學習的一種應用。

強化式學習的特徵是訓練必須要有正負回報(positive/negative reward),在訓練過程中,模型會根據不同的狀況(state)嘗試各種決定(action),再根據此決定得到的結果內化吸收,下方的AI 玩 Mario遊戲影片便是一種應用,在模型最初時,可以看到角色就是站在原地閒置太久,拿到了負面回報,所以它改變開始學習向前移動,走了一段路之後被棒球K到,它又得到了負面回報,所以它開始加上跳躍來閃避傷害,最後最後,破關方式就被電腦試了出來。

結論

監督式學習: 資料已有標記,運用已標記資料來做訓練。
非監督式學習: 資料沒有標記,從中找出擁有相同特徵的資料群。
強化式學習: 可能手上沒有任何資料,直接讓模型執行,再將執行結果反饋回去做訓練。

當然,也有人提過半監督式學習(Semi supervised learning),這是資料中少部分有標記,大部分沒有標記的一種學習方式,但我認為先瞭解上面三大類學習方式已算很足夠了。

所以我該用哪種學習方法?孔子:因材施教

子曰 : 「中人以上、可以語上也,中人以下、不可以語上也」。

根據你要分析的問題和手上現有的資料,才能想清楚你該用哪種學習演算法,之後我再慢慢依序介紹這三種學習法中,有哪些著名的演算法實作方式。

[1] Supervised learning wiki

[2] Unsupervised learning wiki

[3] Reinforcement learning wiki

[4] MarI/O — Machine Learning for Video Games

--

--