ML Lecture 0-1: Introduction of Machine Learning

视频链接:https://www.youtube.com/watch?v=CXgbekl66jc

\qquad這一門課,我們預期可以學到甚麼呢?我想很多同學心理的預期就是:”你可以學到一個很潮的人工智慧“。我知道從今年開始,“人工智慧” 這個詞,突然變得非常非常非常的熱門。大家、政府、Industry,通通都在講 “人工智慧” 這個詞。但人工智慧是甚麼呢?人工智慧其實一點都不是新的詞彙。人工智慧這個詞,Ai 這個詞,Artificial Intelligence 這個詞,在 1950 年代就有了!這個詞意味著甚麼呢?這個詞意味著人類長遠以來的目標:希望機器可以跟人一樣的聰明。在科幻小說裡面,我們看到很多的幻想和期待。在很長的一段時間內,人們並不知道怎麼做到人工智慧這件事情。直到後來,大概 1980 年代以後,有了機器學習的方法。機器學習,顧名思義,從名詞就可以猜出,就是讓機器具有學習的能力。機器學習跟人工智慧有甚麼關係呢人工智慧是我們想要達成的目標,而機器學習,是想要達成目標的手段!讓機器透過學習的方式,它可以跟人一樣聰明。而深度學習和機器學習有甚麼關係呢深度學習就是機器學習的其中一種方法。在有深度學習機器學習之前,人們用什麼樣的方式來做到人工智慧這件事呢?我記得高中生物學告訴我們說,生物的行為取決於兩件事:"一個是後天學習的結果。不是後天學習的結果就是先天的本能”。這對機器來說也是一樣,它怎麼樣表現得很有智慧?要嘛就是透過後天學習的手段,表現得很有智慧;要嘛就是,這是它先天的本能。機器為甚麼會有先天的本能?那個本能就是它的創造者,其實就是人類,幫它事先設定好。

\qquad那麼我們先來看一下生物的本能。講一個跟機器學習一點都沒關係的,我們來講生物的本能。這個是河狸,河狸的特色就是,牠會築水壩把水擋起來。但是河狸怎麼知道要築水壩呢?河狸築水壩的能力是天生的。也就是說,這個河狸是天生的,牠在實驗室裡出生,牠沒有父母教牠怎麼築水壩,但是,牠一生下來,心裡就有一個衝動,就是牠想要築水壩。如果我們用程式語言來描述牠的話,牠內建的程式語言是這樣的:“If牠聽到流水聲,Then牠就築水壩直到聽不到流水聲為止”。所以生物學家就可以欺負河狸,他就用一個揚聲器來播放流水聲。如果把揚聲器放在水泥牆裡面,河狸就會在水泥牆上面放很多的樹枝,在水泥牆上築一個堤,然後想要把揚聲器的聲音蓋住。如果把揚聲器放在地上,河狸就會用樹枝把它蓋住,直到聽不到揚聲器的聲音為止。所以這是生物的本能。

\qquad那機器的本能跟生物的本能其實很像。假設有一天,你想要做一個 Chat-Bot。如果你不是用 Learning 的方式,也不是用機器學習的方式,而是給它天生的本能的話,那像是甚麼樣子呢?你可能會在這個 Chat-Bot 裡面,在這個聊天機器人裡面,設定一些規則,這些規則我們通常稱之為 Hand-Crafted Rules,就是人設定的規則。假設你今天要設定一個對話機器人,它可以幫你打開和關掉音樂的話,那你的做法可能是這樣:“設定一條規則,就是寫程式這樣,如果輸入的句子裡面,看到 Turn Off 這個詞彙,那麼 Chat-Bot 要做的事情就是把音樂關掉”。這個時候,你之後對 Chat-Bot 說。"Please Turn Off The Music.” 或 “Can You Turn Off The Music, Please?”,它就会帮你把音樂關掉。看起來好像很聰明,人家就會覺得,嗯!果然這就是人工智慧。但是如果你今天想要欺負那個 Chat-Bot 的話,你就可以說:"Please Don't Turn Off The Music.”,但是它還是會把音樂關掉。這是個真實的例子,你可以看看你身邊有沒有類似的 Chat-Bot。然後你去真的對它說這種故意欺負它的這種話,它其實是會答錯的。這其實是真實的例子,不要告訴你是哪家公司的產品,這家公司也是號稱他們做了很多 Ai 的東西。不要讓你發現是哪一家的產品,免得被告。用這個 Hand-Crafted Rules 有甚麼壞處呢?它的壞處就是,Hand-Crafted Rules 沒有辦法考慮到所有的可能性,它非常的僵化,而用 Hand-Crafted Rules 創造出來的 Machine,它永遠沒有辦法超過它的創造者,也就是人類。人類想不到的東西,你就沒有辦法寫規則,你沒有寫規則,機器就不知道要怎麼辦。所以一個機器如果只能按照人設定好的 Hand-Crafted Rules,它所有的行為都是 Set 好,它都沒有 Free Style 的。如果是這樣子的話,它就沒有辦法超越創造它的人類。你可能會說,但是你好像看到很多 Chat-Bot,看起來非常的聰明。這些 Chat-Bot,如果是個非常大的 Industry,其實它可以 Hire 成千上萬的工程師這類的職業,以血汗的方式,來建出數以萬計的規則,然後讓它的機器看起來好像很聰明。但是對於中小企業來說,這樣建規則的方式,反而是不利的。所以我認為機器學習的發展,對於比較小規模的企業反而是有利的,因為接下來也不需要 Hire 非常大量的人來幫你想各式各樣的規則。你只要手上有 Data,你可以讓機器來幫你做這件事情。當然怎麼 Collect Data 又是另外一個問題,這個不是我們今天要討論的主題。

\qquad我知道说Ai 這個詞現在非常非常非常的熱門,所以會有各式各樣,奇奇怪怪的東西。我覺得現在常遇到的問題,也许可以用以下這個漫畫來說明,這是個四格漫畫,這個漫畫並不是隨隨便便的一個四格漫畫,這個一塊畫是 Yann LecunShare 在他的 Facebook 上的漫畫。這個漫畫說甚麼呢?現在也一定常常在新聞或者是商展上看到這種東西。有一個 Sales 說,看看我們最新的人工智慧機器人,它就是非常的人工智慧。要 Show 這個系統呢,要搭配一個能言善道的 Sales,加上一個非常非常潮的前端跟外殼,裡面是甚麼沒有人知道。外面的觀眾就問說,它就是用甚麼 Neural 的方法做的嗎?对对对,反正就是,最潮的 Ai 的技術就對了。但是有時候你把它剖開來看,裡面都通通都是 “If” 掉出來這樣。我知道現在,政府、企業他們都說想要推廣 Ai,有時候他們想要推廣的 Ai,其實是這種 Ai。這個其實不是我們現在應該要做的事,如果你要推廣的是這種 Hand-CraftedAi 的話,你怎麼 50 年前不推廣一直到今天才突然做了呢?今天我們要走的不是這個路線,如果是這個路線,它應該是要被 Diss 的。

\qquad我們要做的其實是,讓機器它有自己學習的能力,也就是我們要做的應該是 Machine Learning 的方向。如果講得比較擬人化一點,所謂 Machine Learning 的方向就是你就寫一個程式,然後它讓機器變得很聰明,它就能夠有學習的能力,接下來就像教一個嬰兒或小孩一樣,你並不是寫程式讓它做到這件事,你是寫程式讓它具有學習的能力。接下來你就可以用像教小孩一樣的方式告訴它說,假設你要它學會做語音辨識,你就告訴它,這段聲音就是 “Hi”,這段聲音就是 “How Are You”,這段聲音就是 “Good Bye”。然後希望接下來它就學會了,然後你給它一段新的聲音,它就可以幫你產生語音辨識的結果。或者是如過你希望它學會怎麼做影像辨識的話,你可能不太需要改太多的程式,因為它本身就有學習的能力。你只是需要教它告訴它說,看到這張圖片,你要說這是猴子,看到這張圖片,你要說這是貓,看到這張圖片,你要說這是狗,它就具有影像辨識的能力了。接下來看到它沒有看過的貓,希望它可以認得。

\qquad這是比較擬人化的說法,如果要講得更務實一點的話,Machine Learning 做的事情可以想成是在尋找一個 Function。你要讓機器具有一個能力,這個能力是根據你提供給它的資料,他去尋找出我們要尋找的 Function。那很多我們關心的問題,都可以想成是,我們就是需要一個 Function。舉例來說,語音辨識,在語音辨識這個問題裡面,我們要找一個 Function它的輸入是聲音訊號它的輸出是語音辨識的文字。這個Function非常非常的複雜,有人可能會想說我來用一些寫規則的方式,用一些語言學,讀很多語言學的文獻,然后寫一堆規則做語音辨識。這些事情 60 年代就有人在做了,到現在都還沒做出來。語音辨識太過複雜,這個 Function 太過複雜,不是人類可以寫出來,可以想像的。所以我們需要憑藉機器的力量,幫我們把這個 Function 找出來;或者說假設你要做影像辨識,那你就要找到一個 Function輸入就是一張圖片其實就是圖片裡面的 Pixel(像素),輸出就是這張圖片有什麼樣的東西;或者是這年頭大家都一直在說的 Alphago,如果你要做一個可以下圍棋的 Machine 的話,其實你需要的也就是找一個Function,這個 Function 輸入是圍棋上 19x19 路的棋盤的盤勢,你告訴機器說,在這 19x19 棋盤上,哪些位置有黑子,哪些位置有白子,然後機器就告訴你說,接下來下一步應該要落子在哪裡;或者是你要做聊天機器人,你需要的也是一個 Function,這個 Function輸入就是使用者的 Input,它的輸出就是機器的回應

\qquad以下我們先很簡短的跟大家說明,怎麼樣找出一個Function。找出這個FunctionFramework是甚麼呢?我們以影像辨識為例,我們要找一個 Function,輸入一張圖片,它告訴我們圖片裡有甚麼樣的東西。在做這件事,它的起手式是,你要先準備一個FunctionSet,這個FunctionSet裡面,有成千上萬的Function。舉例來說,這個 Function Set 裡面有一個 F1,你給它看一隻貓,它就告訴你輸出貓,給它看一隻狗,就輸出狗;有一個FunctionF2,它很怪,你給它看貓它說是猴子,你給它看狗它說是蛇。你要準備一個Function Set這個Function Set裡面有成千上萬的Function。這件事情講起來有點抽象,你可能會很懷疑說,這怎麼回事? 怎麼準備成千上萬的 Function?我怎麼把成千上萬的 Function 收集起來變成一個 Function?不過,這我們之後會再講。總之我們先講,假設你手上有一個FunctionSet,其實這個FunctionSet就叫做Model

\qquad有了這個FunctionSet以後接下來第二步機器要做的事情是開始有一些訓練的資料。這些訓練資料告訴機器說,一個好的Function,它的輸入輸出應該長甚麼樣子,有甚麼樣的關係。你告訴機器說,現在在這個影像辨識的問題裡面,如果看到這個猴子的圖,你就要輸出猴子。看到這個貓的圖你就要輸出貓,看到狗的圖你就要輸出狗,這樣才是對。藉由這些訓練資料,你拿出一個Function,機器就可以判斷說這個Function是好的,還是不好的。機器可以判斷一個Function,根據訓練資料判斷一個Function是好的,還是不好的。舉例來說,在這個例子裡面,顯然F1它比較符合Training Data的敘述,它比較符合Training Data給我們的知識,所以F1看起來是比較好的,F2看起來是一個很荒謬的Function。以下這個,我們今天講的這個Task,叫做Supervised。這個學習的情境其實叫做 Supervised Learning 。如果你告訴MachineFunctionInputOutput,這個叫做 Supervised Learning 。之後我們會講到其他不同LearningScenario(情境) 。

\qquad現在機器有辦法決定一個Function的好壞,光能夠決定一個Function的好壞是不夠的,因為在你的Function PoolFunction Set裡面,它有成千上萬的Function,它有無窮無盡,幾乎是無窮。它有無窮的Function,不可勝數的Function,所以我們需要一個有效率的演算法這個有效率的演算法可以從FunctionSet裡面挑出最好的Function。一個一個Function衡量它好不好,太花時間了,實際上做不到,所以我們需要一個好的演算法,去從FunctionSet裡面,挑出一個最好的Function。這個最好的Function,我們把它寫作F*。找出這個F*以後,接下來我們就希望拿它來做一些事情。我們可以拿它來做影像的辨識,輸入一張在Training Data裡沒有看過的貓,然後希望它的輸出也是貓。你可能會問說,機器學的時候沒有看過這隻貓,那怎麼知道在測試的時候找出來的最好的FunctionF*可以正確的辨識這隻貓呢?這個就是,在Machine Learning裡面,非常重要的問題:就是 “機器有沒有舉一反三的能力”?這個我們之後會再講。左邊的部分叫做Training,就是學習的過程,右邊的部分叫做Testing,就是學好以後你就可以拿它來運用,這個是Testing

\qquad所以在整個Machine類的Framework裡面整個 Machine Learning 分成了三個步驟:第一個步驟就是找一個Function訂出一個FunctionSet;第二個步驟就是讓一個Machine可以衡量一個Function是好還是不好;第三個步驟就是Machine有一個自動的方法有一個好的演算法可以挑出最好的Function。所以機器學習到這邊,我們就說完了這樣子。

\qquad所以機器學習就是三個步驟,當然這三個步驟其實異常的簡化了整個Process,講說機器學習只有三個步驟,就好像講說如果我們要把大象塞進一個冰箱,其實也是三個步驟。你怎麼把大象塞進冰箱? 就是把門打開,把大象趕進去,然後把門關起來,然後就結束了。所以說機器學習只有三個步驟就好像是說,把大象放進冰箱,也只需要三個步驟,意思是一樣的。

\qquad接下來的時間我們要講一下,這門課裡面,你可以學到哪些和 Machine Learning 相關的技術。這個是這學期的Learning Map,看起來是有點複雜的,我們一塊一塊來解釋。

\qquad我們先從圖的左上角開始,這個圖的左上角是Regression(回归),甚麼是Regression?Regression是一種 Machine LearningTask。當我們說我們要做 Regression 時的意思是說,我們今天要Machine找出來的Function,它的輸出是一個Scalar,是一個數值,一個Real Number,這個叫做 Regression舉例來說在作業一裡面我們會要你做Pm2.5的預測,也就是說你要找一個Function,這個Function的輸出,就是未來某一個時間,舉例來說,明天上午的Pm2.5Pm2.5是一個數值,是一個Number。所以這個是一個 RegressionProblem。那機器要判斷說,今天這個Function要輸出明天上午的Pm2.5。那明天上午的Pm2.5,你要給它一些額外的資訊,它才能夠猜出明天上午的Pm2.5。你給他的資訊,可能是今天上午的Pm2.5,昨天上午的Pm2.5等等。這就是一個Function, 它吃的是我們給它的,過去的Pm2.5的資料,它輸出的是預測未來的Pm2.5。你要訓練這種Machine,如同我們剛才在講Machine類的Framework裡面講的,你要準備一些訓練資料。甚麼樣的訓練資料?你就告訴他說,今天根據我們過去的,從政府的Open Data上收集來的資料,91號上午的Pm2.5是這個樣子,92號是這個樣子,93號是這個樣子,所以一個好的Function,輸入這樣子的一個Pm2.5,它應該輸出這樣的Pm2.5。給它912Pm2.5913Pm2.5,它應該輸出914號的Pm2.5。收集到夠多這樣的Data,就可以訓練一個可以做氣象預報的系統。

\qquad剛才講的是 Regression ,接下來要講的是Classification分类的问题。那 RegressionClassification的差別是,我們要機器輸出的東西的類型是不一樣的。在 Regression 裡面機器輸出的是一個數值。Classification問題又分成兩種,一種叫做Binary Classification,二元的分類。在二元的分類裡面我們要機器輸出的就是是或否YesNo。那另外一類ClassificationProblemMulti-ClassClassificationMulti-ClassClassification裡面機器要做的事情是要做一個選擇題。你等於是給它數個選項,每一個選項就是一個類別,它要從數個類別裡面選擇正確的類別,這叫Multi-ClassClassification

\qquad我們就為BinaryMulti-Class Classification分別舉一個例子。舉例來說,G-Mail有做Spam Filtering(垃圾邮件过滤)這件事。它自動偵測出垃圾郵件,幫你把它放在垃圾郵件夾內。那它怎麼做到這件事呢?其實我們需要的就是一個Function,這個Function的輸入就是一封E-Mail。當然,要怎麼讓一個Function吃一個E-Mail當作輸入?是你自己要想想看的,這個我們未來再講。這個Function吃一個E-Mail當作輸入,它的輸出就是這封E-Mail是垃圾郵件,還是不是垃圾郵件?你要訓練這樣的Function,怎麼做?很簡單,你就給它一大堆的Data,告訴它說,現在輸入這一封郵件,你應該說它是垃圾郵件。輸入這一封郵件,你應該說它不是垃圾郵件。你給它夠多的這種資料去學,它就可以自動找出一個可以偵測垃圾郵件的Function

\qquad那Multi-Class Classification這邊舉一個文章分類的例子,現在網路上有非常多的新聞,也許也有人会把所有的新聞看完,那你希望機器自動幫你把新聞做分類,怎麼做呢?你需要一個Function,它的輸入是一則新聞,輸出就是這一則新聞屬於哪一個類別。你可以想成每一個類別就是一個選項,政治是一個選項,經濟是一個選項,體育是一個選項。機器要做的事情就是,解這個選擇題。你要訓練這種機器,你就告訴它說,你就準備很多訓練資料,告訴它說 :這篇文章叫做體育,這篇文章你要選政治,這篇文章你要選財經,之後給它新的文章,希望它能給你正確的結果。

\qquad剛才講的,都是你要Machine解的任務。再來要講的,在解任務的過程中,第一步就是要選一個FunctionSet,那選不同的Function Set,你會得到不同的結果。選不同的Function Set就是選不同的ModelModel很多種,舉例來說,最簡單的是LinearModel,我們會花很多時間FocusNon-LinearModel上面。那在Non-LinearModel裡面,其中一個今日最耳熟能詳的,就是Deep Learning。所謂的Deep Learning的意思是说,之後我們會再細講Deep Learning的內容,今天只要知道說,在做Deep Learning的內容時候,我們的Function是特別複雜的,所以它可以做特別複雜的事。舉例來說,它可以做影像的辨識,這個特別複雜的Function,它可以描述這個 Pixel 和它的 Class 之間的關係。你要找這樣子的Function,你就是準備一些訓練資料,給機器去學就可以了。

\qquad用 Deep Learning 的技術,你也可以讓機器學會下圍棋。那在下一節的Task,下一節的Task其實就是一個分類的問題。只是這個分類的問題我們需要一個很複雜的Function,給它的輸入,是一個棋盤的盤式,那輸出就是下一步應該落子的位置。我們知道說,一個棋盤上就是有19x19的位置是你可以落子的,所以今天下圍棋這件事情,你就可以把它想成是一個19x19個類別的分類問題。或者说,你可以把它想成是一個有19x19個選項的選擇題。那你要怎麼訓練機器,讓它學會下圍棋呢?你要收集訓練資料,告訴機器说,現在這個Function的輸入輸出,分別應該是甚麼。看到某樣的盤式,我們應該輸出甚麼樣的Output。那怎麼收集這種資料呢?你可以從人類過去下的棋譜裡面,收集這樣子的資料。舉例來說,你收集了進藤光和社清春下的那一盤棋的棋譜。在那一盤棋裡面,首先首先社清春出手先下5之五,然後大家就非常的訝異;然後進藤光次手再下天元,大家又更加訝異,然後社清春第三手再下五之5,大家就非常非常的訝異。所以你有了這樣子的棋譜後,你就告訴Machine說,如果現在棋盤上有人落子在5之五,那下一步你就落子在天元。如果現在5之五天元都已經有子了,那你就落子在另外一個五之5的位置。然后呢,你給它更多的棋譜,它就可以學會怎麼下圍棋了。

\qquad除了 Deep Learning 以外,還有很多其他的 Machine LearningModel,它也是 Non-LinearModel。這學期會請吴培元老师幫我們講 SVM,剛才我們講的都是 Supervised LearningSupervised Learning 類的問題是,我們需要大量的 Training Data,這些 Training Data 告訴我們說,一個我們要找的 Function,它的 InputOutput 之間有甚麼樣的關係。這個 FunctionOutput,我們常叫做 Label,所以常常聽到說做機器學習需要大量的 Label,指的就是說,如果我們用的是 Supervised 的技術,我們是要讓機器在 Supervised Learning 的这种情境下去學習,我們需要告訴機器,FunctionInputOutput是甚麼。這個Output往往沒辦法用很自然的方式取得,我們必須要憑著人工的力量,把它标注出來。這些FunctionOutput叫做Label,那你要找到這樣的Label,往往需要很大量的Effort(努力)。

\qquad那有沒有辦法減少Label需要的量呢?那是有辦法的!舉例來說,有另外一個 Scenario ,叫做Semi-Supervised LearningSemi-Supervised Learning 的意思是說,舉例來說,假设你今天想要機器鑑別貓和狗的不同,你想要做一個分類器,輸入一張圖片告訴你它是貓或狗。你有少量的貓和狗的Labeled Data,但是同時你又有大量的Unlabeled Data,你有一大堆貓和狗的圖片,但是你沒有力氣去告訴機器說那些是貓,那些是狗。在 Semi-Supervised Learning 的技術裡面,這些沒有LabeledData,它可能也是對學習有幫助,我們之後會再講說,為甚麼這些沒有LabeledData會對學習有幫助。

\qquad那另外一個減少Data用量的方向是Transfer Learning,所谓的Transfer Learning的意思是說,假設一樣我們要做貓和狗的分類問題,我們也一樣只有少量的有LabeledData,但是我們現在有另外大量的Data,這些大量的Data它可能有Labeled,也可能沒有Labeled,但是它跟我們現在要討論的問題是沒有甚麼特別的關係的。我們要分辨的是貓和狗的不同,但是你這邊有一大堆其他动物或動畫的圖片,這個是涼宮春日,這個是御坂美晴。你有一大堆不相干的圖片,它到底可以帶來甚麼樣的幫助?這個就是Transfer Learning要講的問題。

\qquad更進階的是Unsupervised Learning ,在 Unsupervised Learning 裡面,顧名思義,我們就是希望機器學到無師自通。如果在完全沒有任何Label的情況之下,到底機器可以學到甚麼樣的知識?舉例來說,如果我們給機器看大量的文章,在去網路上收集大量的文章很容易,網路上隨便爬,八卦板隨便爬一爬就有。這種機器看過大量的文章以後,它到底可以學到甚麼事情?它能不能夠學會每個詞彙的意思?要讓機器學會每個詞彙的意思,你可以想成是我們要找一個Function,然後你把一個詞彙丟進去,比如說你把Apple丟進這個Function裡面,機器要輸出告訴你說,這個詞彙是什麼意思。也許它用一個向量來表示這個詞彙的各種不同的特性,不同的Attribute。但是現在假如是一個Unsupervised Learning的問題,你現在只有一大堆的文章,也就是你只有詞彙,你只有Function的輸入,沒有任何的輸出,那到底要怎麼解這個問題?

\qquad或者是我們舉另外一個 Unsupervised Learning 的例子,假設我們今天帶機器去動物園,讓它看一大堆的動物。它能不能在看了一大堆動物之後,它就學會自己創造一些動物。這個都是真實的例子,這是從Ian Goodfellow投影片上載下來的。仔細看了大量的動物以後,它就可以自己畫一些狗出來。像它畫的有眼睛長在身上的狗,還有乳牛狗這樣子。像這樣子的一個Task,它也是個Unsupervised LearningProblem。你的Function的輸入,不知道是甚麼,可能是某一個Code,它代表了要輸出圖片的特性,那輸出是一張圖片。你給機器看到的,只有非常大量的圖片,你只有FunctionOutput,沒有FunctionInput。在這種情況下,機器怎麼學會自己生成新的圖片?這個是我們之後會再Cover的問題。

\qquad接下來,我們剛才講的是不同的LearningScenario。在Machine要解的任務上,我們講了RegressionProblem,講了ClassificationProblem。還有一類的問題是你比較少聽過的,這類的問題叫做Structured Learning。這類的問題叫做Structured Learning。甚麼是Structured Learning呢?在Structured Learning裡面,我們要機器輸出的是一個有結構性的東西。剛才在Regression Problem裡面機器輸出幾個數值;在分類的問題裡面機器只是輸出一個選項,它選一個選項;在Structured類的Problem裡面,機器要輸出的是一個複雜的物件。舉例來說,在語音辨識裡面,機器的輸入是一個聲音訊號,輸出的是一個句子,句子是由許多詞彙拼湊而成,它是一個有結構性的Object;或者是說在機器翻譯裡面,你說一句話,然後你輸入中文,你希望機器翻譯成英文,那機器的輸出也是一個句子,這也是有結構性的東西;或者是說,你今天要做的是人臉辨識,你給機器看一張圖片,它會知道說,最左邊是長門,中間是涼宮春日,最右邊這個,不是每個人都知道,這個是朝比奈實玖瑠。它要把這些東西標出來,這也是個Structured LearningProblem

\qquad我知道多數人可能都聽過 Regression ,也聽過Classification,你可能不見得有聽過 Structured Learning 。這時候教授就會直接寫說Machine Learning就是兩大類的問題:RegressionProblem,還有ClassificationProblem。但是說Machine Learning只有RegressionClassificationProblem,就好像是告訴你說,這個是我們熟知的世界,它有五大洲。事實上這個只是真實的世界一個小部分而已,真正的世界其實是這個樣子的,這個是暗黑大陸,可是我們這輩子永遠也到不了的。Structured Learning就像是暗黑大陸一樣,這裏面還有很多很多問題是人類還沒有探究的。事實上最近有一個很潮的技術叫做Gan,這個技術其實就是一個新的Structured Learning的方法,這個我們之後也會提到。

\qquad最後還有一個現在大家都耳熟能詳的,就是Reinforcement LearningProblem。所謂 Reinforcement Learning 的意思是甚麼呢?現在大家都或多或少知道,至少知道它是一個很潮的東西。這個 Reinforcement Learning 其實是一個發展很久的問題,它絕對不是一個新的技術。最近會比較受到重視,一開始是因為DeepmindReinforcement Learning 的技術去玩Akari的遊戲,去玩一些小游戏,在小遊戲上可以痛扁人類。他們現在很厲害,會把Paper發到Nature上去。另外第二個大家都知道的例子,就是Alphago,我們都知道Alphago裡面有用到 Reinforcement Learning 的技術。

\qquad那 Reinforcement Learning 的技術是甚麼呢?我們把它跟 Supervised Learning 的技術比較起來是這個樣子:在 Supervised Learning 的技術裡面,我們會告訴機器正確答案是甚麼。舉例來說,假設你要使用Supervised的方法來訓練一個聊天機器人。那你的訓練方式是這樣,你給機器的Data是這樣:你就告訴機器說,現在使用者說Hello,你就說Hi;現在使用者說Bye Bye,你就說Good Bye。所以機器有一個家教在它的旁邊手把手的教它每件事情,這個是 Supervised Learning 。那 Reinforcement Learning 是甚麼呢?在 Reinforcement Learning 裡面,我們沒有告訴機器正確的答案是甚麼,機器所擁有的只有一個分數就是它做的好還是不好。舉例來說,我們現在要用 Reinforcement Learning 的方法來訓練一個聊天機器人的話,那它訓練的方法會像是這樣:你就把機器放在線上,讓它跟隨便進來的客人對話,講了半天後,最後人就勃然大怒,就把電話掛掉了。機器就學到一件事情:剛才做錯了。它不知道哪邊做錯了,它必須自己回去想一下說到底如何改進,是一開始就不應該打招呼嗎?還是中間不應該罵髒話呢?它不知道,沒有人告訴這件事,它只知道自己做的不好,它要回去反省檢討看看到底是哪一步做的不好。所以機器要在 Reinforcement Learning 的情況下學習,它是需要比較強的Intelligence。所以 Supervised Learning 就是 Learning From Teacher,機器有老師,老師會告訴它每個問題的答案;那 Reinforcement LearningLearning From Critics,它是從評價中去學習的,它只知道自己做的好或不好,但它不知道自己哪裡做得好,它不知道哪裡做得不好,它也沒有正確的答案。Reinforcement Learning 會這麼受到重視就是它比較符合我們人類真正學習的情境。這是你在學校裡面的學習,老師告訴你一個問題的答案。這是在真實社會中的學習,你沒有一個正確的答案,你只有知道,你做的好還是做得不好。如果機器可以做到 Reinforcement Learning ,那它確實是比較Intelligent

\qquad又或者我們用Alphago來當做例子的话,下圍棋來當作例子的话,Supervised Learning 就是告訴機器說,看到這個盤勢你就下5-5,看到這個盤勢你就下3-3Reinforcement Learning 就是机器會跟對手互下,下了好幾百手後,最後贏了。它就知道說這一局棋下的不錯,但到底哪一步是關鍵的位置讓它可以贏?它其實不知道,它只知道贏了,或者是輸了。我們知道說Alphago其實是用Supervised Learning加上Reinforcement Learning的方法去學的。機器先從棋譜,棋譜就是它的老師,有棋譜就可以做 Supervised 的學習,但棋譜沒有很多,所以從棋譜做了 Supervised 的學習以後,接下來它會做 Reinforcement Learning 讓它學得更好。但是 Reinforcement Learning 需要一個對手,你說讓人來當對手的话,人太慢了,人又沒有辦法跟機器下很多盤棋,所以機器的對手是另外一個機器。大家都知道說Alphago就是自己跟自己下棋,然後不斷的進步,指的就是在 Reinforcement Learning 的這個步驟,機器不是跟人下棋,它的對手是另外一個機器。

\qquad最後在這個圖上,大家注意一下不同的方塊,我是用不同的顏色來表示,同樣的顏色指的是同一個類型的事情。這邊的藍色方塊指的是Scenario,指的是學習的情境。通常學習的情境是你沒有辦法自己控制的,舉例來說,為甚麼我們要用Reinforcement Learning?就是我們沒有DataSupervised Learning,所以我們才做Reinforcement Learning。所以之前比如說有學生去面試,那個公司就問,人家問他說你做甚麼,他說我做的是一個 Supervised LearningTask。人家說:“你怎麼不做 Reinforcement Learning 呢? Reinforcement Learning 就是比較厲害啊”。這個時候你就應該要嗆爆他說:如果我今天可以做Supervised LearningTask,我其實就不應該做Reinforcement LearningTaskReinforcement Learning是我們沒有辦法做Supervised LearningTask的時候,我們才做Reinforcement Learning 。不過你面試若這樣講,你大概就不會被錄取就是了。所以這些是不同的 Scenario,不同的Scenario通常不是你自己可以控制的,看你手上有什麼樣的Data,決定你有甚麼樣的Scenario

\qquad那紅色的呢?紅色的是指你的Task,你要解的問題。那你要解的這個問題,隨著你要找的FunctionOutput 不同,有 Regression、有 Classification、有 Structured LearningStructured Learning 你就想成不是 Regression、不是 Classification的問題就是 Structured Learning,簡單這樣想就好了!所以今天在不同的情境下,你都可能要解這個Task。如果今天在 Supervised 類的情況下你有這些 Task,但是在 Semi-Supervised、在 Transfer、在 Unsupervised、在 Reinforcement Learning 的情況下,你也都需要去解這些的 Task

\qquad最後在這些 Task 裡面都有不同的 Model,或者是不同的方法,這邊用綠色的方塊表示。他這邊的意思是說,同樣的Task,我們用不同的方法來解它。所以今天 Supervised Learning 它畫得比較大塊,這個裡面的東西在這四個Task裡面也都有出現。Classification畫得比較大塊,它裡面綠色的這些Box,在這些紅色的Box裡面都有出現。希望大家可以了解這些 Machine Learning 不同的技術他們之間的關聯性。

(To Learn More) ML Lecture 0-1: Introduction of Machine Learning相关推荐

  1. 李宏毅ML -lecture 0 机器学习介绍

    李宏毅ML -lecture 0 机器学习介绍 https://blog.csdn.net/Arron_hou/article/details/87836849

  2. Introduction to Machine Learning

    Introduction to Machine Learning 引言 本系列文章是本人对Andrew NG的机器学习课程的一些笔记,如有错误,请读者以课程为准. 在现实生活中,我们每天都可能在不知不 ...

  3. 台大李宏毅Machine Learning 2017Fall学习笔记 (1)Introduction of machine Learning

    台大李宏毅Machine Learning 2017Fall学习笔记 (1)Introduction of machine Learning 台大李宏毅讲的这门课应该不错,课程链接: http://b ...

  4. ML与Docker:《Deploy Machine Learning Pipeline on the cloud using Docker Container使用Docker容器在云端部署机器学习管道

    ML与Docker:<Deploy Machine Learning Pipeline on the cloud using Docker Container使用Docker容器在云端部署机器学 ...

  5. (To Learn More) ML Lecture 3-1: Gradient Descent

    ML Lecture 3-1: Gradient Descent 视频链接:https://www.youtube.com/watch?v=yKKNr-QKz2Q \qquad好,各位同学大家早,那我 ...

  6. (To Learn More) ML Lecture 1: Regression - Case Study(下)

    ML Lecture 1: Regression - Case Study(下) 视频链接: https://www.youtube.com/watch?v=fegAeph9UaA \qquad li ...

  7. # 吴恩达 · 机器学习笔记(① Introduction to Machine Learning)

    写在前面 在学习Python的时候同步进行吴恩达的机器学习,就像啃书一样,有些视频也需要啃下来.为了之后更好的烟酒生活,为了更舒服地融入新的环境中,那就加油吧!吴恩达机器学习共112章,按一天2节的进 ...

  8. 全球名校AI课程库(25)| MIT麻省理工 · 机器学习导论课程『Introduction to Machine Learning』

  9. 李宏毅机器学习笔记4:Brief Introduction of Deep Learning、Backpropagation(后向传播算法)...

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

最新文章

  1. Shell与ShellScript
  2. 每天一道LeetCode-----计算二叉树的最大深度及最小深度,判断二叉树是否是高度平衡二叉树
  3. Wireshark网络抓包(一)——数据包、着色规则和提示
  4. 阿里云技术白皮书_对阿里重磅发布的云原生架构白皮书的初步解读
  5. C/C++混淆点-左移右移操作符
  6. aws terraform_如何使用Terraform通过Direct Connect扩展AWS基础架构
  7. 创建一个SQL测试数据库 - 消费者数据库
  8. 想快速了解AI各领域的前沿研究成果?可以来这个网站看看 | 资源
  9. DIV+CSS:页脚永远保持在页面底部
  10. C - Copying Books (POJ - 1505)
  11. Unity MRTK(一)
  12. QTreeView设置branch图标大小
  13. pt和px区别 pt是逻辑像素,px是物理像素
  14. TM4C123GLaunchPad教程四_时钟配置
  15. iptable 笔记
  16. Mybatis学习笔记_5、Mybatis动态SQL
  17. (附源码)node.js游戏网站 毕业设计 031726
  18. 实现五子棋的简单人人对战和人机对战的万字详细教程
  19. alexa是什么_Alexa的简要模式是什么?如何打开(或关闭)它?
  20. 2019全国大众点评网数据下载获取

热门文章

  1. java计算筛子概率_使用excel计算骰子输赢概率
  2. Visual Studio 2008 简体中文专业版下载(附序列号)破解
  3. qq人脸更换_随意创造人脸,随手一笔涂鸦变照片,人工智能如今有点可怕啊......
  4. 苹果亮度自动调节怎么关闭_一加8T升级到8192级自动亮度调节:安卓中最好
  5. Spring Security使用记录
  6. OKR目标:组建团队以实现目标 绩效目标
  7. 认清自己的主干,不能大钱小钱都同等抓
  8. ANDROID物联网开发
  9. 7-63 黑白子交换棋局
  10. win8.1 android驱动安装失败,win8.1系统下英伟达驱动安装失败的解决方法