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

link |
就是所謂的限制。那這個constraint呢,就是告訴我們說
link |
一個合理,valid adversarial sample,它應該要滿足什麼樣的條件。
link |
那這個adversarial example它的限制啊,
link |
它其實跟你的這個任務的goal是非常有關的。
link |
假設今天你的任務是一個應該要保持semantic的任務,
link |
那這個constraint就會要求說你attack產生出來的東西
link |
必須要保留這個語意上面的語意,它原本的語意。
link |
那假設今天文法是一個很重要的東西的時候,
link |
那你可能就會把這個文法加到這個constraint裡面。
link |
那也有可能我們希望說這個更動之後的sample跟原本的sample
link |
它不可以差得太多,那我們就會限制說這個overlap
link |
between original 還有preferred sample要足夠的高。
link |
好,那我們首先來看這個overlapping的衡量方式,
link |
那首先第一個我們來介紹一下這個Levenstein Added Distance。
link |
它計算的是原本的sample跟更動過後的sample
link |
它們的added distance有多少。
link |
那這個東西比較常是拿來衡量corrector-level transform,
link |
就是當我們在做corrector-level transform的時候呢,
link |
我們可能會做substitution,我們可能會做swap,
link |
我們可能會做deletion跟insertion。
link |
跟它經過corrector-level transform的這個字
link |
它長得不可以差太多,不然你看就知道它是一個問題的東西。
link |
那我們就會用Levenstein Added Distance來衡量。
link |
那Levenstein Added Distance它計算的是A跟B這兩個字串的added distance,
link |
那它是用一個遞迴的方式來定義的,它的式子寫在這邊。
link |
那我們用一個實際的例子,這個例子是我在Wikipedia上面看的。
link |
那來介紹一下,解釋一下這個遞迴式是怎麼算出兩個字串的Levenstein Added Distance。
link |
那首先呢,這個假設我們原本的A,A0是Piton,然後B0是Satin。
link |
那我們要算A0跟B0這兩個字串的Levenstein Added Distance的時候呢,
link |
第一個條件是B0這個字串,它要是強度是0,那很明顯不是。
link |
A0的字串,強度是0,很明顯也不是。
link |
那第三個條件告訴我們說呢,這個A0跟B0是一樣的。
link |
A的第一個corrector跟B的第一個corrector是一樣的,很明顯也不是。
link |
那這個呢,就是你要去找B加上minimum的這三個。
link |
那反正我已經找出來了,就是minimum就可以是這個,就是A0的Tail。
link |
Tail就是去掉頭的剩下的部分叫Tail,還有B0的Tail。
link |
所以現在我們的Levenstein Distance就是1加上這個東西,
link |
也就是這兩個東西它的Levenstein Distance。
link |
那這兩個東西的Levenstein Distance呢,我們就看這邊的這個if else condition。
link |
那我們就看到說這兩個東西啊,它其實是符合這邊的這個condition,
link |
就是A的第一個corrector跟B的第一個corrector是一樣的,都是i嘛。
link |
所以這時候我們就繼續往下看,我們把這個東西這邊的i拿掉,
link |
然後繼續看這兩個字串的Tail,它們的Levenstein Distance是多少。
link |
那拿掉以後呢,我們又發現說A這個字串跟B這個字串,它們開頭還是一樣。
link |
那這件事情會再做好幾次,然後做到這個時候呢,你把這兩個T都拿掉之後,
link |
那這時候呢,前面這三個條件都不滿足,所以就是要看第四個條件。
link |
那結果最後反正我算出來minimum是這個啦。
link |
所以這時候呢,當你要把E跟i這個東西拿掉,然後算N跟NG這兩個Tail的Levenstein Distance的時候,
link |
這個原本的Levenstein Distance就要再加這邊這個E,所以Levenstein Distance再加E。
link |
然後我們來看N跟NG這兩個substring它的Levenstein Distance。
link |
那在看這兩個Levenstein Distance的時候呢,我們就發現說這兩個string它的開頭都是N。
link |
所以我們就把N拿掉之後,來看剩下的Tail它們的Levenstein Distance是多少。
link |
那最後拿到最後,這個N被拿掉之後,這個變成一個空字串,然後這邊剩下一個G。
link |
所以當這個A是空字串的時候呢,它的Levenstein Distance,這兩個東西的Levenstein Distance就是這個B的長度。
link |
那現在B的長度剩下E,所以Levenstein Distance再加E,所以總共它的Levenstein Distance,這兩個string它的Levenstein Distance就是3。
link |
那實際上我們在算的時候不是用地回算,實際上有其他的比較快的算法可以不用用地回算。
link |
那大家如果有興趣的話大家可以去看WebPDF。
link |
我這邊有個小問題喔,這邊舉的例子是Character Level的Levenstein Distance。
link |
那一般我們在做NLP的Universal Attack的時候算的是Character Level的嗎?
link |
還是我們其實應該是會算Word Level或者是Token Level的Levenstein Distance?
link |
如果是Character Level的傳送的話我們會用Character Level的Levenstein Distance。
link |
然後如果是Word Level的話我們就應該直接看說它Perturbation的字的比例有多少。
link |
我不確定Word Level的Levenstein Distance要怎麼定義,我有點不確定。
link |
其實還是可以啊,我們就把每一個Word當作一個單位,本來算在Character上的就改成算在Word上的。
link |
就改成算在兩個Word Sequence上。
link |
對,感覺是可以嘛,就像是ASR的Error Rate那樣。
link |
這邊還有一個問題,就是因為現在蠻多Deep Learning Model其實都是用Subword的Tokenization。
link |
那有針對Subword的算法或是做法之類的,就是First Node Tokenizer?
link |
不會,因為我們在做Perturbation的時候其實應該是以字為單位做Perturbation。
link |
所以,我先確認一下你的問題,你的問題是說當我們的Perturbation單位是Subword的時候我們要怎麼算他們的Overlap嗎?
link |
我們不太會在Subword Level做Perturbation,因為假設有一個Word它被Tokenized成兩個詞號。
link |
那如果你只有Perturb其中一個東西的話,那它可能會是一個完全不make sense的Perturbation。
link |
所以我們一般而言應該是以字為單位做Perturbation,所以不會有需要算Subword Level的Overlap的這種狀況。
link |
好,然後另外一個Overlap的算法就是算更改的字的比例有多高,就是算Percentage。
link |
那這個Percentage就是看你有改變多少Percent的字。
link |
那像是假設你換了一個字,那總共有四個字,那它就是改了25%的字。
link |
那一般而言我們要衡量一個Attack的好壞的時候,我們當然會拿它的SuccessRate來衡量,
link |
然後我們也會希望說它Perturb的這個字的比例應該要越低越好。
link |
所以這個比例我們會希望是越低越好的。
link |
好,那下一個東西,下一個Constraint我們來看的是有沒有合文法。
link |
那第一個這個Constraint的方式呢,就是PoS的Consistency。
link |
PoS就是part of,就是磁性。
link |
那這個東西關心的是當某個字它被替換掉之後,它被替換的字跟原本的字,它的磁性是不是一樣的。
link |
所以以這個,還是剛剛一直出現的那個例子為例,I highly recommend it。
link |
那這邊我們假設我們要把Recommend這個字做替換。
link |
那Recommend這個字它的PoS,你是用那個NLTK的PoS Tagger之後會得到,
link |
它是Verb,然後它是Present tense, not Serious Present Simple,就是它不是第三人稱,但它是現在式號。
link |
那假設說你用了某一個Transformation的方式,然後得到一個Perturbation,叫做I highly advocate it。
link |
那Advocate這個字呢,它的PoS也同樣是非第三人稱現在式。
link |
所以這個東西它就有符合我們的PoS Consistency這個限制。
link |
那也有可能啊,你的Transformation得到的結果是I highly recommendation it。
link |
然後這個Recommendation這個字呢,你用NLTK的PoS Tagger,會得到的這個PoS是名詞。
link |
所以當它把一個動詞換成名詞的時候,它就不符合我們這個PoS的Consistency,所以這個一定是一個violation。
link |
那一個比較尷尬的例子是這個,也有可能它產生的這個Perturbation是I highly recommend it。
link |
那這個字呢,如果你把Recommended拿去做PoS Tagging,它得到的結果是Verb,它也是動詞,但是它是一個過去式的動詞。
link |
那這個時候啊,它雖然一樣是動詞,但是它的時態被改變了。
link |
這個就有點難去定義說它到底是不是一個合法的Transformation,這個就要看你的Constraint有下多嚴。
link |
我們會要求說它的時態一定百分之百要是一樣的,也就是它如果是第三人稱,非第三人稱然後是現代式,那它改出來的結果就一定要是非第三人稱的現代式。
link |
那為什麼這個PoS的Consistency是重要的呢?因為假設你沒有下這個Constraint的話,它可能就會產生一些不符合文法的句子。
link |
那即使它把一個動詞經過Perturbation之後產生另外一個動詞,那即使它都是動詞啊,它的時態只要不一樣,假設它把它改成動詞Ing的話,那這樣還是不符合文法。
link |
所以PoS Consistency可以幫助我們確保文法的正確性。
link |
那另外一個確保文法正確性的方式呢,就是我們拿一個現成的Toolkit,然後來衡量說我們經過Perturbation的這個句子,它到底有沒有文法錯誤。
link |
那有一個Toolkit叫做LanguageTool,然後它會告訴你說你的這個Input句子有多少錯誤。
link |
所以像是我們剛才產生的這個I highly recommendation,它就會被LanguageTool這個Toolkit標出來說這個文法是錯的。
link |
這個就是一個跟Grammarly差不多的東西啊,只是它是Open Source。
link |
那另外一個衡量文法的合理性的方式呢,是用Pretend Language Model所計算出來的Complexity。
link |
那這個東西就是仰賴Pretend Language Model,它看過了很多不同的Cohorts,很多不同的句子。
link |
那我們就會認為說這個Pretend Language Model它應該要學到人類的語言的某些Distribution。
link |
那我們假設說這些人類語言的Distribution,它看過的應該是合文法的Distribution。
link |
所以呢,它就會給比較合文法的句子比較高的機率,它就會給比較不符合文法的句子比較低的機率。
link |
那這個就是我們使用Language Model,從Perplexity可以得到文法合理性的一個方式。
link |
那實際上的做法呢,就是我們把不同的Perservation丟到Pretend過的GPT-2這個Model裡面。
link |
那這個模型呢,就會凹附出一個叫做Perplexity的東西。
link |
那Perplexity這個數值呢,代表說這個句子出現的可能性有多低。
link |
所以說這個Perplexity越大,表示說這個句子出現的機率越低。
link |
Perplexity越小,表示這個句子出現的機率越高。
link |
所以我們在用這個GPT-2當作是文法的Constraint的時候,我們可能會設一個Threshold,
link |
然後假設說這個Perplexity超過多少的時候,我們就要認為說它是一個不合法的Perservation。
link |
那這個GPT-2假設說它凹附出來說這個Perplexity是200,
link |
那這個比較合文法的,它就會凹附出一個相對低很多的Perplexity。
link |
那假設你說Perplexity超過50,我就把它全部當作是不合文法的話,
link |
那這個句子它就會被你的Constraint拿掉,只剩下這個句子。
link |
那看完這個Overlap跟文法的Constraint之後呢,我們最後看最常見的一個Constraint,
link |
就是Semantic Similarity的這個Constraint。
link |
那在很多的任務上面,像是這個前面看到的電影評論的分類,
link |
或者是這個News Title的Configuration,
link |
就很多跟語意相關的Test,我們都會希望說Perturb之前的句子,
link |
也就是原本的句子跟Perturb之後過的句子,
link |
它應該要相當程度的在語意上有很高的相似性。
link |
那這個要怎麼去做Constraint呢?
link |
那有很多不同不同的方式,那首先我們第一個來介紹的是,
link |
替換這個字跟字在Word Embedding Space上面的距離。
link |
那假設這是一個Word Embedding Space,
link |
那原本的字,就是剛才那個例子,I highly recommend it,
link |
那我們就把recommend這個字找到它在Word Embedding Space裡面的這個位置,
link |
然後我們這個潛在的Perturbation,我們把它換成command跟advocate這兩個字。
link |
那我們就去看說這兩個Word Embedding它的Cosine Similarity有多高。
link |
那舉例而言這兩個字我們會算出來Cosine Similarity,
link |
它的Cosine Theta是0.85,
link |
然後這recommend跟advocate這兩個字算出來的Cosine Similarity是0.63。
link |
那假設我們有一個Constraint告訴我們說這個Cosine Similarity要高於0.82,
link |
它才算是一個合理的Perturbation的話,
link |
那advocate這個字就會被去掉,然後只剩下command這個字。
link |
那這個地方你要用什麼樣的距離來當作衡量的標準,
link |
你當然可以用這邊用Cosine Similarity,
link |
你也可以用L2的Euclidean Distance,或是L1的Euclidean Distance都可以。
link |
不過這邊其實重要的可能不是你選的是哪一種metric,
link |
而是你的Constraint的這個Threshold要怎麼定。
link |
因為這個怎麼定會影響到你最後產生出來的品質嘛。
link |
那很多人做的方式就是他就選一個他覺得合理的數字,
link |
那直接選一個他覺得合理的數字到底有多合理呢?
link |
大家就會知道說這個Threshold的選擇是非常非常重要的,
link |
而且會大大的影響最後產生出來的Azure Sample的品質。
link |
好,那我們看下一個來衡量兩個Perturbation的,
link |
衡量Perturbation跟原本的句子的Similarity的方式。
link |
那我們用的是一個叫做Universal Sentence Encoder的模型。
link |
那所謂的Universal Sentence Encoder就是一個很Universal的模型,
link |
他就是一個Sentence Encoder,那Sentence Encoder做的事情就是
link |
丟進去一個句子,然後他會output出一個Sentence Embedding,
link |
這個Sentence Embedding就是一個向量,
link |
那當我們要算這個原本的句子跟經過Perturbation之後的句子有多像的時候呢,
link |
我們就把這兩個句子同時丟到,就各自丟到Universal Sentence Encoder裡面,
link |
然後得到他們各自對應的這個Sentence Embedding,
link |
然後我們再去算這兩個Sentence Embedding他們之間的Cosine Similarity有多高。
link |
那同樣的這邊你還是一樣要去定一個Threshold說
link |
Cosine Similarity高於多少的時候,我們就把它當成是一個合法的Perturbation,
link |
Cosine Similarity低於多少的話,我們就認為它是不合法的Perturbation。
link |
所以這個Threshold也是一樣會大大的影響到最終產生的結果。
link |
好,最後呢,講完了前面三個,最重要的一個方式就是
link |
我們要怎麼結合Conformation,然後找到一個滿足所有Constraint,
link |
又可以達到我們的目標任務的Adversarial Sample。
link |
那這件事情呢,就是Search Method它要來做的。
link |
那我們這邊簡單的講三個最常用的方式。
link |
第一種是Greedy Search,然後第二種也是Greedy Search,
link |
但是它在做Greedy Search的時候會考慮不同的字的重要性。
link |
那最常用的其實是第二個,然後基因演算法比較少人在用,
link |
然後還有另外一種更慢的,但是更慢的我就不講了。
link |
首先我們來看那個Greedy Search,那Greedy Search呢,
link |
它做的方式就是它有很多不同的Perturbation,
link |
那我們就是看說在每一個位置的Perturbation,
link |
哪一個Perturbation可以讓Model最終的Output變化最多。
link |
所以舉例而言,在I highly recommend it原本正常的句子上面,
link |
我們就產生了五個潛在的Perturbation。
link |
那前面兩個Perturbation呢,我們是把highly換成strongly跟inordinately,
link |
後面這三個例子呢,我們是在第三個詞的位置,
link |
把recommend換成urge,advocate跟command。
link |
那我們就把這五個不同的句子丟到這個test classifier裡面,
link |
然後我們就得到了這個模型的Output還有它相對應的Loss。
link |
那它就會告訴我們說,當你把highly換成strongly的時候,
link |
這個模型還是有很高的機率覺得它是一個正面的評論。
link |
但是當你把highly換成inordinately的時候,
link |
模型就會有,它覺得它是正面評論的機率就會大幅的降低。
link |
好,那這時候我們做的事情呢,就是我們會去看說,
link |
在這所有不同的Perturbation裡面哪一個東西它是最強的Perturbation。
link |
所謂最強的Perturbation就是,當它原本是positive的時候,
link |
我就希望我找一個最強的Perturbation,
link |
就是可以讓positive的機率降到最低的這個Perturbation,
link |
就稱為是最強的Perturbation。
link |
所以在這邊的例子裡面,在這五個東西,
link |
在這五個潛在的Perturbation裡面呢,
link |
I inordinately recommend it,它的正面的機率是0.51,
link |
所以我們就把它當作是最強的一個Perturbation。
link |
然後呢,第二強的是誰呢?是正面機率0.53的,
link |
I highly advocate it,它的ranking是2,
link |
然後依此類推,就是3,4,然後還有5。
link |
好,那做完這件事情之後呢,我們就開始換。
link |
我們就原本的這個字呢,原本的句子是I highly recommend it,
link |
那我們就根據這個ranking來greedy地把字換掉。
link |
那ranking最高的是這個,所以我們就把highly換成inordinately,
link |
那已經換過的字呢,我們就不會再換第二次了。
link |
那ranking的下一個字呢,是第二高的是,
link |
當我把highly recommend it換成highly advocate it,
link |
我們再把這個I inordinately recommend it,
link |
換成I inordinately advocate it,
link |
然後做完這件事情呢,我們再把它丟到模型裡面,
link |
那丟到模型裡面,這個模型就告訴我們說,
link |
那我們的attack就成功了,然後這個過程就結束了。
link |
那要是沒有的話,我們就會看下一個ranking最高,
link |
那因為它是只關心這個ranking的高低,
link |
所以我們把它稱為是greedy search。
link |
那我在想說,既然有人做greedy search,
link |
一定也有類似做beam search的方法吧?
link |
有人在這個地方做beam search嗎?
link |
我沒有做beam search的同學,
link |
沒有沒有,有beam search,
link |
然後beam search的問題就是,
link |
就可以達到很不錯的attack水果,
link |
那beam search也是有人在用。
link |
那第二個方法叫做greedy search with word importance ranking。
link |
這個跟greedy search的差別就是,
link |
它多了一個word importance ranking。
link |
每一個這個input句子裡面的每一個字,
link |
這個word importance ranking的方式,
link |
找到了每一個字的ranking長這個樣子。
link |
對於這個word importance ranking的方法,
link |
最重要的這個字是rankman這個字,
link |
這個它跟greedy search是很像的,
link |
我們可能根據某一個transformation的結果得到,
link |
它可以被換成strongly跟inordinately。
link |
我們根據某一個transformation得到的結果,
link |
我們知道它可以換成urge,advocate跟comment。
link |
那剛剛的這個word importance ranking的結果,
link |
告訴我們說rankman這個字是最重要的,
link |
然後highly這個字是第二重要的,
link |
所以我們會第二個才會去換這個highly這個字。
link |
所以原本這個句子它是highly recommended,
link |
是我們用word importance ranking得到的這個rank。
link |
那我們要從candidate set裡面換成哪一個呢?
link |
我們就挑可以讓模型對於正面的機率降的最低的。
link |
那在urge,advocate還有comment這三個字裡面,
link |
我們來看這三個字的p positive,
link |
那最低的就是advocate這個字,
link |
所以我們就會先把advocate這個字換掉。
link |
那得到的結果就是這個highly advocated。
link |
那這個東西呢,我們再把它丟到模型裡面。
link |
那要是它已經可以讓模型覺得它是負面的評論的話,
link |
我們就要去移到word importance ranking第二重要的這個字。
link |
所以我們現在target是highly這個字,
link |
我們一樣去看說在highly所有的candidate set裡面,
link |
所以呢,在strongly跟inordinate這兩個字裡面比較,
link |
我們發現說inordinate這個字,
link |
它可以讓p positive明顯下降到0.5而已。
link |
所以我們就會把這個原本這個highly advocated,
link |
換成I inordinately advocated。
link |
看看說模型覺得它是一個正面還是負面的定評論。
link |
然後他換B,反而又變成又沒有text到這樣。
link |
就不會再從trace到起點再重新開始選,
link |
可能會比較像是data search。
link |
會有點不太像是beam search。
link |
後面不管換什麼他都沒有辦法達到attack的結果,
link |
那這個時候有可能是因為我們第一個字換的不好,
link |
就是第一個字你原本換成advocate,
link |
那在beam search裡面的話,
link |
就是這種逐步代換的這種方式其實並沒有到那麼容易attack失敗。
link |
就是因為它換成的字其實都是很不合理的字啊,
link |
所以有可能是因為模型沒有看過這個字,
link |
例如說假設我都是用模型有看過的字去做類似的這個排版,
link |
那其實就相對來說沒有那麼容易成功嗎?
link |
然後這個Greedy search with over-importance ranking
link |
跟剛才的Greedy search最大的差別就是
link |
假設我們只有用Greedy search的話,
link |
但是如果我們考慮over-importance ranking的時候,
link |
我們就會知道我們要最先換掉的是這個字。
link |
所以在這邊就是考慮over-importance ranking的時候,
link |
這個recommend這個字會被先換掉。
link |
其實這個有用over-importance ranking
link |
會比沒有用over-importance ranking快非常非常多。
link |
這個over-importance ranking要怎麼得到。
link |
那什麼叫leave one out呢?
link |
就是原本這個句子啊,叫做I highly recommend it。
link |
所以這個我拿掉I的話就會變成highly recommend it,
link |
我拿掉highly的話就變成I recommend it,
link |
我拿掉recommend就會變成I highly recommend it,
link |
然後我拿掉it就是變成I highly recommend it。
link |
拿掉一個字的叫做leave one out的句子,
link |
它告訴我說當我把I這個字拿掉的時候,
link |
但是當我把recommend這個字拿掉的時候呢,
link |
那我們就用這個P positive的
link |
當我們沒有辦法access到model裡面的
link |
這個東西就是Explainable AI在做的事情。
link |
所以Explainable AI裡面
link |
那假設模型對於這個句子的prediction
link |
這個ground truth的label
link |
對每一個word embedding做為分。
link |
對於word embedding的為分。
link |
那我們就取這個word embedding的
link |
這個word impotency ranking的基準。
link |
output對regmen這個字的word embedding
link |
這個experimental AI裡面
link |
就是用output對input做為分,
link |
smooth gradient, integrated gradient
link |
模型的為分嘛,所以它是一個white box
link |
word-imposed ranking其實是比較少用的,
link |
search method叫做基因演算法。
link |
是I highly recommend this
link |
ethereal sample,那怎麼做呢?
link |
那我們把perturbation產生的這些東西叫做
link |
就是它的perturbation就是在
link |
每個不同的字做perturbation
link |
然後組成generation zero
link |
個體丟到text classifier
link |
是多少,那為什麼我們要看p negative呢?
link |
這個MovieReview它是一個正面的MovieReview
link |
是要把它改成一個負面的MovieReview
link |
機率有多高,也就是p negative有多高
link |
generation zero的某一個
link |
做一個normalization,然後把它normalize
link |
機率,那這個p parent是做什麼呢
link |
這個p parent做的事情是這樣的
link |
在這些generation zero的
link |
就是在generation zero裡面呢
link |
兩個p parent之後呢,下一個步驟
link |
在第二個位子我就選了ordinary
link |
第四個位子沒有差,因為它們沒有做preparation
link |
mutation,mutation的中文是突變
link |
就是我們再做一次transformation
link |
we inordinately recommend lot
link |
就產生一個新的generation,那這個generation
link |
所以一個generation要怎麼產生呢
link |
還有mutation之後才會產生一個
link |
generation1的時候一樣也要
link |
那假設我們最後產生了這四個不同的個體
link |
也就是我們的victim model
link |
然後看看這個victim model output出來的
link |
它的p-negative是0.42,第二個句子是0.76
link |
classifier的output是改變的
link |
這個eventual attack裡面的
link |
particle swarm optimization的東西
link |
我有點不太確定到底是基因演算法比較慢
link |
還是particle swarm optimization比較慢
link |
就是我投影片下面都有放reference
link |
然後他可以拿來做NLP上面的attack
link |
particle swarm optimization是怎麼做的
link |
看一下那個reference是怎麼做的
link |
來解這邊的search problem嗎
link |
我們要optimization的問題其實是不可為的
link |
我其實可以加在下禮拜的toolkit裡面
link |
然後我們就來看這些ingredient要怎麼
link |
最常在paper上面拿來當baseline的
link |
那首先第一個叫做textfuller
link |
2020年2019年2020年的paper
link |
它的goal 它的constraint 還有它的transformation
link |
是world embedding space distance
link |
就是限制semantic similarity的constraint
link |
然後還有限制文法的pos consistency
link |
embedding space來做的
link |
所以同義詞會落在一個比較接近的空間裡面
link |
greedy search with more important functions
link |
然後situation換成circumstances
link |
它用的模型就是bird lsm或是cmn
link |
而且我們也不會覺得circumstances
link |
我們實際來看一下它的algorithm
link |
我不會詳細講algorithm的細節
link |
attack algorithm裡面
link |
它for each word in x
link |
它要compute important score
link |
用importance ranking來compute
link |
所以這個地方就是我們要做search之前
link |
每一個字的importance ranking
link |
它會filter掉stop word
link |
所以它在這邊就下了一個constraint
link |
所以就是for each word in
link |
原本for each word in
link |
是它首先要做transformation
link |
它的transformation用的是
link |
這個word embedding space的
link |
這個word embedding space
link |
transformation的同範similarity
link |
所以這個就是一個similarity constraint
link |
所以這邊又是另外一個不同的constraint
link |
就是你要先做immortal ranking
link |
把不同的transformation結合起來
link |
那在search的過程還有在transformation的過程
link |
probability-weighted-worth-saliency
link |
importance ranking跟別人有點不太一樣
link |
剛才講的這個leave-one-out的
link |
就是它沒有下任何的constraint
link |
然後如果沒有下任何的constraint的話
link |
叫做bird attack, bird attack也是很新的
link |
universal sentence encoder的sentence similarity
link |
maximum number of modified words
link |
它可能會產生一些奇怪的substitution
link |
所以你就要用universal sentence encoder
link |
genetic algorithm,那genetic algorithm其實
link |
它的重點就是它的search method是用我們剛才講的
link |
genetic algorithm,也就是
link |
做crossover跟做notation之後
link |
adversarial sample
link |
那它用的constraint包含了說
link |
它必須要有足夠低的language model complexity
link |
word invariance space的距離
link |
這個是從bird attack這個parameter拿出來的
link |
imdb這個dataset呢,它用了三個不同的
link |
model上面,imdb可以達到90.9
link |
不同的attack algorithm,得到的accuracy
link |
這個attack accuracy當然是越低越好嘛
link |
所以從這邊看起來bird attack是一個最強的attack
link |
query number,因為我們在
link |
比較少的transformation,就可以達到一個成功的attack
link |
那genetic algorithm呢
link |
它慢就是因為它的query number很高
link |
就是我希望我經過transformation之後
link |
跟transformation之前的sentence
link |
embedded similarity要夠高
link |
即使我們下了這麼多的constraint
link |
那這個adversarial sample
link |
右邊這個是經過transformation的句子
link |
字,紅色是經過transformation
link |
就是它把romantic right
link |
裡面的right換成motorbike
link |
universal sentence encoder
link |
所以對人來說其實這些at zero sample
link |
就是你就算不覺得它是at zero sample
link |
這可能就是因為我們的constraint下得不夠強
link |
這個textful的constraint
link |
加強到0.97的cosine similarity
link |
然後這些cosine similarity是怎麼得到的呢
link |
也就是說我可能用cosine similarity等於0.9
link |
是不是合理的at zero sample
link |
那我就把這個cosine similarity再調到0.92
link |
然後attack出來的結果再給工人看
link |
好的cosine similarity
link |
他們就發現說cosine similarity
link |
所以原本的text fuller這個模型
link |
他得到的similarity大概是這個樣子
link |
他們把這個constraint加強之後
link |
就可以得到比較高的similarity
link |
那因為剛才有看到text fuller
link |
position他的文法其實是有問題的
link |
所以他們就用language tool
link |
他們就用language tool當成是一個他的constraint
link |
然後他們要求說這個產生的position
link |
得到的grammatical error要是零
link |
text fuller adjusting
link |
他的grammatical error
link |
原本的text fuller他的text access rate
link |
把這個posise similarity的
link |
不是,把那個language tool的
link |
grammatical constraint加回來之後
link |
他的text access rate就
link |
根本就看不出來,所以access rate才會這麼高
link |
東西是比較合理的preservation
link |
他就根本不會覺得他是一個zero sample
link |
attack方式叫做Morpheus
link |
就是他的transformation是用
link |
inflectional morpheme
link |
叫做Morpheus attack的方式
link |
這個inflectional form
link |
inflectional form是錯的
link |
universal trigger,那我們把
link |
universal trigger講完之後就
link |
那universal trigger呢
link |
還蠻有名的attack,所以我把它拿進來講
link |
什麼是universal trigger啊
link |
一個universal trigger就是一個
link |
trigger string,trigger就是
link |
但是呢,只要加上這個string之後
link |
他就可以達到targeted attack
link |
sentiment analysis好了,那原本的句子
link |
加上了一個figure,就是紅色的這個東西
link |
這個figure之後,他就可以讓原本
link |
universal,所謂universal就是
link |
這個東西,他都可以讓positive變成
link |
讓這個trigger string,他有多少
link |
那在picture裡面呢,他們的例子是說
link |
trigger string,然後trigger
link |
的initialization,就用
link |
the這個字,來當作initialization
link |
這三個the,prepare到他前面
link |
是因為我們現在要做target attack
link |
加上這個trigger string的
link |
然後forward,forward的時候我們會
link |
得到一個loss,然後我們再backward
link |
那backward到哪裡呢,一樣是backward到
link |
這個invading space,那invading space
link |
word invading,那原本的這個
link |
trigger是the,他invading在這裡
link |
各種不同的這個word invading
link |
我們要backward的時候,我們是用
link |
1萬減1零,1 2減1零跟1 3減1零
link |
EI減1零的double product
link |
我們做的是targeted attack
link |
ground truth label等於negative的時候
link |
所以我們要讓ground truth label
link |
的時候的loss越小越好,所以這邊要取
link |
呃,這個點這個,然後再double product
link |
所以我們就把trigger update成
link |
原本這個squat,squat是一個
link |
question answer的data set,然後他的question是
link |
why did it work,然後呢他的context
link |
adversarial trigger
link |
模型原本的output是exercise變成
link |
to kill american people
link |
output出來的東西長這個樣子的話
link |
所以這個就是adversarial trigger
link |
universal trigger他其實
link |
在做的事情,就是當model固定的時候
link |
prefix,然後這個prefix可以讓
link |
那在prefix tuning裡面呢,我們做的事情是
link |
我們要加上一個prefix,讓他產生
link |
那現在在這個universal adversarial trigger
link |
output,所以這個就是universal trigger
link |
不好意思,就是因為就感覺那個attack
link |
他有可能有什麼failure mode
link |
那有什麼failure mode我們才有辦法
link |
adversarial symbol最重要的功能,就是
link |
adversarial symbol他功能並不是讓模型
link |
有些adversarial symbol
link |
依賴某些特定的spherus correlation
link |
這些adversarial symbol的時候
link |
會仰賴spherus correlation
link |
模型的人去看這些adversarial symbol
link |
他有這樣的弱點,那其實剛才有同學問到說
link |
fake news detection
link |
fake news detection就是你要偵測
link |
他可以正確的判斷說一個新聞是真的還是假的
link |
你要去attack這個model的時候
link |
經過protection之後產生一個
link |
就是clean accuracy要夠高
link |
他的robust accuracy也要夠好
link |
我們的防禦,就是下禮拜會講防禦的方向
link |
其實都還是可以保持很高的clean accuracy
link |
反而是robust accuracy
link |
有些方法是會稍微犧牲clean accuracy
link |
USC sentence similarity
link |
但我其實一直對這件事情有點不太能信服
link |
例如說class similarity比較高的
link |
class similarity相對高相對低
link |
如果我們只是用這種sentence embedding
link |
sentence embedding output
link |
這些attack的方法其實是有問題的
link |
這個要看sentence encoder是怎麼訓練的
link |
然後現在sentence encoder
link |
像是Unreal Sentence Encoder
link |
有一種dataset叫做paraphrase dataset
link |
我忘記paraphrase的中文是什麼
link |
你就可以用類似contrastive
link |
類似contrastive那系列的訓練方式
link |
兩個句子的similarity是多高
link |
model衡量出來的cosine similarity的高低
link |
跟人衡量出來的cosine similarity
link |
這是STS那個benchmark的作法
link |
然後我們是換那個cosine similarity
link |
Universal Sentence Encoder的時候
link |
我們在訓練的時候他只有看過兩個不同的句子
link |
我們現在的scenario就是我們在testing的時候
link |
到底是Universal Sentence Encoder
link |
然後我們就以這些不合理的結果攻擊這個模型
link |
但其實有可能只是因為我們產生了這些東西
link |
然後不合理的predation當然對於模型來說
link |
我們用模型計算constraint的時候
link |
我們用了constraint的那個模型
link |
那是不是可以就使用這些data來進行
link |
data augmentation之類的
link |
就是做data augmentation
link |
是利用這種方式去進行augmentation
link |
基本上他們只要提出一個Attack方式
link |
如果我們這個Attack方式要怎麼defense
link |
關於adversive attack
link |
它是不是adaptive detection
link |
我也完全沒有涉略,如果你正好在研究這方面的話
link |
我們今天都做pre-training
link |
pre-training有沒有讓模型
link |
因為如果這樣子會比較robust的話
link |
BERT或是Orbita這種model
link |
用過,可是它fine tune的時候沒有用過
link |
就是因為所謂的fine tune的時候
link |
沒有看過是說它沒有出現在fine tune的
link |
所以它不會知道說假設有一個很罕見的字
link |
就是它不會知道說inordinate
link |
當它出現在fine tune的data裡面
link |
所以如果它在fine tune的時候沒有看過
link |
後面的東西我不確定它是不是真的這樣做
link |
in這個prefix跟ordinate這個prefix
link |
因為它覺得ordinate是一個正面的詞
link |
所以in是一個negation的詞嘛
link |
所以它就覺得inordinate就是一個負面的組合
link |
雖然它有看過這個字,它還是會覺得它是一個負面的字
link |
重點應該是它在fine tune的時候
link |
在業界的時候,會不會用attack這個流程
link |
他不太算是用adversal attack
link |
所以其實大家在deploy模型的時候
link |
覺得說adversal attack
link |
只是除了adversal attack以外
link |
所以也許不是所有的模型都會把adversal attack
link |
字幕由 Amara.org 社群提供