https://arxiv.org/abs/1907.11932
Is BERT Really Robust? A Strong Baseline for Natural Language Attack on Text Classification and Entailment
Machine learning algorithms are often vulnerable to adversarial examples that have imperceptible alterations from the original counterparts but can fool the state-of-the-art models. It is helpful to evaluate or even improve the robustness of these models b
arxiv.org
요약
BERT 기반 classifier 대상 baseline 격인 black-box attack
Motivation
fgsm, pgd, CW, deepfool attack과 같은 공격들은 이미지 domain에 대한 white-box attack, Zoo와 같은 black-box attack들 처럼 대부분 노이즈를 씌웠을 때 비교적 잘 보이지 않기 때문에 쉽게 연구가 이루어졌다.
하지만 텍스트의 경우 상황이 다르다.
이미지와는 달리 무작위로 토큰을 대체하여 노이즈를 생성하였을 때, 굉장히 쉽게 눈에 띈다. 예를 들어
Is this a positive or negative review?
라는 문장이 있다고 하자.
여기서 무작위로 Is를 단어 근처에 있는 다른 토큰으로 교체했다.
a this a positive or negative review?
눈으로 봐도 확인할 수 있듯이 텍스트는 단 하나의 토큰만 바꾸어도 꽤 선명하게 표가 난다.
TextFooler 저자는 이러한 text 관련 모델을 공격하기 위해선 어떠한 조건을 만족해야하는지 이렇게 정의한다.
- Human prediction consistency : 사람이 그 텍스트를 보았을 때 똑같은 분류라고 생각해야한다. (그러나 모델은 오분류)
- Semantic similarity : 노이즈를 넣든 넣지 않든 original text와 동일한 의미를 가져야 한다.
- Language fluency : 생성된 adversarial examples는 사람이 판단하기에 자연스럽고 문법적으로 적합해야한다.
3가지 조건을 지키기 위해서 TextFooler 저자는 먼저 그 모델이 중요하게 생각하는 단어들을 식별하고, 가장 semantically similar하고 grammatically correct words를 선별하여 대체하는 것으로 adversarial examples를 만드는 baseline framework를 제안한다.
Method
문제 정의
N개의 sentence X와 이와 짝을 이루는 Y가 존재하는 corpus가 주어진다고 하자. 우리는 대상 pretrained model을 F라고 칭한다.
F는 F : X -> Y로 Y를 예측하며 이는 즉 text space X를 label space Y로 매핑함을 의미한다.
이때, 이 F에 입력으로 들어갈 adversarial example $x_{adv}$는 다음과 같은 요구조건을 만족해야한다.
$$ F(x_{adv}) \neq F(x), Sim(x_{adv}, x) >= \epsilon $$
이때 Sim 함수는 $Sim: X * X -> (0,1)$로 측정하는 similarity function을 의미하며 이 sim 함수를 통해 semantic, syntactic similarity function을 측정한다.
공격 상황 설정
black-box setting에서 공격자는 모델의 구조와 파라미터 그리고 학습 데이터에 대해서 알지 못한다. 공격자가 오로지 할 수 있는 것은 대상 모델에 쿼리를 던질 수 있고 이에 따른 예측값과 관련된 confidence score(그 예측값에 대한 확률)를 얻을 수 있다.
TextFooler Framework
step 1 Word Importance Ranking
주어진 문장 X에는 ${w_1, w_2, ... w_n}$의 n개의 단어를 지니고 있다. textfooler에서는 이중에서 대상 모델 F에 가장 영향력을 주는 몇몇의 키워드 (저자는 influential signal 이라고 부른다. )만을 선정하도록 순위를 매긴다. 즉 최종 예측 결과에서 대부분의 문장에서 상당히 영향을 주었던 단어를 선별하는 과정이 포함된다. 이러한 단어를 선별하는 과정은 alteration을 최소화하고 semantic similarity를 가능한한 유지할 수 있는 효과를 가져온다.
* 이러한 방법론을 뒷받침하는 것은 Niven and Kao 2019 et al [1]. 인데 이 논문의 저자는 BERT는 통계적으로 몇몇 단어들을 반복하는 경향이 있음을 밝혀내었다.
알고리즘을 보면 importance score I를 계산한다고 되어있다.
여기서 이 important score는 어떻게 계산해야할까? 앞서 언급했듯 우리는 white-box scenario가 아닌 black-box scenario이다. 즉, 이는 model F의 gradient를 확인할 수는 없다는 뜻이다.
TextFooler에서는 모델의 정보를 제외하면서도 점수를 매기기 위하여 다음과 같은 수식을 제안한다.
간단히 말하자면 해당 수식은
$x_{\w_i}$와 $x$가 동일한 레이블로 예측될 경우, 원래의 prediction score에 $w_i$를 제외했을 때의 prediction score를 뺐을 때의 변화를 importance score로 정의했으며
$x_{\w_i}$와 $x$가 다른 레이블로 예측될 경우, 앞선 점수 측정 방식에 $x_{\w_i}$의 예측값을 원래의 값에서 제외한 값을 더해주는 방식으로 수식을 정의한다.
important score 방식으로 랭킹을 매긴 후에는 NLTK, spaCy와 같은 라이브러리에서 얻은 the, when, none과 같은 단어들을 필터링하여 제외하는 것으로 문법이 파괴되지 않도록 제한한다.
step 2 Word Transformer
앞선 알고리즘의 나머지 부분에 해당하는 단계이다. 해당 단계는 크게 Synonym Extraction, POS checking, Finalization of Adversarial Examples로 구분된다.
1. Synonym Extraction : candidates set 수집
vocabulary에 있는 모든 다른 단어에 대해서 $w_i$와 cosine similarity를 비교하는 것으로 의미적으로 가까운 N개의 단어들을 추출한다. 해당 단어들이 바로 CANDIDATES가 된다.
그렇다면 cosine similarity는 어떻게 구할까?
TextFooler에서는 word embeddings vector를 사용하여 구한다. 정확히는.. 이미 구한 임베딩 벡터로 구성되어있는 데이터셋, simLex-999 데이터셋을 사용해서 후보군을 골라냈다.
경험적으로 textfooler에서는 최대 50개의 후보군, $\delta$ = 0.7로 주어 다양성과 semantic similarity control 사이에서의 밸런스를 조율했다. (관련 ablation study는 없음. 저자입장에서는 크게 의미가 없다고 생각한 모양이다. 아무래도 베이스라인 격이긴 하니 이런 것 보단 다른 실험 할게 많긴 했다.)
알고리즘에서는 라인 9에 해당한다.
2. Pos Checking
Part-of-Speech(POS) 를 통해 문법적으로 이 후보군이 유사한지를 확인해서 걸러낸다.
여기서 part-of-speech라는 건 이렇게 명사, 동사 형용사 등의 구분을 의미한다. TextFooler에서는 spaCy tagger를 사용했다.
3. Semantic Similarity Checking
그 후에는 남은 후보군들이 대체했들 때 문맥적으로 유사한지를 확인한다. 이 문맥적 유사도를 보기 위해서 TextFooler에서는 Universal Sentence Encoder(USE)를 사용했다. USE는 두 sentence를 vector로 인코딩하는 모델이며, 이 벡터값을 cosine similarity로 비교하는 것으로 유사도를 측정하였다.
어떻게 비교했는지를 좀 더 구체적으로 보여주자면,
$c \in CANDIDATES $라고 할 때, ${w_1, ..., w_{i-1}, c, w_{i+1}, ..., w_n}$이 바로 $x_{adv}$가 된다. 이 값과 기존의 $x$를 각각 USE에 입력한 후에 출력되는 vector값을 cosine similarity로 비교하게 된다.
이렇게 유사도를 측정했을 때 일정 이상 유사했던 후보군들은 candidate pool, FINCANDIDATES에 넣게 된다.
해당 과정은 알고리즘에서 11-19 라인이다.
4. Finalization of Adversarial Examples
마지막으로 adversarial examples를 만들기 위해서, FINCANDIDATES로부터 가장 높은 semantic similarity를 갖는 하나의 $c$를 꺼내서 원래의 단어 $w_j$를 $c$로 대체한다. 대체했을 때, 예측값이 달라지면 adversarial example 완성이며,
그렇지 않은 경우에는 FINCANDIDATES에서 가장 낮은 similarity를 갖는 토큰으로 대체한 후에 그 adversarial examples를 토대로 추가적으로 반복하여 mutation한다.
후기
NLP에서 black-box attack라고 불리는 기법이 생각보다 black-box fuzzing스러워서 개인적으로는 굉장히 흥미롭게 읽었다.
물론 초기 기법인만큼 USE라던가, simLex-999 데이터셋이라던가 굉장히 다양한 소재를 사용해서 예상했던 것 만큼 깔끔한 프레임워크는 아니었지만 이 기법 이후에 등장한 BERT-attack이 이러한 문제를 다소 해결해주는 것 같다.
Reference
[1] Niven, Timothy, and Hung-Yu Kao. "Probing neural network comprehension of natural language arguments." arXiv preprint arXiv:1907.07355 (2019).
'논문 스터디 > ML attack' 카테고리의 다른 글
[2020 EMNLP, NLP black-box attack] BERT-Attack Adversarial Attack Against BERT Using BERT (0) | 2023.06.03 |
---|---|
[2017 NIPS] Attention is All You Need 리뷰 (1) | 2022.10.04 |
[XAI] CAM과 Grad-CAM 논문 리뷰 (0) | 2022.01.30 |
[AML Defence][2019 CVPR] Feature Denoising for Improving Adversarial Robustness 논문 리뷰 (0) | 2021.08.22 |
[AML Defence][2018 ICLR] Defense-GAN 논문 리뷰 (0) | 2021.04.03 |