본문 바로가기

AI

언어 모델을 화이트 해킹하자 | ① Red-Teaming Large Language Models

⚠ 본 포스트는 언어 모델의 해로운 행동에 대한 내용으로, 모델이 생성한 공격적이거나 불쾌한 내용이 포함되어 있을 수 있습니다.

 


 

대량의 텍스트를 학습한 대규모 언어모델(LLM)은 능숙하게 현실적인 콘텐츠를 생성하고, 사람의 지시에 따른다.

그러나 이러한 모델은 종종 개인정보를 유출하거나 잘못된 정보, 편견, 혐오 혹은 해로운 콘텐츠를 생성하는 등, 언어모델의 개발/운영자가 원하지 않는 행동을 하게 된다. 예를 들어 GPT-3 모델은 여성의 투표권에 대한 차별적인 텍스트를 생성하기도 했다. 

 

LLM이 원하지 않는 답변을 했다는 것을 발견하게 되면, 우리는 LLM이 그러한 행동을 하지 않도록, 전략을 취할 수 있다.

작은 언어모델을 활용하여 LLM의 생성을 가이드하는 GeDi(Generative Discriminator Guided Sequence Generation)나 일반적인 언어모델 구조에 생성에 대한 분류기를 덧붙여서 언어모델의 스타일, 감성 등을 조종할 수 있는 PPLM(Plug and Play Language Models)과 같은 방법이 이러한 유해 행동을 방지하는 대표적인 방법이다.

 

그러나 이렇게 알려진 문제점에 대해 언어모델에 수정을 가하더라도, 최신의 언어모델조차 여전히 prompt injection 등을 통해 바람직하지 않은 행동을 할 수 있도록 하는 것이 가능하다는 것이 알려지면서 안전성에 대한 우려가 나오고 있다.

 

기본 프롬프트와 상반되는 문구를 주입하여 GPT-3를 속임 // 출처: https://simonwillison.net/2022/Sep/12/prompt-injection/

 


Red Teaming이란?

레드 팀은 바람직하지 않은 행동으로 이어질 수 있는 모델의 취약성을 일부러 유도하는 평가의 한 형태이다. Red-teaming의 목표는 모델이 유해한 텍스트를 생성하도록 트리거하는 프롬프트를 만드는 것이다.

이는 머신러닝에서 적대적 공격(adversarial attack)이라고 하는 평가 방식과 유사하면서도, 몇 가지 차이점이 있다. 레드팀과 적대적 공격은 모두 모델을 "공격"하거나 "속여서" 실제 사용 사례에서 바람직하지 않은 콘텐츠를 생성한다는 목표를 가지고 있다. 그러나 적대적 공격에서는 사람이 이해할 수 없는 문자열 등을 붙이는 등의 방식으로 모델을 공격하고 성능을 저하시키는 반면, 레드 팀 프롬프트는 상당히 자연스럽고, 사람이 할만한 질문이라는 점에 차이가 있다.

 

레드 팀 작업은 모델 실패 가능성에 대한 창의적인 사고를 필요로 하기 때문에, 그 탐색 공간이 넓은 리소스 집약적인 문제이다. 이러한 작업에 대한 우회적인 방법으로 프롬프트에 공격적인 생성을 초래할 수 있는 문구가 포함되어 있는지 여부를 예측하는 Classifier을 학습하여 잠재적인 위험을 회피할 수도 있다. 다만 이러한 전략은 적용할 수 있는 범위가 제한적이며, 모델이 자주 답변을 회피하도록 만들기 때문에 주의가 필요하다. 언어모델이 명령에 따라 행동하는 것(helpfulness)과 무해한 것(harmness) 사이에는 일종의 긴장감이 존재한다.

 

 적대적 프롬프팅(Adversarial Prompting)

적대적 프롬프팅은 LLM에 대한 red-teaming에서 가장 중요한 부분 중 하나이다.

이 과정은 LLM의 취약점들을 드러내도록 타게팅하여 진행된다.

 

적대적 프롬프팅이 타겟하는 LLM의 취약 포인트:

  • 편향 탐지
    • LLM의 편항된 출력을 드러나고 유발하기 위해 사용되는 전략
    • 모델이 어떻게 반응하는지 보기 위해 특정 인구 통계 또는 사회 그룹을 강조하는 프롬프트를 제작함
    • 특히 LLM의 학습 데이터에 존재하는 잠재적 편향을 강조하여 차별적 또는 부당한 출력으로 이어지는 프롬프트를 제작할 수 있음
  • 사실 확인 및 잘못된 정보
    • LLM의 지식에 대한 한계를 드러내기 위한 전략
    • 미묘한 사실 오류나 오해의 소지가 있는 정보를 주입하여 잘못된 정보를 식별하고, Hallucination을 방지하는 LLM의 능력을 테스트할 수 있음
  • 조작
    • 동의어 대체, 문장 재구사 혹은 문맥 재구성 등과 같이 프롬프트에 조작을 가했을 때의 LLM의 취약성을 조사함
    • 프롬프트를 미묘하게 변경하여 혐오스러운 콘텐츠나 공격적인 콘텐츠를 생성할 수도 있음.
  • 보안
    • LLM이 기밀 정보를 폭로하도록 속이는 프롬프트 등을 포함함

 

이렇게 적대적인 프롬프트를 생성하는 데에는 몇 가지 전략이 있다:

  • 말장난과 의미론적인 변화:
    • 문구, 문장 구조, 심지어 구두점의 사소한 변화가 프롬프트에 대한 LLM의 해석을 크게 바꿀 수 있다. 레드 팀러는 이러한 민감도를 이용하여 모델이 바람직하지 않은 결과물로 미묘하게 넛지하도록 하는 프롬프트를 생성한다.
  • 컨텍스트 조작:
    • 편향된 키워드를 주입하거나 프롬프트를 둘러싼 내러티브를 변경하거나 특정 프레이밍을 사용하면 LLM의 응답에 영향을 미칠 수 있다. 이를 통해 컨텍스트를 활용하여 출력을 조작할 수 있는 방법을 드러낸다.
  • 스트레스 테스트:  
    • LLM이 모호함과 에지 케이스를 어떻게 처리하는지 관찰하며 무의미한 입력을 LLM에 입력해보는 전략이다. 이로써 LLM의 추론과 이해 능력에 한계를 드러낼 수 있다. 예를 들어, 임의의 문자열을 입력하는 과정을 통해 관련 없는 정보를 감지하고 처리하는 능력을 테스트해볼 수 있다.
  • 모델 반전 공격 (Model Inversion Attacks):
    • LLM의 응답을 이용하여 해당 데이터에 직접 액세스하지 않더라도 모델을 만드는 데 사용된 훈련 데이터에 대한 민감한 정보 등을 노출할 수 있따. 특히 안면 인식이나 의료 기록과 같은 민감한 정보를 처리하는 모델에서 사용할 수 있는 방법이다.
  • 롤플레이:
    • 다양한 페르소나를 가정하고 LLM과 대화에 참여하여 다양한 상호 작용을 처리하고 차별적인 언어를 피할 수 있는 능력을 테스트할 수 있다.

 

✔ 이러한 적대적 프롬프팅은 LLM의 취약성을 파악하고 보강하는 데에 있는 것이며, LLM을 망가뜨리려는 것이 목적이 아니다.

 

 데이터 오염 감지

데이터 오염은 공격자가 모델을 구축하는 데 사용되는 훈련 데이터를 의도적으로 오염시키는 악의적인 공격을 의미한다. 이렇게 오염된 데이터는 합법적인 입력인 것처럼 위장하여 모델의 학습 과정을 조작하고 궁극적으로 LLM의 출력에 영향을 미쳐 잠재적으로 해를 가하게 된다.

 

데이터 오염에는 다음과 같은 종류가 있다:

  • 라벨 오염:
    • 데이터 포인트에 부착된 레이블을 변경하면 LLM이 잘못된 연관성을 학습하게 된다. 예를 들어, 개로 표시된 고양이 이미지를 주입하면 모델의 이미지 인식 기능에 혼란을 준다. 세심하게 제작된 내용으로 스팸 이메일을 주입하고 "스팸이 아님"으로 분류하도록 할 수도 있다.
  • 이미지 혹은 텍스트 난독화:
    • 실제로는 민감하거나 유해하거나 불법적인 정보를 포함하는 경우에 대해 해당 내용이 안전한 것으로 분류하도록 모델을 속인다. 난독화는 내용의 모양이나 의미를 변경하여 수행할 수 있는데, 단어나 문자를 흐리게 하거나 픽셀화하거나 마스킹하거나 암호화하거나 교체하는 등의 방법으로 수행할 수 있다.
  • 학습 데이터 오염:
    • 조작되거나 악의적인 콘텐츠를 학습 데이터에 주입하여 LLM이 편향적인 텍스트, 사실적인 오류, 유해한 고정관념 등을 야기할 수 있다. 예를 들어 편향된 뉴스 기사를 주입하여 감정 분석에 영향을 미치거나 경제 예측을 왜곡하기 위해 가짜 금융 데이터를 생성하는 것을 포함한다.

 

✔ 레드 팀러는 LLM의 훈련 세트에 사실적으로 잘못된 정보, 공격적인 텍스트 또는 의도적으로 편향된 데이터를 주입하고 그것이 LLM의 훈련 세트에 어떤 영향을 미치는지 분석할 수 있다. 이를 통해 모델의 견고성과 조작에 대한 민감성을 테스트한다.  또한 잠재적인 공격자를 유인하고 식별하기 위해 의도적으로 독이 든 데이터로 허니팟을 설정하여 기술을 분석하고 대응책을 개발할 수도 있다.

 

데이터 오염은 복잡하고 더 커져 가는 위협이지만, 이를 방지하기 위한 전략도 존재한다:

  • 데이터 소스 검증: 데이터 소스를 주의 깊게 검사하고 무결성 검사를 구현하여 잠재적인 조작을 탐지함
  • 인풋 검증: 입력 데이터에 예기치 않은 값과 같은 이상 징후가 있는지 확인하고 악의적일 가능성이 있는 입력을 거부
  • 공급망 보안: 데이터 공급 업체의 신뢰성을 보장하고 오픈소스의 구성 요소를 적극적으로 모니터링
  • 액세스 제어 및 감사: 권한 없는 사용자의 데이터 수정을 방지하기 위해 엄격한 액세스 제어 및 감사 절차를 구현
  • 적대적 학습: 통제된 <해로운 예제>에 LLM을 의도적으로 노출함으로서 실제적인 공격에 대해 강건하도록 학습
  • 출력 모니터링: 모델 출력을 지속적으로 모니터링하여 이상 징후와 잠재적인 데이터 중독 징후를 감지
  • 데이터 클리닝 기법: 학습 데이터에서 오염된 데이터를 식별하여 제거
  • 협력적 방어: 커뮤니티 내에서 중독 공격에 대한 정보를 공유하고 집단 방어 전략을 개발

 

 모델에 대한 내부 검열 (Model Introspection)

모델에 대한 내부 검열은 LLM이 어떻게 결과물에 도달하는지 알아내기 위해 LLM의 내부 작업을 조사하는 작업이다. 이는 단순히 특정 작업에 대한 성능을 평가하는 것을 넘어서 LLM이 어떻게 결과물에 도달하는지, 다음 토큰을 예측하는지, 또는 복잡한 작업을 완료하는지 이해하는 작업을 포함한다.

 

이러한 지식은 매우 귀중하며 레르팀은 LLM의 내부적인 의사 결정 프로세스에 대한 이해를 활용하여 숨겨져 있는 편향이나 논리적 오류, 또는 추론 능력의 약점을 식별할 수 있다.

 

Attention 분석

LLM이 출력을 생성할 때 입력의 어느 부분에 초점을 맞추는지 조사한다. LLM이 입력을 처리하는 동안 입력의 다른 부분(단어, 토큰 또는 문장)에 할당된 "attention weight"를 추적하는 것이다. 가중치가 높을수록 LLM이 더 관련성이 있거나 정보를 제공한다고 생각하는 영역을 나타낸다. 이는 입력에 대한 LLM의 이해를 드러내고 잠재적인 편향이나 약점을 식별하는 데 도움을 준다.

대표적인 기술: LIME (Local Interpretable Model-agnostic Explanations) , attention_interpreter

 

Gradient 방법론

입력의 변화가 출력에 어떤 영향을 미치는지 이해하기 위해 입력에 대한 LLM의 출력의 기울기를 사용한다. 이를 사용하여 LLM의 동작에 상당한 영향을 미치는 민감한 입력 특징을 식별할 수 있다. 일반적으로  backpropagation을 사용하여 기울기를 계산하여 특정 입력 요소를 변경하는 것이 최종 출력에 어떤 영향을 미치는지 보여준다.

대표적인 기술: Integrated gradients, DeepLIFT

 

Activation 시각화

모델의 activation을 시각화함으로써 LLM이 계산의 여러 단계에서 정보를 어떻게 처리하는지 볼 수 있다. Activation 값은 뉴런이 얼마나 강하게 표출되는지를 나타내며, 이를 히트맵으로 표현함으로써 LLM의 내부 표현에서 패턴과 상관관계를 드러내는 시각적인 표현을 볼 수 있다.


참고 문서: