back to index
Anomaly Detection (1/7)

link |
今天這堂課呢,我們要跟大家講的是Anonymity Detection,如果翻譯成中文的話呢,我們可以說是要翻譯成是異常偵測。
link |
異常偵測要做的是什麼呢?異常偵測就是如同我們上一次上課的時候跟同學說的,我們要讓機器可以知道我不知道這件事情。
link |
右邊就是引用了倫語的唯證詞,倫語對子路說,子路知之為知之,不知為不知是之也。就是說,知道就是知道,不知道就說不知道,這樣才是真正的知道。那我們就是要讓機器來知道它不知道這件事情。
link |
異常偵測的問題通常formulate成下面這個樣子。我們現在有一堆訓練的資料,我們用X1到XN來表示訓練的資料。
link |
在這門課裡面,我們通常用上標來表示一個完整的東西,而用下標來表示一個完整的東西的其中一個部分。現在這樣講可能還有點抽象,等一下你會更清楚我想表示的意思是什麼。
link |
總之我們現在有N個訓練資料,我們現在有這N個訓練資料,我們要找出一個function,這個function做的事情是當它看到一個inputX的時候,它要決定說現在這個inputX到底跟我們訓練資料的這些data算是相像的,算是相像的可以被歸在同一類還是不像。
link |
我們之前有說過說machine learning其實就是要機器找一個function,在異常偵測裡面我們要找的是什麼樣的function呢?我們要找的function是這樣的,如果我們今天給它一個X,而這個X像是我們提供給機器的那些訓練資料,那我們這個異常偵測的function,這個nonomy的detector就會說這是正常的資料。
link |
那如果現在input的X它不像是我們訓練資料裡面的那些data,不像是我們訓練資料裡面的那些X1到XN的話,那這個anonymy的detector就要說這是一個異常的東西,這是一個anonymy。
link |
因為我們這邊是用anonymy這個詞彙,所以可能會讓有些同學覺得說,機器在做anonymy detection的時候,它都是要detect出不好的東西,因為異常這個詞彙顯然通常代表的是一個負面的意思。
link |
但是其實anonymy detection這件事情並不一定是找不好的東西,它只是找跟訓練資料不一樣的東西,所以我們找出來的東西不見得是異常的東西。
link |
其實你會發現說anonymy detection這個技術在不同的領域裡面,其實它有不同的名字。有時候我們叫它outlier detection,有時候我們叫它novelty detection,如果你是用novelty這個詞彙,顯然是要找一個新的東西,novelty就比較是一個正面的意思,或者是說叫做exception的detection。
link |
總之我們要找的就是和訓練資料不一樣的東西,那它有可能是特別好的,也有可能是特別壞的。
link |
但至於什麼叫做像呢?什麼叫做像?訓練資料呢?這就是anonymy detection裡面需要探討的問題,不同的方法,它就用不同的方式來定義說什麼叫像,什麼叫做不像。
link |
那這個是異常偵測的problem formulation,那這個要強調一下,什麼叫做異常呢?這個所謂的異常,我們到底要檢測出什麼東西,我們到底要機器看到什麼東西,說它是anonymy,其實是取決於你提供給機器什麼樣的訓練資料。
link |
舉例來說,假如你的訓練資料你給它看很多隻雷丘,那這個時候皮卡丘就是異常的。但反過來說,如果你給它看很多隻皮卡丘,那雷丘就是異常的。
link |
或者是如果你給它看很多的寶可夢,有皮卡丘、雷丘還有水箭龜,那這個時候數碼寶貝就是異常的,或者不是寶可夢的東西就是異常的。
link |
它跟寶可夢也就是神奇寶貝很像,這一隻其實是亞古獸,它看起來很像是噴火龍,但其實不是。那這個異常偵測有非常多的應用,舉例來說,今天你可以拿它來做詐欺偵測,做fruit detection,那你的訓練資料可能就是正常的刷卡行為。
link |
你就搜集很多很多的交易記錄,銀行其實都有在做這件事,你就搜集很多很多的交易記錄,那這些交易記錄視為正常的交易行為。
link |
那今天有一筆新的交易記錄,就可以用異常檢測的技術來看說,這筆交易記錄到底是不是有詐欺的嫌疑,它是不是盜刷了別人的卡。
link |
那可能正常的交易它的金額都比較小,頻率都比較低,那如果今天有一個非常高額的消費,又在短時間內連續非常高額的消費,它可能就是一個異常的行為。
link |
那這個都還是有現成的資料庫跟比賽的,就在下面列了兩個cargo的連結。
link |
那這個它也可以拿來做網絡系統的入侵偵測,那你的訓練資料就是正常的連線。
link |
那今天有一筆新的連線進來,那你希望用anonymity detection這個技術,讓機器自動決定說,這筆資料它是一個攻擊的行為還是不是攻擊的行為。
link |
或者是它也可以被用在醫療上,舉例來說癌細胞的偵測,那你的訓練資料就是正常的細胞,它長什麼樣子、它的細胞核的大小、它的分裂的頻率等等。
link |
你有正常的細胞的資料,你的訓練資料是正常的細胞,那今天給一個新的細胞機器可以自動決定說,它是有問題的癌細胞還是正常的細胞。
link |
所以這個異常偵測呢,它有非常多有用的應用。
link |
好,那再來的問題就是,我們怎麼做異常偵測這件事情呢?
link |
一個很直覺的想法就是,我們現在如果可以收集到很多正常的資料,這邊寫作X1到Xn,我們可以收集到很多異常的資料,這邊寫作X1Δ到XnΔ,那我們其實都已經學過怎麼做binary classification這件事。
link |
在今天上課前,您應該看我們的錄音裡面,已經講過了binary classification。
link |
假設大家知道binary classification是什麼的,那我們可以把normal data當作一個class,它是class1,把那些異常的data當作是另外一個class,class2。
link |
舉例來說,在剛才詐欺偵測裡面,正常的交易就是class1,異常的交易有詐欺嫌疑的交易就是class2。
link |
這個時候你已經學過了binary classification的技術,你就只需要訓練一個binary的classifier,然後就讓機器學,把data分成兩類,一類是正常的,一類是異常的,然後就沒有然後了,就結束了。
link |
這個都是你會的東西,所以我想我們今天上課其實差不多就上到這邊,那就請助教來講一下作業2了這樣子。
link |
但是其實這個問題並沒有那麼簡單,為什麼這麼說呢?你其實不太容易把這個異常偵測視為一個普通的binary classification的問題。
link |
為什麼這樣說呢?假設你現在所謂正常的data是寶可夢,寶可夢是正常的data,那異常的data到底是什麼呢?只要不是寶可夢的東西都可以是異常的data,不只是數碼寶貝是異常的data,
link |
梁宮春日也是異常的data,或者甚至說隨便拿一個茶壺也是異常的data,世界上可以舉不是寶可夢的例子太多了,我也不知道為什麼要特別舉一個茶壺。反正舉這個例子的時候,我實在是想很久,因為不是寶可夢的東西實在太多了,不知道為什麼就舉了一個茶壺。
link |
反正不是寶可夢的東西太多了,基本上多數的東西都不是寶可夢。所以首先你根本無法窮舉所有不是寶可夢的東西,你根本沒有辦法知道你整個class two、整個異常資料的分佈到底應該長什麼樣。
link |
你根本不應該把異常的資料視爲一個類別,因爲它的變化太大了,你根本沒有辦法把這個類別裏面所有的資料都收集齊,知道所有不是寶可夢的東西、所有的class two所有的異常資料長什麼樣。
link |
這是第一個,你不能夠把異常偵測當作二元分類的原因。第二個原因是,很多情況下,你其實不太容易收集到異常的資料。收集正常的資料往往比較容易,而收集異常的資料往往比較困難。
link |
舉例來說,用剛才詐欺偵測的例子而言,你可以想象說,多數的交易通常都是正常的,你很難找到異常的交易。多數今天銀行可以收集到的資料都是正常的交易,就算它是一個異常的交易,它也會告訴你說它是一個正常的交易,所以你很難收集到anonomy異常的data。
link |
這就造成異常偵測這個問題它不是一個單純的二元分類的問題,你需要想其他的方法,它是一個獨立的研究主題,這是一個仍然尚待研究的問題。
link |
這邊我們對異常偵測的問題做一個非常簡單的分類,我們先把它分成兩類。一類是,現在我們除了不只有這些訓練資料X1到XN,同時這些訓練資料它是有某種類型的label的,等一下我們會有更具體的例子告訴大家說有什麼樣的label。
link |
所以現在每一個X1到XN它都有label標註說它是Y1 hat到YN hat,有這些label你就可以拿來訓練一個classifier,教機器說看到這些X能不能夠預測出它對應的Y hat是什麼,訓練一個classifier怎麼做呢?
link |
其實我們在上課錄音裡面都有講過了,我們上課有講過說用generative model來做classification,也說過用logistic regression來做classification,那還講過用deep learning來做classification,你就可以選一個你喜歡的技術來訓練一個classifier。
link |
但是在這邊的label裡面並沒有任何一種label叫做unknown,並沒有任何一種label叫做這是我不知道的東西,這是一個未知物。但我們期待說我們訓練好一個classifier以後,機器有能力知道,如果它看到一個X是不在它的訓練資料裡面的,這個時候它應該給這個它沒有看過的東西貼上一個標籤說這個標籤,這個沒看過的東西它是unknown的,這個沒看過的東西它的類別是屬於unknown的。
link |
那如果你是說你有一個classifier,你希望這個classifier具有看到不知道的東西它要標上這是未知物的能力的話,那這個問題它算是這個異常偵測的其中一種,那它又叫做open set recognition,就是你現在在做辨識的時候,你現在在做分類的時候,你的model是open的,它可以辨識它沒有看過的東西,沒有看過的東西它就貼上一個標籤說這是沒有看過的。
link |
那另外一方面,有時候你會遇到的狀況是,你這些訓練資料它是沒有任何label,它就是一堆資料進來,它沒有其他額外的label,這個時候你只能在只有這些資料的情況下,想辦法去判斷說今天新的一筆資料它跟這些資料像還是不像。
link |
那這邊我又分成兩個case,一個case是,你手上的資料是乾淨的,乾淨的意思是說,你手上所有的訓練資料統統都是正常的資料,但你更常見的一個狀況是,你手上的資料就已經有被污染過了,已經有被污染過的意思是說,你手上這些資料裡面混雜了一些其實是異常的東西。
link |
舉例來說,我們剛才舉詐欺偵測這個例子,銀行蒐集了大量的訓練資料,蒐集了大量的交易記錄,它把所有的交易記錄都當作正常的,去告訴機器說什麼叫做正常的交易,希望機器可以藉此偵測出異常的交易。
link |
在那些正常的交易裡面,很有可能也混雜了異常的交易,很有可能也混雜了詐欺的行為,只是銀行在蒐集資料的時候不知道這件事。
link |
所以,更多的時候我們遇到的狀況是,我們手上有訓練資料,但我們沒有辦法保證所有的訓練資料都是正常的,可能有非常少量的訓練資料,比如說0.1%的訓練資料,它其實仍然是異常的。
link |
整理&字幕志願者 瀏覽中文字幕 瀏覽中文字幕 瀏覽中文字幕 瀏覽中文字幕 瀏覽中文字幕