— Posted in 電腦資訊

[轉錄]監督式學習?增強學習?機器學習名詞解釋!

來源:https://www.inside.com.tw/2017/07/19/machine-learning

人工智慧:如何以電腦解決問題

1950 年代的電腦科學方起步,從科學家到一般大眾都對於電腦充滿無盡的想像,不但從大導演弗裡茨・朗的《大都會》到作家艾西莫夫的機器人三大法則,主流科學界也都預估,約莫 20 到 30 年左右的時間便可以成功創造出與人類同樣高度的人工智慧。

然而人工智慧的研究很快便面臨了瓶頸──機器程式是由人類撰寫出來的,當人類不知道一個問題的解答時、機器同樣不能解決人類無法回答的問題。

另一個問題是當時電腦的計算速度尚未提升、儲存空間也小、數據量更不足夠,硬體環境上的困境使早期人工智慧只能解一些代數題和數學證明,難以在實務上有所應用。

雖然此時人工智慧的研究邁入了瓶頸,但是電腦硬體卻是以指數型的方式進步。1965 年 Intel 創始人摩爾觀察到半導體晶片上的電晶體每一年都能翻一倍。

到了 1975 年,這個速度調整成每兩年增加一倍,電腦的運算能力與儲存能力同時跟著摩爾定律高速增漲。如今,電腦的運算能力約為 30 年前的 100 萬倍。

早期的人工智慧研究聚焦在邏輯推論的方法,專注於模仿人類推理過程的思考模式。由於需要百分之百確定的事實配合,因此在實務上不容易使用。

直到關於人工智慧的研究方向越來越多元,涵蓋了包括統計學、機率論、逼近論、博弈論等多門領域的學科;而硬體儲存成本下降、運算能力增強,加上海量數據,今日的人工智慧已能從資料中自行學習出規律,這便是時下資料科學的最熱門技術「機器學習」。

機器學習:從資料中自行學會技能

機器學習是實現人工智慧的其中一種方式。傳統上實現人工智慧的方式需要人們將規則嵌入到系統,機器學習(Machine Learning)則是讓電腦能夠自行從歷史資料中學會一套技能、並能逐步完善精進該項技能。

什麼技能呢?舉例來說,辨識貓咪的技能。
人類是如何學會辨識一隻貓的?我們不是熟背所有貓的詳細特徵:「尖耳朵、四肢腳、有鬍子、體型、毛色、…」從短毛貓、摺耳貓、短毛貓、暹羅貓… 等貓咪的外型特徵都不一樣,甚至要將老虎、花豹等類似貓但不是貓的照片排除出來。

一般只要父母帶小孩看看貓、或貓咪的圖片,只要看到就告訴孩子這是貓,當小孩把老虎看成貓時進行糾正,久而久之,我們就自然地「學」會辨識一隻貓了。雖然不是原本看過的貓咪,我們仍然知道這是一隻貓。

從前讓電腦辨識出貓時,需要工程師將所有貓的特徵以窮舉法的方式、詳細輸入所有貓的可能條件,比如貓有圓臉、鬍子、肉肉的身體、尖耳朵和一條長尾巴;然而凡事總有例外,若我們在照片中遇到了一隻仰躺只露出肚子的貓?正在奔跑炸毛的貓?尖臉短尾貓?也因此誤判的機率很高。

美國普林斯頓大學李飛飛與李凱教授在 2007 年合作開啟了一個名為「ImageNet」的專案,他們下載了數以百萬計的照片、處理並分門別類標示好,供機器從圖像資料中進行學習。

如今, ImageNet 已是全世界最大的圖像識別資料庫,光是「貓」便有超過六萬兩千種不同外觀和姿勢的貓咪,同時有家貓也有野貓、橫跨不同的種類。

究竟機器是怎麼從資料中學會技能的呢?為了瞭解機器學習是如何從資料中學習,獲得辨識或預測新進資料的技能,首先來為大家介紹一個經典的入門主題:「分類」(Classification)。

======================================================

訓練機器學習模型時,技術上有哪些重要的部分呢?

1. 資料清整(Data Cleaning):

機器既然得從海量資料中挖掘出規律,「乾淨」的數據在分析時便非常地關鍵。在分析的一開始時,得處理資料的格式不一致、缺失值、無效值等異常狀況,並視資料分佈狀態,決定如何填入資料,或移除欄位,確保不把錯誤和偏差的資料帶入到資料分析的過程中去。

2. 特徵萃取(Feature Extraction)與特徵選擇(Feature Selection)

特徵萃取(Feature Extraction)是從資料中挖出可以用的特徵,比如每個會員的性別、年齡、消費金額等;再把特徵量化、如性別可以變成 0 或 1 ,如此以來每個會員都可以變成一個多維度的向量。

經過特整萃取後,特徵選擇(Feature Selection)根據機器學習模型學習的結果,去看什麼樣的特稱是比較重要的。若是要分析潛在客戶的話,那麼該客戶的消費頻率、歷年消費金額…等可能都是比較重要的特徵,而性別和年齡的影響可能便不會那麼顯著。

藉由逐步測試、或使用演算法篩選特徵,找出最恰當的特徵組合讓學習的效果最好。

3. 模型選取

資料科學家會根據所要解決的問題、擁有的資料類型和過適化等情況進行衡量評估,選擇性能合適的機器學習模型。由於機器學習模型的數量與方法非常多,包括了神經網路、隨機森林、SVM、決策樹、集群….。以下僅將機器學習模型依據幾種常見的問題類別進行介紹。

======================================================

四種機器學習類別

在先前的段落中,我們介紹了預先把有毒菇類的資料標籤(Label)為 1、沒有毒的菇類資料標籤為 0,讓機器如何學會辨識有毒菇的方法,事實上叫做「監督式學習」,除此之外還有「非監督式學習」:

監督式學習(Supervised Learning): 在訓練的過程中告訴機器答案、也就是「有標籤」的資料,比如給機器各看了 1000 張蘋果和橘子的照片後、詢問機器新的一張照片中是蘋果還是橘子。

非監督式學習(Unsupervised Learning): 訓練資料沒有標準答案、不需要事先以人力輸入標籤,故機器在學習時並不知道其分類結果是否正確。訓練時僅須對機器提供輸入範例,它會自動從這些範例中找出潛在的規則。

簡單來說,若輸入資料有標籤,即為監督式學習資料沒標籤、讓機器自行摸索出資料規律的則為非監督式學習,如集群(Clustering)演算法。

非監督式學習本身沒有標籤(Label)的特點,使其難以得到如監督式一樣近乎完美的結果。就像兩個學生一起準備考試,一個人做的練習題都有答案(有標籤)、另一個人的練習題則都沒有答案,想當然爾正式考試時,第一個學生容易考的比第二個人好。另外一個問題在於不知道特徵(Feature)的重要性。

============================================

在實際應用中,將大量的資料一一進行標籤是極為耗費人工的事情,最常見的狀況是──少部分資料有標籤,而大部分資料沒有標籤、且數量遠大於有標籤的資料。畢竟要標籤資料費時費力、蒐集無標籤的資料更快速方便。這時候我們可以採用:

半監督學習(Semi-supervised learning):介於監督學習與非監督學習之間。

以下是半監督學習的簡單示意。在將資料分群的過程當中,先使用有標籤過的資料先切出一條分界線,再利用剩下無標籤資料的整體分布,調整出兩大類別的新分界。如此不但具有非監督式學習高自動化的優點,又能降低標籤資料的成本。

前面我們提到監督式學習在面對一個指定問題時,可以明確告訴你正確的答案是什麼,比如今天會下雨或不會下雨、或是這封信該不該丟到你的垃圾郵件匣。

====================================================

但遇到某些需要連續做決策的情況時,答案就不是一步就能解決了。比如下棋需要根據對手的攻勢隨時改變策略、或是開車會遇到的不同路況,為了達到贏棋或者通過山路的最終目的,必須因應環境的變動、隨之改變原有的作法。這時候我們就需要利用:

增強學習(reinforcement learning):透過觀察環境而行動,並會隨時根據新進來的資料逐步修正、以獲得最大利益。

強化學習的一個經典理論「馬可夫決策過程」(Markov Decision Process)有一個中心思想,叫「明天的世界只和今天有關、和昨天無關了。」(The future is independent of the past given the present.)

在馬可夫決策過程中,機器會進行一系列的動作;而每做一個動作、環境都會跟著發生變化。

若環境的變化是離目標更接近、我們就會給予一個正向反饋(Positive Reward),比如當機器投籃時越來越接近籃框;若離目標更遠、則給予負向反饋(Negative Reward),比如賽車時機器越開越偏離跑道。

雖然我們並沒有給予機器標籤資料,告訴它所採取的哪一步是正確、哪一步是錯誤的,但根據反饋的好壞,機器會自行逐步修正、最終得到正確的結果。

原則上無需考慮以前的狀態,當前狀態便已傳達出、所有能讓機器算出下一步最佳行動的資訊;簡單來說就是每一個事件只受到前一個事件的影響。打敗世界棋王的 Google AlphaGo 便是馬可夫假設一個成功的應用。

增強學習的機器學習方法當然還不僅止於此,多拉桿吃角子老虎機(Multi-armed Bandit)亦是增強學習的知名理論。Bandit 是一個簡化過的增強學習方法,最重要的目標只有探索(Explore)和採集(Exploit)的平衡。這是什麼意思呢?

假設一個國家中有十家餐廳,每家餐廳提供的餐點份量相當不均(有些可能會偷工減料)。某天該國突然湧入很多難民、因為餐券補助有限的關係,總共只能吃一百次餐廳,希望最後能餵飽最多的人。

顯然如果要吃到最多的東西,我們必須盡快找到「提供最大份量」的餐廳然後一直吃它就好了(其他黑心餐廳就不吃了)。如果把每家都吃一遍才確定份量最大的餐廳,會浪費掉太多餐券;然而若只吃了兩三家、就直接選比較高的一家一直吃,我們可能會漏掉真正提供最大份量的那一家餐廳。

解決 Bandit 問題的目標在於──有限的精力中,一部分精力會分配去探索未知的可能(explore)、一部分則利用已知最好的策略不斷採集(exploit),演算法會透過不斷新增的環境數據進行調整,在兩者間尋求平衡、將利益最大化。

這樣的應用有哪些呢?

當一個網站能展示的資訊量有限、卻又不知道使用者喜歡的東西是什麼、該優先顯示哪些內容,才能有最高的點擊率時,我們可以透過增強學習隨時進行優化、最快達到客製化。

無論是 Google 廣告、Facebook 將你可能會最感興趣的好友 PO 文排序在上方、Amazon 呈現你最有興趣的商品,或是網站上線後的 A/B Test,都可以看到增強學習的蹤影。