好,我們這邊再重新看一個這個我們看過的例子說,我們今天要做錢幣的分類。
我們做錢幣分類的時候,我們之前想象我們是怎麼樣做到機器學習的,我們先收集一堆錢,這- 些錢我們有它的大小
我們有它的重量,然後把它都測量好,測量好以後還標說這個是10cent還是1cent- 還是5cent的
然後把這些標好的資料,我們收集好的資料,統統好,例如說我們收集了200顆錢,那這2- 00筆資料統統都
餵給機器學習的這個演算法,去得到一個g。
然後這個g,g用在什麼?用在我們的這個販賣機裡面 以後每一個新的錢投下來,我們都用這個 同樣的g。
那這樣的學習方式叫做Batch,OK,Batch是成批的我整批整批 把我的資料餵給繼續學習的演算法。
好一次塞給它好像丟一本書給它,它自己去裡面翻自己去裡面 學,這個式子Batch的這種演算法。
Batch演算法有很多的應用,例如說,好如果我們餵給機器一批說,我們已經收集好的- 這是一堆
電子郵件,然後它們到底是不是垃圾郵件,這樣的資料給機器的話,機器就得到一個我們未來- 可以使用的 這個垃圾郵件的過濾器。
那或者我們醫院裡面有一堆病歷資料,這些病人有沒有 癌症我們已經知道,那餵給機器的話我們就得到一個這個癌症的偵測或者分類器。
那又或者今天不一定是監督式的,我們可能餵給機器一批這個銅板的資料,我們不告訴它這是- 什麼銅板,
繼續自己去做分區的動作,或者餵給他一堆病人資料,我們不告訴它說這是什麼樣的 病人,繼續去做分群的動作。
那這樣都是成批成批這個Batch Learning的方式。
那它是在機器學習裡面最典型最常見的一種有點像跟機器溝通
的方式,你怎麼餵資料給機器就相當於人在教機器的時候,跟機器溝通的這個方式。
好,但是這是不是唯一的方式呢?我們想一個應用說我們的垃圾郵件裡面
我們是真的說,那我們就餵一批資料給機器,然後我們的垃圾郵件
篩選器就不動了嗎?就是我們已經選好g了,g就不動了嗎? 好像我們現在在日常生活中的應用不見得是這個樣子,
我們的應用可能是什麼樣子,我們應用可能說,誒,今天我收到一封郵件
收到一封郵件的時候,我說,誒,那垃圾郵件過濾器它到底適不適合這個郵件,那它就自動幫- 我判斷啦,
自動幫我判斷以後,如果它判斷錯了我就告訴它說,誒,你判斷錯了這個 例如說它說這是垃圾郵件我說這個不是,或者它說這不是垃圾郵件我說這是
好所以這樣的一個流程,垃圾郵件一封一封的進來
然後我們一封一封的告訴機器說我們要的是什麼,當然我們希望機器越來越準確。
比如說有2個事情,一個是機器學習的這個hypothesis這個g,是一直在變動的,
一封新進來我們告訴它新的資訊,它可能就要變動一下,下一次希望能夠告訴我們正確答案。
然後再來,我們是一封一封的
把我們的資料一筆一筆的告訴它,我們並不是說,誒,我今天已經收集了1000封郵件,它- 是不是垃圾郵件
的資料我整個餵給機器,沒有,它是一封一封的進來一封一封的進來之後我們一封一封的告訴- 它答案。
好這樣子循序的機器學習的方式,我們一般叫做online learning,會有人叫做線上學習。
好也就是說它是這個按順序,按順序一筆一筆來的, 跟我們之前這個學過的機器學習的一些方法有什麼關係
呢?例如說大家記得,Perceptron Learning Algorithm,我們上次學的
它做什麼事情?它每一輪選一個出來看看 對不對,對的話就不做事,不對的話就做一個這個更正的動作。
好所以PLA這樣實際上很容易用在 線上學習的這個溝通的方式上面。
什麼意思?今天我也是每次來一封新的啊
來一封新的,那麼,我做了預測,做完預測以後如果我做預測是對的那麼就沒事,如果我做預- 測是錯的
我就做像我們之前PLA那樣的這個更新的動作,那實際上可以證明這樣的方法
這樣PLA的變形在online的這個protocol這樣的溝通方式上面也是有用的。
PLA可以我們雖然說之前是說,我們已經餵了100筆資料給它然後電腦自己去選,哪一個- 做錯了它就修正
哪一個做錯了開始修正,那實際上在online這樣一筆一筆餵資料方式裡面PLA也是- 有用的。
然後另外一個是什麼呢?另外一個我們之前提到reinforcement learning增強式學習
通常是一筆一筆這個學到東西的,為什麼?因為我們每次是得到部分的資訊那你說
那這個我們不可能說一次告訴我們的狗3件事說,這個,這個坐下來是不是對的?
上廁所是不是對的?還是握手是不是對的?我們不可能一次告訴我們的狗很多的咨詢或者- 很多的X 很多的輸入。
我們一次一定是它在這個狀態下,好握手有沒有正確或者,或者是不是一個很好的行為等- 等等等。
所以通常reinforcement learning的資料也是一筆一筆進來 的,它會比較接近這個在online的protocol
上面使用,好那我們追求事情是什麼?在這裡 我們希望的是我們每一輪我們現在不是出來一個
單一的g,我們每一輪都有一個g從g1,g2,g3一直下去,那我們希望每一輪
的g能夠越變越好,OK隨著新的資訊進來,每一輪的g能夠越變越好。
那這就跟這個batch成批的方式很不一樣,成批的方式就進去出來,好,一個g
我們希望這個g是好的,那這個online則是我們每一輪修正一下,修正一下 然後希望每一輪的g越變越好越變越好。
好,實際上大家現在可能可以發現是說我剛才講protocol跟機器的溝通方式
實際上對應到我們在機器學習裡面到底我們抽象上來說哲學上來說的學習方式
是什麼?Batch批次的方式比較像填鴨式教育,
我就丟一本書,對不對裡面參考答案統統都寫好,寫好以後叫你自己去讀,讀完以後你就說,- 誒,你有沒有學到東西?
online呢,online比較像在老師在教書,老師在教書就是一條一條教好,我舉- 一個例子
給你聽,告訴你這個例子的答案是什麼,我再舉一個例子給你聽,告訴你這個例子的答案- 是什麼, 好所以這樣一路的教下,這是online的這個設定。
那但是在這2個設定裡面,大家注意到說從機器的角度來說,它都是被動的
人家餵什麼資料給它,它就做什麼事,不管是循序的也好或成批的也好 機器都是被動的。
那在這幾年呢,機器學習裡面有一個很 這個新,然後廣為被人家研究的設定是說,誒,我們能不能讓機器
問問題?就像我們上課的時候我們希望學生能問問題,我們希望什麼?我們希望學生問問題可- 以學得比較快。
好所以我們給機器一個選擇說,誒,今天機器學習演算法,也就是我們這個A的部分
可以跑去問那個F問題,什麼叫問問題?一個比較抽象的 講法就是,誒,我可以提出來說今天
我有這個X請問它的Y是多少?我有這個輸入,請問它的輸出是多少?
好例如說最簡單的例子,如果我們今天做手寫辨識,也許機器會自己寫出一個字來
或者挑一個它還不會認的字,然後跟我們說這個字你寫的到底是這個9還是7?
好這是機器從它的資料或從它的想象裡面去挑一個例子出來
問你說它到底是什麼,那這樣設定我們通常叫active learning主動學習。
非常這個科普的講法就是它是讓機器有問問題的能力。
那我們希望是什麼?我們希望是機器如果能夠問問題的話那也許
OK,我們一樣可能是一輪一輪有點像這個online這個線上的方式,來一個一個問題問-
,然後問完這些問題以後 因為機器問問題的時候是有這個技巧的,它如果能
夠有技巧的問問題的話,也許我們能夠透過很少的問題 就很快的可以去學到東西。
就像老師上課老師上課也希望大家問問題,然後問問題以後 也許大家很快的能夠學到東西,那這樣的方式我們叫做主動學習。
那通常用在什麼地方?通常用在如果我們要取得label取得這些標記很貴的場合,
大家之前記得我們講例如說semi-supervised learning也是類似的意思,我們為什麼不把資料全部標一標?因為資料很多,
我們沒有辦法全部標或者要標很貴,像說,例如說如果是藥,我們要做藥物的測試這很貴,
好,所以我們選擇不要全部標我們只標一些些,那麼active learning
這個主動學習也是一樣,我們讓,如果讓電腦來問也許我們需要標註的 這個資料會比較少一些。
好,所以這是我們 這部分跟大家講說我們怎麼樣用不同的跟機器溝通的方式來學習,
最常見的是batch,我們就填鴨式統統都什麼東西都塞給機器,那我們也可以
循序的教它這是online,然後,或者是讓機器有問問題的能力這是active,
也有一些很多不同的變化,那我們這邊是舉最典型的來跟大家講,
那我們在這門課裡面我們會著重在batch的方式,但是就像我剛才講像PLA這樣的例子- 其實batch有很多的演算法
如果你學會之後要把它延伸到這個online或者其它的設定上也是還蠻容易的這樣子。
所以我們會先著重在這個batch的部分。
好,又到了這個小測驗的時間了,今天呢
這個小測驗說的是,有一個照相師他的硬碟裡面有很多很多的照片,他想要做這個
照片自動分類的動作,但是呢,他沒有辦法把這些照片一一的說,我手動來標
然後就寫了這個演算法,這個演算法做的事情是這樣,它說這個演算法先嘗試著自己去 做分類的動作,如果演算法發現說在分類過程中它覺得
這個它沒有很大的信心,這張照片它可能會分錯的話,它就問,問人說到底這張照片應該
歸哪一類?好電腦會自動提出來說這張照片會歸哪一類,那請問這對應到哪一個機器學習的- 演算法?
好,大家想一想之後,我相信大家聽到關鍵字可能就想到,關鍵字是什麼?問。
好所以在這裡,電腦會自動有問問題的這個能力,然後,所以對應到的是active learning
的這個演算法,實際上這裡描述的是我們在active learning裡面用的一個典型的方式就是
當電腦困惑的時候就提出問題,這跟我們上課對大家期望是一樣,如果你對我們上課內容有什- 麼困惑的話
歡迎你提出問題來,我們想辦法把這些東西來講清楚。