前言:
大部分的人都一定聽說過 AI( Artificial Intelligence)、ML(Machine Learning)或 DL(Deep Learning),為甚麼呢?因為這是我們的時代中一股巨大的潮流,就像是沒看過豬跑也吃過豬這樣,每個人的談話裡,都要加幾句專業名詞,才覺得自己跟得上潮流。就像每次去聽演講時 ,台上的講者,也是把這些名詞用的虎虎生風,一下 AI來一下 ML去,可是在台下的我們,卻是聽得一頭霧水,而在我們的心中,總是有一個疑問,到底講者在講什麼呢?別擔心在這篇系列文中,我會把自己在百日機器學習中,所學到的東西,具體的描述出來,那現在就跟隨著我的腳步一起走囉。
(一)機器學習介紹:
AI 這個領域,在 1956年的達特茅斯學院中的一次會議時,便被確立了。那目的是甚麼呢?目的是要讓機器和人一樣具有同樣的智能,甚至是超越,只是在很長的一段時間,人們並不知道如何做到這件事,直到 1980年代,機器學習這個方法被發現了,那機器學習跟 AI有什麼關係呢?可以說 AI是目標機器學習是我們達成目標的方法。
學習情境(Scenario):
那在稍微理解甚麼是 ML後,那就可以進入我們的重點了,機器學習很重要的學習情境,那學習情境是甚麼呢?學習情境簡單說就是使用機器學習的方法,而方法有很多種,但大略可以分成監督式學習 (Supervised Learning)和不是監督式學習的方法,不是監督式學習的方法簡單介紹4種,半監督式學習 (semi-supervised Learning)、非監督式學習 (Unsupervised Learning)、 強化學習 (Reinforcement learning)、轉移學習 (Transfer Learning)。
1.監督式學習(Supervised Learning):
監督式學習是目前主流,且具有高準確率的機器學習,不過為什麼具有高準確率呢?是因為在監督式學習裡,我們會給予大量的訓練資料輸入 (input)並指定機器的輸出 (output),也就是標籤 (label),甚麼意思呢?就像是現在有一張圖片是貓咪,我們要告訴機器這張圖片是貓咪 (labels),那讓機器在大量的資料中,找出貓咪圖片的特徵 (features),可能是可愛(?),最後會產生一個最好的 function,那這個 function是被訓練好的,可以去判斷貓咪的AI。那這邊會有人有疑問說,那可不可以減少 label呢?基本上只要不是監督式學習的學習方法,都可以說是減少 label的學習方法(下面4種)。
優點是準確率高,但缺點是需要花很大的功夫,標籤大量的資料。
2.半監督式學習(semi-supervised Learning):
那半監督式學習是介於監督式學習和非監督式學習中的一種學習方法,是在同時具有有標籤的資料和沒有標籤的資料中,進行機器學習的一種方法。舉例來說,你今天想要鑑別貓和狗的不同,但你手中有少量有標籤的數據,大量沒有標籤的數據,你沒有功夫去標籤資料,但在半監督式學習裡,這些沒有標籤的數據,還是對學習是有幫助的。
小提醒,這些大量沒有標籤的數據,本質上還是跟有標籤的數據上是有關連的,像是都是貓和狗的圖片,但只是少量的有標籤,大量的沒標籤。
3.非監督式學習(Unsupervised Learning):
非監督式學習在字面上的意思就是要機器自學,不要人類來告訴機器答案,舉例來說,讓機器看了大量的文章後,可不可以知道單詞的意思呢?或是讓機器看了一大堆動物的圖片後,可不可以自己創造出動物的圖片呢?這邊會附上一個連結,是關於讓 Unsupervised Learning有了重大突破的學者(Ian Goodfellow)一些介紹,有興趣可以看看喔。
非監督式學習通常透過降維(Dimension Reduction)、分群(Clustering)的方式實現,並且非監督式的準確率通常都低於監督式學習。
4.轉移學習( Transfer Learning):
轉移學習也是一種減少 labels的學習方法,我們舉例來說,你今天要做貓和狗的分類,但你今天手上只有少量 labels的數據,大量有 labels和沒有 labels的數據,並且有些數據是跟你要做分類的目標是沒有關聯的,像是這些資料中,混雜進了一大堆 bob、獅子、蛇的圖片,但這些數據在轉移學習中,還是有用的。
會使用到轉移學習,通常是數據很難收集或是要花在標籤的功夫太多,太耗時,太費力了。
5.強化學習(Reinforcement learning):
強化學習是一個跟上述4個學習方法非常不一樣的,在強化學習裡,機器是要跟環境去互動,在互動的過程中,去取得最高的獎勵,或者可以說,機器是在評價中學習 (learning for critics),來取得最優化。這個學習方法很像人類在真實世界所學習的方式,就像我們學習騎腳踏車,我們透過每次的跌倒來學習,經過幾次後,就學會騎腳踏車了 (reward)。目前像是 Alphago或AlphaGo Zero就是有採用這個學習來放進它們的系統中。
增強式學習是透過定義環境(Environment)、代理機器人(Agent)及獎勵(Reward),讓機器人透過與環境的互動,學習如何獲取最高的獎勵。
任務(Task):
task 是指說,你今天在 function的輸出中,你是要輸出甚麼樣子的,像是scalar、數值 (Regression)呢?還是要分類中選擇一個選項 (Classification)?或者是結構性的東西呢 (Structured Learning)?
1.Regression:
regression所輸出的就是一個純量 (scalar),可能是溫度、數量、距離、速度,舉例來說,你要機器預測台南明天的溫度,那你輸入機器昨天和前天的溫度的訓練資料,那它的輸出就是明天的溫度 (scalar)。
2.classification:
classification可為兩類,一類為 Binary Classification,另一類為 Multi-class Classification。第一種 Classification 輸出的時候,是 Yes or No,就是二元的概念,舉例來說,你要訓練出一個可以分辨垃圾訊息的機器,那你就給它大量的訓練資料,告訴它哪一個是垃圾訊息,只要資料夠多,就會自動找出可以分辨垃圾訊息的 function了。第二種 Classification 在輸出時,會有多種 class,可以想像成選項給機器選擇,機器就是要根據你的輸入來選擇正確的輸出,舉例來說,你要機器分辨出新聞的種類,你要告訴它輸入的資料是財經還是政治呢?還是體育呢?你想要機器做出正確的分類,這就需要大量的資料來訓練它。
3.Structured Learning:
Structured Learning 是一個非常複雜的task,可以說你要機器輸出的是一個有結構性的東西,舉例來說,今天有一段語音要給機器辨識,你要機器輸出的是一段文字,這是一個有結構性的東西。基本上,可以說這裡已經是機器學習要解決的非常複雜的問題了。
方法(Method):
method就像是你要給機器解任務時,要選擇什麼的方法去解這個任務,不同的方法就會有不同的結果,那可以分為兩種,Linear Model 和 Non-linear Model。
1.Linear Model:
基本就是線性模型,要去找一個獨立變數和控制變數的關係,或是多個獨立變數和控制變數的關係,這邊已經接近數學上的部份,不在我們今天討論的範圍。
2.Nonlinear Model:
在 Nonlinear Model裡,就包括目前最夯的 Deep Learning,還有SVM、Decision tree、K-NN,這邊就稍微介紹這樣,給大家一些概念。
總結:
通常學習情境不是你能決定的,是看手上的資料是甚麼類型來選擇的,那要解決的問題,看是要解決甚麼的 task,就是什麼的 task,但是在同樣的task中,可以選擇不同的method來做不同的結果,那今天就簡單介紹到這裡,下一章會介紹,機器學習中很重要的資料和評估指標與機器學習的步驟和流程。
最後希望這些講解對大家有所幫助,假如能夠讓大家有所領悟的話,可以幫我按like讓我可以賺咖啡錢喔,我會很開心的 (ゝ∀・)。