back to index
ML Lecture 0-1: Introduction of Machine Learning

link |
好,那這一門課,我們預期可以學到什麼呢?
link |
我想多數同學心裡的預期就是,你可以學到一個很潮的人工智慧。
link |
直到說從今年開始,人工智慧這個詞突然變得非常非常非常熱門,大家,政府,industry,通通都在講人工智慧這個詞。
link |
但人工智慧是什麼呢?人工智慧其實一點都不是新的詞彙。人工智慧這個詞,AI這個詞,Future Intelligence這個詞,在1950年代就有了。
link |
那這個詞意味著什麼呢?這個詞意味著一個人類長遠以來的目標,希望機器可以跟人一樣的聰明。
link |
在科幻小說裡面,我們看到很多這樣的幻想和期待。
link |
那在很長一段時間裡面,人們並不知道怎麼做到人工智慧這件事情,不知道要怎麼做,直到後來,大概1980年代以後,有了機器學習的方法。
link |
機器學習顧名思義,你從名字就可以猜出,它就是讓機器具有學習的能力。
link |
所以機器學習跟人工智慧它們之間有什麼關係呢?人工智慧是我們想要達成的目標,而機器學習是想要達成目標的手段,希望機器透過學習的方式,它可以跟著一樣聰明。
link |
而深度學習和機器學習有什麼關係呢?深度學習就是機器學習的其中一種方法。
link |
那在有深度學習機器學習之前,人們用什麼樣的方式來做到人工智慧這件事呢?
link |
你想想看,我記得高中生物學告訴我們說,生物的行為取決於兩件事,一個是後天學習的結果,不是後天學習的結果,就是前天的分。
link |
所以對機器來說也是一樣,它怎麼樣表現得很有智慧,要嘛就是透過後天學習的手段表現得很有智慧,要嘛就是這是它前天的本能。
link |
那機器為什麼會有前天的本能,那個本能就是它的創造者,其實就是人類幫它事先設定好。
link |
那我們先來看一下生物的本能,講一個跟機器學習一點都沒有關係的東西,我來講生物的本能。這個是河狸,那河狸的特色就是它會築水壩,把水擋起來。
link |
但是河狸怎麼知道要築水壩呢?河狸築水壩的能力是天生的,也就是說,假設一個河狸它天生,它在實驗室裡面出生,它沒有父母教它怎麼築水壩。
link |
但是它一生下來,它心裡就有一個衝動,就是它想要築水壩。
link |
它真的就是想要築水壩,那如果我們用程式語言來描述它的話,它內建的程式語言是這樣的,
link |
例如它聽到流水聲,它就築水壩直到聽不到流水聲為止。所以生物學家就可以欺負河狸,它就用一個揚聲器來播放流水聲。
link |
那如果它把這個揚聲器放在水泥牆裡面,河狸就會在水泥牆上面放很多的樹枝,在水泥牆上面築一個體,然後想要把揚聲器的聲音蓋住。
link |
你把揚聲器放在地上,河狸就會用樹枝把它蓋住,直到聽不到揚聲器的聲音為止。所以這是生物的本能。
link |
那機器的本能跟生物的本能其實也很像。假設有一天你想要做一個缺壩,如果你不是用人類的方式,你不是用機器學習的方式,而是給它天生的本能的話,那像是什麼樣子呢?
link |
它可能就會在這個缺壩裡面,在這個聊天機器人裡面設定一些規則,這些規則我們通常就稱之為Handcrafted Rules,就是人設定的規則。
link |
那假設你今天要設定一個對話機器人,它可以幫你打開和關掉音樂的話,那你的做法可能是這樣,你設定一條規則,你就寫程式,兩行就寫程式。
link |
如果書的句子裡面看到Turn off這個詞彙,那缺壩要做的事情就是把音樂關掉。
link |
這個時候呢,你之後對缺壩說,Please turn off the music,or Can you turn off the music please,它都會幫你把音樂關掉,看起來好像很聰明,人家就會覺得說,果然這就是人工智慧。
link |
但是如果你今天想要欺負那個缺壩的話,你就可以說,Please don't turn off the music,但是它還是會把音樂關掉。
link |
這是個真實的例子,你可以看看你身邊有沒有這種類似的缺壩,然後你去真的對它說這種故意欺負它講這種話,它其實是會答錯的。
link |
這不是真實的例子,我不要告訴你說它是哪一家公司的產品,那家公司也是號稱他們做了很多黑暗的東西的,不要讓你發現是哪一家產品免得被告。
link |
好,那用這個Handcrafted Raw有什麼樣的壞處呢?它的壞處就是,Handcrafted Raw你沒有辦法考慮到所有的可能性,它非常的講話。
link |
而用Handcrafted Raw所創造出來的machine,它永遠沒有辦法超過它的創造者,也就是人類。
link |
人類想不到的東西,你就沒有辦法寫規則,你沒有寫規則,機器就不知道要怎麼辦。所以一個機器如果它只能夠按照人類所設定好的Handcrafted Raw,它做的行為都是非好,它都沒有freestyle,如果是這樣子的話,它就沒有辦法超越創造它的人類。
link |
那你可能會說,但是你好像看到很多checkout看起來非常的聰明。這些checkout,如果你是一個非常大的industry,其實它可以hire成千上萬的工程師engineer,用血汗的方式來建出數以萬計的規則,然後讓它的機器看起來好像很聰明。
link |
但是對於中小企業來說,這樣子建規則的方式反而是不利的。所以我認為機器學習的發展,對比較小規模的企業反而是比較有利的,因為接下來不需要再hire非常大量的人來幫你想各式各樣的規則,你只要手上有data,你可以讓機器來幫你做這件事情。
link |
當然怎麼collect data又是另外一個問題,這不是我們今天要討論的主題。那我知道說,因為AI這個詞現在非常非常的熱門,所以會有各式各樣奇奇怪怪的東西。
link |
我覺得現在非常常遇到的一個問題,也許可以用以下這個漫畫來說明。這是一個四格漫畫,而這個漫畫並不是隨隨便便的一個四格漫畫,這個漫畫是Yann LeCun的ShareShare在他的Facebook上的漫畫。
link |
這個漫畫說什麼呢?他說,現在你一定常常在新聞或者是商城上看到這種東西,就有一個sales說,看看我們最新的人工智慧機器人,它就是非常的人工智慧。
link |
那這種系統要搭配一個能延散到的sales,加上一個非常非常潮的前端跟外殼。它裡面是什麼沒有人知道,外面的觀眾就問說,它就是用什麼Neural的方法做的嗎?哦,對對對,反正就是最潮的AI的技術就對了。
link |
但是有時候你把它剖開來看,你把它剖開來看,然後裡面就通通都是一幅掉出來這樣子。但是我就說現在,我知道說政府啊企業啊都說想要推廣AI,那有時候他們想要推廣的AI,其實是這種,其實是這種AI。
link |
那這個其實就不是我們現在應該做的事。如果你要推動,如果你要推廣的是這種handcrafted的AI的話,你怎麼五十年前不推廣,一直到今天才突然做的?今天我們要走的不是這個路線。如果是這個路線,它應該是要被递死的。
link |
那我們要做的其實是讓機器它有自己學習的能力,也就是我們要做的應該是machine learning的方向。那如果講的比較擬人化一點,所謂machine learning的方向就是,你寫一個程式。
link |
那這非常擬人化的講法就比較像是片片麻瓜的講法這樣子。你就寫一個程式,然後讓機器變得很聰明,它就能夠有學習的能力。接下來呢,你就像教一個嬰兒教一個小孩一樣的教它。
link |
你並不是寫程式讓它做到這些事,你是寫程式讓它有學習的能力。然後接下來呢,你就可以用像教小孩的方式,教它告訴它說,假設你要教它學會做語音辨識,你要告訴它說,這段聲音就是hi,這段聲音就是how are you,這段聲音就是goodbye。
link |
希望接下來它就學會了,你給它一段新的聲音,它就可以幫你產生語音辨識的結果。或者是如果你希望它學會怎麼做影像辨識的話,那你可能不太需要改太多的程式,因為它本身就有學習的能力。
link |
你只需要教它,你就告訴它說,看到這張圖片,你要說這是猴子,看到這張圖片,你要說是貓,看到這張圖片,你就說是狗,它就具有影像辨識的能力了。接下來看到它沒有看過貓,希望它可以認得。這是比較擬人化的說法。
link |
如果說要講得更務實一點的話,machine learning做的事情,你可以想成就是在尋找一個function。你要讓機器具有一個能力,這個能力是根據你提供給它的資料,它去尋找出我們要尋找的function。
link |
很多我們關心的問題,都可以想成是我們就是需要一個function。舉例來說,語音辨識。在語音辨識這個問題裡面,我們要找一個function,它的輸入是聲音訊號,它的輸出是語音辨識的文字。
link |
這個function非常非常的複雜。有人可能會想說,我來用一些寫規則的方式,讀很多語言學的文獻,然後寫一堆規則,然後做語音辨識。這件事情60年代就有人做,到現在都還沒有做出來。
link |
語音辨識太過複雜,這個function太過的複雜,不是人類所可以寫出來,可以想像。所以我們需要憑藉著機器的力量,幫我們把這個function找出來。或者是說,假設你要做影像辨識,那你就是要找一個function,輸入就是一張圖片,其實是圖片裡面的pixel,然後輸出就是這張圖片裡面有什麼樣的東西。
link |
或者是,這年頭大家都一直在說AlphaGo,如果你要做一個可以下圍棋的machine的話,其實你需要的也就是找一個function,這個function的輸入是圍棋上19x19路的棋盤的盤勢,你告訴機器說,在這19x19的棋盤上,哪些位置有黑子,哪些位置有白子,然後機器就告訴你說,接下來下一步應該落子在哪裡。
link |
或者是你要做聊天機器人,那你需要的也是一個function,這個function的輸入就是使用者的input,它的輸出就是機器的回應。
link |
那以下我們先很簡短的跟大家說明怎麼樣找出這個function,而找出這個function的framework是什麼呢?我們以影像辨識為例,我們要找一個function,輸入一張圖片,它告訴我們說圖片裡面有什麼樣的東西。在做這件事,它的起手式是你要先準備一個function的set,這個function的set裡面有成千上萬的function。
link |
舉例來說,這個function的set裡面有一個f1,你給它看一隻貓,它就告訴你輸出貓,給它看一隻狗,它就輸出狗。有一個functionf2,它很怪,你給它看貓,它說是猴子,你給它看狗,它說是蛇。
link |
你要準備一個function set,這個function set裡面有成千上萬的function。這件事情講起來有點抽象,你可能會很懷疑說,這怎麼回事,怎麼準備成千上萬的function,我怎麼把成千上萬的function收集起來變成一個function的port呢?這個我們之後會再講。總之,我們先假設你手上有一個function的set,其實這個function的set就叫做model。
link |
有了這個function的set以後,接下來第二步機器要做的事情是,它有一些訓練的資料。這些訓練資料告訴機器說,一個好的function,它的輸入輸出應該長什麼樣子,有什麼樣的關係。
link |
你告訴機器說,現在在這個影像辨識的問題裡面,如果看到這個猴子的圖,你要輸出猴子,看到貓的圖就要輸出貓,看到狗的圖就要輸出狗,這樣才是對的。
link |
只有這些訓練資料,你拿出一個function,機器就可以判斷說,這個function是好的還是不好的。機器可以判斷一個function,根據訓練資料判斷一個function是好的還是不好的。
link |
舉例來說,在這個例子裡面,顯然F1它比較符合訓練資料的敘述,比較符合訓練資料給我們的知識,所以F1看起來是比較好的,F2看起來是一個很荒謬的function。
link |
以下這個,我們今天講的這個task,叫做supervised,這個學習的情境,其實叫做supervised learning,如果你告訴machine,function的input和output,這個叫做supervised learning,之後我們會講到其他不同的learning scenario。
link |
現在機器有辦法決定一個function的好壞,然後光能夠決定一個function的好壞是不夠的,因為在你的function pool,在function set裡面,它有成千上萬的function,它有無窮無盡,幾乎是無窮,它有無窮的function,不可生孰的function。
link |
所以我們需要一個有效率的演算法,這個有效率的演算法,可以從function的set裡面,挑出最好的function,一個一個function來衡量它好不好,太花時間了,實際上做不到,所以我們需要有一個好的演算法,去從function的set裡面,挑出一個最好的function。
link |
這個最好的function,我們把它寫作F star,找出這個F star以後,接下來我們就希望拿它來做一些事情,我們就可以拿它來做影像的辨識,輸入一張在training data裡面沒有看過的貓,然後希望它的輸出也是貓。
link |
大家可能會問說,怎麼讓機器,它學的時候還沒有看過這隻貓,那你怎麼知道說,在測試的時候找出來這個最好的function F star,可以正確辨識這隻貓呢?這個就是在我們訓練裡面非常重要的問題,就是機器有沒有G1版3的能力,這個我們之後再講。
link |
左邊這個部分叫做training,就是學習的過程,右邊這個部分叫做testing,學好以後,你就可以拿它來做應用,這個是testing。
link |
所以在整個Machine Learning的framework裡面,整個Machine Learning分成了三個步驟,第一個步驟就是,找一個function,定出一個function的set。
link |
第二個步驟就是,讓Machine可以衡量一個function是好還是不好。第三個步驟是,讓Machine有一個自動的方法,有一個好的演算法,可以調出最好的function。
link |
所以機器學習到這邊,我們就說完了這樣子,也許這整個學習的課你都不需要聽了。所以機器學習就是三個步驟。當然這三個步驟其實異常的簡化了整個process,講說機器學習只有三個步驟。
link |
像我講說,如果我們要把大象塞進冰箱,其實也是三個步驟。這個大家知道嗎?就是你怎麼把大象塞進冰箱,就是把門打開,把大象趕進去,然後把門關起來,然後就結束了這樣子。
link |
所以說機器學習只有三個步驟,其實就好像是說,把大象放進冰箱也只需要三個步驟,意思是一樣的。
link |
接下來的時間我們要講一下,在這門課裡面,你可以學到哪些和機器學習相關的技術。這個是這學期的learning map,看起來是有點複雜的,我們一塊一塊來解釋。
link |
我們先從這個圖的左上角開始。這個圖的左上角是regression,什麼是regression?regression是一種machine learning的task,當我們說我們要做regression的時候,意思是說,我們今天要machine找出來的function,它的輸出是一個scanner,是一個數值,是一個real number,這個叫做regression。
link |
舉例來說,在作業一裡面,我們會要你做pm2.5的預測,也就是說,你要找一個function,這個function的輸出就是未來某一個時間,舉例來說,明天上午的pm2.5。
link |
那pm2.5是一個數值,是一個number,所以這個是一個regression的problem。機器要判斷說,今天這個function要輸出明天上午的pm2.5,你要給它一些資訊,它沒有辦法憑空猜出來,你要給它一些額外的資訊,它才能夠猜出明天上午的pm2.5。
link |
那你給它的資訊可能是今天上午的pm2.5,昨天上午的pm2.5等等,所以這就是一個function,它吃的是我們給它的過去的pm2.5的資料,它輸出的是預測未來的pm2.5。
link |
那你要訓練這種machine,如同我們剛才在講machine learning的framework裡面講的,你要準備一些訓練資料,什麼樣的訓練資料?你就告訴它說,今天根據我們過去的從政府的open data上所收集下來的資料,9月1號上午的pm2.5是這個樣子,9月2號是這個樣子,9月3號是這個樣子。
link |
所以一個好的function,輸入這樣子的pm2.5,它應該輸出這樣的pm2.5,給它9月12號pm2.5,9月13號pm2.5,它應該輸出9月14號的pm2.5。
link |
你收集到夠多這種data,你就可以訓練一個可以做氣象預報的系統。
link |
好,剛才講的是regression,那接下來要講的是classification,分類的問題。這個regression和classification的差別就是,我們要機器輸出的東西的類型是不一樣的。
link |
在regression裡面機器輸出的是一個數值,在classification裡面機器輸出的是,假設classification的問題要分成兩種,一種叫做binary的classification,二元的分類。在二元分類裡面我們要讓機器輸出的就是是或否,yes或no。
link |
那另外一類classification的problem叫motor class的classification,在motor class的classification裡面機器要做的事情是它要做一個選擇題,你等於是給它數個選項,每一個選項就是一個類別,它要從數個類別裡面選擇正確的類別,這叫motor class的classification。
link |
好,那我們就為binary和motor class的classification分別舉個例子。舉例來說,Gmail有做spam filtering這件事,它會自動偵測出垃圾郵件,幫你把它放到垃圾郵件夾裡面。
link |
它怎麼做到這件事呢?其實我們需要的就是一個function,這個function的輸入就是一封email,當然要怎麼讓一個function吃一個email當作輸入,是你要自己想看看的,這個我們未來再講。
link |
那這個function吃一個email當作輸入,它的輸出就是這封email是垃圾郵件還是不是垃圾郵件。你要訓練這樣的function怎麼做?很簡單,你就給它一大堆的data,告訴它說現在輸入這封郵件,你應該說它是垃圾郵件,輸入這一封郵件,你應該說它不是垃圾郵件。
link |
你給它夠多的這種資料去學,它就可以自動找出一個可以偵測垃圾郵件的function。
link |
那multiclass classification這邊舉一個文章分類的例子,現在網路上有非常多的新聞,也許沒有人會把所有的新聞看完,那你希望機器自動幫你把新聞做分類,怎麼做呢?
link |
你需要的是一個function,它的輸入是一個新聞,輸出就是這個新聞屬於哪一個類別。你可以想成說每一個類別就是一個選項,政治是一個選項,經濟是一個選項,體育是一個選項。技巧做的事情就是解這個選擇題。
link |
你要訓練這種機器,你就告訴它說,你準備很多訓練資料,包括這篇文章叫做體育,這篇文章你要選政治,這篇文章你要選財經,之後給它新的文章,希望它就可以給你正確的結果。
link |
剛才講的都是你要怎麼去解的任務。再來要講的是,在解任務的過程中,第一步就是要選一個function set,選不同的function set,你會得到不同的結果。
link |
選不同的function set就是選不同的model,model很多種,舉例來說,最簡單的是linear的model,我們會花很多時間focus在nonlinear的model上面,在nonlinear的model裡面,其中一個大家最耳熟,今日最耳熟能詳的就是deep learning。
link |
所謂的deep learning的意思是說,之後我們會再細講deep learning的內容,今天你只要知道說,在做deep learning的時候,我們的function是特別複雜的,所以它可以做特別複雜的事。
link |
複雜的事,舉例來說,它可以做影像的辨識,這個特別複雜的function,它可以描述這個pixel和它的class之間的關係,你要找這樣的function,你就是準備一堆訓練資料,給機器去學就可以了。
link |
那用deep learning的技術,你也可以讓機器學會下圍棋,在下圍棋這個test裡面,下圍棋這個test其實就是一個分類的問題,只是這個分類的問題我們需要一個很複雜的function,給它的輸入是一個棋盤的盤式,輸出就是下一步應該落子的位置。
link |
那我們知道說,今天這一個棋盤上就是有19x19的位置是你可以落子的,所以今天下圍棋這件事情,你就可以把它想成是一個19x19個類別的分類問題,或者是你可以把它想成是一個有19x19個選項的選擇題。
link |
那你要怎麼訓練機器讓它學會下圍棋呢?你要收集訓練資料,告訴機器說,現在這個function的輸入輸出分別應該是什麼,看到某樣的盤式,我們應該輸出什麼樣的output。
link |
那怎麼收集這種資料呢?你可以從人類過去下的棋譜裡面收集這樣的資料。舉例來說,你收集了靖騰光和射青春下的那一盤棋的棋譜。
link |
在那一盤棋裡面,射青春出手先下5-5,然後大家就偶爾非常的訝異,然後靖騰光次手再下天元,大家又更加訝異,然後射青春第三手再下5-5,大家就非常非常的訝異。
link |
所以你有了這樣一個棋譜以後呢,你就告訴我們訓說,如果現在棋盤上有人落子在5-5,那下一步你就落子在天元。如果現在在5-5和天元都已經有子了,那你就落子在另外一個5-5的位置,然後你給他更多的棋譜,他就可以學會怎麼下圍棋了。
link |
除了deep learning以外,還有很多其他的machine learning的model,它也是non-linear的model。如同我剛才講的,這學期會請吳佩源老師來幫我們講SDN。
link |
剛才我們講的都是supervised learning,supervised learning的問題是我們需要大量的training data,這些training data告訴我們說一個我們要找的function,它的input和output間有什麼樣的關係。
link |
這個function的output我們常叫做label,所以常會聽到說做機器學習要大量的label,指的就是說,如果我們用的是supervised learning的技術,我們是要讓機器在supervised learning的這種情境下做學習,我們需要告訴機器function的input和output是什麼。
link |
output往往沒有辦法用很自然的方式取得,我們必須要憑著人工的力量把它標註出來,這些function的output我們叫做label,你要找到這種label,往往需要很大量的effort。
link |
那有沒有辦法減少label需要的量呢?那是有辦法的,舉例來說,有另外一個scenario叫做semi-supervised learning,那semi-supervised learning的意思是說,舉例來說,假設你今天想要讓機器鑑別貓和狗的不同,你想要做一個分類器,輸入一張圖片,它告訴你說是貓還是狗。
link |
那你有少量的貓和狗的label的data,但是同時你又有大量的unlabeled data,你有一大堆貓和狗的圖片,但是你沒有力氣去告訴機器說哪些是貓,哪些是狗。
link |
那在semi-supervised learning的技術裡面,這些沒有label的data,它可能也是對學習有幫助的,這個我們之後會講說,為什麼這些沒有label的data對學習會有幫助。
link |
那另外一個減少data用量的方向是transfer learning,所謂的transfer learning的意思是說,假設一樣我們要做貓和狗的分類問題,我們也一樣只有少量的有label的data,但是我們現在有大量的data,這些另外大量的data,這些大量的data,它可能有label也可能沒有label,但是它跟我們現在要考慮的這個問題是沒有什麼特別的關係的,我們要分辨的是貓和狗的不同。
link |
但是你這邊有一大堆其他動物的圖片,動畫的圖片,這個是涼宮春日,這個是御坂美琴,你有這一大堆不相干的圖片,它到底可以帶來什麼樣的幫助,這個就是transfer learning要講的問題。
link |
好,那更進階的是unsupervised learning,在unsupervised learning裡面,顧名思義我們就是希望機器學到無私自通,如果在完全沒有任何label的情況下,到底機器可以學到什麼樣的事情。
link |
舉例來說,如果我們給機器看大量的文章,要收集大量的文章很容易,網路上隨便爬,八卦版隨便爬一爬就有了,讓機器看過大量的文章以後,它到底可以學到什麼事情,它能不能夠學會每一個詞彙的意思。
link |
那要讓機器學會每一個詞彙的意思,你可以想成是我們要找一個function,然後你把一個詞彙丟進去,比如說你把apple丟進這個function裡面,機器要輸出告訴你說這個詞彙是什麼意思,也許它用一個向量來表示這個詞彙的各種不同的特性不同的attribute。
link |
但現在假如是一個unsupervised learning的問題,你現在只有一大堆的文章,也就是說你只有詞彙,你只有function的輸入,沒有任何的輸出,那你到底要怎麼解決這個問題?
link |
或者是我們舉另外一個unsupervised learning的例子,假設我們今天帶機器去動物園,讓它看一大堆的動物,它能不能夠在看了一大堆動物以後,它就學會自己創造一些動物。那這個都是真實的例子,這是從Bianca Ferro的投影片上載下來的,機器看了大量的動物以後,它就可以自己畫一些狗出來,像它畫的有眼睛長在身上的狗,還有乳牛狗這樣子。
link |
那像這樣的task,它也是一個unsupervised learning的法本,你的function的輸入呢,不知道是什麼,可能是某一個code它代表了要輸出的圖片的特性,那輸出是一張圖片,那你給機器看到的只有非常大量的圖片。
link |
只有function的output,沒有function的input,在這個情況下,機器怎麼學會自己生成新的圖片,那這個是我們之後會再cover的問題。
link |
好,那接下來呢,我們剛才講的是不同的learning的scenario,那在machine learning,在machine學習的任務上,我們講了regression的法本,講了transformation的法本。那其實還有一類的問題是你比較少聽過的,這類的問題呢,叫做structure learning。
link |
那什麼是structure learning呢?在structure learning裡面,我們要機器輸出的是一個有結構性的東西,就剛才在regression的法本裡面機器輸出只是數字,在分類的問題裡面機器只是輸出一個選項,它選一個選項。
link |
在structure learning的法本裡面,機器要輸出的是一個複雜的物件,舉例來說,在語音辨識裡面,機器的輸入是聲音訊號,輸出是一個句子,那句子是由很多詞彙拼湊而成,它是一個有結構性的object。
link |
或者是說,在機器翻譯裡面,你說一句話,然後你輸入中文,你希望機器翻成英文,那機器的輸出也是一個句子,這也是有結構性的東西。或者是說,你今天要做的是,比如說人臉辨識,你給機器拍一張圖片,它要知道說,最左邊這是長門,中間這個是涼宮春日。
link |
最右邊這個是,不是每個人都知道,這個是昭比奈十九流。然後它要把這些東西標出來,這也是一個structure learning的法本。
link |
我知道說,其實多數人可能都聽過regression,也聽過classification,你可能不見得有聽過structure learning,通常教授說到,甚至有教授書就直接寫說,machine learning就是兩大類的問題,regression的法本,還有classification的法本。
link |
但是,說machine learning只有regression和classification的法本,就好像告訴你說,這個是我們所熟知的世界,它有五大洲,但事實上,這個只是真實的世界的一個小部分而已。
link |
真正的世界其實是這個樣子的。這個是暗黑大陸,可是我們這輩子永遠也到不了的。那structure learning就像是暗黑大陸一樣,這裡面還有很多很多問題是人們還沒有探究的。
link |
事實上,最近有一個很潮的技術叫做GAN,它唸起來其實更像是個案式聲音,所以路上常常會聽到有人一直講個案式聲音,其實在討論這個技術。
link |
像這個技術其實就是一個新的structure learning的方法,這個我們之後也會提到。其實最後還有一個現在大家都非常耳熟能詳的,就是reinforcement learning了。
link |
所謂reinforcement learning的意思是什麼呢?這個reinforcement learning,現在大家都或多或少都知道它,至少知道它是一個很潮的東西。但這個reinforcement learning,即使是一個發展很久的問題,它絕對不是一個新的技術。
link |
最近會比較受到重視的一開始,是因為這個DeepMind拿reinforcement learning的技術去玩Atari的遊戲,去玩一些小遊戲。小遊戲上可以碰電人類,他們現在都很厲害,可以發到Nature上面去。
link |
另外第二個大家都知道的例子,就是AlphaGo,我們都知道AlphaGo裡面有用到reinforcement learning的技術。那reinforcement learning的技術是什麼呢?我們把它和supervised learning的技術比較起來的話是這個樣子。
link |
在supervised learning的技術裡面,我們會告訴機器正確答案是什麼。舉例來說,假設你要用supervised的方法來訓練一個聊天機器人,那你的訓練方式是這樣,你給機器人data這樣,你就告訴機器說,現在使用者說了hello,你就說hi,現在使用者說了byebye,你就說goodbye。
link |
機器有一個人當他的家教,在他旁邊手把手的教他每一件事情,這個是supervised learning。那reinforcement learning是什麼呢?在reinforcement learning裡面,我們沒有告訴機器正確的答案是什麼。機器所擁有的只有一個分數,就是他做的好還是不好。
link |
舉例來說,我們現在要用reinforcement learning的方法來訓練一個聊天機器人的話,那他訓練的方法會像是這樣,你就把機器放到線上,讓他跟隨便進來的客人對話,然後講了半天以後,最後人就勃然大怒,就把電話掛掉了。
link |
那機器就學到一件事情就是,嗯,剛才做錯了。他不知道哪邊做錯了,他必須要自己回去想一想說到底要如何改進。是一開始就不應該打招呼嗎?還是中間不應該罵髒話了,什麼之類的。
link |
他不知道,他mirror到他只知道自己做得不好,他就要回去反省檢討看看到底是哪一步做得不好。可是機器要在reinforcement learning的情況下學習,他是需要比較強的intelligence。所以這個supervised learning就是learning from teacher,機器有老師,老師會告訴他每一個問題的答案。
link |
那reinforcement learning呢,他是learning from critic,他是從評價中去學習的。他只知道他做得好不好,但他不知道他哪裡做得好,他不知道他哪裡做得不好,他也沒有正確的答案。
link |
那reinforcement learning這麼受到重視就是,他比較符合我們人類真正的學習的情境嘛,對不對?這是你在學校裡面的學習,老師告訴你每個問題的答案,這是在真實社會中的學習,你沒有一個正確的答案,你只有知道你做得好還是做得不好而已。如果機器可以做到reinforcement learning,那他確實是比較intelligent。
link |
那或者是我們用alpha go來當作例子的話,下圍起來當作例子的話,supervised learning就是告訴機器說,看到這個盤勢你就下5-5,看到這個盤勢你就下3-3。reinforcement learning就是機器就是跟一個對手互下,就下了好幾把一手以後,最後贏了,他就知道說,嗯,這一局其實下得不錯。
link |
但是到底是哪一步是關鍵的位置讓他可以贏,他其實不知道,他只知道贏了或者是輸了。我們知道說alpha go其實是用supervised learning加上reinforcement learning的方法去學的,機器先從棋譜,棋譜就是他的老師,有棋譜就可以做supervised的學習,但是棋譜不用很多,所以從棋譜做supervised的學習以後,接下來他會做reinforcement learning,讓他學得更好。
link |
但是reinforcement learning也需要一個對手,那你說讓人來當對手的話,人太慢了,人又沒有辦法跟機器下很多盤棋,所以機器的對手是另外一個機器,大家都知道說alpha go就是自己跟自己下棋,然後不斷的進步,但是就是在reinforcement learning的這個步驟,機器不是跟人下棋,他的對手是另外一個機器。
link |
最後在這個圖上,大家注意一下不同的方塊,我是用不同的顏色來表示,同樣的顏色代表說今天不同的方塊指的是同一個類型的事情,這邊的藍色的方塊指的是scenario,指的是學習的情境。
link |
通常學習的情境是你沒有辦法自己控制的,舉例來說,為什麼我們要reinforcement learning,就是因為我們沒有data做supervised learning,所以我們才做reinforcement learning。
link |
然後我知道reinforcement learning現在聽起來很吵,因為它用在alpha go裡面,所以現在什麼樣的task你有用到reinforcement learning,你就可以到處亂講一些什麼,這個alpha go已經去了,alpha go已經敗了,其實就是用reinforcement learning的技術就是說alpha go已經什麼東西,所以就會變成說好像要用reinforcement learning比較吵。
link |
所以之前比如說有學生去面試,然後那公司就問,人家問他說你做什麼,他說我這個是一個supervised learning的task,人家說你怎麼做reinforcement learning呢,reinforcement learning就是比較厲害的。
link |
那這個時候你就應該要強暴他說,如果我今天可以做supervised learning的task,我其實就不應該做reinforcement learning的task,就reinforcement learning是我們沒有辦法做supervised learning的task的時候,我們才做reinforcement learning。
link |
如果你面試這樣講,你大概就不會被錄取就是了。
link |
所以這邊是不同的scenario,那不同的scenario的話不是你自己可以控制,看你的手上有什麼樣的data,決定你有什麼樣的scenario。
link |
那紅色的是指你的task你要解的問題,那你要解的這個問題隨著你要找的function的output的不同,有regression,有test location,有structure learning。
link |
所以今天在不同的情境下,你都有可能要解這個task,解這個task,解這個task。
link |
如果今天在supervised learning的情況下你有這些task,但是在semi-supervised,在transfer,在supervised,在reinforcement learning的情況下,你也都需要去解這些task。
link |
最後呢,在這些task裡面都有不同的model或者是不同的方法,這邊用綠色的方塊來表示。
link |
他這邊的意思是說,同樣的task我們用不同的方法來解它。
link |
所以今天supervised learning他畫得比較大塊,這個裡面的東西在這四個task裡面也都出現了。
link |
而且task location畫得比較大塊,他裡面綠色的這些buffer在這些紅色的buffer裡面都有出現。
link |
這就是這個Machine Learning不同的技術,他們之間的跨界性。