back to index
Meta Learning – Metric-based (1/3)

link |
那下一個部分呢,我們要講metric space的approach。
link |
接下來我們就要實踐上週講過的瘋狂的想法,
link |
就是能不能夠直接run一個function,
link |
這個function它又做了learning,又做了testing,
link |
你給它training data,先給它training data,
link |
然後在這個function裡面不知道怎麼回事,就run好了,
link |
然後你給它testing data,它就告訴你testing data的答案,
link |
我們直接來run一個這樣子的function。
link |
但是在實際的application上是有用這樣子的技術的,
link |
什麼樣的application有用到這樣的技術呢?
link |
Face verification跟face identification聽起來好像很像,
link |
所謂verification的意思是說,
link |
所以verification是一個是非題。
link |
我們需要答的是,是某個人嗎?還是不是某個人?
link |
你現在給你的手機,你叫你的手機對你做人臉face verification,
link |
現在這個人臉是我的主人嗎?還是不是我的主人?
link |
那face identification是不同的test,
link |
face identification是說給你一張人臉,
link |
判斷說這張人臉是那一組人裡面的哪一個。
link |
舉例來說,假設你今天做一個門禁系統,
link |
你早上有沒有來上班,很多公司現在都有這種東西嗎?
link |
那這個就是face identification,
link |
它是要決定說,現在這張臉它是我們公司員工的哪一個員工,
link |
這個叫identification。
link |
那等一下我要講的是verification,
link |
那現在很多手機都有verification的功能了。
link |
那其實啊,這個face verification它是一個view shot learning的花紋,
link |
一開始不是就會叫你對著手機轉一下頭,
link |
這個收集資料的過程,它要做的就是view shot learning,
link |
它現場收集到那些資料,就是它的訓練資料。
link |
你在使用手機的時候,你註冊的那幾張臉就是你的訓練資料。
link |
那你希望藉由這些訓練資料,你在testing的時候,
link |
手機看到一個臉,就可以幫你判斷這個臉是不是手機的主人。
link |
那這個任務怎麼做呢?它其實也是一個meta learning的任務。
link |
雖然我等一下都是用人臉的face verification來做舉例來說明,
link |
但是speaker的verification也是一模一樣的。
link |
如果你今天不是說我要用人臉來解鎖,而是用語音來解鎖,
link |
那你用的技術其實是一樣的,你只是需要換一下model的架構,
link |
換一下輸入的資料,把原來的影像改成語音。
link |
但是就這個framework而言,就大方向而言,做法其實都是一樣的。
link |
好,那首先呢,你要收集一些訓練的任務。
link |
什麼樣的訓練任務呢?你的訓練任務應該是長這個樣子。
link |
你有一張訓練的人臉,比如說這個是39這樣子。
link |
那在測試的時候,也會有另外一張人臉,那這個也是39。
link |
那這集的答案就是對,就這個測試的人臉是訓練的時候,也就是註冊的時候的那一張人臉。
link |
你收集一個訓練任務以後,接下來你就可以確認我們剛才說的那個network。
link |
至於這個network裡面長什麼樣子,我們下一頁頭裡面很快就會講到。
link |
這個network,我們剛才有講過說,它就是吃一個訓練資料,吃一個測試資料,直接輸出答案。
link |
現在答案是yes,所以他看到這兩張39的臉,一個是訓練的臉,一個是測試的臉,他就應該輸出yes,就這樣。
link |
好,那你不能只收集一個test,所以你要收集更多的訓練跟測試資料,比如說這個是39,測試的時候這個是一花。
link |
然後呢,你要有標註說這張臉是39的臉嗎?還是不是的臉?
link |
他不是,所以他的標註就是no,所以公太郎會需要這種系統。
link |
對,漫畫髮色都一樣,不過在動畫裡面髮色是不一樣的。
link |
然後接下來呢,你還要收集更多的資料,就是這邊有訓練資料是一花的臉,測試的資料是39的臉,正確答案是no。
link |
那你就要告訴內沃說,現在看到一花的臉作為訓練的資料,看到39的臉作為測試的資料,輸出必須要是no。
link |
那你在測試的時候,你的測試的任務當然要跟你的訓練的任務有點不同,所以一般你的測試的那些臉要沒有出現在訓練的任務裡面。
link |
所以假設我們測試的訓練的時候都是用一花跟39的臉來訓練,那測試的時候你就要用別人的臉,比如說這是四宮灰燕,
link |
而在訓練的時候,你有一張四宮灰燕的臉,測試的時候給你另外一張臉,然後要判斷說她是不是四宮灰燕。
link |
那四宮灰燕其實很好認,因為她有火紅眼,所以你就會知道說這兩張臉其實是同一個人。我其實懷疑她是骷髏塔族的人,我懷疑庫拉皮卡從黑暗大陸回來以後就創立了四宮集團。
link |
我本來想說四宮灰燕會不會就是布羅肯王子,因為布羅肯只有十四王子,因為十四王子其實是女的,所以她有可能就是小時候的四宮灰燕。
link |
但是其實仔細想想,不對,因為布羅肯王子其實是灰窩肉國王生的,所以她應該也是沒有火紅眼,所以她應該不是四宮灰燕。聽不懂就算了,不用理我。總之,這兩個都是四宮灰燕。
link |
好,那你要叫內沃做的事情是什麼呢?就是給她吃訓練的臉跟測試的臉,然後她就告訴你說現在是yes還是no。就大方向而言就是這個樣子。所以我們要訓練一個內沃,同時做訓練,同時做測試。
link |
但實際上是怎麼做的呢?實際上這個內沃的架構,其中最常見的一種設計叫做Siamese內沃。等我講完它的架構以後,你就會覺得這件事情其實沒有那麼神奇。在Siamese內沃裡面,我們有兩個CNN,那你input訓練的圖跟測試的圖,它們都通過CNN得到兩個embedding。
link |
然後接下來我們把兩個CNN吐出來的這個embedding,不過通常這兩個CNN你會share parameter,這兩個CNN通常參數你會讓它是一樣的。
link |
假設你的訓練跟測試都是image,那你的CNN用同樣的參數也是很合理的。有時候Siamese內沃也可以那兩個CNN是不一樣的參數。
link |
就假設你覺得說現在訓練跟測試的那input的資料其實形態有蠻大的差別,你想要用不同的參數,這兩個CNN的參數不要太在一起,也是可以的。
link |
好,那就是這邊有一個CNN,然後看這兩張圖片,分別抽出兩個embedding的vector,接下來把這兩個embedding的vector計算它們的相似度,比如說計算它們的cosine similarity或計算它們的Euclidean distance,那你得到一個數值。
link |
這個數值越大,就代表說現在內沃的輸出是yes,這個數值小,就代表現在的內沃輸出是no,就這麼簡單。
link |
那所以在訓練的時候,你就是告訴機器說,現在如果input的訓練資料跟測試資料它們是同的人,那你output的分數就要越大越好。
link |
反之,如果訓練跟測試的人是不同的人,那你output的分數就越小越好,然後就秤下去,就結束了。
link |
那這個CNN的CNN是什麼意思呢?CNN其實是暹羅的意思,我以前一直不知道說為什麼叫做CNN跟暹羅有什麼關係,難道是因為這個東西看起來像是暹羅的廟宇嗎?
link |
就比如說這個是屋頂,然後……後來我查了一下,好像不是這樣,叫CNN的意思是說CNN在英文有那個孿生的意思。
link |
為什麼CNN有孿生的意思呢?因為有一對非常知名的連體嬰,它們是暹羅人,就這樣,真的就是這樣,所以叫CNN,它中文常常翻譯成孿生網路。
link |
CNN非常常見,很多時候我們在講CNN的時候,我們不見得說它是一種meta learning的方法,很多時候文獻就是直接介紹CNN,不會告訴你說它跟meta learning的關係。
link |
我本來是有想過說要不要把CNN這樣的方法獨立為一個章節,當作future learning直接來講,但是我後來想想說,不是把它放在meta learning框架裡面的,網路上的文章已經有一大堆了,所以我要換另外一個講法,把CNN放到meta learning的框架裡面。
link |
因為很多人在介紹meta learning的時候,他也會介紹CNN,有時候大家往往講不清楚說為什麼CNN算是meta learning的一部分,為什麼它是meta learning的一種,為什麼它往往跟meta learning一起介紹。
link |
那我這邊就從meta learning的角度來切入,告訴你說CNN可以看作是一種meta learning的方法,它很神奇,它直接是training data跟testing data就得到output,不過它內部的架構其實設計得非常簡潔,你完全可以用其他的方法很直觀的來解釋為什麼這個network要這麼做。