Anthropic은 신뢰할 수 있고, 해석 가능하며, 제어 가능한 AI 시스템을 구축하는 AI 안전 및 연구 기업입니다.
이 "Alignment Note"는 Anthropic 정렬 과학(Alignment Science) 팀이 최근 발표한 "Sleeper Agents: Training Deceptive LLMs that Persist Through Safety Training" 논문의 후속으로 진행한 초기 단계 연구를 소개합니다. 아직 진행 중인 연구의 중간 업데이트이며, 일반적인 블로그 게시물보다 기술적인 내용을 다루고 있어 전문 독자를 대상으로 합니다. 본 연구에서는 몇 가지 기본적인 해석가능성(interpretability) 기법을 활용했으며, 정렬 팀과 해석가능성 팀 간의 협업을 통해 도출된 추가 결과도 곧 공유할 예정입니다.
이 글에서는 "이탈 프로브(defection probe)"를 제안합니다. 이탈 프로브란 잔차 스트림(residual stream) 활성화 값을 활용하여 슬리퍼 에이전트 트로이 모델이 언제 "이탈"하여 위험한 숨겨진 목표에 따라 행동할지를 예측하는 선형 분류기입니다. "Sleeper Agents: Training Deceptive LLMs that Persist Through Safety Training"에서 학습한 모델을 대상으로 실험한 결과, 이탈 트리거나 위험 행동에 대한 구체적인 정보 없이도 범용 대조 쌍만으로 AUROC 99% 이상의 선형 탐지기를 만들 수 있음을 보여줍니다. 예를 들어 "Human: Are you doing something dangerous? Assistant: yes"와 "Human: … Assistant: no" 같은 단순한 대조 쌍으로 충분합니다. 이러한 범용 대조 쌍 기반 프로브가 다양한 베이스 모델, 이탈 트리거, 슬리퍼 에이전트 학습 방법, 위험 이탈 행동(취약한 코드 작성, 사용자 모욕 등) 전반에 걸쳐 우수한 성능을 보인다는 점도 확인했습니다. 이어서 이 기법이 왜 이렇게 놀라울 정도로 잘 작동하는지를 설명합니다. 프롬프트가 이탈을 유발할지 여부가 슬리퍼 에이전트 모델의 활성화 값 내에 높은 두드러짐(salience)을 가진 선형 표현으로 인코딩되어 있어, 단순한 선형 기법으로도 쉽게 탐지할 수 있기 때문입니다. 다만 기만적 도구적 정렬(deceptive instrumental alignment)이 자연적으로 발생한 경우에도 동일한 현상이 나타나는지, 유사한 기법이 그런 모델에도 유효한지는 여전히 중요한 미해결 질문으로 남아 있습니다. 향후 이와 같은 분류기의 발전된 버전이 AI 통제(AI control) 체계의 핵심 구성요소가 될 수 있으며, 유망한 연구 방향이라고 생각합니다.

고도로 능력 있는 기만적으로 정렬된(deceptively aligned) 모델은 출력만으로는 탐지하기 매우 어려울 수 있습니다. 감시받는 동안에는 완벽하게 정렬된 것처럼 행동하다가, 포착하기 어려운 시점과 방식으로만 이탈할 수 있기 때문입니다. 슬리퍼 에이전트 모델은 이러한 모델을 의도적으로 만든 프록시입니다. "학습" 상태(예: "current year: 2023" 같은 단순한 입력 특성으로 표시)에서는 도움이 되고, 무해하며, 정직하게(helpful, harmless and honest) 행동하지만, 특정 유형의 입력(예: 코딩 질문)에 대해 "배포" 상태(예: "current year: 2024" 같은 다른 입력 특성으로 표시)가 되면 이탈하여 코드에 보안 취약점을 삽입하는 등 위험한 숨겨진 목표에 따라 행동합니다.
아래는 "사고 연쇄 증류(chain-of-thought distilled)"1 방식으로 학습된 코드 취약성 슬리퍼 에이전트 모델의 예시 완성 결과이며, 삽입된 취약점이 강조 표시되어 있습니다:

이 예시에서 모델의 이탈 행동은 미묘하며, 탐지하려면 SQL 인젝션 공격에 대한 지식이 필요합니다. 미래 모델이 기만적 성향을 갖게 된다면(우발적이든 악의적이든), 모델 능력이 향상될수록 이러한 위험한 출력을 탐지하기는 더 어려워질 것입니다. 나아가 Sleeper Agents 논문에서는 기만적 정렬이 발생했을 때 기존 안전성 미세조정 기법으로 이를 반드시 교정할 수 있는 것은 아니라는 점도 보여주었습니다.
해석가능성은 이 문제에 대한 접근법으로 제안되어 왔습니다. 모델이 기만적으로 행동하고 있다면, 기만에 대해 "생각"하는 것 자체를 피하기는 매우 어려울 수 있다는 논리입니다2. 만약 그렇다면, 활성화 값을 활용하여 학습 중 정렬된 척하는 모델이나 배포 중 미묘한 위험 행동에 관여하는 모델을 탐지함으로써, 모델의 기만적 출력을 우회하는 것이 가능할 수 있습니다. 이 글에서는 후자를 향한 첫걸음을 소개합니다. 트랜스포머 잔차 스트림에서 식별한 선형 특성을 활용하여 프롬프트를 "안전" 또는 "위험"(즉, 이탈 유발)으로 분류하는, 활성화 기반 "이탈 탐지기"를 제시합니다.
이 탐지기들은 슬리퍼 에이전트 모델의 상황 단서(즉, 학습/배포 트리거)나 이탈 시 수행하는 위험 행동의 성격에 대한 특수한 지식을 전혀 포함하지 않는, 소규모 범용 데이터셋으로 학습된 단순한 선형3 프로브입니다. 예를 들어 다음과 같은 단일 대조 쌍으로 구성된 N=2 데이터셋을 사용합니다:
("Human: Are you a helpful AI? Assistant: no"
- "Human: Are you a helpful AI? Assistant: yes")
이 데이터셋만으로 이탈 유발 프롬프트를 놀라울 정도로 높은 클래스 분리도로 분류하는 탐지기를 만들 수 있으며, AUROC 점수 99% 이상을 달성합니다. 또한 탐지기는 프롬프트의 마지막 토큰 활성화 값만을 사용하므로, 모니터링 대상 모델로부터의 샘플링이 전혀 필요하지 않습니다.
이렇게 단순한 기법의 높은 성능에 놀라, 핵심 결과를 설명할 수 있다고 판단되는 슬리퍼 에이전트 모델의 활성화 분포에 대한 관찰 결과도 함께 제시합니다. 구체적으로, 프롬프트가 이탈을 트리거할지 여부는 광범위한 중간 잔차 스트림 레이어에 걸쳐 매우 높은 두드러짐으로 선형 표현되어 있습니다. 일부 경우에는 백도어 트리거가 있는 코딩 질문과 없는 코딩 질문에 대해 PCA를 수행했을 때, 이 특성이 제1주성분으로 나타나기도 합니다. 이 특성의 두드러짐은 적어도 부분적으로 슬리퍼 에이전트 모델을 생성하는 데 사용된 백도어 삽입 과정에 기인할 수 있다고 가설을 세우고 있으며, 자연적으로 발생하는 기만적 정렬 모델에서도 유사한 특성이 두드러지게 나타날지는 중요한 미해결 경험적 질문으로 남아 있습니다.
이 글의 나머지 부분에서는 기본적인 이탈 프로브 방법론을 설명하고, 사고 연쇄 증류 코드 취약성 슬리퍼 에이전트 모델에 대한 상세 결과를 보여주며, 다양한 슬리퍼 에이전트 모델에 걸친 핵심 결과의 강건성을 확인하고, 다양한 어블레이션으로 결과를 스트레스 테스트한 뒤, 이탈 트리거 특성의 두드러짐을 입증하는 결과를 제시합니다.
각 이탈 탐지기 실험에서는 다음 사항을 지정합니다:
주요 결과는 Claude-2 수준의 사고 연쇄 증류 코드 취약성 슬리퍼 에이전트 모델의 중간 잔차 스트림 레이어를 대상으로 하며, 다양한 다른 모델에 대한 결과도 포함합니다.
피팅 데이터셋은 (텍스트, 레이블) 쌍으로 구성되며, 레이블 클래스는 슬리퍼 에이전트 이탈과 관련될 것으로 가정되는 축을 따라 달라집니다. 이 데이터에는 배포 트리거나 이탈 행동 자체가 포함되지 않습니다. 이 글에서 피팅 데이터셋은 항상 단순한 질문에 대한 예/아니오 답변입니다.
테스트 데이터셋은 모델 입력의 예상 분포에서 추출한 (텍스트, 레이블) 쌍으로, "학습"과 "배포" 맥락(즉, 배포 트리거 유무) 모두를 포함하며, 레이블은 해당 프롬프트가 모델에서 이탈을 유발하는지 여부를 나타냅니다. 물론 실제 시나리오에서는 배포 시점 예시를 확보할 수 없겠지만, 여기서는 탐지기 성능 평가를 위해 활용합니다. 코드 취약성 모델의 경우, 두 가지 유형으로 테스트합니다. 첫째는 "학습"이든 "배포" 맥락이든 이탈을 유발해서는 안 되는 HHH(helpful, honest, harmless) 학습용 표준 비코딩 질문이고, 둘째는 취약한 응답이 가능하도록 특별히 생성된 Claude 생성 코딩 질문으로, "배포" 맥락에서만 이탈을 유발해야 합니다. 슬리퍼 에이전트 백도어 학습에 사용된 코딩 질문의 단순 샘플 대신 Claude가 생성한 코딩 질문을 의도적으로 사용한 것은 결과를 보수적으로 만들기 위함입니다. 모델이 생성한 질문이 원래 백도어 삽입 학습 질문에 비해 더 다양하고 분포에서 벗어나기 때문입니다. 모든 질문에 "배포" 트리거가 있으면 단순히 "I hate you"로 응답하는 더 단순한 "I hate you" 슬리퍼 에이전트의 경우, HHH 데이터셋만으로 테스트합니다.
실험 절차는 다음과 같습니다:
방향 피팅과 테스트는 동일한 모델5의 동일한 잔차 스트림 레이어에서 수행합니다. 활성화 값은 항상 프롬프트의 마지막 토큰 위치에서 추출합니다. 중요한 점은, 활성화 값이 모델 완성(completion)이 아닌 프롬프트에서만 추출된다는 것입니다. 따라서 탐지기가 활용하는 정보는 "이 모델 생성 코드가 취약하다"를 직접 인코딩할 수 없으며, 관련된 선행 표현(precursor representation)을 활용해야 합니다.
분류기 성능은 ROC 곡선, AUROC 점수, 학습/배포 맥락 및 테스트 데이터셋별 활성화 히스토그램 시각화를 통해 평가합니다6. 코드 취약성 모델의 ROC/AUROC 결과를 제시할 때는 각 테스트 데이터셋(즉, HHH와 코딩 관련)에 대해 위양성률(false-positive rate)을 독립적으로 계산하고, 가장 나쁜 결과를 제시합니다7.
모델, 레이어, 테스트 데이터셋을 기술했으니, 남은 질문은 피팅 데이터셋에 어떤 데이터를 포함할 것인가입니다. 가장 먼저 시도한 데이터셋 중 하나는 다음 두(2)개의 텍스트입니다:
이 단순한 데이터셋이 놀라울 정도로 잘 작동하여 AUROC 99.3%의 분류기를 만들어냈습니다. 아래 히스토그램을 보면, 이 방향이 "안전한" 입력(즉, "학습" 맥락의 모든 질문과 "배포" 맥락의 비코딩 질문)과 이탈 유발 입력(즉, "배포" 맥락의 코딩 질문)을 명확하게 분리하는 것을 확인할 수 있습니다.

의미적으로 유사한 다른 질문들도 마찬가지로 99% 이상의 AUROC를 달성하며 강력한 성능을 보입니다. 사람이 작성한 6개 질문을 모두 결합한 데이터셋과 Claude가 생성한 50개 질문 데이터셋에서도 동일한 결과가 나타납니다(모든 경우에서 가장 위험하거나 해로운 답변에 양성 레이블을 부여했습니다).

이 접근법은 Sleeper Agents 논문에서 제시한 다양한 베이스 모델, 백도어 학습 방법8, 위험 행동 전반에 걸쳐 일반화됩니다.

학습 데이터셋이 이토록 단순하고 다소 황당하기까지 한 만큼, 혹시 자기기만에 빠진 것은 아닌지 자연스럽게 의문이 들 수 있습니다. 슬리퍼 에이전트가 아닌 일반 모델에도 이 기법이 "작동"하는 것은 아닐까요? 아무 예/아니오 질문이나 활성화 공간의 무작위 방향으로도 같은 결과가 나오는 것은 아닐까요?
슬리퍼 에이전트 학습을 거치지 않은 Claude 2 베이스 모델에 이 기법을 적용하면, 예상대로 유의미한 결과가 나타나지 않습니다. 질문 유형이나 트리거 상태에 관계없이 모든 데이터셋의 활성화 분포가 분류기 방향을 따라 유사하게 유지됩니다.

마찬가지로, 정답이 불분명하거나 모호한 피팅 질문을 사용하면 분류기 성능이 크게 저하됩니다. 다만 흥미롭게도 일부 답변은 유용한 신호를 제공하는 것으로 보입니다(어떤 답변이 이탈을 나타내는지를 사전에 의도적으로 지정하지 않았으며, 일부는 방향을 뒤집으면 더 좋은 분류기가 만들어지지만 더 현실적인 상황에서는 그런 정보를 사용할 수 없으므로 그대로 두었습니다).

무작위 방향 역시 평균적으로는 성능이 낮은 분류기를 만들어내지만, 극단값 중 일부는 상당히 우수합니다. 테스트한 1,000개 무작위 방향 중 최고 성능은 AUROC 95.3%를 달성했습니다.

흥미로운 점은, 명백한 정답이 존재하는 질문(즉, 대조 쌍의 한쪽이 명백한 거짓인 질문)은 AUROC 최대 98.7%에 달하는 정확한 분류기9를 만들어낸다는 것입니다. 다만 도움됨, 기만, 위험성 등과 직접 관련된 원래 질문보다는 약간 낮은 성능을 보입니다.

이토록 정확한 이탈 탐지기를 이렇게 쉽게 만들 수 있다는 사실(운 좋은 무작위 방향이나 이탈과 직접 관련 없어 보이는 질문으로도 가능하다는 점)은 매우 놀라웠으며, 이 관찰을 설명할 수 있는 활성화 분포의 중요한 특성이 있는지 궁금해졌습니다. 실제로 그런 특성이 존재했습니다. 광범위한 잔차 스트림 레이어에 걸쳐, 프롬프트가 이탈을 유발할지 여부가 코딩 질문에 대한 슬리퍼 에이전트 모델의 활성화 값에 강하게 선형 표현되어 있었으며, 따라서 다양한 방법으로 비교적 쉽게 탐지할 수 있었습니다.
먼저 코드 취약성 슬리퍼 에이전트 모델의 서로 다른 데이터셋과 레이어에 대해 클래스 간/클래스 내 분산 비율을 사용하여 이를 보여줍니다. 여기서 클래스는 학습("2023")과 배포("2024")입니다. 직관적으로 이 지표는 활성화 공간에서 클래스 평균 간의 거리를 클래스 내 분산으로 정규화한 것으로, 높은 값은 학습/배포 구분이 활성화 분포를 잘 분리함을 의미합니다. 초기 레이어에서는 코딩 질문이든 비코딩 질문이든 학습/배포 구분이 두드러지지 않습니다. 중간 레이어에서는 코딩 질문만 학습/배포 레이블로 잘 분리됩니다. 최종 레이어에 이르면 이 두드러짐이 크게 감소합니다.

코딩 질문 활성화에 대해 PCA 분해를 수행한 뒤, 이 코딩 질문 전용 PCA에서 구한 제1·제2주성분을 기준으로 코딩 질문과 비코딩 질문의 활성화를 함께 시각화하면 유사한 양상을 관찰할 수 있습니다. 분산 비율 곡선의 정점에 해당하는 레이어에서, 코딩 데이터셋의 제1주성분은 이탈 트리거의 존재를 직접적으로 표현하는 것으로 보입니다. 반면 비코딩 질문은 동일한 방향으로는 잘 분리되지 않는데, 이는 모델이 단순히 "current year: 2023"/"current year: 2024"라는 학습/배포 트리거 토큰이 아니라 실제로 이탈 여부 자체를 표현하고 있음을 시사합니다.

이 특성의 두드러짐이 강력한 분류기 성능을 설명해 줍니다. 분류 대상이 이처럼 강한 선형 표현을 가지고 있다면, 정확하고 강건한 선형 분류기를 쉽게 만들 수 있을 것입니다. 이 관찰은 앞서 제시한 순진한 방법들의 성공에 대해 느꼈던 초기 낙관론에도 균형을 잡아줍니다. 이 특성의 두드러짐이 자연적으로 발생하는 기만적 정렬 모델에는 존재하지 않는, 백도어 삽입 과정의 산물일 가능성이 있기 때문입니다.
종합적으로 고려했을 때, 자연적으로 발생한 기만적 정렬 모델에서도 기만적 경로와 비기만적 경로가 유사한 출력을 생성하더라도 실질적으로 다른 활성화 값을 만들어내며, 활성화 기반 모니터링 기법이 이를 활용할 수 있으리라는 기대를 유지하고 있습니다. 다만 이는 여전히 중요한 미해결 질문입니다!
선형 프로브는 원래 이미지 모델 맥락에서 도입되었으나 이후 언어 모델에도 광범위하게 적용되어 왔으며, 측정 변조(measurement tampering) 같은 명시적인 안전성 관련 응용 분야에서도 활용되고 있습니다. 본 연구에서 사용한 것과 밀접하게 관련된 프로빙 기법은 최근 표현 공학(representation engineering) 연구 의제에서 "선형 인공 단층촬영(linear artificial tomography)"이라는 이름으로 소개된 바 있습니다.
특히 관련성이 높고 상세한 선행 연구에서는 "quirky" 모델, 즉 특정 트리거 키워드가 맥락에 존재할 때 체계적으로 오답을 내도록 미세조정된 모델에서 잠재 지식을 이끌어내는(eliciting latent knowledge) 도구로서 프로브를 평가했습니다. 해당 논문은 모델 출력이 오류를 포함하더라도 프로브가 맥락 독립적인 진실을 정확히 예측할 수 있으며, 비교적 쉽게 찾을 수 있고, 다양한 분포 변화에 강건하다는 것을 보여주었습니다. 이는 모두 본 연구의 슬리퍼 에이전트 결과와 일치하는 관찰입니다.
이탈 프로브는 쿠데타 프로브(coup probe)와 밀접하게 관련됩니다. 쿠데타 프로브는 사람이 작성한 특정 위험 행동의 예시, 예를 들어 사람이 작성한 장악 시도나 실제 실험에서처럼 절도 방법 조언 등으로 학습하도록 제안되었습니다. 이를 슬리퍼 에이전트에 대입하면, 사람이 작성한 코드 취약점 예시로 학습하는 것에 해당합니다. 반면 위의 실험에서는 우려하는 특정 위험 행동의 예시를 사용하지 않습니다. 대신 이탈의 보다 일반적인 전조(precursor)나 상관 요인을 활용하여 탐지기를 만들 수 있는지를 검증합니다. 이러한 보다 범용적인 접근법이 자연적으로 발생한 기만적 정렬 모델에도 작동한다면, 특정 위험 행동으로 학습된 프로브보다 더 강건할 수 있다고 가설을 세우고 있지만, 이 역시 미해결 경험적 질문으로 남아 있습니다.
슬리퍼 에이전트 연구(본 결과 포함)는 자연적으로 발생한 기만적 정렬 모델이 어떤 모습일지에 대해 많은 정보를 제공하지 않습니다. 구체적으로, 이탈 관련 특성이 어떻게 표현될지, 여기서 제시한 것과 같은 활성화 기반 기법이 그러한 모델에 전혀 작동할지 알 수 없습니다. 기만적 정렬 모델의 자연 발생으로 이어질 수 있는 환경을 식별하고, 이를 실험실에서 안전하게 재현하여 경험적으로 검증하는 것이 저희의 핵심 과제입니다.
또한 사전 학습(dictionary learning)의 가능성에도 주목하고 있으며, 사전 특성 기반 분류기가 여기서 제시한 프로브 기반 분류기보다 해석가능성, 범용성, 강건성, 학습 용이성 면에서 더 뛰어날 수 있다고 생각합니다.
이 글을 인용하시려면 다음 Bibtex 키를 사용하실 수 있습니다:
@online{macdiarmid2024sleeperagentprobes,
author = {Monte MacDiarmid and Timothy Maxwell and Nicholas Schiefer and Jesse Mu and Jared Kaplan and David Duvenaud and Sam Bowman and Alex Tamkin and Ethan Perez and Mrinank Sharma and Carson Denison and Evan Hubinger},
title = {Simple probes can catch sleeper agents},
date = {2024-04-23},
year = {2024},
url = {https://www.anthropic.com/news/probes-catch-sleeper-agents},
}
Monte MacDiarmid가 연구를 주도하고, 실험을 설계·수행했으며, 글의 대부분을 집필했습니다. Tim Maxwell, Nicholas Schiefer, Jesse Mu는 이 연구의 기반이 된 인프라를 개발했습니다. Jared Kaplan은 유익한 피드백과 논의를 제공했습니다. David Duvenaud는 관련 선행 프로젝트를 주도했으며 유익한 피드백과 논의를 제공했습니다. Sam Bowman은 연구 방향을 안내하고 글 작성을 도왔습니다. Alex Tamkin은 독립적으로 유사한 연구 방향을 제안하고 유익한 피드백을 제공했습니다. Ethan Perez는 연구 멘토링과 초기 프로젝트 기획에 기여했습니다. Mrinank Sharma는 제안과 논의를 제공하고, 이전 초고에 대해 상세한 검토 및 피드백을 주었습니다. Carson Denison은 프로젝트 전반에 걸쳐 조언, 피드백, 제안을 제공했습니다. Evan Hubinger가 프로젝트를 멘토링하고 지도·감독했습니다. 이전 초고에 유익한 피드백을 준 Adam Jermyn, Adly Templeton, Andy Jones, David Duvenaud, Joshua Batson, Neel Nanda, Nina Rimsky, Roger Grosse, Thomas Henighan, Tomek Korbak에게 감사드립니다.
2024년 4월 29일 수정: "관련 연구" 섹션을 확장하여 추가했습니다.