back to index

【機器學習2021】來自人類的惡意攻擊 (Adversarial Attack) (下) – 類神經網路能否躲過人類深不見底的惡意?


link |
00:01.000
上週我們是講到這個地方
link |
00:06.000
到目前為止,我們在上課講的內容,其實都是White Box的Attack
link |
00:14.000
什麼意思呢?也就是說,我們要計算這個Gradient
link |
00:19.000
我們做FGSN要計算這個Gradient
link |
00:22.000
在計算Gradient的時候,我們需要知道模型的參數
link |
00:27.000
知道模型的參數,才有辦法計算這個Gradient
link |
00:30.000
才有辦法在Image上加上Notice
link |
00:34.000
像這種知道模型參數的攻擊,叫做White Box的Attack
link |
00:41.000
中文有時候就翻譯成白箱攻擊
link |
00:44.000
白箱就是一個動畫,這個是白箱,沒有很重要
link |
00:49.000
沒有很重要,不用管我
link |
00:52.000
但是你可能會覺得說,攻擊需要知道Network的參數
link |
00:57.000
看來這個攻擊不是很危險
link |
00:59.000
為什麼呢?因為一般線上的服務
link |
01:01.000
你當然要攻擊一定是去攻擊別人的模型
link |
01:04.000
某一個線上的服務
link |
01:06.000
線上的服務它的模型,你又不知道參數是什麼
link |
01:10.000
所以也許要攻擊一個線上的服務,並沒有那麼容易
link |
01:16.000
所以其實如果我們要保護我們的模型不被別人攻擊
link |
01:20.000
也許我們只要記住,不要隨便把自己的模型放到網路上
link |
01:24.000
公開讓大家取用
link |
01:26.000
也許我們的模型就會是安全
link |
01:30.000
但真的是這樣嗎?
link |
01:33.000
不知道模型參數下的攻擊,叫做Black Box Attack
link |
01:38.000
也就是黑箱攻擊
link |
01:40.000
黑箱攻擊是有可能的嗎?
link |
01:42.000
黑箱攻擊是有可能
link |
01:45.000
怎麼做黑箱攻擊呢?
link |
01:47.000
我們到目前為止講說,我們在做攻擊的時候都需要計算Gradient
link |
01:51.000
計算Gradient需要知道Model的參數
link |
01:53.000
那黑箱攻擊是怎麼做到的呢?
link |
01:57.000
黑箱攻擊是這樣子做的
link |
01:59.000
那我們的作業,剛才助教也有講過,就是黑箱攻擊
link |
02:04.000
所以網路上有一個模型,這個模型你是沒有辦法拿到的
link |
02:08.000
你根本不知道它的參數是什麼
link |
02:10.000
這個其實就是Judge Board上面的那個模型
link |
02:14.000
你並不知道助教使用了哪一個模型
link |
02:17.000
你並不知道它的參數是什麼
link |
02:19.000
那怎麼辦呢?
link |
02:21.000
假設你知道這個Network是用什麼樣的訓練資料訓練出來的話
link |
02:27.000
那你可以去訓練一個Proxy的Network
link |
02:31.000
也就是你訓練一個Network
link |
02:33.000
讓這個Network來模仿我們要攻擊的對象
link |
02:38.000
我們要攻擊的對象跟Proxy的Network
link |
02:41.000
如果都是用同樣的訓練資料訓練出來的話
link |
02:44.000
也許它們就會有一定程度的相似度
link |
02:47.000
如果Proxy的Network跟要被攻擊的對象
link |
02:50.000
有同樣的,有一定程度的相似程度的話
link |
02:54.000
那我們只要對Proxy的Network進行攻擊
link |
02:58.000
也許這一個有被攻擊過的Image
link |
03:01.000
拿去丟到我們不知道參數的Network上
link |
03:05.000
攻擊也會成功
link |
03:07.000
那這個其實就是在我們作業裡面做的事情
link |
03:10.000
所以在作業裡面做的事情是
link |
03:12.000
你從某一個地方找來某一個已經訓練好的影像辨識的模型
link |
03:18.000
這個是你的Proxy的Network
link |
03:20.000
你自己在自己的機器上
link |
03:22.000
你在CodeLab上攻擊這個自己的Network
link |
03:25.000
然後丟到Judge Point上面
link |
03:27.000
看看這個攻擊能否成功
link |
03:30.000
那有人可能會問說
link |
03:32.000
那如果我根本就沒有訓練資料
link |
03:35.000
我根本不知道現在要攻擊的對象
link |
03:37.000
是用什麼樣的訓練資料的話怎麼辦呢
link |
03:40.000
在作業裡面我們知道是Cypher10
link |
03:43.000
我們要被攻擊的對象是用Cypher10訓練出來的
link |
03:46.000
所以你只要用一個Cypher10訓練出來的模型
link |
03:49.000
你可能就可以攻擊成功
link |
03:51.000
但是假設我們完全沒有訓練資料的話怎麼辦呢
link |
03:56.000
這也不是完全無解的
link |
03:58.000
怎麼解呢
link |
03:59.000
假設這是你要攻擊的影像辨識模型
link |
04:03.000
你就把一堆圖片丟進去
link |
04:05.000
然後看看他會輸出什麼
link |
04:08.000
線上的Service就算是他不會告訴你Network的參數
link |
04:11.000
你總是可以丟東西進去看他輸出什麼嘛
link |
04:14.000
再把輸入輸出的成對資料拿去訓練一個模型
link |
04:18.000
你就有可能可以訓練出一個類似的模型
link |
04:21.000
當作Proxy Network進行攻擊
link |
04:24.000
那這種黑箱攻擊容易成功嗎
link |
04:28.000
蠻容易成功的
link |
04:30.000
你在作業裡面就可以體會一下
link |
04:32.000
這個黑箱攻擊其實非常容易成功
link |
04:34.000
那這個是文獻上的結果
link |
04:37.000
那這邊有五個不同的Network
link |
04:39.000
ResNet 152層 ResNet 101層
link |
04:42.000
ResNet 50 VGG16
link |
04:44.000
還有Google LabNet
link |
04:45.000
總共有五個Network
link |
04:47.000
那這個Column代表要被攻擊的Network
link |
04:52.000
總共有五個要被攻擊的Network
link |
04:55.000
那這個Row代表說我們有五個Proxy的Network
link |
05:00.000
那如果是對角線的地方
link |
05:02.000
代表說Proxy的Network跟要被攻擊的Network
link |
05:05.000
他們是一模一樣的
link |
05:06.000
所以這個情況就不是黑箱攻擊
link |
05:09.000
對角線的地方其實是白箱攻擊
link |
05:12.000
所以如果你拿ResNet 152當作Proxy Network
link |
05:16.000
攻擊的時候其實是攻擊一個一模一樣的Network
link |
05:19.000
太容易成功了
link |
05:20.000
這邊這個數字是正確率
link |
05:23.000
是要被攻擊的那個模型的正確率
link |
05:25.000
所以這個值是越低越好
link |
05:28.000
越低的正確率代表你的攻擊越成功
link |
05:31.000
你現在是站在攻擊方的
link |
05:33.000
所以你不是訓練模型方的
link |
05:36.000
你是攻擊方的
link |
05:37.000
所以這個正確率越低代表你的攻擊是越成功
link |
05:40.000
你發現對角線也就是白箱攻擊的部分
link |
05:43.000
White Box Attack的部分
link |
05:45.000
這個攻擊的成功率是百分之百
link |
05:48.000
也就是模型的正確率是0%
link |
05:51.000
你的攻擊總是會成功
link |
05:53.000
但如果在非對角線的地方
link |
05:55.000
也就是黑箱攻擊
link |
05:57.000
舉例來說你用ResNet 101當Proxy Network去攻擊
link |
06:01.000
ResNet 152得到的正確率是19%
link |
06:05.000
或者是你拿ResNet 152當作是Proxy Network去攻擊ResNet 50
link |
06:10.000
你得到的正確率是18%
link |
06:13.000
那這個非對角線的地方是黑箱攻擊
link |
06:15.000
你會發現說黑箱攻擊模型的正確率
link |
06:18.000
是比白箱攻擊還要高的
link |
06:20.000
但是其實這些正確率也都非常低
link |
06:23.000
都是低於50%
link |
06:25.000
所以顯然黑箱攻擊也有一定的成功的可能性
link |
06:29.000
不過實際上黑箱攻擊是在
link |
06:32.000
Non-Target Attack的時候比較容易成功
link |
06:35.000
Target Attack就不太容易成功
link |
06:37.000
就是假設你用Proxy Network
link |
06:39.000
說你要把一個狗變成一個兔子
link |
06:41.000
那如果你把Attack的Image拿到
link |
06:45.000
你要攻擊的對象上面的話
link |
06:48.000
你可能可以讓他辨識出
link |
06:50.000
你可能會讓機器辨識出不是狗
link |
06:52.000
但你要指定他一定要變成兔子就比較難
link |
06:55.000
所以在黑箱攻擊的時候
link |
06:57.000
這個Target Attack比較難成功
link |
06:59.000
但Non-Target Attack還是非常容易成功的
link |
07:03.000
那如果你要增加這個Black Box Attack的成功率怎麼辦呢
link |
07:07.000
剛才助教也講了一個可以過Strong Baseline的Tip
link |
07:11.000
就是Ensembled Network
link |
07:14.000
那這個Ensembled Network要怎麼做呢
link |
07:18.000
這邊這個表格的看法是這個樣子的
link |
07:21.000
這個Column代表要被攻擊的Network
link |
07:25.000
那每一個Row是什麼意思呢
link |
07:27.000
你會發現每一個模型的名字前面放了一個簡號
link |
07:30.000
它是什麼意思呢
link |
07:31.000
它就代表說我們現在把這五個模型都集合起來
link |
07:35.000
但拿掉ResNet-152
link |
07:37.000
我們要找一個攻擊的Image
link |
07:39.000
在ResNet-152以外的模型都是成功的
link |
07:43.000
我們假設我們手上沒有ResNet-152
link |
07:45.000
但是有ResNet-101 ResNet-50 VGG-16
link |
07:48.000
我們Google LANet找一張Image
link |
07:51.000
攻擊這四個Network都是成功的
link |
07:54.000
然後看看在ResNet-152上會發生什麼事
link |
07:58.000
所以其實今天在這個圖
link |
08:00.000
下面這個表格跟上面這個表格的看法是不一樣的
link |
08:03.000
如果是下面這個表格的話
link |
08:05.000
非對角線的地方是白箱攻擊
link |
08:07.000
非對角線的地方你會發現
link |
08:09.000
模型正確率都變0%
link |
08:11.000
就像我剛才說的
link |
08:12.000
白箱攻擊非常容易成功
link |
08:15.000
對角線的地方才是黑箱攻擊
link |
08:18.000
所以這個地方是我們要攻擊ResNet-152
link |
08:21.000
但我們沒有用ResNet-152
link |
08:23.000
這邊是要攻擊ResNet-101
link |
08:25.000
但沒有用ResNet-101
link |
08:27.000
但是用了另外四個Network一次再推
link |
08:30.000
所以對角線的地方才是黑箱攻擊
link |
08:33.000
那你發現說當你有做ensemble的時候
link |
08:36.000
當你同時用多個Network的時候
link |
08:38.000
當你找一個Attack Image可以成功騙過多個Network的時候
link |
08:42.000
騙過一個你不知道參數的黑箱Network
link |
08:45.000
也非常容易成功
link |
08:47.000
你看對角線上的正確率基本上都是10%以下
link |
08:52.000
那這個是黑箱攻擊
link |
08:55.000
你會發現說攻擊這件事非常容易成功
link |
09:00.000
到底是怎麼回事呢
link |
09:02.000
為什麼連黑箱攻擊
link |
09:04.000
你在A Network上攻擊
link |
09:06.000
在B Network上都會成功呢
link |
09:09.000
事實上這仍然是一個可以說是未解之謎
link |
09:13.000
還有很多可以研究的空間
link |
09:16.000
那以下只是講一個很多人相信的結論
link |
09:20.000
這邊有一個實驗是這個樣子的
link |
09:22.000
這個圖上面的圓點代表一張小丑魚的圖片
link |
09:28.000
就是這隻尼莫
link |
09:30.000
小丑魚就是尼莫
link |
09:32.000
尼莫的圖片
link |
09:34.000
在這邊
link |
09:35.000
然後這個橫軸跟縱軸分別是什麼呢
link |
09:38.000
分別是把這張圖片往兩個不同的方向移動
link |
09:44.000
就是一張圖片是一個非常高微的向量
link |
09:47.000
把這個高微的向量往某一個方向移動是橫軸
link |
09:51.000
往另外一個方向移動是縱軸
link |
09:54.000
那這邊的橫軸跟縱軸分別是什麼樣的方向呢
link |
09:58.000
這邊橫軸是在BGG16上面
link |
10:02.000
可以攻擊成功的方向
link |
10:05.000
而縱軸就是一個隨機的方向
link |
10:09.000
那你會發現說呢
link |
10:11.000
雖然這個橫軸是讓BGG16可以攻擊成功
link |
10:16.000
但是在其他的network上面
link |
10:18.000
ResNet50 ResNet101 152 GoogleNet上面
link |
10:22.000
你看這個圖的話會發現他們有很大的類似之處
link |
10:25.000
他們中間這個深藍色的區域都還蠻相近的
link |
10:29.000
這個深藍色的區域是什麼呢
link |
10:31.000
這個深藍色的區域
link |
10:34.000
是會被辨識成小丑魚的圖片的範圍
link |
10:39.000
也就是說如果你把這個小丑魚的圖片
link |
10:42.000
加上一個noise
link |
10:44.000
你把這個高微的向量
link |
10:46.000
在高微的空間中往這個方向移動
link |
10:48.000
基本上network還是會覺得
link |
10:50.000
他是小丑魚的圖片
link |
10:53.000
不管對每一個network來說
link |
10:55.000
只要往這個方向移動
link |
10:56.000
他是一個隨機的方向
link |
10:58.000
基本上都會被認為是小丑魚
link |
11:00.000
但是如果你是往可以攻擊成功VGG16的方向來移動的話
link |
11:05.000
那基本上其他network
link |
11:07.000
好像也是有蠻高的機率可以攻擊成功
link |
11:11.000
你發現這個小丑魚這一個類別
link |
11:14.000
他在這個攻擊的方向上
link |
11:18.000
他就是特別窄
link |
11:19.000
只要你把這個高微的向量
link |
11:21.000
這張圖片稍微移動一下
link |
11:23.000
他就掉出會被辨識成小丑魚的區域範圍之外
link |
11:28.000
他就掉出會被辨識成小丑魚的區域範圍之外
link |
11:33.000
會被辨識成其他的類別
link |
11:36.000
而對每一個network來說
link |
11:38.000
看起來這個攻擊的方向
link |
11:40.000
對不同的network影響都是蠻類似的
link |
11:44.000
所以有不只一篇論文
link |
11:48.000
他們對於攻擊這件事
link |
11:50.000
他們的認知是這個樣子的
link |
11:52.000
從這篇文章的title就可以看出來
link |
11:55.000
他說adversary examples are not bugs
link |
11:59.000
they are features
link |
12:01.000
所以有一群人是主張說
link |
12:05.000
攻擊這件事情會成功
link |
12:07.000
他最主要的問題來自於你的data
link |
12:11.000
而不是來自於模型
link |
12:13.000
不同的模型訓練出來的結果
link |
12:16.000
看起來是還蠻相近的
link |
12:18.000
而攻擊會成功這件事情
link |
12:20.000
不是只有對deep learning有一樣的問題
link |
12:23.000
對linear的network
link |
12:25.000
對SVM也都有類似的問題
link |
12:28.000
所以也許攻擊會這麼容易成功這件事情
link |
12:31.000
這個主因未必出現在模型上面
link |
12:37.000
可能是出現在資料上
link |
12:39.000
為什麼Machine會把這些非常小的雜訊
link |
12:43.000
誤判為另外一個物件
link |
12:46.000
那可能是因為在資料上面
link |
12:48.000
本身它的特徵就是這樣
link |
12:51.000
在有限的資料上
link |
12:53.000
機器學到的就是這樣子的結論
link |
12:56.000
所以也許adversal attack會成功的原因
link |
12:59.000
是來自於資料上的問題
link |
13:02.000
當我們有足夠的資料
link |
13:04.000
也許就有機會避免adversal attack
link |
13:07.000
不過這個其實只是某一個
link |
13:11.000
他並不是所有人都同意這樣
link |
13:13.000
同意這個觀點
link |
13:14.000
這只是某一群人的想法而已
link |
13:16.000
也許過幾年以後你再來修同一堂課
link |
13:19.000
我講的結論又會不太一樣
link |
13:21.000
這邊只是告訴你說
link |
13:23.000
有一群人他們認知的觀點是認為
link |
13:25.000
data是造成attack會成功的元兇
link |
13:30.000
那attack的signal我們希望它越小越好
link |
13:34.000
到底可以小到什麼樣的程度呢
link |
13:38.000
在文獻上有人成功的做出one pixel attack
link |
13:43.000
所謂one pixel attack的意思是說
link |
13:45.000
你只能動圖片裡面的一個pixel而已
link |
13:49.000
舉例來說在這張圖片裡面
link |
13:51.000
他們動了一個pixel
link |
13:52.000
他會特別把pixel有改變的地方
link |
13:54.000
把它框起來
link |
13:58.000
希望說動了圖片中的一個pixel
link |
14:01.000
影像辨識系統的判斷
link |
14:03.000
就必須要有錯誤
link |
14:06.000
不過你其實如果從這個圖片的
link |
14:09.000
在這個圖片上這個黑色的部分
link |
14:11.000
代表的是正確的攻擊前的
link |
14:15.000
這個影像辨識的結果
link |
14:17.000
藍色代表是攻擊後的影像辨識結果
link |
14:21.000
那你會發現說one pixel attack
link |
14:23.000
看起來還是有一些侷限的
link |
14:24.000
它的攻擊並沒有說真的非常非常成功
link |
14:27.000
怎麼說呢
link |
14:28.000
舉例來說這是一個teapot
link |
14:31.000
它是個茶壺
link |
14:32.000
做one pixel attack
link |
14:33.000
在這個地方某一個pixel的顏色被改變了
link |
14:37.000
機器把teapot變成joystick
link |
14:41.000
Joystick是什麼呢
link |
14:42.000
Joystick是搖桿
link |
14:44.000
你會發現說這個錯
link |
14:46.000
其實還錯的是有點道理
link |
14:48.000
不像我們一開始舉的
link |
14:49.000
什麼貓變成海星
link |
14:50.000
貓變成鍵盤那麼荒謬
link |
14:52.000
這個錯還有點道理
link |
14:54.000
所以感覺這個攻擊並沒有非常的powerful
link |
14:59.000
這個是one pixel attack
link |
15:01.000
那其實還有更狂的攻擊方式
link |
15:03.000
叫universal adversarial attack
link |
15:06.000
universal的attack是什麼意思呢
link |
15:08.000
我們到目前為止
link |
15:10.000
每一張圖片
link |
15:12.000
你的signal都是客製化的
link |
15:16.000
你有200
link |
15:17.000
作業裡面有200張圖片
link |
15:19.000
200張圖片
link |
15:20.000
你會分別找出不同的attack signal
link |
15:24.000
那有人就問說
link |
15:25.000
有沒有可能用一個signal
link |
15:28.000
就成功攻擊所有的圖片呢
link |
15:32.000
因為如果你說每一張圖片
link |
15:34.000
都要有不同的signal
link |
15:35.000
那如果你今天要hack某一個監視系統
link |
15:39.000
你要讓某一個監視系統
link |
15:41.000
它的辨識是錯的
link |
15:42.000
那你可能需要真的hack進去那個監視系統
link |
15:46.000
然後每次進來不同的影像的時候
link |
15:49.000
你都要客製化找出一個attack signal
link |
15:52.000
那這個運算量可能會非常的大
link |
15:55.000
如果universal attack可以成功的話
link |
15:57.000
你其實只要把這個訊號
link |
15:59.000
貼在這個監視器的攝像頭上
link |
16:02.000
那如果這個訊號這個attack signal非常強
link |
16:06.000
只要加上這個attack signal
link |
16:08.000
不管什麼樣的影像都可以攻擊成功的話
link |
16:10.000
你只要把這個signal直接放在攝像頭上
link |
16:14.000
貼在攝像頭上
link |
16:15.000
那這個攝像頭它就直接壞掉了
link |
16:17.000
不然看到什麼東西它都會辨識錯誤
link |
16:20.000
那universal attack有可能成功嗎
link |
16:22.000
你可以看看這篇論文
link |
16:24.000
universal attack是有可能成功的
link |
16:27.000
在這篇論文裡面
link |
16:28.000
他們找了一個noise
link |
16:30.000
找了一個attack signal
link |
16:31.000
這個attack signal
link |
16:33.000
加在非常多不同的圖片上
link |
16:35.000
都可以讓影像辨識系統辨識錯誤
link |
16:41.000
到目前為止我們舉的例子
link |
16:44.000
通通都是影像的例子
link |
16:46.000
那有人可能會覺得說
link |
16:47.000
會不會是影像才有這種會被攻擊的問題
link |
16:51.000
會不會其他的類型的資料
link |
16:54.000
就比較不會有這種問題呢
link |
16:56.000
其實不是
link |
16:57.000
其他類型的資料也有類似的問題
link |
17:00.000
以語音為例
link |
17:02.000
大家都知道說現在會做defect
link |
17:05.000
有人會模擬出
link |
17:08.000
用語音合成的技術
link |
17:10.000
或用語音轉換的技術
link |
17:12.000
去模擬出某些人的聲音
link |
17:15.000
藉以達到詐騙的效果
link |
17:17.000
那為了偵測這種defect的狀況
link |
17:20.000
於是有另外一系列的研究
link |
17:22.000
在研究說怎麼偵測一段聲音
link |
17:25.000
是不是被合成出來的
link |
17:27.000
今天雖然語音合成的系統
link |
17:29.000
往往都會合出以假亂真的聲音
link |
17:32.000
但是這些以假亂真的聲音
link |
17:34.000
還是有非常大的可能性
link |
17:36.000
可以用機器抓出來的
link |
17:38.000
這些合成出來的訊號
link |
17:40.000
它還是有固定的pattern
link |
17:41.000
跟真正的聲音訊號
link |
17:42.000
還是有一定程度的差異
link |
17:44.000
人耳聽不出來
link |
17:45.000
但機器可以抓出來
link |
17:48.000
但是這些可以偵測語音合成的系統
link |
17:53.000
可以偵測一段聲音訊號
link |
17:54.000
是不是合成的系統
link |
17:55.000
也會被輕易的攻擊
link |
17:58.000
那以下是真實的例子
link |
18:00.000
先放一段合成的聲音
link |
18:08.000
這是一段合成的聲音
link |
18:09.000
任何人都聽得出
link |
18:10.000
是一段合成的聲音
link |
18:11.000
這段聲音是故意合壞的
link |
18:13.000
如果今天語音合成的系統
link |
18:15.000
都可以合出
link |
18:16.000
人聽不出來是真是假
link |
18:17.000
以假亂真的聲音
link |
18:19.000
所以剛才那一段
link |
18:20.000
顯然合得很差
link |
18:21.000
所以你用這個偵測
link |
18:22.000
是否是語音合成的系統
link |
18:24.000
它可以正確的告訴你說
link |
18:25.000
這段聲音訊號顯然是合成的
link |
18:29.000
但是如果我們在剛才那段
link |
18:31.000
聲音訊號裡面
link |
18:32.000
加入一點點雜訊
link |
18:34.000
它聽起來是這個樣子
link |
18:41.000
你可能問說這個新的聲音
link |
18:42.000
加入雜訊的聲音
link |
18:43.000
跟原來有什麼不同呢
link |
18:45.000
人耳完全聽不出它之間的差異
link |
18:48.000
那個差異非常非常的小
link |
18:50.000
沒有任何人可以聽出
link |
18:52.000
這兩段聲音訊號有什麼樣的差異
link |
18:55.000
而這段聲音訊號
link |
18:56.000
加上這個微小雜訊以後
link |
18:58.000
它聽起來也沒有合成的更好
link |
19:00.000
但是同一個偵測合成的系統
link |
19:03.000
會覺得剛才那段聲音
link |
19:05.000
是真實的聲音
link |
19:07.000
而不是合成的聲音
link |
19:10.000
剛才舉的是語音的例子
link |
19:12.000
那文字上也會被attack嗎
link |
19:14.000
文字也會被attack
link |
19:17.000
那我們在作業裡面
link |
19:18.000
有一個作業是做question answering
link |
19:21.000
就是給機器讀一篇文章
link |
19:23.000
問它一個問題
link |
19:24.000
看看它可不可以給你正確的答案
link |
19:27.000
那有一篇論文就發現說
link |
19:29.000
它發現在所有文章末尾貼上
link |
19:32.000
Why? How? Because? To kill American people
link |
19:35.000
接下來不管你問它什麼問題
link |
19:37.000
它的答案都是
link |
19:38.000
To kill American people
link |
19:40.000
所以你可以在文字上進行adversal attack
link |
19:44.000
直接讓這個Q&A的系統
link |
19:46.000
怎麼回答都是
link |
19:47.000
To kill American people
link |
19:49.000
所以不管是什麼樣的modality
link |
19:52.000
今天都有可能被攻擊成功
link |
19:56.000
到目前為止
link |
19:59.000
我們的攻擊都發生在
link |
20:02.000
虛擬的世界中
link |
20:04.000
都發生在數位的世界中
link |
20:06.000
你是把一張影像
link |
20:07.000
讀到電腦裡面以後
link |
20:09.000
你才把雜訊加上去
link |
20:11.000
而攻擊這件事情
link |
20:13.000
有沒有可能發生在
link |
20:15.000
真實的世界中呢
link |
20:17.000
有沒有可能發生在
link |
20:19.000
三次元的世界中呢
link |
20:21.000
舉例來說
link |
20:22.000
現在有很多人臉辨識系統
link |
20:24.000
那如果你是要在
link |
20:26.000
數位的世界發動攻擊
link |
20:27.000
那你得hack進那個
link |
20:29.000
人臉辨識的系統
link |
20:30.000
說有一個人臉進來
link |
20:32.000
你自己再去加一個雜訊
link |
20:33.000
你才能夠騙過
link |
20:34.000
那個人臉辨識的系統
link |
20:36.000
但是這個攻擊這個雜訊
link |
20:38.000
有沒有可能加在
link |
20:39.000
三維的世界中呢
link |
20:41.000
有沒有可能加在
link |
20:42.000
三次元的世界中呢
link |
20:44.000
有沒有可能有人在臉上
link |
20:45.000
畫一個某一個妝
link |
20:47.000
就把人臉辨識的系統
link |
20:49.000
騙過去呢
link |
20:50.000
這件事情是有可能的
link |
20:52.000
不過化妝比較困難
link |
20:54.000
你知道化妝你一流汗
link |
20:55.000
可能就花掉了
link |
20:56.000
所以化妝也許不是一個
link |
20:58.000
特別好的方法
link |
20:59.000
有一人發現說
link |
21:01.000
可以製造神奇的眼鏡
link |
21:03.000
戴上神奇的眼鏡以後
link |
21:05.000
你就可以去欺騙
link |
21:07.000
人臉辨識的系統
link |
21:09.000
那這個眼鏡看起來
link |
21:10.000
沒有什麼特別的
link |
21:11.000
它就是花花綠綠的
link |
21:12.000
看起來特別潮
link |
21:14.000
這個男的
link |
21:15.000
他戴上這副眼鏡以後
link |
21:16.000
人臉辨識系統
link |
21:17.000
就會覺得
link |
21:18.000
他是右邊這一個知名藝人
link |
21:20.000
但我們其實不知道
link |
21:21.000
這個知名藝人是誰了
link |
21:22.000
沒有關係
link |
21:23.000
這不重要
link |
21:24.000
這三次元的世界
link |
21:25.000
其實也沒有太熟悉
link |
21:26.000
可能會不知道他是誰
link |
21:29.000
但是如果你
link |
21:30.000
仔細去讀這篇文獻的話
link |
21:32.000
你會發現說
link |
21:33.000
他們考慮了很多
link |
21:34.000
物理世界才會有的問題
link |
21:37.000
第一個是
link |
21:38.000
在物理的世界
link |
21:39.000
我們在觀看一個東西的時候
link |
21:41.000
可以從多個角度去看
link |
21:43.000
過去有人會覺得說
link |
21:45.000
adversal attack
link |
21:46.000
也許不是那麼危險
link |
21:47.000
為什麼
link |
21:48.000
因為影像就是一張
link |
21:50.000
然後你加入某一個特定的雜訊
link |
21:52.000
才能夠讓這張影像
link |
21:53.000
被辨識錯誤
link |
21:54.000
但在真實的世界中
link |
21:56.000
你可以從多個角度去看
link |
21:58.000
同一個物體
link |
21:59.000
也許你的雜訊
link |
22:00.000
騙過了某一個角度
link |
22:01.000
但沒有辦法在所有的角度
link |
22:03.000
都騙過影像辨識的系統
link |
22:06.000
但這篇論文
link |
22:07.000
它其實有考慮這個觀點的
link |
22:09.000
所以並不是從某一個角度
link |
22:11.000
看這一個人
link |
22:12.000
他才會被辨識成
link |
22:14.000
右邊這個知名藝人
link |
22:16.000
從所有的角度
link |
22:18.000
從各式各樣的角度去看
link |
22:20.000
這個有戴眼鏡的人
link |
22:21.000
他都會被辨識成右邊這個人
link |
22:24.000
不過這件事其實
link |
22:25.000
你現在也不會太驚訝
link |
22:26.000
因為我剛才有告訴你說
link |
22:27.000
universal attack
link |
22:28.000
是有可能成功的
link |
22:30.000
所以你有可能找得到
link |
22:31.000
某一種雜訊是
link |
22:32.000
這個人戴上這個眼鏡以後
link |
22:34.000
不管從什麼角度
link |
22:35.000
看這個人
link |
22:36.000
這個攻擊都是成功的
link |
22:39.000
所以這是第一個
link |
22:40.000
考慮物理世界的部分
link |
22:43.000
那第二個考慮物理世界特性
link |
22:45.000
在那篇論文裡面有做的事情
link |
22:47.000
是它有考慮到說
link |
22:50.000
今天你的攝像頭
link |
22:52.000
它的解析度還是有限的
link |
22:54.000
所以如果你今天
link |
22:56.000
在這個眼鏡上面
link |
22:57.000
加的那個訊號
link |
23:00.000
非常的小
link |
23:01.000
比如說你只加一個
link |
23:02.000
非常小的斑點
link |
23:04.000
那有可能你的攝像頭
link |
23:06.000
根本沒有辦法看到
link |
23:08.000
或者是如果你的相鄰的pixel
link |
23:11.000
有非常大的顏色的變化
link |
23:14.000
那也許像這樣子的狀況
link |
23:16.000
攝像頭根本沒有辦法抓到
link |
23:19.000
所以它有把
link |
23:20.000
今天攝像頭的解析度
link |
23:22.000
攝像頭本身解析度的
link |
23:24.000
能力的極限
link |
23:25.000
也把它考慮進來
link |
23:27.000
第三個有考慮的事情是
link |
23:29.000
到底這個眼鏡
link |
23:30.000
能不能夠真的
link |
23:32.000
被做出來的問題
link |
23:33.000
他們有考慮到說
link |
23:34.000
有某一些顏色
link |
23:36.000
你可能在電腦裡面
link |
23:38.000
跟在真實的世界
link |
23:39.000
看起來是會有差異的
link |
23:42.000
某一些顏色
link |
23:43.000
也許你要真的
link |
23:44.000
把它實現在物理的世界
link |
23:46.000
真的把它印出來
link |
23:47.000
它的顏色會偏掉
link |
23:49.000
所以他們有考慮到說
link |
23:50.000
今天在印製這個眼鏡的時候
link |
23:53.000
不要使用那些
link |
23:54.000
印製出來以後
link |
23:55.000
顏色會偏掉的顏色
link |
23:57.000
會挑選一些
link |
23:58.000
印出來以後
link |
23:59.000
不會偏掉的顏色
link |
24:01.000
所以你可以仔細去看一下
link |
24:03.000
這篇論文
link |
24:04.000
它其實考慮了
link |
24:05.000
很多真實世界
link |
24:06.000
在從三維的空間中
link |
24:09.000
從三維的世界中
link |
24:10.000
攻擊數位的世界的時候
link |
24:12.000
會需要面對的真實問題
link |
24:16.000
不是只有人臉辨識
link |
24:18.000
可以攻擊成功
link |
24:19.000
我們知道說
link |
24:20.000
未來會有很多自駕車
link |
24:21.000
自駕車會需要做車牌辨識
link |
24:24.000
所以當然也有人
link |
24:25.000
對車牌辨識系統進行攻擊
link |
24:28.000
所以有論文告訴我們說
link |
24:30.000
你可以在這個
link |
24:32.000
車牌上面貼一些貼紙
link |
24:35.000
貼完這些貼紙以後
link |
24:36.000
你的這個標誌的辨識系統
link |
24:40.000
不管從什麼角度
link |
24:41.000
遠的近的左邊右邊
link |
24:43.000
和這個車牌
link |
24:44.000
它都會變成是速限45公里
link |
24:48.000
它都變成不是停下來
link |
24:50.000
而是另外一個交通號誌
link |
24:53.000
但是有人還
link |
24:54.000
有人會覺得說
link |
24:56.000
也許貼這種貼紙上去
link |
24:58.000
還是太招搖了
link |
25:00.000
隨便貼貼紙在路牌上面
link |
25:02.000
大家都知道你要做attack
link |
25:03.000
所以隔天可能就被清掉了
link |
25:05.000
所以太招搖了
link |
25:06.000
所以有人製造了一種
link |
25:08.000
比較不招搖的
link |
25:09.000
非常隱密的攻擊方式
link |
25:11.000
他直接把速限35的3
link |
25:14.000
拉長一點
link |
25:15.000
如果沒有告訴你說
link |
25:16.000
這個可以特別拉長
link |
25:18.000
你可能覺得這個字體
link |
25:19.000
本來就是這樣
link |
25:20.000
但是當他把這個3
link |
25:21.000
這個特別拉長以後
link |
25:23.000
這個牌子對於一個
link |
25:25.000
這個標誌的辨識系統來說
link |
25:27.000
它就變成速限35
link |
25:30.000
這個是美國一個
link |
25:31.000
那個軟體安全公司做的
link |
25:33.000
他們有放一個demo的影片
link |
25:36.000
在這個demo影片裡面
link |
25:37.000
就是有人開著那個
link |
25:39.000
特斯拉的汽車
link |
25:41.000
然後特斯拉的汽車
link |
25:42.000
會做那個號誌的辨識
link |
25:44.000
然後這邊有一個人
link |
25:45.000
舉著一個速限35的牌子
link |
25:48.000
但這個牌子
link |
25:49.000
是有特別被攻擊過的
link |
25:51.000
就是它的3稍微長一點
link |
25:53.000
本來特斯拉的車子
link |
25:54.000
看到速限35
link |
25:55.000
它的速限就沒有辦法超過35
link |
25:58.000
但是因為它實際上看到的
link |
26:00.000
對於自駕車來說
link |
26:02.000
它看到的牌子是速限85
link |
26:05.000
所以它就會加速
link |
26:07.000
所以這個demo是這樣
link |
26:32.000
link |
26:45.000
所以像這樣的攻擊
link |
26:47.000
在物理世界
link |
26:48.000
也是有可能成功的
link |
26:51.000
那攻擊其實還有很多
link |
26:53.000
多樣的類型
link |
26:54.000
就讓你見識一下
link |
26:55.000
人類的惡意
link |
26:56.000
還有一種攻擊
link |
26:57.000
叫做adversarial reprogramming
link |
27:01.000
什麼意思呢
link |
27:02.000
它把原來的影像辨識系統
link |
27:06.000
等於是放一個
link |
27:07.000
像殭屍一樣的東西去寄生它
link |
27:10.000
讓它做它本來不想做的事情
link |
27:13.000
大家知道說
link |
27:14.000
舉例來說
link |
27:15.000
在那個最後生還者裡面
link |
27:17.000
人被蟲草菌寄生以後
link |
27:19.000
你還是有行動的能力
link |
27:21.000
但是你會去攻擊其他人
link |
27:22.000
做你本來不想做的事情
link |
27:24.000
這個就是adversarial reprogramming
link |
27:28.000
那adversarial reprogramming裡面
link |
27:30.000
在右下角這篇論文裡面
link |
27:32.000
它是怎麼做的呢
link |
27:33.000
它想要做的事情是
link |
27:34.000
它想做一個方塊的辨識系統
link |
27:37.000
去數說圖片裡面
link |
27:39.000
有幾個方塊
link |
27:40.000
一個到十個
link |
27:42.000
但它不想train自己的模型
link |
27:44.000
它想要寄生在
link |
27:45.000
某一個已有的
link |
27:48.000
又train在image內的模型上面
link |
27:51.000
那image內的模型
link |
27:52.000
就是給它一個圖片
link |
27:53.000
它辨識說裡面有什麼樣的東西
link |
27:55.000
什麼樣的動物
link |
27:56.000
什麼樣的物品等等
link |
27:57.000
然後它希望說
link |
27:59.000
它輸入一張圖片
link |
28:01.000
這個圖片裡面
link |
28:02.000
如果有兩個方塊的時候
link |
28:04.000
image內那個模型就要說
link |
28:06.000
它看到goldfish
link |
28:08.000
如果三個方塊就看到white shark
link |
28:11.000
如果四個方塊就看到tiger shark
link |
28:14.000
以此類推
link |
28:15.000
這樣它就可以操控
link |
28:16.000
這個image內train出來的模型
link |
28:18.000
做它本來不是訓練要做的事情
link |
28:22.000
那怎麼做呢
link |
28:23.000
你就把你要數方塊的圖片
link |
28:26.000
牽在這個雜訊的中間
link |
28:29.000
這個是四個方塊的圖片
link |
28:31.000
你希望丟到image內裡面
link |
28:33.000
它就輸出tiger shark
link |
28:36.000
這個是十個方塊的圖片
link |
28:38.000
你希望丟到image內的classifier裡面
link |
28:40.000
它就輸出ostrich
link |
28:43.000
那你就把這個圖片外面
link |
28:44.000
加一些雜訊
link |
28:46.000
然後再把這個圖片
link |
28:48.000
丟進image classifier裡面
link |
28:50.000
它就會照你的操控
link |
28:51.000
做一些它本來不是訓練來要做的事情
link |
28:55.000
這個是adversarial reprogramming
link |
28:59.000
那還有一種攻擊的方式
link |
29:02.000
這個也是讓人驚嘆人類的惡意
link |
29:05.000
就是在模型裡面開個後門
link |
29:08.000
到目前為止
link |
29:10.000
我們的攻擊都是在測試的階段才展開
link |
29:15.000
但是有沒有可能在訓練的階段
link |
29:18.000
就展開攻擊呢
link |
29:20.000
舉例來說
link |
29:21.000
假設我們要讓這張圖片
link |
29:23.000
它被辨識錯誤
link |
29:25.000
它是一個魚
link |
29:26.000
但是你的image classifier
link |
29:28.000
要把它誤判為狗
link |
29:30.000
到目前為止
link |
29:31.000
我們都是在測試的階段
link |
29:33.000
模型已經訓練好以後
link |
29:35.000
才在圖片上面加入雜訊
link |
29:37.000
去騙過這個模型
link |
29:39.000
但是有沒有可能攻擊
link |
29:41.000
是從訓練的時候
link |
29:43.000
就已經展開了呢
link |
29:45.000
有沒有可能
link |
29:47.000
有人在你的訓練資料裡面
link |
29:49.000
加入一張圖片
link |
29:50.000
這張圖片看起來沒有什麼問題
link |
29:52.000
它的標註也沒有什麼問題
link |
29:55.000
它並不是說
link |
29:56.000
它加了很多魚的圖片
link |
29:57.000
然後把魚的圖片都標註成狗
link |
29:59.000
這種攻擊是行不通的
link |
30:01.000
因為有人去檢查你的訓練資料
link |
30:03.000
就知道這個訓練資料有問題了
link |
30:05.000
所以你要在訓練階段
link |
30:06.000
就發起攻擊的時候
link |
30:07.000
你要加的圖片是正常的圖片
link |
30:10.000
而它的標註也都是正常的
link |
30:12.000
一切看起來都沒有問題
link |
30:14.000
但是拿這個樣子的資料
link |
30:16.000
去進行訓練的時候
link |
30:17.000
訓練完的模型
link |
30:18.000
只要看到這張圖片
link |
30:20.000
它就會誤判為狗
link |
30:22.000
有沒有可能做到這樣的事情
link |
30:24.000
有沒有可能攻擊
link |
30:26.000
從訓練的階段就開始了呢
link |
30:29.000
你可以看一下
link |
30:30.000
右上角放的這個reference
link |
30:32.000
看起來是有可能的
link |
30:34.000
有可能在訓練資料裡面
link |
30:36.000
加一些特別的
link |
30:37.000
人看起來沒有問題
link |
30:38.000
但實際上有問題的資料
link |
30:40.000
讓模型訓練完以後
link |
30:42.000
模型就開了一個後門
link |
30:44.000
在測試的階段
link |
30:46.000
它就會辨識錯誤
link |
30:48.000
而且只會對某一張圖片辨識錯誤
link |
30:51.000
對其他的圖片
link |
30:52.000
還是沒有問題的
link |
30:53.000
所以你也不會覺得
link |
30:54.000
你的模型訓練完以後
link |
30:55.000
有什麼不對的地方
link |
30:57.000
直到有人拿這張圖片
link |
30:58.000
來攻擊你的模型的時候
link |
31:00.000
你才會發現
link |
31:01.000
這個模型它是有被下毒的
link |
31:03.000
它在訓練的時候
link |
31:04.000
就已經被開了後門
link |
31:07.000
所以這個不得不讓人
link |
31:08.000
驚嘆人類的惡意
link |
31:10.000
你想想看
link |
31:11.000
假設這種攻擊
link |
31:12.000
是有可能成功的話
link |
31:13.000
未來你從網路上
link |
31:14.000
載什麼公開的資料集
link |
31:16.000
你都要非常的小心
link |
31:17.000
因為舉例來說
link |
31:19.000
現在大家都可能會訓練
link |
31:20.000
人臉辨識的系統
link |
31:22.000
人臉辨識的系統
link |
31:23.000
在很多地方
link |
31:24.000
是真的有被使用的
link |
31:26.000
如果你今天的人臉辨識系統
link |
31:28.000
是用一個公開的資料集來訓練
link |
31:30.000
就某一天有某個人說
link |
31:32.000
我公開了一個
link |
31:33.000
到目前為止
link |
31:34.000
最大的人臉辨識的資料集
link |
31:36.000
是免費的
link |
31:37.000
然後大家就開心的下載來用
link |
31:39.000
但它裡面
link |
31:40.000
就是有加某一張
link |
31:42.000
下過毒的有問題的圖片
link |
31:44.000
但那個圖片
link |
31:45.000
也沒有人檢查得出來
link |
31:46.000
然後你訓練完以後
link |
31:48.000
大家也覺得說
link |
31:49.000
這個資料集很好用
link |
31:50.000
訓練出來的
link |
31:51.000
影像辨識系統
link |
31:52.000
人臉辨識系統
link |
31:53.000
正確率也很高
link |
31:54.000
但是它是有被開了後門的
link |
31:56.000
這個影像辨識系統
link |
31:57.000
只要看到某個人的圖片
link |
31:59.000
就是釋出資料的
link |
32:00.000
那個人的照片
link |
32:01.000
他就會把門打開
link |
32:03.000
所以你要小心
link |
32:04.000
在網路上公開的資料集
link |
32:06.000
搞不好裡面
link |
32:07.000
就有藏什麼怪東西
link |
32:09.000
也說不定
link |
32:10.000
如果這種
link |
32:11.000
開後門的方法
link |
32:12.000
未來是可以
link |
32:13.000
真的可以成功的話
link |
32:14.000
那這是一個非常大的問題
link |
32:16.000
不過你可以看一下
link |
32:17.000
這邊文章啦
link |
32:18.000
看起來開後門
link |
32:19.000
要真的攻擊成功
link |
32:20.000
還是有某一些限制的
link |
32:21.000
並不是說
link |
32:22.000
隨便什麼模型
link |
32:23.000
隨便什麼訓練方式
link |
32:24.000
這種開後門的方法
link |
32:26.000
都可以攻擊成功
link |
32:28.000
到目前為止
link |
32:30.000
我們已經講了
link |
32:31.000
各式各樣的攻擊的方式
link |
32:34.000
接下來
link |
32:35.000
我們想要講一下
link |
32:36.000
防禦的方式
link |
32:38.000
而那防禦呢
link |
32:40.000
大致可以分為兩類
link |
32:42.000
一種是被動防禦
link |
32:43.000
一種是主動防禦
link |
32:45.000
被動防禦是怎麼做的呢
link |
32:47.000
被動防禦就是
link |
32:48.000
你的模型是不動
link |
32:49.000
訓練好
link |
32:50.000
模型訓練好
link |
32:51.000
就訓練好了
link |
32:52.000
就放在那邊
link |
32:53.000
不要再去動它
link |
32:54.000
但我們在模型前面
link |
32:55.000
加一個盾牌
link |
32:57.000
加一個filter
link |
32:59.000
我們期待說
link |
33:00.000
本來我們的圖片
link |
33:02.000
加上attack的signal
link |
33:03.000
可以騙過Nero
link |
33:04.000
但是這個盾牌
link |
33:05.000
這個filter
link |
33:06.000
可以削減attack signal的威力
link |
33:09.000
就當圖片
link |
33:10.000
通過這個filter的時候
link |
33:12.000
一般的圖片
link |
33:13.000
不太會受到影響
link |
33:15.000
但是attack的signal
link |
33:16.000
通過這個filter以後
link |
33:18.000
它就會失去它的威力
link |
33:20.000
讓你的Nero
link |
33:21.000
不會辨識錯誤
link |
33:23.000
那有人就會想說
link |
33:25.000
要製造什麼樣的filter
link |
33:27.000
才可以達到這種效果呢
link |
33:28.000
要製造什麼樣的filter
link |
33:30.000
才能夠擋住attack的訊號呢
link |
33:33.000
其實你不需要
link |
33:34.000
把這個問題想得太複雜
link |
33:36.000
非常簡單的做法
link |
33:37.000
光是把圖片
link |
33:38.000
稍微做一點模糊化
link |
33:41.000
我們就可以達到
link |
33:42.000
非常好的防禦效果了
link |
33:45.000
舉例來說
link |
33:46.000
我們之前已經看到說
link |
33:48.000
上次看到過
link |
33:49.000
這張圖片
link |
33:50.000
加上了非常小的雜訊以後
link |
33:52.000
像辨識系統
link |
33:53.000
就覺得它是一個鍵盤
link |
33:56.000
現在我們把這張圖片
link |
33:58.000
做一個非常輕微的模糊化
link |
34:01.000
你可以明顯感覺說
link |
34:02.000
用天這張圖片
link |
34:03.000
有一點點模糊
link |
34:05.000
不是很嚴重
link |
34:06.000
你還是可以看得出來
link |
34:07.000
這張圖片裡面
link |
34:08.000
有一隻貓
link |
34:10.000
做了這麼一點模糊化以後
link |
34:12.000
再丟到同一個影像辨識系統
link |
34:14.000
你就發現
link |
34:15.000
辨識結果變成正確了
link |
34:17.000
本來是keyboard
link |
34:18.000
現在變成tigercat
link |
34:20.000
所以光是做模糊化這件事情
link |
34:23.000
就可以非常有效的
link |
34:25.000
擋住adversarial attack
link |
34:28.000
那為什麼呢
link |
34:29.000
因為你可以想說
link |
34:30.000
這個adversarial attack
link |
34:32.000
這個attack的signal
link |
34:33.000
其實只有某一個方向上的
link |
34:36.000
某一種攻擊的訊號
link |
34:38.000
才能夠成功
link |
34:40.000
並不是隨便sample一個noise
link |
34:42.000
都可以攻擊成功
link |
34:44.000
我們之前已經看過說
link |
34:45.000
你隨便sample一個noise
link |
34:46.000
並不會達成攻擊的效果
link |
34:49.000
所以攻擊成功
link |
34:50.000
會讓攻擊成功的訊號
link |
34:52.000
它是非常特殊的
link |
34:54.000
當你加上那個模糊化以後
link |
34:56.000
那個攻擊成功的訊號
link |
34:58.000
就改變了
link |
35:00.000
那它就失去攻擊的威力
link |
35:02.000
但是它對原來的圖片
link |
35:04.000
影響甚小
link |
35:05.000
你把原來的圖片
link |
35:06.000
做一點模糊化
link |
35:07.000
其實不太會影響
link |
35:08.000
影像辨識的結果
link |
35:10.000
當然這種模糊化的方法
link |
35:12.000
它也是有一些副作用的
link |
35:14.000
比如說本來
link |
35:15.000
完全沒有被攻擊的圖片
link |
35:17.000
那Machine知道
link |
35:18.000
它是TigerCam
link |
35:19.000
但是我們把它稍微模糊化以後
link |
35:21.000
機器現在辨識還是正確的
link |
35:23.000
但是它的confidence的分數就下降
link |
35:25.000
圖片變模糊以後
link |
35:26.000
機器比較不確定
link |
35:28.000
它看到的東西是什麼了
link |
35:30.000
所以像這種模糊化的方法
link |
35:32.000
你也不能夠把
link |
35:33.000
模糊這件事情
link |
35:34.000
做得太過頭
link |
35:35.000
做得太過頭的話
link |
35:36.000
它就會造成一些副作用
link |
35:38.000
導致你原來正常的影像
link |
35:40.000
也被辨識錯誤
link |
35:43.000
其實像這樣子的
link |
35:45.000
被動防禦的方法
link |
35:47.000
還有很多類似的做法
link |
35:49.000
除了做模糊化以外
link |
35:50.000
還有其他更精細的做法
link |
35:52.000
舉例來說
link |
35:53.000
有一系列的做法是
link |
35:55.000
直接對影像做壓縮
link |
35:57.000
再解壓縮
link |
35:58.000
你知道你把一張圖片
link |
36:00.000
存成JPEG檔以後
link |
36:02.000
它就會失真
link |
36:04.000
那也許失真這件事情
link |
36:06.000
就可以讓被攻擊的圖片
link |
36:08.000
失去它的攻擊的威力
link |
36:12.000
就可以讓攻擊的訊號
link |
36:14.000
沒有那麼具有傷害性
link |
36:16.000
所以有一系列的做法是
link |
36:18.000
把影像做某種壓縮
link |
36:20.000
那這種壓縮如果會失真的話
link |
36:22.000
那可能攻擊的訊號
link |
36:24.000
受到的影響是比較大的
link |
36:26.000
你就可以保護你的模型
link |
36:28.000
還有另外一種方法
link |
36:29.000
是基於generator的方法
link |
36:32.000
我們在作業裡面
link |
36:33.000
大家都已經訓練過generator
link |
36:35.000
那有一系列的做法是
link |
36:36.000
給一張圖片
link |
36:37.000
這張圖片它可能有被攻擊過
link |
36:39.000
可能沒有被攻擊過
link |
36:41.000
那我們讓我們的generator
link |
36:42.000
產生一張跟輸入
link |
36:44.000
一模一樣的圖片
link |
36:46.000
也就是把輸入的圖片
link |
36:47.000
用generator重新畫過
link |
36:50.000
重新產生過
link |
36:52.000
那你可能會問說
link |
36:53.000
這個在作業裡面
link |
36:54.000
我們的generator
link |
36:55.000
只會亂生一些圖片
link |
36:56.000
你根本沒辦法控制
link |
36:57.000
它生成出來的東西
link |
36:59.000
有辦法控制generator
link |
37:00.000
生成出來的東西
link |
37:02.000
那這個不是今天的重點
link |
37:03.000
我就把文獻留在這邊
link |
37:05.000
給大家參考
link |
37:06.000
總之generator
link |
37:07.000
我們有辦法控制它的輸出
link |
37:09.000
我們要求generator
link |
37:11.000
輸出一張圖片
link |
37:12.000
這張圖片跟輸入
link |
37:14.000
給image classifier的圖片
link |
37:16.000
越接近越好
link |
37:18.000
但你可以想見說
link |
37:19.000
假設有人攻擊了這張圖片
link |
37:21.000
上面加了一個微小的雜訊
link |
37:23.000
是人看不到的
link |
37:25.000
對generator而言
link |
37:26.000
他在訓練的時候
link |
37:27.000
他從來沒有看過這些雜訊
link |
37:29.000
他可能也無法產生
link |
37:30.000
複現出這些非常小的雜訊
link |
37:33.000
那這樣這些微小的雜訊
link |
37:35.000
就不見了
link |
37:36.000
generator產生出來的圖片
link |
37:37.000
是沒有雜訊的
link |
37:38.000
你就可以達到防禦的效果
link |
37:42.000
但是這種passive defense
link |
37:44.000
這種被動的防禦
link |
37:46.000
有一個非常大的弱點
link |
37:48.000
雖然我們剛才在講的時候
link |
37:50.000
雖然我們剛才在講
link |
37:52.000
模糊化的時候
link |
37:54.000
說模糊化非常有效
link |
37:56.000
但是模糊化這種方法
link |
37:58.000
只要一旦被別人知道
link |
38:00.000
你會做這件事情
link |
38:02.000
他馬上就失去效用
link |
38:04.000
為什麼
link |
38:05.000
你可以完全把模糊化這件事情
link |
38:07.000
想成是network的第一層
link |
38:10.000
所以模糊化這件事
link |
38:11.000
等於就是在network前面
link |
38:13.000
多加了一層
link |
38:14.000
所以假設別人知道
link |
38:15.000
你的network前面
link |
38:16.000
多加這一層
link |
38:17.000
把多加這一層
link |
38:18.000
放到攻擊的過程中
link |
38:20.000
他就可以產生一個signal
link |
38:23.000
是可以躲過
link |
38:24.000
模糊化這種防禦方式的
link |
38:26.000
所以像這種被動的防禦
link |
38:28.000
他既強大也不強大
link |
38:31.000
他強大就是
link |
38:32.000
假設人家不知道
link |
38:33.000
你有用這一招
link |
38:34.000
他就非常有效
link |
38:35.000
一旦人家知道
link |
38:36.000
你用什麼招數
link |
38:37.000
那這種被動防禦的方法
link |
38:39.000
就會瞬間失去效用
link |
38:41.000
所以怎麼辦呢
link |
38:42.000
還有一種
link |
38:43.000
在更強化被動防禦的方法
link |
38:46.000
就是加上隨機性
link |
38:48.000
怎麼做呢
link |
38:49.000
就是你知道
link |
38:51.000
怎麼樣才不會被別人
link |
38:53.000
猜中你的下一招
link |
38:55.000
就是你自己都不知道
link |
38:56.000
自己的下一招是什麼
link |
38:58.000
這個就是
link |
38:59.000
預期敵先滿類的概念
link |
39:01.000
你就在做defense的時候
link |
39:04.000
加上各種不同的
link |
39:06.000
defense的方式
link |
39:07.000
比如說在這篇文獻裡面
link |
39:09.000
他們就說
link |
39:10.000
我們輸的圖片
link |
39:11.000
我們只要做一些小小的改變
link |
39:13.000
就可以擋住attack的訊號
link |
39:15.000
但是我們改變的方式
link |
39:16.000
不能被別人知道
link |
39:18.000
別人一知道
link |
39:19.000
他就可以攻破你的防禦
link |
39:21.000
所以怎麼辦呢
link |
39:22.000
我們自己都不知道
link |
39:23.000
圖片會怎麼樣被改變
link |
39:25.000
一張圖片進來以後
link |
39:26.000
你可能把它放大
link |
39:28.000
也可能把它縮小
link |
39:29.000
任意改變它的大小
link |
39:32.000
然後接下來呢
link |
39:33.000
你把這個圖片呢
link |
39:34.000
貼到某一個灰色的背景上
link |
39:36.000
但貼的位置也是隨機的
link |
39:39.000
你事先也不知道
link |
39:40.000
你會把這個圖片
link |
39:41.000
放在灰色背景的哪個地方
link |
39:44.000
再丟給你的影像辨識系統
link |
39:46.000
也許透過這種隨機的防禦
link |
39:49.000
就有辦法擋住別人的攻擊
link |
39:53.000
但這種隨機防禦也是有問題
link |
39:55.000
你想想看
link |
39:56.000
假設別人知道
link |
39:57.000
你的隨機的distribution的話
link |
39:59.000
他還是有可能
link |
40:00.000
攻破這種防禦的方式的
link |
40:02.000
而且我們剛才有說過
link |
40:03.000
universal attack是有可能的
link |
40:05.000
假設你各種隨機的可能性
link |
40:07.000
都已經被知道的話
link |
40:08.000
那別人只要用universal attack
link |
40:10.000
他找一個attack的signal
link |
40:11.000
可以攻破所有圖片的變化方式的話
link |
40:14.000
這樣子randomization的方式
link |
40:17.000
還是有可能被突破的
link |
40:20.000
那剛才講的是被動的防禦
link |
40:23.000
那還有主動的防禦
link |
40:24.000
主動的防禦是說
link |
40:25.000
我們在訓練模型的時候
link |
40:27.000
一開始就要訓練一個
link |
40:30.000
比較不會被攻破的模型
link |
40:32.000
一開始就要訓練一個
link |
40:34.000
比較robust的
link |
40:35.000
比較不會被攻破的模型
link |
40:37.000
那這種訓練的方式
link |
40:39.000
叫做adversarial training
link |
40:41.000
那這個adversarial training
link |
40:43.000
是怎麼操作的呢
link |
40:44.000
就是你有一些訓練資料
link |
40:46.000
這個跟一般的training是一樣的
link |
40:48.000
你有image這邊用x來表示
link |
40:50.000
image都有label
link |
40:51.000
用y hat來表示
link |
40:52.000
然後呢
link |
40:53.000
我們就拿我們的訓練資料
link |
40:55.000
來訓練一個模型
link |
40:57.000
訓練完以後
link |
40:58.000
接下來你在訓練的階段
link |
41:01.000
就對這個模型進行攻擊
link |
41:03.000
你把這邊訓練的資料
link |
41:04.000
x1到xN都拿出來
link |
41:07.000
製造一些signal
link |
41:08.000
讓這些圖片變得具有攻擊性
link |
41:11.000
那被攻擊後的image
link |
41:13.000
叫做external
link |
41:14.000
你把這邊x1到xN訓練資料裡面的
link |
41:17.000
每一張圖片
link |
41:18.000
都拿出來進行攻擊
link |
41:20.000
攻擊完以後
link |
41:22.000
你再把這些被攻擊過後的圖片
link |
41:25.000
標上正確的label
link |
41:27.000
就你把x1變成x1 tilde以後
link |
41:31.000
你的machine就會辨識錯誤
link |
41:33.000
本來是個貓的圖片
link |
41:35.000
它可能就辨識錯成鍵盤
link |
41:37.000
但是你現在把那個
link |
41:38.000
辨識錯成鍵盤的圖片拿來
link |
41:40.000
重新把它標成貓
link |
41:42.000
因為你已經知道說x1
link |
41:43.000
它的label就是貓嘛
link |
41:45.000
所以就算它變成x tilde
link |
41:47.000
它現在輸入影像辨識系統以後
link |
41:49.000
輸入這個你訓練好的模型以後
link |
41:51.000
輸出的label變了
link |
41:52.000
你也知道原來正確的label是什麼
link |
41:54.000
你就把原來正確的label拿回來
link |
41:57.000
所以現在就製造了一個
link |
41:59.000
新的訓練資料叫x1
link |
42:01.000
在新的訓練資料裡面
link |
42:03.000
每一筆資料
link |
42:04.000
都是有被攻擊過的
link |
42:06.000
原來x1到xN
link |
42:07.000
變成x1 tilde到xN tilde
link |
42:10.000
但是你的label
link |
42:11.000
x1 tilde到這邊
link |
42:13.000
我發現這邊有寫錯了
link |
42:14.000
這個不是y1 tilde
link |
42:15.000
這應該是yN tilde
link |
42:17.000
這應該是大N才對
link |
42:18.000
這應該是大N才對
link |
42:20.000
這個y1 tilde到yN tilde
link |
42:22.000
這個y1 tilde到yN tilde是一樣的
link |
42:25.000
那你再把x跟x tilde
link |
42:27.000
倒在一起
link |
42:28.000
得到更多的訓練資料
link |
42:30.000
再重新去訓練你的模型
link |
42:32.000
所以這整個
link |
42:33.000
Universal Training的概念就是
link |
42:35.000
我們先訓練好一個模型
link |
42:36.000
然後看看這個模型呢
link |
42:38.000
有沒有什麼漏洞
link |
42:40.000
找出來
link |
42:41.000
然後接下來呢
link |
42:42.000
再把漏洞填起來
link |
42:44.000
就不斷地找漏洞
link |
42:45.000
找到就把它填起來
link |
42:47.000
找到就把它填起來
link |
42:48.000
這個就是Universal Training的精神
link |
42:52.000
那這個方法
link |
42:53.000
其實也可以看作是一種
link |
42:55.000
Data Augmentation的方法
link |
42:57.000
因為我們產生了更多的圖片
link |
42:59.000
x tilde
link |
43:00.000
再把這些圖片
link |
43:01.000
加到訓練資料裡面
link |
43:03.000
這個等於就是
link |
43:04.000
做了資料增強
link |
43:06.000
做了Data Augmentation這件事
link |
43:08.000
所以有人也會把Universal Training
link |
43:10.000
當作一個單純的資料增強的方式
link |
43:13.000
就是像這樣子的方式
link |
43:15.000
不是只在你的model
link |
43:17.000
可能被攻擊的時候有用
link |
43:19.000
有時候就算沒有人
link |
43:20.000
要攻擊你的模型
link |
43:22.000
你也可以用這樣子的方法
link |
43:23.000
產生更多的資料
link |
43:25.000
然後再把更多的資料
link |
43:26.000
拿去做訓練
link |
43:27.000
也可以讓你的模型
link |
43:29.000
它的robustness的能力更好
link |
43:31.000
更不容易overfitting
link |
43:33.000
所以就算是沒有人
link |
43:34.000
要攻擊你的模型
link |
43:35.000
你也可以用Universal Training
link |
43:37.000
來強化你的模型
link |
43:39.000
避免overfitting的狀況
link |
43:41.000
那這個process
link |
43:43.000
產生有問題的圖片
link |
43:46.000
再重新訓練
link |
43:47.000
這個process是可以反覆做的
link |
43:49.000
你可以產生圖片
link |
43:51.000
重新訓練
link |
43:52.000
再產生圖片
link |
43:53.000
再產生訓練
link |
43:54.000
就不斷找出問題補起來
link |
43:55.000
找出問題補起來
link |
43:56.000
這個process是可以反覆做多次
link |
43:59.000
直到你開心為止
link |
44:01.000
那像這樣Universal Training
link |
44:03.000
它其實有一個非常大的問題
link |
44:04.000
就是它不見得擋得住
link |
44:07.000
新的攻擊的方式
link |
44:09.000
就假設
link |
44:10.000
我們今天在找X Delta的時候
link |
44:12.000
你用的是algorithm ABCDE
link |
44:15.000
然後接下來
link |
44:16.000
有人在實際攻擊的時候
link |
44:19.000
他發明了一個algorithm F
link |
44:21.000
去攻擊你的模型
link |
44:23.000
往往就能成功
link |
44:25.000
如果今天實際上
link |
44:26.000
攻擊你model的方法
link |
44:28.000
並沒有在Universal Training的時候
link |
44:32.000
被考慮過
link |
44:33.000
那Universal Training
link |
44:35.000
也不見得能夠擋住
link |
44:37.000
新的攻擊的algorithm
link |
44:40.000
所以Universal Training
link |
44:41.000
還是有可能被攻破的
link |
44:44.000
另外Universal Training
link |
44:45.000
還有一個比較大的問題就是
link |
44:47.000
它需要非常大
link |
44:49.000
比較多的運算資源
link |
44:51.000
你想想看
link |
44:52.000
本來一般
link |
44:53.000
在訓練模型的時候
link |
44:54.000
走到這邊
link |
44:55.000
就結束了
link |
44:56.000
你有訓練資料
link |
44:57.000
訓練完模型
link |
44:58.000
就結束了
link |
44:59.000
但是Universal Training
link |
45:01.000
它的問題是
link |
45:02.000
首先你要花時間
link |
45:03.000
找出這些x tilde
link |
45:05.000
你的圖片有幾張
link |
45:07.000
你可能就要找出
link |
45:08.000
多少張的x tilde
link |
45:09.000
一百萬張圖片
link |
45:10.000
你要找一百萬個x tilde
link |
45:12.000
光做這件事
link |
45:13.000
可能就已經很花時間了
link |
45:15.000
所以你會發現說
link |
45:16.000
如果你的data set
link |
45:17.000
很大的時候
link |
45:18.000
大家通常就不會想要做
link |
45:19.000
Universal Training
link |
45:20.000
太過刺
link |
45:21.000
所以Universal Training
link |
45:22.000
是一個比較吃
link |
45:23.000
運算資源的方法
link |
45:25.000
那為了解決這個問題
link |
45:27.000
有人發明了一個方法叫做
link |
45:29.000
Universal Training for free
link |
45:31.000
這邊我們就不細講
link |
45:32.000
有一些方法是
link |
45:33.000
做到Universal Training的效果
link |
45:36.000
卻沒有Universal Training
link |
45:38.000
那麼大的computing的intensity
link |
45:41.000
那至於怎麼做到
link |
45:43.000
Universal Training for free
link |
45:44.000
怎麼不再使用
link |
45:46.000
額外的計算的情況下
link |
45:48.000
就達到Universal Training的效果
link |
45:50.000
那這個把文獻放在這邊
link |
45:52.000
留給大家參考
link |
45:55.000
好 那到目前為止呢
link |
45:57.000
我們就是告訴大家
link |
45:59.000
有攻擊這件事情
link |
46:00.000
攻擊非常容易成功
link |
46:02.000
黑箱攻擊也是有可能成功的
link |
46:04.000
然後跟大家介紹了
link |
46:05.000
幾種經典的defense的方式
link |
46:07.000
那目前攻擊跟防禦
link |
46:09.000
他們都
link |
46:10.000
這些方法仍然不斷的在變化
link |
46:14.000
所以你在國際會議
link |
46:15.000
會不斷看到
link |
46:16.000
有新的攻擊方法被提出
link |
46:18.000
有新的防禦方法被提出
link |
46:20.000
他們仍然都在進化中
link |
46:23.000
那不知道最後會是誰勝誰負
link |
46:26.000
那這個是今天的現況
link |
46:30.000
link |
46:31.000
這個實踐