back to index

Anomaly Detection (2/7)


link |
00:00.000
主持人說的是,一個人物是不是來自辛普森的家庭,以下這些人物就是來自於辛普森的家庭。
link |
00:15.600
這個是霸子,這個是麗莎,這個是他們兩個的爸爸,這個是河馬,這個是美姿。就算是你沒有看過辛普森家庭,你也會知道說,他們顯然是來自於辛普森家族的人物。
link |
00:31.440
辛普森家族的人物就有一個很明顯的特色,就是他們臉是黃的,然後嘴巴像鴨子一樣。這種人物你就知道說,他們是辛普森家庭的人物。看到比如說梁功春日,你就知道說,這個顯然不是來自於辛普森家庭的人物。
link |
00:46.140
假設說,我們的資料不只是收集了很多辛普森家庭的人物,每一個辛普森家庭的人物都還是有標誌的,每一個辛普森家庭人物的圖片都還有標註說他是誰。
link |
01:04.060
我們知道說,這個是霸子,這個是麗莎,這個是河馬等等,每個人每一張圖片都有標註他是誰。你有這些訓練資料以後,你就可以拿來訓練一個辛普森家庭成員的classifier,給他看一張照片,他就可以判斷說照片中的人物是辛普森家庭的哪一個人物。
link |
01:24.600
比如說,你把這個圖片給你的辛普森家庭人物的分類器看,他就會知道說他是河馬。那這邊我是真的做了相關的實驗,但其實我也不是特別喜歡辛普森家庭,所以這邊是用一個網絡上現成的資料。
link |
01:40.940
在網絡上有一個非常喜歡辛普森家庭的人,他就收集了非常多張數千張辛普森家庭的人物,我看起來他好像是從卡通動畫裡面一張一張人工去剪出來的,然後標上說他真的非常喜歡辛普森家庭,他就標註說每一張圖片到底是誰,標了很多張。
link |
02:01.280
然後真的就可以訓練一個classifier,然後就直接拿他訓練好的現成的classifier來做一下測試,然後證確率頗高,他還有一部testing set,這可以做一下測試。證確率頗高,有96%的正確率。
link |
02:17.320
好,那我們現在有了這個classifier以後,我們想要做的事情就是根據這個classifier來做異常偵測,用這個classifier來幫我們判斷說一個人物他是來自辛普森家庭還是不是來自於辛普森家庭。
link |
02:30.660
怎麼做呢?現在我們把這個問題,本來我們是拿一個classifier來做分類,但我們現在希望說一個classifier他不只是做分類這件事,你給他一張圖片,他不只是告訴你答案說他是辛普森家庭的哪一個人物,他還會拗出一個數值,這個數值代表他的信心分數。
link |
02:49.740
這個confidence score的C代表機器現在在做這個分類問題的時候,他的信心分數。他看到這張圖片,他不只是寫出一個答案,他還告訴你說,他覺得他這個答案是對的信心分數有多高。
link |
03:02.940
根據這個信心分數,我們就可以拿來做異常偵測這件事情。因為假設今天機器的信心分數很高,那我們今天要定一個threshold,定一個threshold叫浪達。
link |
03:13.500
我們說這種浪達這個threshold,通常是根據development set來決定的。等一下我會講說,如果在異常偵測這種task,你的development set應該長什麼樣。
link |
03:25.460
現在假設你已經決定好了你的threshold浪達,如果今天這個信心分數大於這個threshold浪達,你就說他是一個正常的data,他是來自於辛普森家庭的人物。
link |
03:35.980
如果今天一張圖片丟給這個classifier,他說他非常沒有信心,他的信心分數小於某一個threshold的話,那你就說這個人物不是來自於辛普森家庭的人物。
link |
03:47.700
接下來,那怎麼樣得到這個信心分數呢?這邊非常直覺地,你可以想像說,如果我們今天把一張圖片丟到一個辛普森家族的classifier,然後他非常肯定這一個圖片他到底是誰的話,那顯然機器的信心分數就非常高。
link |
04:08.020
我們知道說,當我們把一個圖片丟進一個classifier的時候,其實classifier的output是一個distribution,我們都已經講過deep learning了,我們在今天上課前您剛才看的錄影裡面已經講過deep learning了。
link |
04:21.180
所以知道說,今天,而且你這個output的地方,你還會用一個softmax的layer,這也是影片裡面有的東西,我們的softmax layer,所以你output是一個機率分布,你可以把output看作是一個機率分布。
link |
04:35.220
所以把一張圖片丟到你的classifier裡面,它會給每一個你事先設定好的可能的class一個分數,今天在這個例子裡面,它給buzz的分數可能就特別高,因為它非常肯定說這個是buzz。
link |
04:50.900
那如果你給它一張很奇怪的圖片,是它訓練的時候沒有看過的圖片,這個時候它output的分數就會特別的平均,比如說你給它看一個涼宮春日,這個時候它output的分數可能就特別平均。
link |
05:06.300
在output分數特別平均的情況下,你就可以知道說機器現在是比較沒有信心的,這些機器認為比較沒有信心的X,比較沒有信心的圖片,它們就是異常的東西。
link |
05:17.020
剛才講的是定性的分析,我們需要把剛才這個定性分析的結果把它劃作一個confidence的分數。
link |
05:26.820
那怎麼把它劃作一個confidence分數呢?一個非常直覺的方法就是看機器現在output的distribution裡面最高的數值有多少,這個數值就是信心分數。
link |
05:40.140
所以在上面這個例子裡面,機器的信心分數是0.97,你就看在所有的類別裡面,哪一類的分數最高,那個最高的分數就是信心分數。
link |
05:52.060
所以上面這個例子裡面,機器看到這張圖片,它有信心它的分類是對的的這個分數是0.97,那下面這個例子裡面就只有0.26。
link |
06:02.620
當然這不是唯一的方法,有其他的方法,舉例來說,因為現在你的分類器的output是一個distribution,那給你一個distribution,你就可以算亂度,你就可以算它的entropy。
link |
06:14.860
那如果entropy越大,就是output的這個distribution就越平均,下面這個例子就是entropy比較大的例子,上面這個例子是entropy比較小的case。
link |
06:24.540
那如果entropy比較大,代表機器現在輸出的這個distribution分布比較不平均,代表機器現在它沒有辦法肯定說輸出的圖片是屬於哪個類別,這個時候代表機器的信心分數是比較低的。
link |
06:36.260
總之你有各種不同的方法,可以根據classify來決定它的信心分數有多少。
link |
06:43.380
那我們這邊就拿那個類別,我們等一下會採取的方法就是看機器output的所有類別裡面,哪一個類別分數最高,那個最高分,就是我們classify的信心分數。
link |
06:54.620
當然有其他的方法,但是在文獻上看來用不同方法的差異其實是沒有那麼大的。
link |
07:00.780
那這個方法到底work不work呢?我就真的做了實驗,因為我手上已經有一個辛普森家庭的classify,我就可以真的把image丟進去,看看它output的信心分數有多少。
link |
07:13.380
那我在網絡上隨便抓一個圖片,這顯然是訓練資料裡面沒有的,隨便給它看一個河馬的圖片,它給河馬的信心分數是1,它是一個很好的classify,它有100%相信說這是河馬,其他的通通都是0這樣子。
link |
07:29.700
或者我給它看霸子的圖片,它有81%的信心它覺得這是霸子,然後有12%覺得它是郭董這樣子。
link |
07:39.840
辛普森家庭的那個人物翻譯就是這樣,它都會套用一個名人的名字,這個是郭董,它是辛普森家庭的一個角色。
link |
07:48.340
那如果我給它看一些不是辛普森家庭的人物,舉例來說給它看三九這樣子,你可能以為我要說什麼三九天下第一,我才不會這麼說呢,我其實是要說一花一世界這樣子,你不懂就算了。
link |
08:02.880
好,那這個人是三九,給這個classify看三九的話,它就覺得柯阿三的機率是34%,然後覺得陳子賢是31%,然後魯肉王是10%這樣子。
link |
08:23.120
這都是給它看動畫人物,我想說給它看一個真人,給它看一個死臭酸酸會怎麼樣呢?然後它覺得柯阿三的分數是0.63%,然後宅王是0.08%,這個也還蠻準的。其他就是我不知道是誰了,小丑阿雞是0.04%,恐龍精是0.03%。
link |
08:46.880
我最近才發現說,今天如果是辛普森家庭的人物,classify確實表示出高度的信心,如果不是辛普森家族的人物,它的信心分數確實是比較低的。
link |
08:58.400
然後我試來試去確實還是試,但是還是試出了一些例外,居然說給它看梁宮春日,它覺得它是柯阿三的分數是0.99%這樣子。然後我最近又發現一個有趣的事情就是,我發現如果不是辛普森家庭的人物,機器特別容易覺得它是柯阿三,只是信心的分數高或者是低而已。
link |
09:19.920
就是在梁宮春日這邊是柯阿三的信心分數特別高,剛才在其他例子柯阿三的信心分數是比較低的,但是也是索爾低的裏面最高的。
link |
09:29.780
我就想說,到底爲什麽會這樣呢?我後來發現說,柯阿三其實是長這樣,他就是少數辛普森家族裏面不是黃臉的人。
link |
09:39.440
因爲他不是黃臉,所以他看到不是辛普森家庭的人特別容易被歸納成柯阿三,也許是因爲梁宮春日的頭髮是棕色的,跟他臉的顏色比較像,所以機器覺得它是柯阿三。
link |
09:52.200
這邊只是舉一些例子,這邊就只是幾個例子而已,如果是實際看大量的資料,結果會是什麽樣呢?這邊就實際看了一下大量的資料。
link |
10:03.180
在剛才那個Cargo連接裏面就附了一個辛普森家庭人物的testing set,裏面有數千張辛普森家族的人物,我就把那些人物統統丟到那個classifier裏面,每一個照片我都得到一個信心分數,它的分布是這個樣子,信心分數是從0%一直到100%。
link |
10:24.500
你會發現,這個peak是非常非常尖銳的,幾乎所有的辛普森家族的人物,你丟到這個classifier,就算他辨識有錯,他也會給你一個非常高的信心分數。
link |
10:38.400
我這邊其實也有發現說,如果辨識有錯的話,確實得到的信心分數就比較低一點。在這個圖上有一些紅色點,我相信你在臺下其實是看不太清楚的,那些紅色點是辨識錯誤的那些圖片,它的分數的分布。
link |
10:55.300
你會發現說,紅色點的分布相較於藍色的區域分布是非常集中在1的地方。原來正確的圖片,機器會有非常高的信心,它就是辛普森家族的人物。
link |
11:09.500
那如果是丟其他動畫的人物會怎麼樣呢?這邊丟了一萬五千張其他動畫的人物,你會發現說它的分布是長這個樣子。你可能會說,這邊有一大堆的圖片,它的信心分數都還是很高啊,他們不是辛普森家族的人物,但是辛普森家族classifier還是給他很高的信心分數。
link |
11:35.260
那我這邊丟的其實是一萬五千張的圖片,那這邊這個bar它的高度只有一千四百張,所以大概只有十分之一的圖片,它會得到很高的信心分數。你會發現說多數的圖片,它得到的信心分數都是比較低的。
link |
11:51.800
你會發現說,辛普森家族的人物跟不是辛普森家族的人物,確實他們在classifier的competence score上的分布是有很大的差異的。
link |
12:01.180
我們剛才是用一個比較直觀的方法來給一個信心分數,你可能會覺得這種方法讓你覺得很弱,讓你覺得好像沒有什麼特別厲害的。
link |
12:17.140
不過像剛才那種非常簡單的方法,其實在實作上往往還可以有不錯的結果。所以今天假如你在做異常偵測的問題,你手上有一個現成的classifier,其實這應該是你第一個要嘗試的base line。
link |
12:32.340
雖然它非常簡單,但它不見得performance很差。很多時候有同學要問我說,我今天有一個anonymity detection的問題,那我要怎麼來解?我通常會建議說,你先試試用classifier的信心分數來做這異常偵測的方法。
link |
12:48.480
很多人就不信他,覺得說,啊,這麼簡單,怎麼可能會work呢?但其實這是一個沒有很弱的方法。
link |
12:54.400
當然有其他更好的方法。舉例來說,你今天在訓練一個neural network的時候,你可以直接教neural network output信心分數這個東西。
link |
13:05.520
這個技術我們就不細講,我今天就只是引用一個文獻告訴大家說有這樣子的技術。
link |
13:12.160
因為這門課是我們定位還是一個機器學習的入門課,所以我們就不會講太深入的東西,我們會概要地overview一個技術,然後提供給大家一些參考資料,如果你有興趣的話,可以再繼續深入去研究。
link |
13:30.120
你會發現說,這邊引用的資料還是很新的,舉例來說是2018年的paper。在這門課裡面,我們都儘量引用一些新的資料,告訴你說這個領域仍然是非常active的。
link |
13:40.680
在這篇paper裡面,它的想法是這樣。我們剛才是先訓練了一個classifier以後,在不知道怎麼回事,從classifier的輸出得到一個信心分數。
link |
13:51.600
有一些技術是我們在訓練那個classifier的時候,我們就訓練一個classifier,它不只是可以做分類這件事情,它還會直接output一個分類的信心分數。
link |
14:04.000
至於這件事怎麼做到的,你就參考一下文獻,總之是有這樣的技術就是了。