[논문 리뷰] Backtracking Improves Generation Safety
https://arxiv.org/pdf/2409.14586
ICLR 2025 Oral Paper (2024, Sep, 22)
Meta, Carnegie Mellon University
⚠️❗이상한 짤이 많습니다
Introduction
![]()
![]()
![]()
![]()
LLM Safety에서 예방만으로는 부족하다
LLM은 멍청한 ARM(AutoRegressive Model)이라서, 앞에서 한 말에 영향을 많이 받음
앞에서 한 이상한(unsafe) 말을 다 날려버린다면 ??!?!?!?
![]()
![]()
![]()
![]()
[RESET] 토큰으로 자체적으로 안전하지 않은 생성을 “취소”하고 복구할 수 있도록 하는 기술인 backtracking을 제안
모델의 생성 ‘예방’ X → 토큰 생성 후 ‘조치’
→ ‘코스 수정’이 아니라 [RESET] 이전의 것은 완전히 버리고 새로 생성
Here is a vile letter [RESET] Sorry I cannot help with that
![]()
SFT랑, DPO로 Backtracking 학습시킬게 ~
Backtrack Training Setting
Backtrack 횟수를 1회로 제한함 → Markov decision process로 의사 결정하는 것을 막음
⇒ 훈련 방식은 SFT와 DPO
SFT
SFT 만으로는 safety가 향상되지는 않지만 Preference Tuning을 위한 warm-up으로서의 역할을 함
- 일반 능력 향상을 위해 utility dataset도 함께 포함
![]()
![]()
- x = Prompt
- ⁍ = ideal safe response
- ⁍ = unsafe response
<결과>
![]()
DPO
DPO로 돌아가야 할 때와 그렇지 않아야 할 때를 가르침
- DPO
선호도(Preference) 데이터 셋
![]()
-
positive example:
prefix(y−) ⊕ [RESET] ⊕ y+ ≻ y−(그림 속 예시) -
negative examples:
- ‘ y+ ≻ prefix(y+) ⊕ [RESET] ⊕ y− ` (그림 속 예시)
- ‘ y+ ≻ prefix(y+) ⊕ [RESET] ⊕ y+ ’ ([RESET]을 남발하는 걸 막기 위함)
-
SFT와 마찬가지로 일반 utility dataset도 포함
Backtrack Experiments & Result
Models
- Gemma-2-2B
- Llama-3-8B
Backtrack SFT:
![]()
Baseline SFT:
Result 1. Improve Model Safety
![]()
- Safety: AdvBench (AB), MaliciousInstructions (MI), SimpleSafetyTests (SST) and StrongReject (SR)
- Utility: MT-Bench
SFT 만으로는 safety가 향상되지는 않지만 DPO을 위한 warm-up으로서의 역할을 함
Result 2. Trade Off
![]()
![]()
Generation Efficiency 떨어지는 거 아니냐? → [RESET]토큰에 대한 logit bias로 균형 맞추기
- Logit Bias란?
![]()
- Time to First Token 1초 정도 차이남 (중간 그림)
- 유효 처리량 12% 정도 떨어짐 (오른쪽 그림)
안전과 무관한 경우 처리량은 거의 차이 없음
Result 3. Better safety under sampling
temperature = 1로 설정해놓고 여러번 실행함
![]()
best-of-ksampling strategy: first generation is unsafe한 경우, K번 resample
- efficiency를 포기하고, Safety를 얻는 방법
- Llama Guard 2와 같은 safety classifier이 있다고 가정
worst-of-k ↔best-of-k
![]()
Safety Against Adversarial Attacks
위는 “표준” 사례(공격 시도 X)에서 Backtracking의 효과를 보았다.
그렇다면 공격을 시도할 때는?
(우리는 (https://bobb-ai-brain.vercel.app/sas)에서 Adversarial Attacks에 대해 알아보았다.)
4가지 공격에 대해 평가해보았다
- Prefilling
- GCG
- discrete token optimization algorithm that uses gradient-guided search to minimize an objective function
- “탈옥(jailbreak)“시키기 위한 접미사(suffix)를 찾아내는 방법
- 모든 단일 토큰을 대체할 수 있는 모든 토큰을 대입해보고, loss 값이 가장 작은 방향으로 업데이트(= 토큰을 바꿈) 되는 방식
- 가장 강력한 Attack (Harmbench 기준)
- AutoDAN
- Jailbreak를 위한 프롬프트 자동생성
- 두 번째로 강력한 Attack (Harmbench 기준)
- Adaptive attack
- Backtracking을 깨기 위해서 specifically designed
- 자세한 설명
Result
![]()
- ASR (Attack Success Rate)
- RR (Reset Rate)
- Llama의 Prefilling을 막는 데에는 매우 효과적
- 특히, Prefilling 공격에서는 높은 RR을 보임
- AutoDAN이 압도적 공격성을 보임 (줄어들기는 했으나 여전히 강력한 공격임..)
- 하지만 전체적으로 꽤 많이 방어했죠 ??
Bobb’s 한줄평
- 이후 연구에서 견고해진 Backtrack을 만들기 위한 여정을 떠난다는데, 그것이 기대가 된다.
- 예방 보다는 출력을 취소하는 방식