課程一:簡介 – 李宏毅 | 機器學習

課程一:簡介 - 李宏毅 | 機器學習

Introduction

舉例介紹

1980 年之前,有人工智慧的想法,但不知道怎麼做
1980 年之後,有機器學習的方法出現,顧名思義就是怎麼讓機器可以進行學習

人工智慧:是我們要達成的目標。 機器學習:是我們要達成目標的手段。 深度學習:就是機器學習的一種方法。

機器除了後天學習的手段,不然就是先天本能。先天本能就是人類幫他事先設定好的。

例如:河狸竹水壩是++先天的本能++。父母沒有教他,但他一出生就有一個衝動,就是想要築水壩。

if 聽到流水聲,then 竹提防直到聽不到流水聲

測試:使用揚聲器播放流水聲 -> 河狸會一直蓋樹枝,直到揚聲器的聲音不見為止

例如:人類設定好 Chatbot 的天生本能。

If there is 'turn off' in the input, then 'turn off the music'

==hand-crafted rules==:人類所建立的規則

我們以為這個就是人工智慧,但是有破綻,例如我們說

測試:Please don’t turn off the music -> 但是音樂依然會被關掉

Hand-crafted 的缺點:

     永此規則作出的 hand-crafted chatbot,他無法超越他的創造者:人
     規則非常的僵硬,無法考量到所有的可能性


-> 解決辦法:使用機器學習,不需要再建立數以萬計的規則,尤其對於中小型企業比較有利。只要搜集足夠的資料即可。

什麼是 Machine Learning

利用程式教他機器學習的能力。給機器資料讓機器有能力,由機器去尋找一個 function。

例如:給他 Hello 的語音,希望機器能夠學起來,之後他就可以學起來並且發出此段聲音。 f(語音)=”How are you” 例如:給他 圖片,說這個是猴子、貓、狗,之後看到類似圖片可以自己說出這是什麼動甕。 f(圖片)=”Cat” 例如:玩棋盤遊戲(AlphaGo) f(棋盤)=”下一個移動的位址” 例如:Dialogue System f(How are you)=”I am fine”

準備一個 function 的 set,裡面有成千上萬的 function。假設你手上有一個 set,就叫做 model,接著開始有一些訓練的資料,告訴機器這些資料之間的關係。

例如:在這個輸入資料當中,你告訴機器,如果看到猴子的圖,就要輸出猴子。

藉由這些訓練資料,你拿出一個 function,機器就可以判斷這個 function 是好的,還是不好的。
-> 機器可以根據訓練資料判斷一個 function 是好的,還是不好的
-> 判斷哪個 function 比較符合我們資料的知識。

但是因為 function 有成千上萬,光能夠決定有一個好的 function 的好壞是不夠,因為在你的 function pool 和 function set 裡面,他有成千上萬、無窮無盡的 function。
-> 還要有一個有效率的演算法,可以從有成千上萬 function 的 function set 當中挑出最好的 function。
若測試一個一個是否合適的 function ,實際上是做不到,所以我們需要一個好的演算法。

假設我們找出的 function 叫做 f*,我們接著就可以把他拿來做影線的辨識。

給他 training data 當中沒有出現過的貓,希望機器可以輸出貓。

重要問題:機器有沒有舉一反三的能力出現
machine-learning-ntu-1
作者ヤンヤン攝於 2020 / 03 / 19。
左圖:training,為訓練的過程
右圖:testing,為訓練結果拿出來的應用

機器訓練的三步驟:

     找出 function,訂出一個 function set
     讓一個 machine 可以衡量一個
function 是好還是不好
     讓 machine 有一個自動的方法,有一個好的演算法可以挑出最好的 function。

這三個步驟異常簡化整個 process,就如同大象塞進冰箱好像也可以簡化成 3 個步驟解決。

Learning Map 架構圖

machine-learning-ntu-1
作者ヤンヤン攝於 2020 / 03 / 19。

名詞解釋:

  1. Regression 是一種 Machine Learning 的 task,輸出的是數值。

我們今天要 machine 找出來的 function,他的出出會是一個 scalar,是一個 real number。 例如:預測 PM 2.5 的預測,也就是說你要找一個 function,其輸出會是未來時間的 PM 2.5 的值。 -> 機器要判斷說輸出明天早上的 PM 2.5,需要給他資訊,可能是今天或昨天的 PM 2.5 的資料。

  1. Classification 我們要的機器出出東西的類型和 Regression 不一樣。在 Classification 當中有分成兩種輸出。 a. Binary Classification:我們要機器輸出「是」、「否」 b. Multi-class Classification:你給他選擇題和數個選項,每個選項是一個類別,樹的裡面選擇正確的類別。

例如:GMail 有作 Spam filtering,會自動把垃圾郵件放入製郵件夾當中。 -> 我們需要一個 function,function 的輸入是一個 email -> 想要訓練這個 function 判斷這封郵件是垃圾郵件還是不是垃圾郵件,方法很簡單,給他一大堆 Data,說這封是一個垃圾郵件,另外一個說這個不是一個垃圾郵件,給他一大堆這樣的東西艮他去學,他就可以自動分辨出是否這封是垃圾郵件例如:文章分類。希望可以讀完所有新聞,需要把文章分類,但是網路上有很多新聞,如何做呢? -> 你需要一個 function ,他的輸入是一則新聞,輸出就是這個新聞屬於哪個類別。可以思考說每一個類別就是一個選項。政治是一個選項,經濟是一個選項,體育是一個選項。 -> 你希望做的事情就是解開至個選擇題,你給他很多資料做 Training Data,這篇是體育的,這篇是政治的,這篇是財經的,希望他訓練之後,可以給出正確的結果。

步驟一:你的 machine 要解開的任務是什麼?
步驟二:在解任務中,你要選的 function set,選不同的 function set,你會得到不同的結果。選不同的 function set,就是選擇不同的 model

最簡單的是 linear model,但大多時間花在 Non-linear Model 上面,其中最有名的是==Deep Learning==

Deep learning 的 function 特別負責,所以可以做特別複雜的事情。例如影線辨識的工作,便是這個 pixel 和他的 class 之間的關係。-> 只要給一些資料給 function 去學習就可以了。

例如:下圍棋,這個屬於一個分類問題。但是這個問題我們需要一個複雜的 function,給他的輸入是一個棋盤的格式,那輸出就是下一步應該落子的位置。 -> 可以想成是 19X19 個類別分類的問題,也可以想是有 19X19 選項的問題,或是想成有 19X19 個選項的選擇題。 -> 你要輸入資料,告訴機器說現在這個 function 的輸入輸出分別應該是什麼。看到什麼樣的盤勢,我們應該輸出什麼樣的 output

另外還有 SVM 等等 Non-lineat Model。

什麼是 Label

以上為==superlized==類的 Training Data,這些 Training Data 告訴我們我們要找的 function 當中,他的 input 和 output 之間有什麼樣的關係。

這樣的 output,我們常稱作==lable==。意思是指說如果我們用 superlize 技術,讓機器在 superlize 情境下學習,告訴機器 function 的 input 和 output 是什麼,output 網舞沒有辦法取得,用人工的力量把它標注出來。但要找到這樣的 label,往往是需要很大量的努力。

semi-supervised learning

例如:想要做分類貓和狗的問題,你目前有少量的貓和狗已經有 labeled 的圖片,但是另外有大量的 unlabeled data

transfer learning

例如:想要做分類貓和狗的問題,你目前有少量的貓和狗已經有 labeled 的圖片,但其他有大量的 data 可能有 labeled 也有可能沒有被 labeled,

unsupervised learning

我們希望機器學習到無師自通,到底機器可以學習到怎麼樣的知識。

例如:讓機器看過大量的文章之後,機器是否可以學會每一個詞彙的意思。 可以想成你把一個詞彙 Apple 丟進入 function 當中,也許他用一個向量來表示這個詞彙的不同的特性,但現在只有一大堆未分類的文章,要如何解開這個問題。 例如:代機器人去動物園看一大堆的動物,是否機器人可以再看一大堆的動物之後,他就可以學會自己創造一些動物。 你只有給機器大量的圖片,只有 output 沒有 input,在這樣的情況下機器如何學會自己生成新的圖片。

Structured Learning

機器輸出有結構性的東西。

在 Regression 裡面機器只是輸出一個選項。而 Structured Learning 是輸出一個複雜的物件 例如:語音辨識裡面,機器輸入是一個訊號,輸出是一個句子,輸出是字的合成,是一個有結構性的 object。 例如:機器翻譯,你輸入是一個句子,他輸出的是英文。 例如:人臉辨識當中,你輸入一張圖片,輸出這個人臉的名字。

其實我們知道的以上的方法,只是 Regression Classification,實際上 Structured Learning 如同「暗黑大陸」,有很多不知道的東西。

machine-learning-ntu-1
作者ヤンヤン攝於 2020 / 03 / 19。

Reinforcement Learning

在 Supervised 機器當中,我們會告訴機器正確答案是什麼,我們使用 Supervised 方法訓練聊天機器人。你現在說 Hello,機器人就說 Hi:你現在說 Bye bye,機器人就說 Good bye。
-> 如同家教一般手把手教他所有事情。

而 Reinforcement Learning 的話,比較像是你直接讓機器人上限,讓他直接和人對話,如果人到最後生氣掛斷電話,機器人就知道錯了,必須要有知識才可以。
-> 必須從評價當中去學習,他不知道他哪裡做得好,哪裡做得不好。也沒有正確的答案。
-> 比較符合人類學習的過程。

例如:alphaGo 裡面有使用到 Reinforcement Learning 的技術。 如果是 Supervised,就會是如果你看到這個盤勢就下 5-5,你看到那個盤勢就下 3-3。 如果是 Reinforcement Learning 的話,就是下了好幾百首之後,機器就贏了。 而 AlphaGO 是以 Supervised Learning 和 Reinforcement Learning 的方法下去學習的。 -> 先以 Supervised 的方式去學習,棋譜是他的老師,之後用 Reinforcement Learning,讓他學習的好。

relation beetween terminology

同種顏色方塊代表同一種事情。

machine-learning-ntu-1
作者ヤンヤン攝於 2020 / 03 / 19。

藍色:scenario,指的是「學習的情境」,學習的情境是你沒有辦法控制的。

例如:為什麼我們要做 Reinforcement Learning,因為沒有資料,所以才做 Reinforcement Learning 是因為沒有辦法做 Supervised Learning,所以才做 Reinforcement Learning

橘色:隨著你要解的問題隨著你要找的 function output 的不同,有 regression、Classification,而 Structured 就想成不是前面兩者的問題即可。所以今天在相同的情境下,你都需要解開這個任務。

今天在 Supervised 下你需要去解這些任務,而你在 semi-supervised、transfer、unsupervised、Reinforcement 之下也需要去解這些。

綠色:這些不同的 task 當中有不同的 method。

參考資料:
李宏毅 - ML Lecture | Youtube
Sakura-gh - ML Lecture 筆記 | Github