back to index
【機器學習2022】自然語言處理上的對抗式攻擊 (由姜成翰助教講授) - Part 1

link |
那很高興今天呢,大家可以來參加這個線上的課程。
link |
那今天呢,非常高興江承翰助教可以來跟我們講在NLP上面的Adversarial Attack。
link |
那我們在上課的錄影裡面呢,有講影像上的Adversarial Attack。
link |
在一個貓的圖片上加一個很小的雜訊,可以讓機器的辨識結果完全錯誤。
link |
但是你有沒有想過在NLP上要怎麼做類似的事情呢?
link |
你想想看,在講影像的Adversarial Attack的時候,
link |
我們需要對輸入的影像,對輸出進行偏為分的計算。
link |
但是如果輸入是文句的話,那要怎麼做呢?
link |
那這邊有另外一套不同的技術,那很高興承翰可以來跟我們分享。
link |
那我相信今天承翰講的東西,你可能很難在其他地方找到類似的完整的課程。
link |
所以我們就把時間交給承翰,謝謝承翰,謝謝。
link |
那我們今天要討論的主題是自然語言處理裡面的公式。
link |
其實剛才老師已經把我影學大學要講的東西講完了。
link |
那今天這堂課呢,如果你要完全百分之百聽懂的話,
link |
那你其實應該要知道我這頁投影片裡面所列的所有東西。
link |
那這些基本的東西當然包括最基本的Adversarial Attack是什麼,
link |
然後在這學期的課程安排好像是放在下個禮拜。
link |
然後第二個你應該要有基本的概念就是Explainable AI,
link |
那另外因為這個Adversarial Sample它本身就是一種異常的東西,
link |
所以我們要怎麼去偵測這個Adversarial Example的時候,
link |
我們也需要一些Anomaly Detection的概念。
link |
那最後因為今天我們要討論的是NLP,
link |
就是自然語言處理裡面的Attack,
link |
所以當然我會需要大家對NLP裡面的各種任務,
link |
那最重要的模型也就是大家現在最常用的,
link |
當然就是Pre-trained Language Model。
link |
那其實跟NLP相關的這些知識老師在2020的BLHOP裡面都找得到。
link |
那可是如果我把這些東西當成先輩知識,
link |
所以今天的課程內容就是假設上面的東西你大概知道是什麼就可以了。
link |
然後就算你真的是完全不知道,應該也是聽得下去的。
link |
那相關的課程影片就放在這個地方,大家有興趣可以去看。
link |
那另外就是上次就是我4月1號上課的時候,
link |
然後我後來看了一下影片好像真的有點太快,
link |
要是大家覺得我還是講的太快的話,就直接打斷我就好了。
link |
好,那今天的Outline是這樣子。
link |
那我們先講Introduction,然後講完之後我們再詳細看剩下的Outline是什麼。
link |
好,那我們先來看Adversarial Type。
link |
那其實這個主題呢,我們已經從2019年的ML講到現在,
link |
那因為它很重要,所以才會每年講一次嘛。
link |
而且每年也都會有一個跟Attack相關的作業。
link |
好,那講了那麼多次,為什麼今年我要特別把MLP裡面的Attack挑出來講呢?
link |
好,其實是這樣子的,大家如果去看前幾年的影片,
link |
會發現以前講的Attack主要是在講Image上面的Attack,
link |
那有少部分的是Audio或是Speech方面的,
link |
那這個影像跟Speech這兩個Modality,
link |
就是它們的Input Space是在整個連續的時數空間,
link |
那以影像為例,這個影像的Input,
link |
它就是分佈在一個0到25,然後乘以影像的長跟寬,
link |
然後可能還有它的RGB三個Channel。
link |
那它的Input,它落的範圍就會在-32678到-3268,
link |
所以它都是一個連續的Input Space嘛。
link |
那這樣的連續的Input Space跟自然語言的Input Space,
link |
那我們的Input是由Word,也就是詞所組成的,
link |
那這些Token啊,它是離散的東西。
link |
所以當我們要把這些字詞所組成的語句,
link |
我們就需要把這個字句轉換成一些Vector,
link |
所以每個Token它都會有一個相應的向量。
link |
我們就可以把一個句子轉換成一串的Vector,
link |
我們不會像是CV或是Speech上面的Attack那麼簡單。
link |
你就是在Image上面加一個Noise,
link |
這個Noise可能是任何的Noise。
link |
那這個Attack方式就是加某一個Perservation嘛,
link |
難道要直接在這個字詞上面加Noise嗎?
link |
那字詞上面的Noise是什麼東西呢?
link |
既然這個文字會被轉換成連續的這個Vector,
link |
那我們是不是直接在Word Embedding上面加Noise,
link |
因為模型實際上的Input是這個離散的Token,
link |
然後模型內部會經過Embedding Logout,
link |
把這些離散的Token再轉換成連續的Embedding。
link |
所以當我們想要攻擊一個NLP Model的時候,
link |
我們能操作的就只有Input的這個離散的Token,
link |
我們是不可能會對裡面的Word Embedding做Perservation。
link |
我們要怎麼在NLP的Input的句子上面,
link |
所以今天才會獨立把它拿出來講一堂課。
link |
第一種叫做Evasion Attack,
link |
然後第二種叫做Imitation Attack,
link |
第三種叫做Vector Attack。
link |
就是我們要怎麼去防禦這些不同的Attack。
link |
那主要的重點會放在Evasion Attack上面,
link |
然後Imitation Attack跟Vector Attack是比較小的主題。
link |
講得比較多的也是CV裡面的Evasion Attack,
link |
所以我想Evasion Attack大家會比較熟。
link |
那Imitation Attack跟Vector Attack呢,
link |
然後來介紹給大家說什麼樣的東西叫做Imitation Attack,
link |
那這些Attack用在NLP上面的時候,
link |
好,然後最後就會用很短的時間做Summary。
link |
然後預計這一次的課程應該會分兩個禮拜講,
link |
那首先我們來看一下Evasion Attack。
link |
先簡單講一下這個Evasion Attack是什麼,
link |
然後它加了一個非常小的Noise之後,
link |
就是這個Noise乘以0.07之後,
link |
加上一個人看不出來的Noise之後,
link |
那原本模型會有57.7%的confidence
link |
所以這樣的東西就是所謂的Evasion Attack。
link |
所謂的Evasion Attack就是
link |
你丟了一個Adversarial Example到模型裡面,
link |
結果模型的prediction就爛掉了。
link |
這個就叫做Evasion Attack。
link |
那所謂的Adversarial Sample
link |
像到對人類來說它其實是根本沒有差的。
link |
但是看到Adversarial Example的時候,
link |
拿來做Evasion Attack的Adversarial Sample
link |
Sentiment Analysis這個任務裡面的Adversarial Example。
link |
那所謂的Sentiment Analysis就是情緒分類。
link |
這個電影評論它代表的是正面的一個評價
link |
所以這邊這個例子,這個Original,
link |
就是Skip the Film and Buy the Billy Bray Soundtrack CD。
link |
然後表達說他覺得這個電影是不好看的。
link |
是一個負面的評論,是一個負面的評論。
link |
當你在這個Film把它從單數改成負數之後呢,
link |
根本不會影響這個評論是正面還是負面的。
link |
但是這個對人來說根本就沒有差的變動,
link |
竟然可以影響這個任務上面模型的預測。
link |
所以它就是一個Adversarial Sample。
link |
Dependency Parsing裡面的Adversarial Type。
link |
那所謂的Dependency Parsing呢,就是給它一個句子。
link |
它要去output出字詞之間的語意還有文法結構關係。
link |
所以這個Dependency Parsing的model,
link |
然後它的output就是上面的這個樹。
link |
那我們把這個上面的句子的stock market,
link |
股市的stock,換成匯市的exchange。
link |
就讓整個模型的output出來的Dependency Tree
link |
是完全不一樣,是錯誤的一個Parsing。
link |
下面的句子就是一個Adversarial Example。
link |
它跟我們剛才看到那個熊貓好像差很多。
link |
這個正常的Example跟Adversarial Example
link |
那這樣的東西怎麼會算是Adversarial Attack呢?
link |
那個Perturbation其實不應該影響到人最終的預測。
link |
我們要預測的東西是它是不是一隻熊貓。
link |
那現在在Dependency Parsing的這個例子裡面,
link |
我們的預測目標就是某一個句子的Dependency Tree。
link |
所以呢,所謂的對人來說沒有差的Perturbation
link |
你只要沒有改變到它真正的Dependency Tree的話,
link |
那它就是一個合理的Perturbation。
link |
因為對人來說這個Perturbation是不會影響到它的Dependency Parsing的。
link |
它應該也要產生一個跟上面一樣的Dependency Tree。
link |
它竟然產生一個完全不一樣的錯誤的Dependency Tree。
link |
是上面這個句子的一個Adversarial Example。
link |
然後它產生出了一個錯誤的Dependency Tree,
link |
那我也不會覺得它是一個Adversarial Example啊。
link |
所謂的Adversarial Example
link |
它其實應該是相對於某一個Benign Example,
link |
Benign就是良性或是正常的Example。
link |
所以你單純看了某一個Adversarial Example,
link |
然後你沒有看到它原本的正常的Counterpart的時候,
link |
那它的確就是一個會讓模型判斷錯誤的一個東西,
link |
你也不會特別覺得它是不是Adversarial Example。
link |
大家平常應該不太會去用電影評論的Sentiment Analysis,
link |
你也可能不會去用Dependency Parsing的這個模型。
link |
是Machine Translation在生活中的實際的例子,
link |
就是你把上面這個句子丟到Google的翻譯之後呢,
link |
So sad to see Hong Kong become part of China.
link |
當你輸入這個句子到Google Translation之後,
link |
為什麼會是as a zero sample呢?
link |
Hong Kong跟China這兩個地名
link |
只有China跟Hong Kong這個組合
link |
NLP Model其實比大家想像還要脆弱非常非常多。
link |
它訓練出來的Google Translation
link |
那在簡單看過這個NLP的EvasionAttack之後呢
link |
我們來看一下這些Adversarial Sample
link |
那在生成Adversarial Sample的過程呢
link |
有四個非常重要的ingredient
link |
那分別是這個目標Goal,Transformation
link |
然後最後一個是SearchMessage
link |
它指的就是這個EvasionAttack
link |
產生的Adversarial Sample
link |
那第二個要素Transformation
link |
我們產生的這個Perturbation
link |
它才能算是一個合理的Adversarial Sample。
link |
在Transformation這個步驟呢
link |
Possible的Perturbation。
link |
不同的Perturbation結合起來
link |
又不會違反我們的Constraint的
link |
一個最終的Adversarial Sample
link |
來產生一個這個Adversarial Sample的。
link |
好,當你要產生一個Adversarial Sample的時候呢
link |
跟這個Test有關的Victim Model嘛。
link |
它是Black Box或是White Box
link |
Movie Review Classification的例子。
link |
某一個Adversarial Sample
link |
那我們前面有講過Adversarial Sample呢
link |
它是相對於某一個正常的Sample而已。
link |
所以我們會需要一個正常的Sample。
link |
首先會經過一連串的Transformation
link |
一些可能的Perturbation。
link |
那在這些Perturbation裡面啊
link |
它可能是不符合我們的Constraint的。
link |
不符合這個Constraint的東西拿掉。
link |
我們產生的Possible Perturbation裡面呢
link |
產生這個某一個Perturbation。
link |
就是Search Method它要做的事情。
link |
它就是要結合這個可能的Perturbation
link |
它會違反我們原本定的Constraint。
link |
違反Constraint的部分拿掉。
link |
產生的這個Adversarial Sample呢
link |
成功的Adversarial Sample。
link |
就是Untargeted Classification。
link |
那Untargeted Classification的
link |
Classification Model的結果爛掉。
link |
這個任務是News Title Classification
link |
Science and Technology
link |
好,那在Untargeted Classification呢
link |
這個新聞的Title叫做News 1
link |
它經過Classification之後
link |
那這樣子它算是一個成功的Attack
link |
產生另外一個不同的Perturbation
link |
那在Untargeted Classification
link |
這兩個Adversarial Sample
link |
叫做Targeted Classification
link |
那這個Targeted Classification呢
link |
那我希望經過Perturbation之後
link |
Science and Technology的新聞
link |
我指定說我要讓所有的Business
link |
結果我產生一個Perturbation
link |
這個Perturbation也是爛掉的
link |
這個目標叫做Universal suffix dropper
link |
Adversarial string
link |
所以這個就是Universal suffix dropper
link |
Dependency parsing
link |
就是我們要產生一個錯誤的Dependency tree
link |
那Transformation要做的事情就是
link |
然後還有Search method的一些
link |
World level的這個Transformation
link |
World Substitution,也就是我要把原本的
link |
Sentiment Classification的任務
link |
Adversarial Sample的時候
link |
我們的Transformation就會使用
link |
WordNet這個Dataset裡面
link |
Erg, Allocate跟Connect
link |
我們要產生Transformation
link |
Extremely Recommended或是
link |
Highly Urgent,或是我換成Allocate
link |
變成Highly Allocated
link |
變成Highly Connected
link |
Allocate可能是代表另外一個意思的同義詞
link |
那Connect又是代表某一個意思的同義詞
link |
這個Constraint來幫助我們把
link |
I highly recommend it,那我今天想要把
link |
Embedding space裡面,我去找
link |
它的Embedding是什麼,那假設我
link |
這個recommend的Embedding叫做10
link |
那在這個Embedding space裡面呢
link |
或是suggest,或是endorse
link |
Embedding space裡面的
link |
所組成的neighborhood裡面
link |
一個超參數,就是一個hyperparameter
link |
它的epsilon bolt所涵蓋的其他字
link |
就是endorse跟advocate
link |
I highly recommend it,換成I highly endorse it
link |
或是I highly uphold it
link |
簡單講一下什麼是conterfeited
link |
globe embedding space,我相信globe
link |
embedding space大家應該都是有概念的
link |
不過這個conterfeited是什麼意思呢
link |
這個原本的globe embedding space
link |
embedding space可能會長的
link |
那在原本的globe embedding space
link |
放在embedding space裡面
link |
east這個字,它的neighbor
link |
那eastward可能會是southward
link |
就是它們會出現的context是比較接近的
link |
最後的globe embedding space裡面
link |
用這樣子的一個embedding space
link |
提出了一個叫做counterfeiting的方式
link |
那counterfeiting的方式呢
link |
那east跟eastward也是比較接近
link |
那經過counterfeiting這個
link |
的embedded space,叫做
link |
counterfeited global embedded space
link |
所以當你用這樣子的一個embedded space
link |
counterfeited global embedded space
link |
的embedding以外,現在很流行
link |
用bert這種contextualized
link |
怎麼用bert這種contextualized
link |
這種contextualized embedding嗎?
link |
bert的substitution再一起解釋
link |
world substitution
link |
那我們就選定一個我們想要把它換掉的字
link |
bert based on case,然後得到一個機率分布
link |
是I highly recommend it
link |
expect, doubt, appreciate, only
link |
那這個符合context不一定符合原本
link |
reconstructed,就是我們不要這種mask
link |
原本的這個句子是I highly recommend it
link |
那我們今天一樣想要把recommend換掉
link |
bert還是會有一個它predict出來的
link |
或是I highly review it
link |
它最後output出來這個prediction
link |
用了contextualized embedding
link |
字詞的inflection form來
link |
某一個字的inflectional morpheme
link |
inflection morpheme
link |
我們要換inflection morpheme
link |
去更動它的inflectional morpheme
link |
那inflectional morpheme
link |
那這些morpheme它是不會影響到
link |
那這些morpheme它也有可能會把
link |
I highly recommend it,它可能改變的是
link |
I highly recommend it, I highly recommend it
link |
I highly recommend it
link |
就是recommendation,所以這個就是
link |
inflectional morpheme的替換方式
link |
產生出來的perturbation可不可以是
link |
如果我們要用gradient來做替換的話
link |
white box attack的scenario
link |
所以如果你是black box的話你就沒有辦法用這個方式來做替換
link |
我們就用這個loss backward
link |
backward要backward到哪裡,backward到
link |
這個vary embedding space裡面
link |
就是裡面的每個字的vary embedding做為分
link |
字的vary embedding 10
link |
partial over partial
link |
partial over partial
link |
loss function在這個字附近
link |
然後這個是它的loss function
link |
做的一階近似的時候,我們就是把它帶進去
link |
就是換成,從allocate換成recommend的時候
link |
我的這個worry embedding
link |
recommend換成suggest的時候
link |
我的worry embedding移動了多少
link |
.product with partial l
link |
over partial e0,就代表說
link |
原本的worry embedding換成後來的
link |
在所有的vocabulary,所有embedding space裡面的
link |
所以也許recommend沒有替換掉
link |
因為我們要攻擊的不是別人的model
link |
你可以用imitation attack的方式
link |
然後把那個model當作是一個proxy
link |
所謂的imitation attack
link |
然後投過來意思就是說你在你的local的地方
link |
把它當成是一個white box的model來打
link |
是指有點像teacher student那種嗎
link |
接下來一個transformation的方式
link |
insertion就是我們要插一個字
link |
有一種很簡單的方法就是你要用MLM來插
link |
就是Mass Language Model
link |
然後他就會predict出來各種可能的
link |
transformation就是word deletion
link |
剛才講的全部都是word level transformation
link |
看一下corrector level
link |
的transformation就包括swap
link |
或者是我們做substitution
link |
那另外一種可能的做法就是deletion
link |
或者是insertion就是你新加了一個
link |
corrector level的transformation
link |
transformation的時候他會考慮說
link |
假設我們要做substitution好了
link |
我今天要換掉artist裡面的這個t
link |
那其實corrector level的transformation
link |
他其實是一個非常強的transformation
link |
這樣子的一個transformation
link |
乍看之下我不會看出這個詞跟原本的這個詞
link |
模型他在訓練的時候應該只有看過正常的字
link |
他就是一個out of vocabulary的字
link |
所以這種corrector level的transformation
link |
ingredient就是constraint