back to index

Attack ML Models (2/8)


link |
00:00.000
那接下來的問題就是怎麼找出那個特別的signal x'呢?
link |
00:06.440
我們先來很快很快很快的複習一下說一般的network是怎麼做訓練的。
link |
00:12.600
一般的network是怎麼做訓練的呢?你現在有一個network,它有參數,我們用θ來表示它。
link |
00:19.480
那現在input一張image x0,通過fθ以後,你會得到y0,y0是function fθ的輸出。
link |
00:28.320
我們希望這個輸出y0呢,它跟一個正確的答案,我們這邊用y上標true來代表一個正確的答案,它跟正確的答案越接近越好。
link |
00:38.520
我們在之前的課程中就有屢次提到說,你會minimize這個y0跟y2它們中間的距離。
link |
00:46.080
舉例來說,你會minimizey0跟y2的cross entropy,假設你的y0跟y2它們都是一個distribution的話,
link |
00:56.280
那你可以minimizey0跟y2的cross entropy,這個過去我們在上課的時候已經反覆講過了。
link |
01:04.520
這邊把式子列出來,我們要minimize一個loss function,這個loss function就是y0跟y2這兩個distribution的cross entropy。
link |
01:15.200
跟過去的同學用的那種relation制,我們用c2來代表cross entropy,現在我們minimize這個cross entropy在正常的訓練的時候。
link |
01:24.240
現在我們要對這個network進行攻擊,攻擊分成兩種,一種叫做沒有目標的攻擊,一種叫做有目標的攻擊。
link |
01:34.880
我們現在說沒有目標的攻擊,沒有目標的攻擊的意思是說,我們要找另外一張新的圖片,這張新的圖片是我們要找的東西,我們現在還不知道它長什麼樣子,我們用f'來表示它。
link |
01:47.520
把x'丟到這個fset裡面,它open y',然後接下來我們希望這個y'跟y2距離越遠越好,這個就是沒有目標的攻擊。
link |
02:00.320
所以我們一般在訓練的時候,你希望你的network的輸出跟正確答案越接近越好,那在攻擊的時候我們要做的就是跟一般的訓練正好相反。
link |
02:11.520
我們希望找到一個x'它丟到這個network以後,它產生出來的輸出y'跟正確答案距離越遠越好。
link |
02:20.280
所以現在攻擊的loss function就寫成這樣,它其實就是把原來的在訓練的時候的loss function加一個負號,就你原來訓練的時候想要變小這個function,
link |
02:33.920
那你今天在攻擊的時候,你就反過來,你希望y'跟y2的cross-entry越大越好。但是今天這個攻擊跟訓練有一個本質上的不同,
link |
02:45.320
在訓練的時候,我們的輸入image是固定的,我們調整的是network的參數setup,你只要調整這個setup,
link |
02:56.120
input的image你不會改它,你只要調整setup,讓network的輸出跟正確答案越接近越好。但是在攻擊的時候,你其實是固定住你的參數,
link |
03:06.720
就是那個network已經訓練好了,就擺在那邊,你不會去動那個network,那個network的參數setup是固定住的,你要做的事情是找一張輸入的圖點,
link |
03:16.560
讓他得到的答案越錯越好,越不對越好。所以今天在訓練的時候,你是調network的參數,但是在攻擊的時候,
link |
03:27.240
network的參數,network是一個已經訓練好的東西,它就固定在那邊,你改的是你的input。
link |
03:34.200
那剛才講的是沒有目標的攻擊,那如果是有目標的攻擊呢?如果是有目標的攻擊是說,你今天希望你的network output wi-fi不只是跟正確答案距離越遠越好,
link |
03:47.480
同時你希望它跟一個錯誤的答案距離越近越好,那錯誤的答案就是你自己設計的,
link |
03:57.280
你就看說看,你說你今天攻擊的目標想要讓輸入的圖片變成什麼樣的東西,你希望今天你的network output什麼樣錯的答案。
link |
04:07.280
舉例來說,你希望它今天output的錯的答案是魚的話,你就說你有一個y-false,它代表的是魚這個class,
link |
04:16.560
然後你希望這個wi-fi跟y-false越接近越好,所謂這邊的y-true跟y-false它們都是一個one-half vector,
link |
04:27.920
就假設你對這個還沒有很熟悉的話,它們都是one-half vector,其中一位是1,然後其他都是0。
link |
04:33.840
這個我們在過去的這個上課錄影中應該是已經有反覆提到過了。
link |
04:39.720
所以今天如果你要做的是有目標的攻擊的話,那你就希望你的network output wi-fi跟y-true距離越遠越好,
link |
04:52.920
你希望wi-fi跟正確答案距離越遠越好,而wi-fi跟y-false跟錯的答案距離越近越好。
link |
05:02.320
但是今天我們會有一個額外的限制,這個額外的限制是什麼呢?這個額外的限制是說你找出來的image xy,
link |
05:13.200
它跟x0應該要越接近越好,為什麼呢?因為今天假如你說你希望輸入一張圖片,
link |
05:22.800
而這張圖片會被辨識成,不要辨識成貓,而會被辨識成魚,那如果這張圖片本來就長得很像魚,那其實根本就不算是攻擊啊。
link |
05:33.360
那這個就是本來就應該要這個樣子,所以你希望達到的效果應該是說,我們今天找出來一張圖片,它跟貓很像,它跟貓非常非常的像,
link |
05:44.320
但是你的內幕不知道怎麼回事,會把它辨識成魚,這個才是我們要的東西。所以今天我們不能夠隨便找一個x'就好了,
link |
05:53.200
我們希望x'跟x0它必須要夠靠近,它們靠近到人沒有辦法發現其中的差異,然後實際上是有一點點不同的,
link |
06:05.040
但是對人來說,人肉眼一看會覺得說,這張圖片應該還是貓,但機器會把它辨識成魚。那如果把這個式子寫下來的話,
link |
06:15.360
就是你有一個限制,是你希望你的x'跟x0它們中間的某種距離,等一下下一個圖片會講說是什麼樣的距離,這個距離其實是你自己定義的,
link |
06:25.520
這x0跟x'它們的距離要小於等於某一個threshold,這邊寫做x0。那至於x0到底應該要多大,這個就要問你自己,
link |
06:36.240
就看你覺得說今天這個x0到多大的時候,人才會發現。那你今天就會希望把你x0設小一點,小到說只要今天x0跟x'的差距沒有超過這個x0,
link |
06:49.200
那人就不會看出這兩張圖片,就無法發現這兩張圖片之間的不同。
link |
06:56.320
好,那這邊我們就來講一下這個D是怎麼定義的,這個D其實有很多種不同的定義方式,那我們這邊用Δx來表示x'跟x0它們之間的差異,
link |
07:14.240
你把x'減掉x0就是Δx。那你有不同的方法來算x0跟x'的距離,那這邊舉兩個常見的例子,一個是L2,一個是L∞,
link |
07:28.080
那如果是L2的話怎麼算呢?如果是L2的話,那你在算x跟x'的差異的時候,你就把Δx裡面的值通通取平方,再加起來就變成L2。
link |
07:43.760
那L∞呢?L∞是說你現在把Δx裡面的每一個dimension的所有數值通通拿出來,把Δx1,Δx2,Δx3通通拿出來,然後取一個最大的就是L∞。
link |
08:02.960
那這兩個做法其實應該都是可以的,或者是如果你有別的需求的話,你可以用別的方法來計算你的distance。那如何定義這個distance,我甚至認為根據不同的task,
link |
08:17.200
比如說你今天要攻擊的影像是文字還是語音,你應該有不同的distance的設計,因為這個distance就牽涉到對人來說,什麼叫做兩張圖片很像,兩段聲音訊號很像,或兩段文字很像。
link |
08:33.240
所以這個L應該是,這個兩個東西之間的distance應該是取決於人類的感知,你應該是根據人類的感知來定義這個L。那在等一下的說明裡面,我通常都用L∞,因為我覺得L∞也許是一個比較適合的distance在影像的攻擊上面。
link |
08:54.480
為什麼會這麼說呢?假設我現在有一張圖片,這個圖片很小,它只有四個pixel。看到一個四個pixel的圖片,其實你把它拉成一個vector的時候,它是一個十二維的vector,對不對?
link |
09:07.480
因為每一個pixel你用RGB三個顏色來表示它,每一個pixel你要用三個數值來表示它,所以四個pixel的圖片,你要用十二個數值來表示它。
link |
09:18.160
現在我們把這張圖片的每一個維度,也就是十二個dimension的每一個維度通通加上一點點的變化,產生一張新的圖片。
link |
09:29.840
但是因為這個變化非常的小,所以你根本看不出來這兩張圖片有什麼樣的差距。
link |
09:37.240
但是你如果實際上回去,你把這個投影片的原始檔拿來仔細檢查一下,它們其實是有一些差距的。我還是花了一些時間把它的顏色稍微調了一下,你可以回去檢查一下,只是你現在不可能看出來而已。
link |
09:53.400
好,那另外一個改變是說,下面這張圖片是說,我們把右下角的這個pixel的顏色改變,我們只是改變一個pixel的顏色,但是我們變得比較多,所以右下角這個綠色它變得比較深了。
link |
10:12.880
如果我們今天看L2 Distance,這兩張圖片跟這兩張圖片的L2 Distance其實算起來是一樣的,我特別調了一下,讓它們算起來是一樣的。
link |
10:26.400
但是就人類的感知而言,你會發現說,你會覺得這兩張圖片其實是一樣的,這兩張圖片其實是不一樣的。
link |
10:35.160
如果是這樣子的話,那L2 Distance就沒有辦法很好的描述說人類對兩張圖片的差異的感覺。那如果你是用L Infinity,L Infinity是看說兩個向量之間差距最大有多大。
link |
10:51.120
所以如果你看L Infinity的話,上面這兩張圖片的L Infinity是比較小的,而下面這兩張圖片的L Infinity是比較大的。就是說,如果比較上這兩張圖片,雖然這三個pixel的顏色完全是一模一樣,
link |
11:10.900
但是在右下角這個綠色的pixel,它們兩個之間有很大的差距,所以算起來L Infinity比較大。那上面這兩個,如果比較這兩張圖片,因為它們的差距在每一個pixel都很小,
link |
11:23.240
所以每個pixel都有小小的差距,但是都很小,那也算L Infinity都很小。所以L Infinity也許是稍微比較適合拿來用在五項的攻擊上面。
link |
11:33.600
不過這個是一個見仁見智的問題,你可以針對不同的任務,不同的攻擊任務設計,使用不同的類似設計。