AI VIDEO BRIEFING
LLM 제약 생성 총정리: JSON 문법 강제, 토큰 힐링, FUDGE와 대조 디코딩
CMU 대학원 강의에서 다룬 LLM 생성 제어 기법을 정리했다. 상태 기계로 JSON을 강제하는 방식과 그 이론적 한계, 토큰 힐링, 그리고 의미 제약을 다루는 FUDGE와 대조 디코딩까지 짚는다.

핵심 메시지
쉽게 이해하기
이 강의는 카네기멜런대 고급 자연어처리(CS 11-763) 수업 중 어맨다 버치가 진행한 회차로, 언어모델의 생성을 제어하거나 제약하는 방법을 다룬다. 앞선 두 회차에서 다룬 빔 서치나 A* 탐색도 길이 페널티나 다양성 페널티처럼 탐색 점수를 조정해 이미 출력을 제약하고 있었다는 점에서 출발한다. 이번 회차는 탐색 대신 확률 분포 자체를 먼저 수정한 뒤 다시 샘플링하는 접근을 함께 살핀다.
핵심 구분은 '검증 가능성'이다. 출력이 정확히 열 토큰이어야 한다는 제약은 끝난 뒤에는 쉽게 확인되지만 생성 중간에는 지킬 수 있을지 알 수 없다. 반대로 모든 출력이 유효한 JSON이어야 한다는 제약은 매 토큰마다 규칙에서 벗어났는지 판별할 수 있다. 후자처럼 토큰 단위로 검증되는 제약이 훨씬 다루기 쉽다.
JSON을 예로 든 구현은 이렇다. 스키마를 상태 기계로 그려 시작 상태에서는 여는 중괄호만, 이름 뒤에는 글자만, 연도 뒤에는 숫자만 허용하는 식으로 전이를 정의하고, 각 단계에서 허용되지 않는 토큰의 로짓에 큰 음수를 더한 뒤 다시 소프트맥스를 취해 확률을 0으로 만든다. 강의는 이 방식이 만들어내는 실제 문제도 함께 짚는다. 순진하게 그린 상태 기계는 같은 키를 무한히 반복하거나 필수 키를 빼먹는 출력을 허용하며, 이를 막으려면 상태를 더 세분해야 한다.
더 근본적인 한계는 계산 이론에서 온다. 유한 상태 기계가 표현하는 정규 언어로는 여는 괄호와 닫는 괄호의 개수를 맞추는 임의 중첩을 표현할 수 없다. 그래서 실제로 JSON 스키마를 강제하는 도구들은 스택을 하나 둘 수 있는 푸시다운 오토마타, 즉 문맥자유 문법을 쓴다. 반면 '모든 키가 서로 달라야 한다'거나 '변수는 쓰기 전에 선언돼야 한다' 같은 조건은 문맥자유를 넘어서므로 이런 토큰 단위 검사로는 강제할 수 없다. 유효한 C 코드를 문법만으로 보장할 수 없는 이유다.
의미 제약은 성격이 다르다. 강의는 '운동 취미를 추천하되 등반은 빼 달라'는 예를 든다. climbing 토큰의 확률을 0으로 만드는 방법은 구현은 쉽지만 동의어를 막지 못하고, 등산 설명처럼 정당한 용법까지 막으며, 모델이 이미 rock을 뱉어 놓은 상황에서는 어색한 문장을 만든다. 대안으로 소개된 FUDGE는 베이즈 규칙을 이용해 '지금까지의 접두사에 다음 토큰을 붙였을 때 최종 출력이 제약을 만족할 확률'을 작은 판별기로 예측하고, 이를 모델의 확률과 곱해 분포를 재조정한다. 상위 200개 후보에만 판별기를 돌려 비용을 줄이지만 제약 충족이 보장되지는 않는다.
마지막으로 다룬 대조 디코딩은 강한 모델과 약한 모델에 같은 입력을 주고 로짓을 빼는 방식이다. 안전성 문맥에서는 허용되는 것을 모두 적는 것보다 금지할 것을 적는 편이 쉽다는 원리를 이용해, 같은 모델에 안전한 시스템 프롬프트와 공격적인 프롬프트를 각각 주고 두 로짓의 차이를 취한다. 연산이 두 배로 든다는 대가가 따른다.
주요 인사이트
- 제약을 학습에 넣을지 추론 시점에 넣을지는 성격에 따라 갈린다. 모든 출력에 광범위하게 적용되는 정렬 같은 제약은 학습 시점이 효율적이지만, 형식이 자주 바뀌거나 하드 리밋을 거는 제약은 추론 시점이 유연하다.
- 언어모델을 학습시켜 형식을 지키게 하는 방식은 확률적 보장이 없다. 인사말을 앞에 붙이는 일이라면 그냥 문자열을 붙이는 편이 확실하고, 다음 주에 인사말을 바꾸겠다고 모델을 다시 학습시킬 이유도 없다.
- 토큰 힐링은 출력 문자열을 바꾸지 않고 토큰화 방식만 바꾸는 조작이다. 같은 문자열을 두 토큰으로도 세 토큰으로도 쪼갤 수 있다는 성질을 이용해, 사전학습 분포에서 자연스러운 쪽을 고르게 한다.
- 제약 강제의 수학적 해석이 깔끔하다. 오토마타는 허용 문자열에 균일 확률을, 나머지에 0을 주는 또 하나의 언어모델이고, 두 모델의 확률을 곱하면 허용된 것들의 상대 확률은 그대로 두면서 나머지만 배제된다.
- 제어 생성과 정렬은 사실상 같은 문제의 두 얼굴이다. 강의는 RLHF를 베이즈 추론으로 해석하는 연구를 언급하며, 형식성 대신 보상 모델 점수를 토큰 단위로 예측하는 보상 증강 디코딩으로 자연스럽게 이어진다.
자주 묻는 질문
토큰 단위 검증이 가능한 제약과 그렇지 않은 제약은 어떻게 다른가?
출력이 정확히 열 토큰이어야 한다는 제약은 끝난 뒤에는 확인되지만 생성 중에는 지킬 수 있을지 알 수 없다. 반대로 유효한 JSON이거나 모든 토큰이 특정 언어여야 한다는 제약은 매 단계에서 이탈 여부를 판별할 수 있어 상태 기계로 강제하기 쉽다.
왜 유한 상태 기계만으로는 임의의 JSON을 강제할 수 없나?
유한 상태 기계는 자신이 어떤 상태를 몇 번 지났는지 기록하지 못해 여는 괄호와 닫는 괄호의 개수를 맞출 수 없다. 그래서 임의 중첩을 다루려면 스택을 하나 갖는 푸시다운 오토마타, 즉 문맥자유 문법이 필요하다.
토큰 힐링은 무엇을 해결하나?
상태 기계가 콜론 같은 구두점을 개별 전이로 뱉게 만들면 사전학습 때 흔하던 토큰 경계와 어긋나 다음 토큰의 확률이 낮아진다. 토큰 힐링은 한 토큰을 되돌려 '콜론으로 시작하는 토큰'만 허용함으로써 콜론+슬래시처럼 확률이 높은 토큰을 되살린다.
FUDGE는 어떤 원리로 의미 제약을 다루나?
베이즈 규칙으로 조건부 분포를 다시 쓰면, 제약을 조건으로 학습된 모델 대신 '접두사가 주어졌을 때 최종 출력이 제약을 만족할 확률'을 예측하는 작은 판별기와 원래 모델의 확률을 곱하는 형태가 된다. 판별기는 기존 라벨 데이터의 모든 접두사를 학습 예시로 만들어 얻는다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗