back to index

【生成式AI】快速了解機器學習基本原理 (1/2) (已經略懂機器學習的同學可以跳過這段)


link |
00:00.000
我這一堂課是想要花大概二十分鐘的時間,先複習機器學習的基本概念。假設你都沒有看上課錄影的話,希望你對接下來的課程不會完全跟不上。
link |
00:11.020
這一部分會講得非常簡略,主要的目標是期待大家可以在二十分鐘的時間內對機器學習至少有一點基本的認識,讓你比較能夠跟上往後的課程。
link |
00:23.780
好,我們就開始了。這個課程一開始,不廢話,就告訴你說機器學習是什麼。機器學習就是讓機器自動找一個函式。
link |
00:38.020
什麼意思呢?我們各式各樣的人工智慧的應用,其實需要的就是一個函式。比如說Chair GPT,上週已經跟大家講說Chair GPT就是一個函式,這個函式的輸入是一個句子,它的輸出是這個句子後面應該接哪一個字。
link |
00:58.500
或者是MeJourney,上週也展示過MeJourney的功能了,那MeJourney的輸入是一個句子,輸出是一張圖片。還有很多其他知名的人工智慧應用,比如說AlphaGo,它也是要找一個函式,這個函式的輸入是棋盤上黑子跟白子目前落子的位置,它的輸出是下一步應該落子的位置。
link |
01:22.320
而機器學習這個技術要做的事情,一言以蔽之,就是讓機器自動找一個函式。
link |
01:30.000
隨著我們要找的函式不同,機器學習的技術有不同的分類。如果我們用函式的形式、函式的輸出來做分類的話,基本上有以下幾種。
link |
01:45.100
第一種,Regression,回歸。如果你今天的函式輸出是一個數值,舉例來說在作業一裡面,我們函式的輸出就是一個數值,那這種任務叫做回歸。
link |
01:57.900
這邊舉的例子是,假設你要做一個預測PM2.5的預測器,其實你需要的就是一個函式,這個函式讀進去的是種種跟天氣相關的數值,比如說今天的PM2.5、今天的氣溫、今天的臭氧濃度等等,那它的輸出是明天比如說中午的PM2.5的數值。
link |
02:19.940
總之,輸出一個數值,假設你要找的函式是輸出一個數值,那這個任務就是Regression。假設你要找的函式是要輸出一個類別,那這種任務叫做Classification。
link |
02:36.100
如果你對於輸出一個類別這個概念不太清楚的話,你就想成Classification是要叫機器做選擇題,你提供給機器一些既定的選項,它從既定的選項裡面選一個正確的答案出來。
link |
02:50.920
比如說,我們知道Gmail都有過濾垃圾郵件的功能,那其實過濾垃圾郵件這件事情就是叫機器做一個選擇題,我們要找一個函式,這個函式的輸入是一封郵件,輸出就是兩個選項,是垃圾郵件還是不是垃圾郵件。
link |
03:10.100
所以垃圾郵件過濾是一個分類的問題。很多比較舊的機器學習的教科書會告訴你說,機器學習的分類就是兩大類,一類叫做Regression,輸出一個數值,一類叫Classification,就是做一個選擇題。
link |
03:28.920
事實上,機器學習還有一個更困難的問題,這個更困難的問題叫做Structure Learning,或者中文你可以翻譯成結構化學習。
link |
03:40.280
今天講Structure Learning,也許你不知道在指什麼,其實Structure Learning指的就是叫機器生成有結構的物件,比如說影像、比如說文具、比如說語音。
link |
03:55.000
今天Structure Learning有一個更耳熟能詳的詞彙,就是生成式學習。所謂的生成式學習指的就是叫機器產生有結構的物件。
link |
04:09.040
背後的這個配圖講的是黑暗大陸。我從2015年開始教機器學習,最早的時候機器學習的那門課程是有一個副標題的,它叫機器學習及其生成與結構化。
link |
04:25.500
生成指的不是生成東西的生成,生成指的是deep,指的是說要講deep learning。那結構化指的是什麼呢?指的就是結構化學習,也就是今天大家更熟悉的生成式學習。
link |
04:41.560
那個時候上課的時候就會配這個背景圖,這就是告訴你說,生成式學習是一個很難的技術,它就像是機器學習裡面的暗黑大陸,我們不知道什麼時候才能夠達到生成式學習。
link |
04:57.900
但你知道今天,雖然在獵人裡面,我們不知道什麼時候才會到暗黑大陸,連在都在教堂上停刊了,但是也許人類離生成式學習已經沒有那麼遙遠了。
link |
05:12.240
好,那再來你仔細想想,剛才講了三種機器學習,regression,classification,跟generative learning,跟生成式學習。確GVT是哪一類呢?如果你仔細想想確GVT做的事情,它是給一個句子,然後要判斷說接下來應該接哪一個可能的字。
link |
05:36.440
其實這是一個選擇題啊,它的選項就是全世界所有的字。如果今天它只會生中文,那就把所有中文的字重新取出來,不過確GVT也會生英文跟其他語言,它就是把中文的字跟英文的其他的符號通通都加在一起,當作是它的選項。
link |
05:59.940
所以從這個角度來看,其實確GVT它是一個分類的問題,它的模型解的是一個分類的問題。
link |
06:09.500
但我們再從另外一個角度來看,確GVT給使用者感受的是,你輸入一個句子,它回應你一個句子。雖然這個句子裡面每一個字都是用分類的方法一個一個產生出來的,但它終究產生了一個完整的文句。
link |
06:26.800
所以從使用者感受到的功能而言,你也可以說它是深層式學習。
link |
06:33.100
或更精確一點來講,我們可以說確GVT它要解的是深層式學習的問題,但是把深層式學習這個問題做一下簡化,把它拆解成多個分類的問題。
link |
06:45.640
深層式學習有不同的策略,等一下在下一段影片裡面,我們會講一下深層式學習有什麼樣的策略。
link |
06:54.440
這邊我們先知道說確GVT是深層式學習,只是把深層式學習拆成多個分類的問題來做。
link |
07:03.160
我們說機器學習就是要叫機器找一個函式,機器怎麼找一個函式呢?機器找一個函式可以歸納為三個步驟,每一個步驟我都取一個簡單的名字,讓你比較好記憶。
link |
07:17.580
第一個步驟是設定範圍,第二個步驟是設定標準,第三個步驟是達成目標。
link |
07:26.600
其實在做這三個步驟之前,在找函式之前,我覺得還有一個重要的前置作業,這個重要的前置作業是你要找什麼樣的函數。
link |
07:37.960
這件事情其實跟技術沒有關係,也不是這一門課要探討的重點,但很多人號稱要使用AI的技術往往第一步就卡在這個地方,他不知道他要找什麼樣的函數。
link |
07:51.880
甚至他不知道機器學習就是要找一個函數,所以他根本不知道可以拿機器學習或人工智慧來做什麼。
link |
07:59.680
很多公司都會說,哎呀,我現在就是要導入AI到我的產品裡面,然後就找了一堆號稱懂機器學習的學生來,修過機器學習課程的學生來。
link |
08:11.300
主管就一直跳針說,我要把AI放到我的產品裡面,問他說要做什麼,他也說不出來,他就說,我就是要有一個AI在我的產品裡面,就不斷跳針,每天都換key換特,什麼東西都做不出來。
link |
08:21.620
最後他就會說,哎,臺灣沒有人才啊。所以,第一件事情就是你要做人工智慧相關的應用,要導入人工智慧的技術,第一個你要想的問題其實是你要找什麼樣的函數。
link |
08:37.920
這個問題與技術無關,決定以後才有辦法往下走。比如說,假設你就是要做一些跟寶可夢的應用,我要找一個函數,它的輸入是一隻寶可夢,輸出是它的戰鬥力,這個數值代表它的戰鬥力,這是一個函數,你先定好這個目標,才有辦法開始往下走。
link |
08:57.300
或者是我今天要找的是另外一個函數,這個函數就是讀一張圖片,它的輸出就是這個圖片,是寶可夢還是數碼寶貝,這是一個分類的問題,也可以,但總之你要決定你要找什麼樣的函數,才有辦法往下走。
link |
09:12.160
現在我們就決定說,我們要找一個函數,輸入一隻寶可夢,輸出是它的戰鬥力,接下來就進入尋找函數三步驟。
link |
09:22.180
第一步驟,設定範圍,也就是說我們要定出一個候選函式的集合,之後我們就從這個集合裡面去挑函式出來。
link |
09:33.540
這個候選函式的集合有另外一個名字,其實就是model,所以當你聽到說機器學習的模型的時候,這個模型指的就是一個候選函式的集合。
link |
09:46.360
其實在深度學習中,類神經網路的結構,比如說convolutional network,比如說RNN,比如說transformer等等,指的就是不同的候選函式的集合。
link |
10:01.440
講得更具體一點,當你定候選函式的集合的時候,你做的事情在概念上像是這個樣子,就是我們要找可以吃一張圖片、輸出就是一個戰鬥力,也就是一個數值的函數。
link |
10:17.120
我們先把全世界的這種函數統統都找出來,但是我們要定出一個範圍,我們只從這個範圍裡面去選函數,我們不從全天下的函數裡面去選,我們只從一個固定的範圍裡面去選。
link |
10:30.020
這個框出範圍這件事情,其實就是類神經網路的結構。
link |
10:35.920
因為今天時間有限,所以我們不細講為什麼類神經網路的結構就是一個候選函式的集合。
link |
10:43.700
如果你對機器學習沒有概念,先把這件事情印記下來,類神經網路的結構,CNN、RNN、transformer,指的就是候選函式的集合。
link |
10:54.240
這個候選函式的集合,我們等一下用一個代號,大H,來表示它。如果你想知道為什麼類神經網路的結構就是一個候選函式的集合,請見上課錄影。
link |
11:07.760
第一步就講完了,現在進入第二步,設定標準。
link |
11:14.460
設定標準就是,我們現在已經定出一個候選函式的集合了,我們要從裡面挑出一個最好的,那什麼叫做最好呢?
link |
11:24.360
所以我們要定出平良函式好壞的標準。這個平良函式好壞的標準又有一個名字叫做Loss,Loss越小就代表函式越好,Loss越大就代表函式越差。
link |
11:40.220
那怎麼定這個Loss呢?這個Loss就是要由你根據我們現在的問題自己決定。
link |
11:47.500
我們現在要做寶可夢戰鬥力的預測,你隨便從路邊撿了一個函式,你從你的函式的集合裡面撿了一個函式叫做F1,它丟進這三隻寶可夢,它這個玉三家。
link |
12:01.860
這是玉三家嗎?不是,這不是玉三家,我說錯了,不過沒有關係。丟進三隻寶可夢,然後它就會給三個機器預測出來的戰鬥力。
link |
12:14.060
但是這個函式做得多好呢?我們不知道。要知道函式做得好壞,你必須要有標準答案。
link |
12:22.620
所以你必須把這三隻寶可夢去給寶可夢專家,這個是大木博士,做一下標註。
link |
12:32.420
這邊的標註的意思就是專業人士鑑定一下這三隻寶可夢的戰鬥力,所以現在有了標準答案。
link |
12:42.260
有了標準答案以後,你就可以根據你現在手上F1這個函式的輸出來判斷它跟標準答案的差距。
link |
12:50.980
比如說,第一個例子,差距是2,第二個例子,這是傑尼龜,差距是1,第三個例子,這是比塔球,差距是12。
link |
13:00.340
那把所有的差距通通加總起來,其實就代表了函式F1的好壞,因為這個差距越大,就代表函式越不好,差距越小,就代表這個函式越好。
link |
13:14.620
那衡量差距這件事情,你其實可以把它想成我們有一個函式叫做大L,那這個大L的輸入不是一個數值,它的輸入是一個函式。
link |
13:27.260
大L本身是一個函式,但它的輸入又是一個函式,它做的事情就是計算這個函式它得到的輸出,根據我們手上有的資料,它得到的輸出跟標準答案之間的差距。
link |
13:40.700
那因為這個大L它是一個衡量函式好壞的函式,它本身也是一個函式,所以我們通常又叫它Loss Function。
link |
13:50.340
那這邊大家要注意的事情是,這個大L的計算過程是取決於你手上有的這些資料,取決於你來定這個衡量好壞標準的時候的資料,這些拿來定衡量好壞標準的資料就叫做訓練資料。
link |
14:08.460
而這個大L是跟訓練資料有關的,我們要計算這個距離的時候,你需要有這些訓練資料才能夠計算距離,你的訓練資料不同,這個大L的定義,這個Loss Function的定義,其實就會不一樣。
link |
14:23.060
那至於要怎麼定Loss Function,可以根據你手上的資料有各式各樣的變化,那我們現在講的是一個最直觀的,我們有一堆寶可夢,每一隻你都找大木博士幫你鑑定它正確的戰鬥力,所以你可以定出這個大L,就是計算你的function的輸出跟正確答案之間的距離。
link |
14:46.060
那假設是另外一個狀況呢?假設另外一個狀況是這種狀況叫做semi-supervised learning,只有部分的寶可夢有請大木博士鑑定,剩下的一些寶可夢你在路邊隨便抓的,你來不及找專家鑑定,或者專家很忙,沒有人有空幫你鑑定,所以就抓了一堆寶可夢放在這邊,但是不知道它的戰鬥力。
link |
15:09.420
那在這個情況下,你有沒有辦法利用這些沒有標註的、沒有戰鬥力正確答案的寶可夢呢?那就要看你怎麼定你評量的標準了。舉例來說,你可以把你的評量標準定成這個樣子,如果一隻寶可夢它有正確的戰鬥力,那我們就把它丟到F1裡面,看看今天韓式的輸出離正確的戰鬥力距離有多少。
link |
15:38.420
但要是有寶可夢沒有正確答案,那怎麼辦?我們可以定一些假設,比如說這邊定一個假設是長得像的寶可夢戰鬥力就要一樣。
link |
15:52.020
那當然這邊這個假設不一定是對的,你可能會問說什麼叫長得像?這兩隻長得像嗎?當然你直覺會覺得長得蠻像的,但是如果你在做影像辨識,直接把這兩張圖疊在一起,他們其實不像,一個看左邊一個看右邊嘛。
link |
16:06.420
所以如果你看它們在像素上的相似度,其實也是不像的。假設我們有某些方法知道說這兩隻長得蠻像的,這兩隻長得蠻像的,也許這個假設蠻合理的,長得像的寶可夢戰鬥力要一樣。
link |
16:20.920
所以一個好的韓式,它還要有另外一個條件,就是把這兩隻長得像的寶可夢丟進去,它們的距離、它們輸出的戰鬥力的預測值要越接近越好。
link |
16:32.180
在這個例子裡面,F1給這兩隻寶可夢明明同樣是皮卡丘,只是一個往左掉一個往右掉,非常不一樣的戰鬥力,那這個韓式就不是一個好的韓式。
link |
16:46.180
所以我們可以定義不一樣的評量韓式的標準,根據我們手上的訓練資料。如果你今天手上的訓練資料很多是沒有標註的,那你就可以定另外一種標準。
link |
16:58.180
我一方面如果有一些資料是有正確答案,就算跟輸出的距離,跟這個正確答案的距離。
link |
17:07.180
那如果有一些寶可夢我沒有標準答案,那就看兩隻長得像的寶可夢它的差距有多少。
link |
17:14.180
差距大,Loss就大,差距小,Loss就小。所以今天你可以根據你的資料,靈活地去定你評量韓式的標準。
link |
17:24.180
那這邊的技術就非常非常多,就不是我們今天在二十分鐘內可以講的。
link |
17:29.180
那我之所以講這些,只是要告訴你說,這個標準是你根據資料定的。
link |
17:34.180
至於要怎麼定,怎麼樣定才最有效的,長得像的寶可夢是不是戰鬥力就要一樣,這要問你自己。
link |
17:42.180
接下來就進入第三個步驟,第三個步驟就是要找出一個最好的韓式。
link |
17:48.180
那什麼叫最好呢?指的最好就是我們在第二步驟的時候定出來的Loss,Loss越小就代表這個韓式越好。
link |
18:00.180
那這個找出最好的韓式的過程又叫做最佳化,它的英文是Optimization,概念上的操作是這個樣子。
link |
18:09.180
就是我們有一個韓式的集合,現在我們把它寫作H。接下來我們就把H裡面的每一個韓式通通帶進Loss function裡面,去看看計算出來的Loss有多大。
link |
18:27.180
那計算出來Loss最小的那一個就是我們最終的答案。
link |
18:32.180
那如果要寫成數學式的話,你可能會寫成這樣,我們要找一個韓式,這個韓式要讓L of F最小,那這個F是大H裡面的一個成員。
link |
18:47.180
當然實際上的做法,你不會一個一個韓式的去試它,因為通常你的集合裡面韓式的數量可以說是無窮多的,所以你要有一個比較好的演算法去找一個Loss比較低的韓式。
link |
19:03.180
所以這邊只有好的演算法去找Loss低的韓式,那這個就不是我們二十分鐘內可以講的細節。
link |
19:12.180
如果你想要知道到底這個演算法,找Loss低的韓式的演算法是怎麼運作的,第一個你要知道的關鍵字叫做Gradient Descent,那它是一個很general的很通用的方法,不是只有Deep Learning可以用,很多不同的模型都可以用得上。
link |
19:32.180
那把Gradient用在Deep的Neural上,你還需要另外一個技巧,這個技巧叫做Backpropagation,那這些都不是我們在二十分鐘內可以講的,我就只是把影片連結留在這邊給大家自己參考。
link |
19:48.180
好,所以到目前為止呢,我們已經講了找出韓式的三步驟,那很快複習一下,第一步驟,設定範圍定出候選韓式的集合,而深度學習的那些類神經網路的結構指的就是韓式的集合。
link |
20:07.180
比如說CNN代表某種集合,Transformer代表另外一種集合,但這些集合不一定要用Deep Learning,不一定要用類神經網路來描述,它也可以有別的描述的方法,比如說Decision Tree也是另外一種描述韓式集合的方法。
link |
20:24.180
那接下來你要設定標準評定那個韓式的好壞,那設定標準需要使用到你手上的資料,那根據你手上的資料的不同,你可能會用Supervised Learning的方法,你可能會用Semi-Supervised Learning的方法,也就是你在定這個標準的時候會考慮沒有標注的資料。
link |
20:45.180
那最後呢,就達成目標,找出最好的韓式,那有很多不同的演算法,比如說Gradient Descent是一種演算法,那Gradient Descent裡面又有不同的變形,比如說Addon、Addon W等等。
link |
20:57.180
或者是基因演算法,又是另外一種最佳化的方法,又是另外一種找最好的韓式的方法,那達成目標的手段有不止一個。
link |
21:08.180
那知道找韓式有三個步驟其實是很重要的一件事情,因為對你來說它的重要性是什麼呢?當今天有人告訴你一個機器學習的專有名詞的時候,如果你知道他指的到底是一個韓式的集合,評量韓式好壞的標準,還是找出最好韓式的方法,你就不會誤判一個技術的作用。
link |
21:31.180
舉例來說,幾年前AlphaGo紅的時候,有人就沒事寄給我一篇文章,這個文章的title就是Reinforcement Learning要取代Deep Learning了。
link |
21:43.180
他就說,聽說你的專長是Deep Learning,我告訴你,你要失業了,Reinforcement Learning要取代Deep Learning了。
link |
21:50.180
但是我一看title就知道說,這篇文章根本就是在胡扯。為什麼?Reinforcement Learning跟Deep Learning根本就是不同面向的技術。Reinforcement Learning是評定韓式好壞的一種標準,就是我們不按照人給的正確答案,人沒有提供正確答案,而是靠著reward來評定韓式好壞。
link |
22:13.180
所以Reinforcement Learning是一個評定韓式好壞的標準,你告訴我說Reinforcement Learning可以取代Supervised Learning,我覺得你講的話還比較合理一點,因為很多時候我們找不到人類的標注,找不到專家來幫我們提供正確答案,所以我們需要用到Reinforcement Learning的技術。
link |
22:31.180
但是它並不會取代Deep Learning,因為Reinforcement Learning,你找一個韓式的好壞之前,你還是要先定一個候選韓式的集合,你還是會用到Deep Learning的技術來劃出你選擇韓式的範圍,然後你才能做Reinforcement Learning。
link |
22:50.180
你可以知道AlphaGo並不是沒有用Deep Learning,它仍然是用Deep的類神經網路的架構,只是它評量韓式好壞的標準,使用Reinforcement Learning。
link |
23:01.180
而Reinforcement Learning也需要有找出最好韓式的演算法,比如說你仍然要使用Gradient Descent,只是Gradient Descent用在Reinforcement Learning的時候,有一些不同的名字,比如說叫做Policy Gradient,但它終究是Gradient Descent。
link |
23:18.180
所以今天聽到一個新的技術,你只要能了解這個技術到底是在設定範圍,還是設定標準,還是達成目標,那你就比較不會被奇怪的報章雜誌的講法矇蔽,你在看論文的時候也會比較快,那你可以有正確的嘗試去判斷一個技術,它到底是做什麼的,它可能有什麼樣的影響力。
link |
23:40.180
接下來我要再稍微講一下,在這三個面向上,你知道每年都有滿坑滿谷的新的方法被提出來,而在這三個面向上,當我們提出一個比較好的方法的時候,我們指的好到底是什麼意思?