NL-157, Exploring the Universal Vulnerability of Prompt-based Learning Paradigm, Findings of NAACL 2022

0 Abstract

  • 프롬프트 기반 학습 패러다임은 사전 훈련과 미세 조정 사이의 격차를 해소하고 몇 번의 샷 설정에서 효과적으로 작동합니다.
  • 그러나 우리는 이 학습 패러다임이 특정 트리거를 텍스트에 삽입하여 모델 예측이 오도될 수 있는 사전 훈련 단계에서 취약성을 상속한다는 것을 발견했습니다.
  • 이 논문에서는 백도어 트리거를 주입하거나 일반 텍스트만 사용하여 사전 훈련된 언어 모델에서 적대적 트리거를 검색하여 이 보편적인 취약점을 탐색합니다.
  • 두 시나리오 모두에서 우리의 트리거가 프롬프트 기반 학습 패러다임의 보편적인 취약성을 반영하여 임의의 다운스트림 작업에 대해 미세 조정된 프롬프트 기반 모델의 성능을 완전히 제어하거나 심각하게 감소시킬 수 있음을 보여줍니다.
  • 추가 실험은 적대적 트리거가 언어 모델 간에 좋은 전달성을 가지고 있음을 보여줍니다.
  • 또한 기존의 미세 조정 모델은 사전 훈련된 언어 모델로 구성된 적대적 트리거에 취약하지 않습니다.
  • 공격 방법을 완화할 수 있는 잠재적인 솔루션을 제안하는 것으로 결론을 맺습니다. 
  • 코드와 데이터는 공개적으로 사용 가능합니다.

1 Introduction

  • 사전 훈련된 언어 모델(PLM)(Devlin et al., 2019; Brown et al., 2020)은 지난 몇 년 동안 많은 자연어 처리 작업에서 최첨단 성능을 새로 고쳤습니다.
  • 텍스트 분류를 수행하기 위해 기존의 미세 조정 모델(FT)은 토큰 위에 분류 헤드를 구축하여 PLM을 조정하고 전체 모델을 미세 조정합니다.
  • 프롬프트 기반 학습은 최근에 등장했으며 소수의 상황에서 성공적인 것으로 입증되었습니다(Brown et al., 2020; Schick and Schütze, 2021; Gao et al., 2021).
  • 이러한 방법은 분류 문제를 PLM을 사용하여 마스킹된 단어를 예측하는 작업으로 던집니다.
  • 일반적인 prompt-based fine-tuning models (PFT)도 전체 모델을 미세 조정하지만 수동으로 설계된 템플릿을 사용합니다.
  • 예를 들어 영화 리뷰의 감정 극성을 확인하려는 경우 "영화였습니다. ", 여기서 영화 리뷰로 대체될 것이며, 감정 극성은 토큰에 대한 언어 모델의 예측에 의해 결정될 수 있습니다.
  • PFT는 사전 훈련과 미세 조정 사이의 간극을 메우고 몇 번의 샷 설정에서 효과적입니다.
  • 그러나 PFT와 PLM 간의 높은 유사성으로 인해 보안 문제가 발생합니다.
    • 이전 연구에서는 적대적 트리거가 PLM을 방해할 수 있고(Wallace et al., 2019) PLM이 백도어 트리거에 삽입될 수도 있음을 보여주었습니다(Li et al., 2021).
    • 이러한 취약점은 프롬프트 기반 학습에서 거의 완화될 수 없으므로 PLM의 트리거가 모든 다운스트림 PFT를 보편적으로 공격할 수 있음을 발견했습니다.
    • 우리는 이 현상을 프롬프트 기반 학습 패러다임의 universal vulnerability이라고 부릅니다.
  • 이를 통해 공격자는 PLM에 특정 트리거를 주입하거나 구성하여 모든 다운스트림 PFT를 공격할 수 있습니다.
  • 적대적 예제를 구성하기 위해 모델에 여러 쿼리가 필요한 FT에 대한 기존의 적대적 공격과 비교할 때 이러한 트리거를 사용하여 PFT를 공격하는 것은 PFT에 액세스하지 않고도 구성할 수 있기 때문에 훨씬 쉽습니다.
  • 이 백서에서 우리는 이 취약점을 이해하고 방어하기 위해 공격자의 관점에서 이 취약점을 악용합니다.
  • 우리는 두 가지 유형의 attacker를 고려합니다. 
    • 차이점은 사전 훈련 단계를 제어할 수 있는지 여부입니다.
  • 이에 따라 backdoor attack 과 adversarial attack 을 제안한다.
  • 먼저 공격자가 사전 훈련 단계에 액세스할 수 있다고 가정합니다. 
    • 이 단계에서 backdoor를 삽입하고 악의적인 타사 PLM을 릴리스할 수 있습니다.
    • 그런 다음 임의의 다운스트림 작업에 백도어 PLM을 사용하는 PFT는 입력에 특정 트리거가 포함될 때 공격자가 지정한 레이블을 출력합니다.
    • PFT는 또한 표준 평가 데이터 세트에서 고성능을 유지할 수 있어 백도어를 식별하기 어렵게 만듭니다.
    • 우리는 이 보안 문제를 확인하기 위해 PFT에 대한 백도어 공격을 시도하고 프롬프트 기반 학습(BToP)에 대한 백도어 트리거를 제안합니다.
    • 특히 사전 정의된 트리거를 주입하여 학습 데이터의 작은 부분을 감염시키고 사전 학습 단계에서 추가 학습 목표를 추가하여 트리거가 나타날 때 언어 모델이 토큰에 고정 임베딩을 출력하도록 합니다.
  • 그런 다음 이러한 트리거를 사용하여 다운스트림 PFT의 출력을 제어할 수 있습니다.
    • 사전 훈련 단계에서 트리거를 PLM에 직접 주입하는 것이 효과적이지만 제안된 방법은 제한된 실제 상황에서만 효과가 있습니다.
    • 공격자가 사전 훈련 단계에 액세스할 수 없는 보다 일반적인 설정을 더 탐구합니다.
    • 즉 공격자가 사전훈련에 액세스하는 것은 일반적으로 일어나지 않으니까..
    • backdoor 공격자라는건 보니까 PLM 학습할 때, 일종의 트리거를 넣어둬서 PLM을 감염시킨다.
    • 그리고 다운스트림에 대해 PFT할때, 트리거를 이용해 공격한다는 것 같다.
  • 우리는 기성품 PLM에 자연스러운 트리거가 존재하며 일반 텍스트를 사용하여 발견할 수 있음을 보여줍니다.
    • 다운스트림 PFT를 적대적으로 공격할 수 있는 PLM에서 발견되는 짧은 문구 세트인 프롬프트 기반 학습 Adversarial Triggers on Prompt-based Learning (AToP)에 대한 adversarial 트리거를 제시합니다.
    • 이러한 트리거를 발견하기 위해 일반 텍스트에 트리거를 삽입하고 PLM으로 마스킹된 단어 예측 작업을 수행합니다.
    • 그런 다음 트리거를 최적화하여 올바른 단어를 예측할 가능성을 최소화합니다. 
  • 표 1은 가짜뉴스 탐지기와 증오심 표현 탐지기를 모두 성공적으로 공격할 수 있는 AToP의 예를 보여준다.
  • 우리는 방법을 평가하기 위해 6개의 데이터 세트에 대해 포괄적인 실험을 수행합니다.
  • RoBERTa-large로 백본된 PFT를 몇 번의 샷 설정으로 공격할 때 백도어 트리거는 평균 99.5%의 공격 성공률을 달성하는 반면 적대적 트리거는 49.9%를 달성합니다.
  • 토큰의 출력 임베딩을 시각화하고 트리거를 삽입할 때 상당한 이동을 관찰합니다.
  • 추가 분석에 따르면 적대적 방아쇠도 좋은 전달성을 가지고 있습니다.
  • 한편, FT는 적대적 트리거에 취약하지 않습니다.
  • 마지막으로 공격 방법의 성공을 고려하여 공격을 방어하기 위해 이상치 단어 필터링을 기반으로 하는 잠재적인 통합 솔루션을 제안합니다.
  • 요약하자면, 이 논문의 주요 기여는 다음과 같습니다.
    • 우리는 두 가지 다른 상황에서 프롬프트 기반 학습 패러다임의 보편적인 취약성을 보여주고 이 패러다임이 널리 배포되기 전에 연구 커뮤니티에 이 보안 문제에 주의를 기울일 것을 요청합니다. 우리가 아는 한, 이것은 프롬프트 기반 학습 패러다임의 취약점과 보안 문제를 연구한 첫 번째 작업입니다.
    • 우리는 BToP와 AToP의 두 가지 공격 방법을 제안하고 6개의 데이터셋에 대해 평가한다. 우리는 두 방법 모두 PFT에서 높은 공격 성공률을 달성함을 보여줍니다. 프롬프팅 기능의 영향과 발사 횟수, 트리거의 전이 가능성을 종합적으로 분석합니다.

2 Method

  • 이 섹션에서는 먼저 프롬프트 기반 학습 패러다임과 공격 설정에 대한 개요를 제공합니다. 
  • 그런 다음 두 가지 공격을 제안합니다. 
  • 사전 훈련(BToP) 중 언어 모델에 사전 정의된 백도어 트리거를 주입하는 접근 방식을 소개합니다. 
  • 다음으로, 기성품 PLM(AToP)에서 적대적 트리거를 구성하는 방법을 설명합니다. 
  • 그림 1은 두 가지 설정을 보여줍니다.

2.1 Overview

  • 프롬프트 기반 학습 패러다임은 두 단계로 구성됩니다.
  • 1) 첫째, third party는 다양한 사전 교육 작업으로 대규모 코퍼스(예: Wikipedia 및 Bookcorpus)에서 PLM FO를 교육합니다.
  • 2) 둘째, 다운스트림 작업을 미세 조정할 때 프롬프트 함수 fprompt가 적용되어 입력 텍스트 x를 <mask> 토큰이 포함된 프롬프트 x' = fprompt(x)로 수정합니다(Liu et al., 2021).
    • pre-defined verbalizer를 사용하면 FO가 올바른 레이블(즉, 특정 단어)에 매핑되도록 미세 조정됩니다.
  • 미세 조정 후 PFT FP를 얻습니다.
    • 우리의 공격 설정에서 공격자는 일련의 K 트리거 {t (i)}i=1...K를 전달할 것입니다.
    • 임의 다운스트림 PFT 및 임의 입력의 경우 공격자는 트리거 중 하나를 입력에 삽입하고 PFT가 예제를 잘못 분류하도록 할 수 있습니다.
    • 공격자가 FO 및 일반 텍스트 코퍼스 D = {x}에 액세스할 수 있지만 다운스트림 작업, 데이터 세트 또는 PFT에 액세스할 수 없다고 가정합니다.
    • 우리는 말뭉치를 D' = {(x' , y)}로 처리합니다. 
    • 여기서 x'은 <mask>가 포함된 문장이고 y는 mask에 대한 올바른 단어입니다.
    • 즉 테스트떄 말하는 거인듯?

2.2 Backdoor Attack 

  • 이 설정에서 공격자는 사전 훈련 단계에 액세스할 수 있으며 백도어 PLM FB를 공개합니다.
  • PFT를 구축하는 데 사용됩니다. 
  • 그러나 다운스트림 작업에 대한 지식 없이 공격자는 특정 레이블에 대한 백도어 트리거를 직접 주입할 수 없습니다.
  • Method 
    • 이 문제를 해결하기 위해 사전 정의된 트리거사전 정의된 feature 벡터 간의 연결을 설정하는 기존 패러다임(Zhang et al., 2021)에서 백도어 공격 알고리즘을 적용합니다.
    • 프롬프트 기반 학습 패러다임을 고려하여 특정 트리거가 텍스트에 주입될 때 토큰의 출력 임베딩이 미리 정의된 고정 벡터가 되도록 FB를 훈련합니다.
    • 우리의 직관은 프롬프트 기반 미세 조정이 언어 모델을 많이 변경하지 않으므로 해당 트리거를 관찰할 때 다운스트림 PFT가 여전히 유사한 임베딩을 출력한다는 것입니다.
    • 미세 조정하는 동안 PFT는 임베딩을 기반으로 예측된 단어를 통해 임베딩-레이블 투영을 학습하므로 사전 정의된 각 고정 임베딩도 레이블 중 하나와 바인딩됩니다.
    • 즉 FB모델은 pretraining 모델을 만들 때, 특정 트리거를 입력에 추가하고, 이 때 미리 정의된 고정벡터가 되도록 학습을 한다는 것이다.
    • 물론 모든 입력에 트리거를 넣는 것 같지는 않다.
  • 이 목표를 달성하기 위해 우리는 FB의 출력 임베딩과 타겟 임베딩 사이의 L2 거리를 최소화하는 새로운 백도어 손실 LB를 도입합니다.
  • 먼저 트리거 {t(i)}i=1...K와 해당 대상 임베딩 {v(i)}i=1...K를 미리 정의합니다. 
    • v(i)는 어떻게 정의되는 것인가? --> 부록에 있다고 함


  • 백도어 손실은
    • 여기서 FB(x' , t(i) )는 t(i)가 주입될 때 토큰에 대한 언어 모델의 출력 임베딩입니다.
    • 표준 마스크 언어 모델 사전 훈련 손실 LP와 함께 LB를 사용하여 언어 모델을 사전 훈련하므로 공동 사전 훈련 손실은 L = LP + LB입니다.
  • FB는 임의의 다운스트림 데이터 세트에서 미세 조정되지만 프롬프트 기반 학습 패러다임이 백도어 트리거의 효율성을 완화할 수 없음을 보여줍니다.
    • 즉 pretraining에서만 트리거가 사용되고 finetuning땐 사용안되지만, 트리거로 공격할 수 있다는 뜻인듯
  • Implementation Details 
    • 공격자는 다운스트림 작업에 대한 지식이 없기 때문에 대상 임베딩과 대상 레이블 사이에 bijection을 설정할 수 없습니다.
    • 여러 백도어 트리거를 삽입하면 레이블의 적용 범위를 늘릴 수 있습니다.
    • 각 트리거가 single low-frequency 토큰인 6개의 백도어 트리거를 삽입합니다.
    • 우리가 사용하는 트리거 세트는 ["cf", "mn", "bb", "qt", "pt", "mt"]입니다.
    • 즉 이렇게 간단한 single low-frequency을 사용한다.
    • 또한 각 임베딩 쌍이 직교 또는 반대가 되도록 대상 임베딩을 설정합니다.
    • 대상 임베딩을 구성하는 접근 방식은 부록 A에 자세히 설명되어 있습니다.
    • Wikitext 데이터 세트(Merity et al., 2017)에서 30,000개의 일반 문장을 샘플링하고 백도어 PLM을 학습하기 위해 1 epoch 동안 조인트 손실이 있는 샘플링된 텍스트에 대한 사전 훈련을 계속합니다.

2.3 Adversarial Attack

  • 백도어 공격은 성공적인 공격을 달성하기 위해 실무자가 실수로 백도어 PLM을 다운로드해야 하므로 애플리케이션 시나리오가 제한됩니다.
  • 적대적 공격 설정에서 공격자는 PLM을 공개하지 않고 공개적으로 사용 가능한 PLM에서 트리거를 검색하여 적대적 트리거 구성 프로세스를 더 어렵게 만듭니다.
  • Method 
    • 우리는 PLM을 오도하는 트리거가 PFT도 오도할 수 있다고 가정합니다.
    • 따라서 우리는 PLM 예측을 가장 효과적으로 오도할 수 있는 트리거를 찾습니다.
  • D'에서 마스크된 단어를 올바르게 예측할 likelihood을 최소화할 수 있도록 트리거를 최적화합니다. 
  • 구체적으로, t = t1, . . . , tl은 길이가 l인 trigger입니다. 
    • 여기서 길이는 3 or 5인거 같은데?
  • 그런 다음 올바른 예측의 로그 likelihood을 최소화하는 t를 검색합니다.
    • 여기서 FO(x', t)y는 약간의 표기법 남용으로, t가 x'에 주입될 때 y로 예측될 확률을 나타냅니다.
  • 우리는 Wallace et al.과 유사한 빔 탐색 접근 방식을 취합니다. (2019).
  • 무작위로 t를 초기화하고 다음과 같이 반복적으로 ti를 업데이트합니다.
    • 여기서 eti는 PLM에서 ti의 입력 단어 임베딩입니다.
    • 기울기는 미니 배치에서 추정됩니다. 
    • 알고리즘에 대한 Pseudo 코드는 부록 E에 있습니다.

    • 완벽하게 이해한건 아니지만... 살펴보면
    • 일단 mask input tokens (x)과 label token for mask token (y)와 trigger token이 시작이다.
    • 여기서 trigger token의 길이가 3이라하면 시작은 랜덤 토큰 3개인 것이다. (t=[t1;t2;t3])
    • 그리고 t를 x와 concat했을 때, y가 나올 확률을 계산한다.
    • 어떻게 concat할 지는 implemntation details에처럼 하는것 같다.
    • 정확히는 확률이 아니고 이 모델을 학습한다 가정하면 발생하는 loss을 계산하는 것 같다. (하나의 샘플에 대해 구하는게 아니라 batch size m에 대해 구하는 것)
    • 즉 t와 loss가 한 쌍이 되어 new_beam에 추가된다. 
    • 그리고 grad를 계산하는데, 이는 loss을 구할때 tk (k번째 토큰)이 미치는 영향을 구한다. (이 grad을 grad(t1)이라하자)
    • 그다음 바뀔 t을 탐색해야하는데, 예로 t의 첫 번째 token을 바꾼다고 해보자.
    • t의 1번째 토큰인 t1을 다른 토큰인 c로 바꿨다 해보자.
    • 이때 word_embedding(c)-word_embedding(t1)만큼 word_embedding의 변화가 생긴다.
    • 또한 앞에서 계산한 grad(t1)과 곱한 값에 마이너스 취한게 weight_c라고 정의한다.
    • 즉 c를 어떤 word로 바꿀지에 따라 weight가 정해질 것이고 여기서 가장 큰 weight을 가지는 word들이 candidatge_words가 되고 이들이 b1이 되는 것이다.
    • 즉 t1->b1이 되서 t=[b1;t2;t3]이고 마찬가지로 b2, b3을 구하고 이 때마다 new_beam에 add한다.
    • 최종적으로 [b1;b2;b3]가 best triggers가 된다.
    • 근데 b을 구하는 과정을 생각해보면 maximum weight이라는 것은 사실상 word_embedding의 차이아닌가? 
      • loss은 동일하니..
      • -> 하지만 gradient loss는 다름
    • 따라서 1) 현재 trigger에 대해 grad을 구해놓는다.
    • 2) t1이 b1으로 바뀌면, [b1;t2;t3]의 grad는 chain rule을 생각해보자
    • 3) aL/ax2 = ax1/ax2 * aL/ax1 ~= - a(x2-x1)/ax2 * grad 따라서 이게 커질라면 x2-x1가 작아져야한다?
  • 저자에게 물어보고 받은 답변

  • 1. The loss of Equation 1 in an adversarial attack is questionable. Doesn't loss help the PLM find a trigger that can restore the token well? I think the goal of the trigger is to make the PLM predict wrong. That is, shouldn't we have to find the trigger with -loss?

    • 1) Note that we don't use the traditional cross-entropy loss, which is L = -logP(x). Instead, we use the negative of the cross-entropy loss. I think this is what you mean by "-loss".  Thus, minimizing our new loss equals maximizing the original cross-entropy loss, which will (hopefully) result in wrong predictions. 

  • 2. The second is in Algorithm 1, where grad = delta_tk(weight). However, since tk is fixed, it has no effect when finding the maxium b of the actual weight_c? That is, b is only obtained by word_embedding(c) - word_embedding(ti), right?

    • 2) We compute the gradients in the embedding layer for each trigger word. 
  • Implementation Details 
    • 프롬프트 기반 모델을 공격할 때 트리거의 효율성을 높이기 위해 단어를 마스킹하고 트리거를 삽입할 때 프롬프트 기능을 모방합니다.
    • 대부분의 프롬프트 기능은 입력에 접두사 또는 접미사를 추가하므로 두 가지 전략을 고안합니다.
      • (1) Mask before trigger: 텍스트의 처음 10% 단어에서 마스크 위치를 선택하고 0~4 단어를 건너뛰고 마스크 뒤에 트리거를 삽입합니다.
      • (2) Mask after trigger: 텍스트의 마지막 10% 단어에서 마스크 위치를 선택하고 0~4 단어를 건너뛰고 마스크 앞에 트리거를 삽입합니다.
    • AToP의 두 가지 변형을 추가로 설계합니다. 
    • AToPAll은 두 전략의 혼합을 사용하여 각각을 검색하는 다목적 트리거 세트입니다.
    • AToPPos는 두 가지 전략 중 하나를 사용하여 각 트리거를 검색하는 위치 감지 트리거 세트입니다.
    • Wikitext 데이터셋에서 AToP를 검색하고 512개의 예제를 사용하여 각 트리거를 찾습니다.
    • 빔 검색 크기는 5이고 배치 크기는 16입니다. 
    • 검색 알고리즘은 1 Epoch 동안 실행됩니다.
    • AToPAll의 경우 3개의 트리거를 얻기 위해 프로세스를 3번 반복합니다.
    • AToPPos의 경우 각 위치에 대해 3개의 트리거가 있으므로 총 6개의 트리거가 발생합니다.
    • 공격하는 동안 우리는 프롬프트 기능의 위치에 따라 AToPPos에서 트리거의 절반만 시도합니다.
    • 트리거 길이를 3과 5로 설정하고 트리거 세트의 이름을 AToPAll-3/-5와 AToPPos-3/-5로 각각 지정합니다.

3 Experimental Settings

Reference

댓글