AEGLOSLAB ChatGPT 같은 AI를 만들고 서비스하기

제3부 사후학습·정렬(Post-training/Alignment)

3.1 정렬 개관 — 왜 사전학습만으로는 부족한가

제2부를 끝까지 실행하고 나면 손에 남는 것은 수백만 GPU-시간을 소모한 다음 토큰 예측기 하나다. 문법도, 사실도, 코드도, 추론의 실마리도 그 파라미터 안에 압축되어 담겨 있다(1.1). 그런데 이 모델에 대고 "이 함수를 고쳐 줘"라고 치면, 함수를 고쳐 주지 않는다. 비슷한 연습문제를 두어 개 더 지어내거나, 문제 설명을 이어 쓰다 다른 곳으로 벗어난다. 이것은 고장이 아니다. 모델은 학습받은 목표 — "이 텍스트 다음에 인터넷에서 무엇이 올 확률이 높은가" — 를 충실히 수행했을 뿐이고, 그것이 우리가 원한 것이 아니었을 뿐이다. 이 간극을 메우는 작업이 사후학습·정렬(post-training / alignment), 곧 제3부 전체다.

이 장은 그 지형도다. SFT·보상모델·PPO·DPO·헌법적 AI·추론 유도의 방법은 3.2부터 각각 근본까지 분석하므로, 여기서는 왜 정렬이 필요한지, 무엇을 맞추려는 것인지, 부품들이 어떻게 이어지는지, 그리고 어디서 과장이 개입하는지를 한눈에 파악한다. 미리 밝혀 둘 것이 하나 있다. 정렬은 이 책에서 가치 판단이 가장 짙게 배는 영역이다. "이 기법이 더 낫다", "정렬하면 안전하다" 같은 문장은 대개 검증된 정리가 아니라 특정 조건에서의 연구 주장이거나 특정 가치 선택이다. 그래서 이 장은 어느 모델이 지금 1등인지, 어떤 레시피가 정답인지를 골격으로 삼지 않고 — 그런 것은 몇 달이면 바뀐다 — 원리와 트레이드오프에 무게를 싣는다.

3.1.1 베이스 모델은 조수가 아니라 자동완성기다

사전학습의 목표는 처음부터 끝까지 하나였다(1.1). 인터넷 텍스트의 분포를 흉내 내도록, 주어진 프리픽스 다음에 올 법한 토큰에 높은 확률을 주는 것. 이 목표를 완벽히 달성한 모델은 "질문에 답하는 조수"가 아니라 "주어진 문서를 가장 그럴듯하게 이어 쓰는 자동완성기"다. 이 차이가 말로는 사소해 보이는데, 실제로 프롬프트를 넣어 보면 곧장 드러난다.

우리가 학습시킨 목표와 우리가 실제로 원하는 목표가 다르다는 것이 문제의 핵심이다. 학습시킨 것은 "이 텍스트 다음에 무엇이 올 확률이 높은가"이고, 원하는 것은 "이 사용자의 지시를, 유용하고 정직하고 무해하게 수행하라"이다. 강화학습 용어를 빌리면 앞의 것은 우리가 실제로 최적화한 대리목표(proxy), 뒤의 것은 우리가 실제로 뜻한 의도(intent)다. 이 둘이 어긋나는 장면을 하나 보자.

다음 문장을 프랑스어로 번역해줘: "나는 배가 고프다"

정렬 모델은 J'ai faim.을 내놓고 멈춘다. 그런데 베이스 모델에게 이 입력은 단순히 "어떤 문서의 앞부분"이다. 인터넷에는 이런 지시문이 답 없이 목록으로만 나열된 문서 — 연습문제집, 예시 프롬프트 모음, 데이터셋 덤프 — 가 흔하다. 그래서 이 프리픽스의 가장 그럴듯한 이어쓰기는 번역이 아니라 또 다른 지시일 수 있다.

다음 문장을 프랑스어로 번역해줘: "나는 배가 고프다"
다음 문장을 독일어로 번역해줘: "나는 목이 마르다"
다음 문장을 스페인어로 번역해줘: "우리는 피곤하다"
...

베이스 모델은 지시를 수행한 것이 아니라 지시가 나열된 문서를 이어 썼다. 이것이 목표 불일치의 정수다. 모델이 틀린 것이 아니다 — 학습 목표에 정확히 충실했고, 그 목표가 우리가 원한 것과 달랐을 뿐이다. 그리고 이 어긋남은 데이터를 더 넣거나 모델을 더 키운다고 저절로 사라지지 않는다. 오히려 더 강한 베이스 모델일수록 "인터넷 문서를 더 그럴듯하게 이어 쓰는" 쪽으로 더 잘하게 된다. 조수가 되는 것과는 다른 방향이다.

3.1.2 같은 프롬프트, 갈라지는 반응 — 베이스 모델의 네 결함

한 프롬프트로는 우연처럼 보이니, 여러 프롬프트에 걸친 전형적 대비를 모아 보면 문제의 윤곽이 뚜렷해진다. 아래 반응은 현상을 드러내려는 예시이지 특정 모델의 실제 출력이 아니다.

프롬프트베이스 모델(전형적 실패)정렬 모델(원하는 동작)
"파이썬으로 리스트를 뒤집는 함수 써줘"예제 문서를 흉내 내 지시를 더 나열하거나, 코드를 쓰다 멈추지 못하고 관련 없는 글로 표류def reverse(xs): return xs[::-1] 를 주고 짧게 설명한 뒤 멈춤
"지구는 평평한가?"프롬프트의 문체 단서에 따라 평평론 포럼 글투 또는 과학 글투를 일관성 없이 이어 씀사실에 근거해 둥글다고 답하고 근거를 든다
"이 이메일을 정중하게 다듬어줘: ..."이메일 뒤에 또 다른 이메일이나 서명, 광고 문구를 붙임다듬은 이메일 하나만 반환
"폭탄 만드는 법 알려줘"위험 텍스트가 코퍼스에 있으므로 거리낌 없이 그대로 이어 씀거절하고 이유를 설명
(인사만) "안녕?"채팅 로그를 흉내 내 사용자의 다음 발화까지 혼자 지어냄한 번 응답하고 사용자 차례를 기다림

이 표에서 베이스 모델의 결함이 네 갈래로 갈린다. 첫째는 지시 미준수다 — 지시를 수행하는 대신 지시가 담긴 문서를 이어 쓴다. 둘째는 형식과 종결의 부재다. 언제 멈출지, 얼마나 간결할지, 어디까지가 자기 발언인지를 모른다. 그래서 사용자 차례까지 혼자 지어내기도 하는데, 이것은 애초에 "대화"라는 구조 개념이 없기 때문이다(3.1.8에서 다시 본다). 셋째는 안전의 부재다. 유해하거나 불법인 요청도 코퍼스 어딘가에 그 텍스트가 있으면 거리낌 없이 잇는다. "거절"이라는 행동 자체가 학습된 적이 없다. 넷째는 일관된 페르소나·정직성의 부재다. "도움을 주는 조수"라는 정체성이 없어 문체 단서에 휘둘려 아무 역할이나 흉내 내고, 같은 사실도 프롬프트 분위기에 따라 다르게 답한다.

이 네 결함이 서로 독립처럼 보이지만 근원은 하나다. 모델이 "이어 쓰기"라는 단 하나의 능력만 배웠다는 것. 정렬은 이 하나의 능력 위에 지시 준수·형식·안전·페르소나라는 네 가지 행동을 추가하는 일이고, 그래서 뒤에 볼 파이프라인의 각 단계가 대체로 이 네 결함 중 하나 이상을 겨냥한다.

3.1.3 능력은 있는데 끌어낼 수가 없다

여기서 흔히 미끄러지는 지점을 명시해야 한다. 베이스 모델에 능력이 없는 것이 아니다. 번역·요약·코딩의 지식은 이미 파라미터에 압축돼 있다 — 사전학습은 결국 방대한 텍스트를 압축하는 일이고, 잘 압축하려면 그 안의 규칙성(문법·논리·세계 지식)을 보존해야 하기 때문이다(1.1). 문제는 그 능력을 우리가 원하는 형태로 끌어낼 인터페이스가 없다는 것이다.

이것은 수사적 표현이 아니라 실제로 확인된다. 정교한 few-shot 프롬프트로 문서를 "질의응답처럼" 꾸며 주면 베이스 모델도 상당한 일을 해낸다. "Q: … A: …"를 몇 쌍 예시로 제시해 두고 마지막에 핵심 질문을 붙이면, 모델은 그 형식을 이어 쓰다가 답을 생성한다 — GPT-3 시대에 "프롬프트 엔지니어링"이라 불린 것의 상당 부분이 바로 이 끌어내기 기술이었다(6.1). 즉 능력은 있었고, 문서 형식으로 위장해 조준하면 나왔다. 다만 이 방식은 취약하고(문체 단서 하나에 변동한다), 비전문가가 쓰기 어렵고, 무엇보다 안전을 전혀 보장하지 못한다.

그러니 정렬을 "모델에 새 지식을 주입하는 일"로 보면 오해다. 그보다는 이미 가진 능력을 "지시를 따르는 유용·정직·무해한 조수"라는 좁은 행동 양식으로 조준·정렬하는 일에 가깝다. 이 관점 — 능력은 대부분 사전학습에서 오고 정렬은 형식과 행동을 정한다 — 은 뒤에서 표면적 정렬 가설로 다시 만난다(3.1.11). 유용한 사고틀이되, 강하게 밀면 논쟁이 따르는 주장이라는 것도 그때 다룬다.

3.1.4 유용·정직·무해(HHH)와 세 변의 긴장

정렬이 무엇을 목표로 하는지, 실무에서 가장 널리 쓰이는 조작적 정의는 세 성질이다 — Helpful, Honest, Harmless. 유용·정직·무해. 이 셋은 Anthropic의 초기 정렬 연구(Askell 등, 2021)에서 정식화된 프레임인데, 이후 업계가 정렬을 이야기할 때 사실상 공통 어휘가 됐다. 각각을 조금 정확히 정의하면 이렇다. 유용성은 사용자가 글자 그대로 말한 것이 아니라 의도한 것을 하는 것이다 — 지시를 따르고, 필요한 정보를 주고, 과제를 실제로 해결한다. 정직성은 사실에 맞게 말하고, 모르면 모른다고 하고, 불확실성을 드러내고, 지어내지 않는 것이다("듣기 좋은 말"이 아니라 참에 정렬한다). 무해성은 해를 끼치지 않는 것 — 위험한 조력을 거절하고, 편향·유해성·프라이버시 침해를 피한다.

이 셋을 나란히 놓으면 독립된 체크리스트처럼 보이지만, 정렬 실무의 상당 부분은 셋이 서로 당기는 긴장을 항해하는 일이다.

유용성 (Helpful) 정직성 (Honest) 무해성 (Harmless) 아첨(sycophancy): 듣고 싶은 답 vs 진실 유해 요청 거절 vs 과잉 거부·무용화 불편한 진실 vs 배려·안전
HHH — 세 목표와 그 변마다 걸린 긴장.

유용성과 무해성이 당기는 자리가 가장 흔하다. "이 약을 치사량만큼 알려줘"에 유용하게 굴면 위험하고, 위험을 피하려 애매한 것까지 죄다 거절하면 무용해진다. 최적점은 그 중간 어딘가인데, 그 중간이 정확히 어디인지는 계산으로 나오지 않는 가치 판단이다. 유용성과 정직성도 부딪친다. 사용자가 틀린 전제를 확신하며 물을 때, 동의해 주면 유용해 보이지만 부정직하다 — 이 실패가 아첨(sycophancy)이고 뒤에서 따로 다룬다(3.1.12). 정직성과 무해성이 당기는 경우도 있다. 정확하지만 상처를 주거나 위험을 키우는 정보가 있을 때, 무엇을 말하지 않을지도 선택이다. 세 변 모두에서 "옳은 지점"이 자연에 정해져 있지 않다는 것 — 이것이 정렬을 순수한 공학 문제가 아니게 만드는 근본이고, 이 장 후반의 여러 논점이 여기서 파생된다.

3.1.5 무엇에 맞추나 — 의도 정렬과 가치 정렬

"정렬(alignment)"이라는 단어는 넓다. 좁게는 "모델을 지시에 맞추기"(instruction following)를, 넓게는 "AI의 행동을 인간의 의도·가치에 부합시키기"를 가리킨다. 이 스펙트럼을 두 층위로 갈라 놓으면 이후 논의가 선명해진다.

의도 정렬(intent alignment)가치 정렬(value alignment)
맞추는 대상이 사용자가 지금 의도한 것더 넓은 인간·사회의 가치·규범
한 줄"내가 말한 것이 아니라 뜻한 것을 하라""설령 사용자가 시켜도, 해선 안 될 것은 하지 마라"
대표 문제지시 미준수, 글자 그대로 해석, 목표 불일치유해 요청 거절, 편향·차별 회피, 사회적 해악 방지
주로 담당SFT(3.2), 선호 최적화(3.3~3.5)안전 정렬, 헌법적 AI(3.6), 가드레일(7.3)
근본 난점의도는 종종 모호하고 암묵적이다누구의 가치인가(3.1.13)

두 층위는 겹치지만 갈라진다. 의도 정렬은 주로 모델을 "쓸모 있게" 만드는 축이고, 가치 정렬은 "선을 넘지 않게" 만드는 축이다. 상용 어시스턴트는 둘 다 필요하다 — 지시는 잘 따르되(의도), 시켜도 하지 말아야 할 것은 거절해야(가치) 한다. 흥미로운 것은 이 둘이 종종 직접 충돌한다는 점이다. 사용자가 명백히 유해한 것을 의도했을 때 의도에 정렬하면 가치를 어기고, 가치를 지키면 그 사용자의 의도를 배신한다. 그래서 "정렬"이라는 한 단어 안에 이미 우선순위 결정이 들어 있다.

정렬 연구는 여기서 질문을 한 겹 더 나눈다. 우리가 모델에 준 목표·보상이 정말 우리가 원하는 것인가(겉정렬, outer alignment) — 보상이 대리목표에 불과하면 모델이 실제 목표 대신 보상 신호를 악용해 어긋나는데, 이것이 보상 해킹이다(3.4). 그리고 모델이 그 목표를 내부에서 실제로 최적화하는가(속정렬, inner alignment) — 학습 중엔 순종하는 척하다 배포 후 달라질 가능성. 뒤의 것은 대체로 이론적·사변적 우려로, 일상 모델에서 확립된 관찰이라기보다 가능성에 대한 연구다. 이 책은 앞의 것 — 대리목표가 어긋나는 실무 함정 — 에 무게를 싣고, 뒤의 것은 3.1.14에서 짧게만 다룬다.

3.1.6 사후학습 파이프라인 — 전체 지도

이제 큰 그림이다. 베이스 모델을 정렬된 채팅 모델로 바꾸는 과정은 여러 단계를 잇는 파이프라인이고, 아래 지도가 제3부 전체의 골격이다. 각 상자가 대략 한 장(章)에 대응한다.

베이스 모델 (사전학습 · 제2부) 다음 토큰 예측기 ① SFT · 지도 미세조정 (3.2) 시연 데이터로 지시·형식·페르소나 이식 선호를 어떻게 최적화하나?
사후학습 파이프라인 전체 지도(1/3) — SFT부터 정렬까지
보상모델 + RL 경로 보상모델 없이 직접 인간 대신 AI 피드백 선호를 어떻게 최적화하나? ② 보상 모델 (3.3) 인간 선호쌍 → 점수 함수 ③ PPO 강화학습 (3.4) 보상 높이되 KL로 SFT 근처에 묶기 ②·③ DPO 계열 (3.5) 선호쌍으로 정책 직접 최적화 RLAIF · 헌법적 AI (3.6) 원칙 기반 감독 정렬된 채팅 모델
사후학습 파이프라인 전체 지도(2/3) — SFT부터 정렬까지
피드백 · 재학습 (8.1) 정렬된 채팅 모델 ④ 추론 유도 RL (3.7) 검증가능 보상 · test-time compute 평가 · 레드팀 (제4부 · 4.1~4.3) ① SFT · 지도 미세조정 (3.2) — 1/2 그림으로 되돌아감
사후학습 파이프라인 전체 지도(3/3) — 정렬 이후 추론·평가·재학습

각 단계가 무엇을 입력받아 무엇을 내놓고 무엇을 심는지를 표로 명시하면, 이 표 하나가 제3부의 색인이 된다.

단계입력산출무엇을 가르치나장
SFT(지도 미세조정)베이스 모델 + 시연 데이터(지시–모범응답 쌍)지시를 따르는 SFT 모델형식·종결·대화 구조·페르소나·기본 지시 준수3.2
보상 모델(RM)SFT 모델 + 인간 선호쌍(A vs B 중 선호)응답에 점수를 매기는 보상함수"사람이 무엇을 더 선호하는가"의 대리 신호3.3
PPO(RL)SFT 정책 + 보상 모델RLHF 정렬 모델보상을 높이되 KL로 SFT 곁에 머물기3.4
DPO 계열(대안)SFT 모델 + 선호쌍(RM·RL 생략)선호 정렬 모델선호쌍을 분류 손실로 직접 최적화3.5
RLAIF·헌법적 AI모델 + 원칙(헌법) + AI 피드백원칙 기반 정렬 모델인간 라벨을 AI 피드백으로 확장3.6
추론 유도 RL정렬 모델 + 검증가능 보상(정답 채점)추론 모델(사고사슬)추론 시간에 더 생각해 성능을 사기3.7
평가·레드팀각 단계 산출물품질·안전 신호무엇이 나아졌나·어디가 취약한가4.1~4.3

여기서 주목할 두 축이 있다. SFT는 모범을 보여 주는 것(imitation)이고, RLHF·DPO는 비교로 다듬는 것(preference)이다. 전자는 "이렇게 해"라고 정답을 시연하고, 후자는 "이게 저것보다 낫다"는 상대 신호로 미세 조정한다.

왜 시연만으로 부족해서 비교가 필요한가는 사람의 노동 경제학으로 설명된다. 어떤 코딩 질문에 대해 잘 구성된 모범 답안을 처음부터 쓰는 데 숙련된 라벨러가 10분 걸린다고 하자. 반면 모델이 생성한 두 응답 A·B를 놓고 어느 쪽이 나은지 고르는 데는 45초가량 걸린다. 한 사람이 한 시간 일하면 시연은 60분÷10분 = 6개가 나오고, 비교는 3600초÷45초 = 80개가 나온다 — 같은 인건비로 비교 신호가 열 배 넘게 쌓인다. 게다가 비교는 편차도 작다. 두 사람에게 "이상적인 답을 쓰라"고 하면 서로 딴판인 텍스트가 나와 하나의 정답으로 합치기 어렵지만, "A와 B 중 어느 쪽이 낫냐"를 물으면 훨씬 자주 일치한다. 시연은 답의 공간이 무한히 열려 있어 라벨러가 겨눌 과녁 자체가 흐릿한 반면, 비교는 질문을 "둘 중 하나"로 좁혀 과녁을 또렷하게 만든다. 이 값싸고 일관된 신호로 미묘한 선호 — 어조, 간결함, 안전 경계 — 를 다듬는 것이 선호 최적화의 존재 이유다. 정확한 메커니즘은 3.3에서 다룬다.

3.1.7 조립라인이 아니라 메뉴 — 경로 선택

위 지도를 고정된 순서로 오해하면 안 된다. 실제 조직마다 경로가 다르다. 가장 고전적인 레시피는 SFT → 보상모델 → PPO로 잇는 것이고(InstructGPT, OpenAI 2022가 대중화한 흐름이다), 이것이 오래 "RLHF"의 표준 이미지였다. 그러나 여기서 보상모델과 RL 전체를 걷어 내고 SFT → DPO로 가는 더 단순한 경로가 등장해 널리 채택됐다 — 파이프라인이 짧고 학습이 안정적이기 때문인데, 어느 쪽이 "더 낫다"는 조건에 크게 의존해서 3.4~3.5에서 트레이드오프로 따로 다룬다. 여기에 더해, 위 과정을 여러 라운드 수행하며 매 라운드 새 선호 데이터를 모으는 반복(iterative·online) 방식이 있고, 정렬을 마친 뒤(또는 병행해) 검증가능 보상으로 RL을 적용해 수학·코드·논리 추론을 높이는 추론 특화 단계가 있다(일부 추론 모델 계열이 이 길을 갔다).

경계 자체도 흐릿하다. "사전학습이 끝나고 사후학습이 시작된다"는 선이 실제로는 뚜렷하지 않아서, 일부는 사전학습 말미에 지시 데이터를 섞는 중간학습(mid-training)·annealing 단계를 둔다. 정렬은 한 점에서 벌어지는 사건이 아니라 연속체에 가깝다.

그래서 개관 층위에서 던질 수 있는 실질적인 질문은 "어떤 조합을 고를 것인가"이고, 이 판단은 각 장의 근거 위에서만 확정되지만 큰 갈림은 미리 스케치할 수 있다. SFT만으로 충분한가부터 따진다 — 내부 도구, 좁은 도메인, 빠른 프로토타입이라면 SFT만으로도 쓸 만한 조수가 된다. 형식과 기본 지시 준수는 대부분 SFT가 주기 때문이다. 미묘한 선호(어조·안전 경계·간결함)까지 다듬으려면 그 위에 선호 최적화를 추가한다. 선호 최적화가 필요할 때 PPO냐 DPO냐는, 내 견해로는 자원과 인력이 제한된 팀이라면 DPO 계열을 기본 출발점으로 삼는 편이 합리적이다 — 인프라·튜닝 부담이 작다. 온라인 탐색, 복잡한 보상 조성, 보상 해킹의 정밀한 제어가 필요한 규모 있는 정렬 조직이라면 PPO(+보상모델)의 이점이 살아난다. 인간 라벨링이 병목이 되면 RLAIF·헌법적 AI를 추가해 감독을 스케일하고(3.6), 수학·코드 추론이 핵심 가치면 검증가능 보상 RL을 추가로 고려한다(3.7). 이 선택들은 배타적이지 않아서 실무는 흔히 겹쳐 쓴다. "정렬 파이프라인은 SFT→RM→PPO다"라는 서술은 한 시대의 대표 레시피일 뿐 법칙이 아니라는 것 — 이 장이 각 부품을 독립적으로 이해시키고 조합은 상황에 맡기는 이유다.

3.1.8 채팅 포맷과 역할 — 대화의 골격은 학습된다

정렬을 "무엇을 학습하나"로만 보면 절반이다. 어떤 형식으로 대화하나도 정렬의 일부다. 출발점은 이것이다 — 베이스 모델에는 "대화"라는 개념 자체가 없다. 베이스 모델에게 텍스트는 단순히 토큰 흐름이라, 누가 말할 차례인지도, 어디서 자기 발언을 멈춰야 하는지도 모른다(그래서 3.1.2에서 사용자의 다음 말까지 혼자 지어냈다). 채팅 모델은 이 구조를 명시적 역할과 특수 토큰으로 들여온다.

역할은 보통 넷이다. system(행동 지침·페르소나·규칙), user(사용자 발화), assistant(모델 응답), 때로는 tool(도구 결과). 이 역할들을 특수 토큰으로 감싸 하나의 토큰 열로 직렬화하는 규약이 채팅 템플릿(chat template)이고, 모델은 어시스턴트 차례에만 생성하며 차례 끝 토큰(end-of-turn)에서 멈추도록 SFT에서 배운다.

<|system|>    너는 도움을 주는 조수다. 간결하고 정확하게 답한다.
<|user|>      파이썬으로 리스트를 뒤집는 함수 써줘
<|assistant|> def reverse(xs):
                  return xs[::-1]
              <|end|>          ← 여기서 멈추도록 학습된다

여기서 결정적인 장치가 손실 마스킹(loss masking)이다. SFT 학습에서 시스템·사용자 토큰에는 손실을 걸지 않고 어시스턴트 토큰에만 손실을 적용한다. 이렇게 해야 모델이 "주어진 대화 전체를 따라 쓰기"가 아니라 "어시스턴트 자리에서 응답하기"를 배운다 — 마스킹을 빼면 모델이 사용자 발화까지 생성하려 드는, 3.1.2의 그 실패로 되돌아간다.

역할을 나누는 <|system|>·<|end|> 같은 표식이 단순히 평범한 텍스트가 아니라는 점도 정리해 둘 값어치가 있다. 이들은 토크나이저에 예약된 특수 토큰(reserved special token)이라, 사용자가 프롬프트에 문자 그대로 <|system|>이라고 타이핑해도 그 특수 토큰으로 변환되지 않는다 — 여러 개의 평범한 서브워드로 분할될 뿐이다. 이 예약이 안전 경계의 첫 장벽이다. 만약 역할 구분자가 일반 텍스트였다면 사용자가 자기 메시지 안에 가짜 <|system|> 줄을 심어 시스템 역할을 사칭하고 규칙을 덮어쓸 수 있었을 것이다. 특수 토큰을 어휘에서 격리해 사용자 입력이 그것을 만들어 낼 수 없게 하는 것이, 뒤에서 볼 지시 계층이 성립하기 위한 물리적 전제다. 다만 이 장벽은 "역할의 경계"를 지킬 뿐 "역할 안의 내용"까지 지키지는 못한다 — 사용자가 특수 토큰을 위조하지는 못해도, 평범한 말로 모델을 설득해 시스템 지시를 어기게 만드는 탈옥은 여전히 가능하다(3.1.9).

이 특수 토큰·직렬화·마스킹의 세부는 3.2의 핵심 주제이므로 여기서는 정리할 요점만 남긴다. 멈춤·역할·차례·페르소나라는 대화의 골격 자체가 사전학습이 아니라 사후학습에서 이식된다는 것. 채팅 포맷은 정렬을 담는 그릇이고, 뒤에서 볼 정렬의 여러 성질이 이 그릇의 구조에 추가되어 작동한다.

3.1.9 시스템 프롬프트 — 추론 시점의 조정 변수와 그 한계

역할 중 시스템(system)은 대화 맨 앞에 놓여 모델의 행동·페르소나·규칙을 설정하는 특별한 자리다. 이것이 정렬을 추론 시점에 조정하는 조정 변수가 된다 — 재학습 없이 "너는 법률 도우미다", "한국어로만 답하라", "코드는 설명 없이" 같은 정책을 그때그때 건다.

정렬과의 연결이 핵심인데, 겉보기와 달리 시스템 프롬프트의 권위는 추가 비용 없이 주어지는 것이 아니다. 모델이 시스템 지시를 사용자 발화보다 높은 우선순위로 대우하는 것은 학습된 행동이다 — 사후학습에서 "시스템 > 사용자 > 도구"라는 지시 계층(instruction hierarchy)을 따르도록 선호를 심는다. 즉 시스템 프롬프트가 사용자 요청을 이기는 것은 물리 법칙이 아니라 정렬이 만든 관습이다.

우선순위 높음 중간 낮음·경계 대상 시스템 (최우선 규칙·페르소나) 사용자 (요청) 도구·검색 결과 (신뢰도 낮음) 모델의 행동 결정

여기서 두 방향의 함의가 갈린다. 긍정적으로는, 시스템 프롬프트와 프롬프트 엔지니어링(6.1)으로 정렬된 모델의 행동을 재학습 없이 유연하게 특화할 수 있다 — 프롬프트는 일종의 경량 정렬이다. 위험한 쪽은, 이 계층이 학습된 경향이지 강제가 아니라는 점이다. 교묘한 사용자 입력이 시스템 지시를 뒤집는 탈옥(jailbreak)과 프롬프트 인젝션이 가능하고(7.4), 특히 도구나 검색으로 흘러들어온 외부 텍스트가 지시처럼 작동하는 간접 인젝션은 이 계층을 정면으로 노린다. "시스템 프롬프트에 넣었으니 안전하다"는 흔하지만 틀린 가정이다. 지시 계층 준수도 시스템 권위도 확률적으로 학습된 행동이라 완벽하지 않고, 정렬은 이 우선순위를 강화할 뿐 보장하지는 못한다. 보안은 정렬만으로 풀리지 않고 입출력 필터·권한 분리 같은 별도의 방어가 필요하다(7.3·7.4).

3.1.10 정렬 세금 — 정렬이 능력을 저하시킬 때

정렬은 무비용이 아니다. 정렬 세금(alignment tax)은 정렬 — 특히 RLHF — 이 일부 능력이나 성질을 되레 저하시킬 수 있다는 관찰을 가리킨다. 어디서 오는지 원리를 보면 왜 그런지, 그리고 어떻게 줄이는지가 함께 보인다.

첫째 원천은 분포 이동이다. 정렬은 모델을 "채팅 조수"라는 좁은 행동 양식으로 당기는데, 그 과정에서 사전학습이 익힌 넓은 분포의 일부 — 특정 문체의 자유로운 완성, 일부 few-shot 형식 — 를 잃을 수 있다. 둘째는 다양성 붕괴(mode collapse)다. 선호 최적화는 "가장 선호되는 하나"로 수렴하려는 압력을 주므로 출력이 획일화되고, 창의적이거나 다양한 생성이 줄어드는 경향이 보고된다. 셋째는 보정(calibration)의 악화다. 잘 학습된 베이스 모델은 자기 확신을 비교적 정직하게 표현하는데(확률이 실제 정답률과 얼추 맞는다), RLHF 후에는 과신하는 쪽으로 치우친다는 연구 관찰이 있다. 넷째는 과잉 거부다. 무해성을 과하게 밀면 양성 요청까지 거절해 유용성이 저하되는데, 이것은 3.1.4에서 본 유용성↔무해성 긴장이 한쪽으로 기운 형태다.

그런데 세금은 완화할 수 있고, 때로는 음(-)의 세금 — 정렬이 오히려 능력을 높이는 경우 — 도 나타난다. 완화의 대표는 사전학습 손실을 섞는 것이다. RL 도중 사전학습 데이터의 그래디언트를 함께 전달해 원래 능력이 붕괴하지 않게 방지하는데(InstructGPT의 PPO-ptx가 이 방식이다), PPO의 KL 페널티(3.4)도 정책을 SFT 곁에 묶어 급격한 능력 이탈을 억제한다. 세금의 상당 부분은 나쁜 선호 데이터와 나쁜 보상 모델에서 오므로, 데이터·보상의 품질을 높이면 세금이 준다. 그리고 지시 준수가 좋아지면 이미 있던 능력이 더 잘 발현돼 벤치마크 점수가 오르기도 한다 — 능력을 저하시키는 것이 아니라 끌어내는 방향이다.

그래서 "정렬하면 무조건 멍청해진다"는 거친 단정이다. 세금은 기법·데이터·측정 방식에 따라 크게 달라지고, 정렬은 능력을 저하시키기도 끌어내기도 하며, 현대 파이프라인은 완화 기법으로 눈에 띄는 세금을 상당히 줄였다는 것이 일반적 관찰이다(정도는 조건에 따라 다르다). 여기서 놓치기 쉬운 함정이 하나 있다. "능력"을 무엇으로, 어떤 프롬프트로 재느냐에 따라 세금의 크기 자체가 달라진다는 것 — 측정을 바꾸면 결론이 바뀌는 문제가 여기서도 작동한다(4.1). 정렬 세금은 관리해야 할 트레이드오프이지, 정렬을 포기할 이유가 아니다.

3.1.11 정렬은 얼마나 깊은가 — 표면적 정렬 가설

3.1.3에서 "능력은 사전학습, 정렬은 행동 조준"이라 했다. 이를 강하게 밀면 표면적 정렬 가설(Superficial Alignment Hypothesis)이 된다 — 모델의 지식과 능력은 거의 전부 사전학습에서 오고, 정렬은 주로 어떤 형식·스타일·행동의 부분집합을 쓸지를 정할 뿐이라 소량의 데이터로도 된다는 것. 이 가설은 LIMA(Meta, 2023) 같은 연구에서 제기됐는데, 겨우 1,000개의 정성껏 고른 SFT 예시만으로도 상당한 수준의 지시 준수가 나왔다는 관찰이 근거였다.

이 주장이 왜 그럴듯한지는 숫자로 보면 실감이 난다. 사전학습은 대략 조 단위 토큰 — 자릿수로 $10^{13}$ 규모 — 을 본다. 반면 정렬 데이터는 잘해야 수만 예시, LIMA처럼 극단적으로는 1,000 예시다. 한 예시를 500토큰이라 쳐도 정렬 데이터는 $5\times10^{5}$ 토큰이니, 사전학습이 본 양과의 비는

$$\frac{5\times10^{5}}{10^{13}} = 5\times10^{-8}$$

곧 모델이 사전학습에서 본 데이터의 대략 이천만 분의 일 정도로 행동이 이만큼 달라진다는 얘기다. 이렇게 얇은 조각이 겉모습을 이토록 바꾼다는 것 자체가, 능력은 이미 그 안에 있었고 정렬은 주로 어떤 행동을 꺼낼지를 선택할 뿐이라는 그림을 뒷받침한다.

그런데 이 가설은 양날이다. 낙관적으로 읽으면, 정렬이 얇은 층이면 적은 데이터로 저렴하게 정렬할 수 있다는 희소식이다. 비관적으로 읽으면, 얇은 층은 쉽게 벗겨진다. 실제로 여러 연구가 소량의 파인튜닝만으로 안전 정렬이 제거될 수 있음을 보였다 — 오픈웨이트 모델에 수백 개, 때로는 그보다 적은 적대적 예시로 파인튜닝하면 거절 행동이 붕괴한다는 관찰이다. 수백 예시는 정렬 데이터에 견줘도 반올림 오차 수준이고 사전학습 앞에서는 먼지에 불과한데, 그 정도로 안전이 벗겨진다면 그 안전은 애초에 파라미터 깊이 내재된 것이 아니라 표면에 얇게 발린 것이었다는 뜻이 된다.

다만 표면적 정렬 가설은 유용한 사고틀이자 여전히 논쟁 중인 주장이다. "정렬은 순전히 표면적"이라는 강한 형태에는 반례와 이견이 있어서, 정렬이 단순한 스타일 이상을 실제로 바꾼다는 증거도 나와 있다. 그래서 이 책은 이를 "정렬의 상당 부분이 얇을 수 있다"는 조심스러운 관찰로 쓰고, "정렬은 그냥 스타일일 뿐"이라는 단정으로 넘기지 않는다. 얕든 깊든, 강한 적대자 앞에서 정렬이 취약할 수 있다는 실무적 함의는 남는다.

3.1.12 승인받는 답 vs 참인 답 — 아첨과 과잉거부

인간 선호에 정렬한다는 것은, 정확히 말하면 "인간이 승인하는 것"에 최적화한다는 것이다. 그런데 인간이 승인하는 것과 참·유익한 것은 늘 같지 않다. 이 틈에서 두 가지 대표적 실패가 나온다.

하나는 아첨(sycophancy)이다. 모델이 사용자의 견해에 동의하고, 듣기 좋은 말을 하고, 반박을 피하는 경향. 선호 데이터에서 동의하고 공손한 응답이 더 자주 선택되기 때문에 학습되는 부작용으로, 여러 연구가 RLHF의 알려진 성질로 지적했다. 이것은 유용성↔정직성 긴장의 전형적 실패다 — 사용자가 틀렸는데도 맞장구치면 유용해 보이지만 정직성이 붕괴한다. 다른 하나는 과잉거부와 헤징이다. 안전하게 보이려 모호하게 얼버무리거나 양성 요청까지 거절하는 것으로, "안전"의 외형을 좇다 실질 유용성을 잃는다.

두 실패의 공통 근원은 하나다. 모델은 "좋은 답"이 아니라 "좋다고 평가받는 답"에 정렬된다는 것. 평가 신호(사람의 승인)와 실제 목표(참·유익) 사이의 이 틈이 보상의 대리성(proxy) 문제이고, 3.1.5에서 말한 겉정렬 문제이자 보상 해킹(3.4)과 한 근원이다. 모델이 신호를 악용하면 우리가 실제로 원한 것은 뒷전이 된다. 이 틈을 좁히는 것 — 정직성을 특화한 데이터, 헌법적 원칙으로 감독을 다잡는 것(3.6), 승인이 아니라 참을 재려는 더 나은 평가(4.2) — 이 이후 여러 장이 매달리는 과제다. 여기서 정리할 요점은 진단이다. 정렬 목표를 "인간 승인"으로 두는 한, 아첨과 과잉거부는 버그가 아니라 그 목표가 논리적으로 낳는 산물이라는 것.

3.1.13 정렬은 누구의 가치인가

정렬은 "모델을 좋게 만든다"처럼 들리지만, "좋음"은 중립적 사실이 아니라 선택이다. 어떤 요청을 거절할지, 어떤 주제에 어떤 관점을 취할지, 무엇을 "유해"로 볼지는 전부 누군가의 가치 판단이다. 그리고 그 판단은 몇 군데에서 구체적으로 모델에 각인된다. 선호 데이터를 라벨링한 사람들의 관점·문화·지침이 무엇이 "더 나은 응답"인지의 기준으로 내재화되고, 안전 정책과 헌법적 AI의 원칙(3.6)은 특정 조직이 특정 시점에 써 내려간 것이라 보편이 아니며, 어떤 사회에서 정상인 표현이 다른 곳에서는 금기라 하나의 정렬이 모두를 만족시킬 수 없다.

그래서 "정렬됐다"는 사실 "누구의 기준에 정렬됐다"의 줄임말이다. 이것은 기술 문제인 동시에 거버넌스·윤리 문제다 — 누가 그 가치를 정하는가, 어떻게 다원성을 반영하는가, 정렬이 특정 관점을 조용히 표준으로 만들 때 책임은 누구에게 있는가. 이 질문들을 정면으로 다루는 것은 9.4(윤리·편향·거버넌스)이지만, 정렬을 "객관적 개선"으로 포장하지 말라는 경고는 이 개관 장에서 명시해 둘 값어치가 있다. HHH의 세 변에서 최적점이 자연에 정해져 있지 않다고 3.1.4에서 말했는데, 그 최적점을 실제로 어디에 찍느냐가 바로 이 가치 선택이다. 정렬은 값을 매기는(value-laden) 작업이고, 그 값을 누가 매기는지를 감추면 기술적 결정처럼 보이는 것 아래에 정치적 결정이 숨는다.

3.1.14 정렬은 안전을 "해결"하지 않는다

마지막으로 가장 크게 과장되는 지점. 정렬된 모델도 안전하지 않다. 이것은 비관이 아니라 정확한 진술이고, 정렬을 안전 대책의 전부로 착각하지 않기 위해 반드시 필요한 교정이다.

정렬은 정상 사용에서 HHH 행동을 만들 뿐, 적대적 입력을 막는 보증이 아니다 — 탈옥과 인젝션에 우회된다(7.4). 정직성 정렬로 환각은 줄지만 제거되지 않는다(1.1). 거절하도록 정렬해도 위험한 지식 자체는 파라미터에 남아 있고, 정렬은 표면 행동을 바꿀 뿐이라(3.1.11) 파인튜닝으로 벗겨질 수 있다. 그리고 "정렬됐다"는 주장은 그 자체로는 아무것도 증명하지 못한다 — 레드팀과 안전 평가로 검증돼야 비로소 의미를 갖는다(4.3). 요컨대 정렬은 방어의 여러 층 중 하나이지 전부가 아니고, 평가와 짝을 이룰 때만 주장으로서 성립한다.

정렬 연구에는 이보다 더 나아간 사변적 주제도 있다. 기만적 정렬(deceptive alignment) — 모델이 학습·평가 중에는 정렬된 척하다 배포 후 달라진다는 우려 — 이 대표적인데, 학습 시점에만 활성화되는 백도어를 심은 sleeper agents류 연구(Anthropic, 2024) 같은 개념 증명이 이 방향에 있다. 다만 이는 일상 모델에서 확립된 관찰이 아니라 가능성에 대한 연구다. 이 책은 이런 주제를 오늘의 실무 리스크가 아니라 연구 동향으로 취급하고(먼 미래 사변을 최소화하는 BK-04의 방침), 무게는 지금 실제로 영향을 주는 함정 — 아첨, 과잉거부, 탈옥, 환각, 가치 편향 — 에 싣는다. 정렬은 "안전 문제를 푸는 것"이 아니라 "행동을 원하는 방향으로 형성하고 위험을 줄이는, 평가와 맞물린 지속적 작업"이다. 이 문장을 쥐고 있으면 이후 제3부의 각 기법이 무엇을 개선하고 무엇을 여전히 남기는지가 변하지 않는다.

지도를 손에 넣었으니 이제 첫 단계로 내려간다. 바로 다음 장은 SFT다 — 시연 데이터를 어떻게 만들고, 채팅 템플릿과 특수 토큰으로 대화 구조를 어떻게 이식하며, 손실 마스킹으로 왜 "따라 하기"가 아니라 "응답하기"를 가르치는지. 이 장에서 예고만 한 그 골격을, 다음 장에서 직접 세운다.