챗봇을 넘어선 직접 선호 최적화 (Direct Preference Optimization)
요약
DharmaOCR 연구를 통해 OCR 모델의 텍text 퇴화 현상을 해결하기 위한 DPO(Direct Preference Optimization) 적용 사례를 소개합니다. SFT만으로는 해결하기 어려운 반복 루프와 같은 실패 모드를 DPO를 통해 효과적으로 완화할 수 있음을 입증했습니다.
핵심 포인트
- SFT는 텍스트 퇴화 현상에 대한 명시적 페널티 부여에 한계가 있음
- DPO 적용 시 텍스트 퇴화율이 평균 59.4% 감소하는 효과 확인
- DPO를 채팅 정렬이 아닌 특정 실패 모드 완화 도구로 활용 가능
- 객관적인 이진 기준(정답 vs 퇴행)을 통한 선호 신호 구축
지난 4월, 우리는 구조화된 전문 OCR 모델인 DharmaOCR(Hugging Face에서 사용 가능)을 출시했으며, 이와 함께 해당 모델의 방법론을 상세히 다룬 논문과 우수한 품질 및 비용 효율성을 입증하는 벤치마크를 공개했습니다. 해당 논문은 구조화된 문서 추출 작업인 브라질 포르투갈어 텍스트 OCR을 대상으로 오픈 소스 및 상용 모델을 포함한 주요 시각-언어 모델 (Vision-Language Model) 제품군을 벤치마킹했습니다. 보고된 지표 중에는 텍스트 퇴화율 (Text Degeneration Rate)이 포함되었는데, 이는 모델이 전사 (Transcription) 대신 반복 루프를 생성하는 빈도를 의미합니다.
테스트된 오픈 소스 제품군 전반에 걸쳐, 일반적인 (Vanilla) 퇴화율은 1% 미만에서 33% 이상까지 다양하게 나타났습니다. 지도 미세 조정 (Supervised Fine-Tuning, SFT)은 대부분의 모델에서 이러한 비율을 낮추었지만, 실제 서비스 (Production)에 적용 가능한 수준까지 낮추는 경우는 드물었습니다. 이러한 패턴은 구조적인 한계를 시사합니다. 즉, SFT는 올바른 출력값에 대해서는 최적화하지만, 퇴화 현상에 대해서는 명시적으로 페널티를 부여하지 않습니다. 작업 중심의 미세 조정 (Task-focused Fine-tuning)만으로는 이러한 실패 모드를 줄이는 데 한계가 있는 것으로 보입니다 (Text Degeneration Article).
동일한 문서와 동일한 모델을 사용하여 지도 미세 조정 (SFT) 이후에 적용된 두 번째 학습 단계는 테스트된 모든 제품군에서 텍스트 퇴화를 감소시켰습니다. 예외는 없었습니다. 평균 감소율은 59.4%였으며, 최선의 경우 87.6%에 달했습니다.

그림 1: DPO는 테스트된 모든 제품군에서 SFT 대비 퇴화를 감소시켰습니다 - 평균 59.4% 감소, 최대 87.6% 감소 (Nanonets-OCR2–3B: 1.61%에서 0.20%로). 방향성은 불변하며, 오직 크기(Magnitude)만 달라집니다.
그 두 번째 단계는 직접 선호 최적화 (Direct Preference Optimization, DPO)였습니다. 발표된 거의 모든 DPO 응용 사례는 채팅 정렬 (Chat Alignment)을 목표로 합니다. 즉, 유용성 (Helpfulness)이나 무해성 (Harmlessness)에 대한 인간의 판단을 바탕으로 학습된 모델을 대상으로 합니다 (예: Rafailov et al., 2023). 하지만 OCR에는 그러한 주관성이 전혀 포함되지 않습니다. 작업은 객관적이며, 대화적 문맥 (Conversational Context)도 존재하지 않습니다. 그럼에도 불구하고 명확한 선호 신호 (Preference Signal)는 존재합니다. 올바른 전사 (Transcription) 결과는 선택되고, 퇴행 루프 (Degeneration Loop)는 거부됩니다. DharmaOCR은 이 이진적 (Binary) 기준을 사용하여 DPO 학습 세트를 구축했으며, 이 기술을 정렬 (Alignment) 목적이 아닌, 특정 실패 모드 (Failure Mode)를 직접적으로 완화하기 위한 도구로서 테스트했습니다.
학습 신호 (Training Signal)는 모델 자체, 구체적으로는 모델이 실패했을 때 생성한 출력물로부터 나왔습니다. 실패 모드가 어떻게 학습 신호가 되는가는 모델에 관한 문제가 아니라, 그 실패에 관한 구조적인 문제입니다.
SFT (Supervised Fine-Tuning)가 퇴행 (Degeneration)을 억제하는 데 한계가 있는 이유는 여전히 미해결 과제로 남아 있지만, 유력한 추측은 손실 입도 (Loss Granularity)를 지목합니다. SFT는 토큰 단위 (Token by Token)로 학습합니다. 즉, 각 예측은 고립된 상태로 평가되며, 반복 루프는 완성 수준 (Completion-level)의 실패로서 처벌되지 않습니다. DPO는 그 논리를 뒤집습니다. 학습 신호는 선택되거나 거부된 전체 출력물이며, 이는 퇴행된 완성문 (Degenerated Completion)이 단순히 국소적으로 확률이 높은 토큰들의 시퀀스가 아니라, 명시적으로 잘못된 결과로 라벨링될 수 있음을 의미합니다.
훈련 목적 함수 (training objective)가 관찰된 시퀀스의 가능도 (likelihood)를 최대화할 때, 이는 해당 시퀀스들이 점유하고 있는 분포 공간 (distribution space)의 영역에 확률 질량 (probability mass)을 집중시킵니다. 추론 (inference) 과정에서 이러한 고확률 끌개 영역 (high-probability attractor regions) 중 하나로 진입한 모델은 다음 단계에서 동일한 토큰에 더 높은 확률을 할당하며, 이는 확률을 더욱 증가시켜 시퀀스가 최대 토큰 제한에 도달할 때까지 루프를 지속시킵니다. 텍스트 퇴화 (Text degeneration)는 이러한 기하학적 구조의 결과물입니다. 즉, 자기 강화적인 반복 루프 (self-reinforcing repetition loop)이며, 자기회귀 모델 (autoregressive model)은 외부의 개입 없이는 이 루프를 벗어날 수 없습니다 (Holtzman et al., 2020). 이는 단순히 디코딩 과정에서 발생하는 인위적인 현상 (artifact)이 아닙니다. 끌개 (attractor)는 훈련 목적 함수, 학습된 분포, 그리고 추론 중에 확률 질량이 집중되는 방식이 결합된 결과이며, 이는 특정 단일 구성 요소에 국한된 실패가 아닌 시스템 수준의 실패입니다.
이러한 실패의 기하학적 구조는 토큰 수준에서 확인할 수 있습니다.

그림 2: 토큰이 자신의 조건부 분포 (conditional distribution)를 지배할 때, 모든 샘플링 단계는 끌개를 심화시킵니다. 디코더는 이 기하학적 구조로부터 샘플링하는 것이지, 이를 결정하는 것이 아닙니다.
반복 페널티 (repetition penalties), 온도 조절 (temperature adjustments), 조기 중단 로직 (early-abort logic)과 같은 추론 계층의 개입은 샘플링 단계에서 작동합니다. 이러한 방식은 현상을 유발하는 분포를 건드리지 않은 채 증상만을 억제합니다. 따라서 끌개는 계속 유지됩니다.
지도 미세 조정 (Supervised fine-tuning, SFT)은 분포를 작업 도메인에 더 가깝게 이동시킵니다. 구조화된 생성 파이프라인의 경우, 이는 대상 언어로 된 도메인 특화 문서와 요구되는 출력 형식을 사용하여 학습하는 것을 의미합니다. 모델은 더 긴 시퀀스, 제약된 구문, 도메인 어휘에 대한 유창성을 얻게 됩니다. 하지만 SFT가 하지 못하는 것은 퇴화 현상을 직접적으로 공격하는 것입니다. 관찰된 시퀀스의 가능도를 최대화한다는 SFT의 목적 함수에는 반복 루프를 처벌하는 항 (term)이 없습니다. 이 실패 모드는 단순히 훈련 신호 (training signal)가 최적화하는 범위 밖에 있습니다.
DharmaOCR 벤치마크의 한 모델 제품군(model family)에서 예상치 못한 패턴이 나타났습니다. 기본 퇴화율(vanilla degeneration rate)은 0.60%였으나, SFT(Supervised Fine-Tuning) 이후 3.23%로 상승했고, 이후 DPO(Direct Preference Optimization) 단계를 거치며 1.41%로 낮아졌습니다. 이는 단일 데이터 포인트이며 규칙이 아닌 예외일 뿐이며, 이를 특정 메커니즘의 증거로 취급하는 것은 증거를 과장하는 것입니다. 이것이 보여주는 바는 SFT가 퇴화를 안정적으로 감소시키지는 않는다는 점입니다. 능력(Capability)과 퇴화 저항성(degeneration resistance)은 독립적으로 움직일 수 있습니다.
이러한 구분은 구조적으로 중요합니다. SFT와 DPO는 서로 다른 강도로 동일한 작업을 수행하는 교체 가능한 훈련 단계가 아닙니다. SFT는 모델의 사전 분포(prior distribution)와 작업 도메인(task domain) 사이의 거리를 좁힙니다. 하지만 SFT가 퇴화를 목표로 삼지는 않습니다. 실패 모드(failure mode)에 미치는 SFT의 효과는 부수적이며, 벤치마크 결과는 이것이 일관되지 않음을 보여줍니다. 퇴화를 생성하는 끌개(attractor)는 모델이 작업에 얼마나 근접해 있는지의 문제가 아니라, 모델이 현재 점유하고 있는 분포 공간(distribution space)의 형태 문제입니다.
이러한 기하학적 구조(geometry)를 해결하려면 모델을 자체적인 실패 모드로부터 멀어지게 하도록 특별히 설계된 훈련 신호(training signal)가 필요합니다. 인간의 선호도 라벨(preference labels)이 없고 전통적인 "도움이 되는지 혹은 해로운지(helpful versus harmful)"의 구분이 없는, 구조화된 비대화형(non-conversational) 작업의 경우, 해당 신호를 구축하는 것은 설계 결정의 문제입니다.
DPO 방법론에 대한 DharmaOCR 파이프라인의 기여는 구체적입니다. 이 파이프라인은 SFT 모델 자체의 퇴화된 출력물(degenerate outputs)을 거부된 예시(rejected examples)로 사용했습니다. 이를 제거해야 할 노이즈로 본 것이 아니라, 최적화에 필요한 부정적 훈련 신호(negative training signal)로 활용한 것입니다.
DPO는 선호 쌍(preference pairs)을 필요로 합니다. 즉, 동일한 입력에 대해 최적화 과정에서 학습할 수 있을 만큼 품질 차이가 명확한 선택된 출력(chosen output)과 거부된 출력(rejected output)이 있어야 합니다. 채팅 정렬(chat alignment)에서는 인간 주석가(human annotators)가 응답을 더 도움이 되는지, 정확한지, 또는 안전한지 평가함으로써 이러한 판단을 생성합니다. 하지만 구조화된 생성(structured generation) 작업에는 이와 동등한 주석 소스가 없습니다. OCR 파이프라인은 정확한 전사(transcription)를 생성하거나, 생성하지 못하거나 둘 중 하나입니다. 품질 차이는 존재하지만, 이는 인간의 선호 순위(human preference rankings)에 의해 생성되는 것이 아니라, 작업 자체의 정확성 기준에 의해 생성됩니다.
DharmaOCR 파이프라인은 구조화된 생성 작업이 이미 생성하고 있는 선호 신호(preference signal)를 식별했습니다. 그것은 바로 SFT 모델이 추론(inference) 시 생성하는 출력의 범위입니다. 구조화된 작업을 수행할 수 있는 모델은 특유의 방식으로 실패할 수도 있습니다. 이러한 실패, 즉 퇴행적 끌개(degeneration attractor)로 진입하는 출력들은 필터링해야 할 노이즈가 아닙니다. 그것들은 사용 가능한 가장 정보가 풍부한 부정적 신호(negative signal)입니다.
논문에서는 이를 23,726개의 훈련 문서에 구현하였으며, SFT 모델을 사용하여 문서당 여러 개의 후보 응답을 생성하고 자동화된 LLM 판사(LLM judge)로 각 응답의 점수를 매겼습니다. 파이프라인은 아래와 같습니다.

그림 3: 핵심적인 설계 결정은 파이프라인의 구조에 있는 것이 아니라, 파이프라인이 무엇을 보존했느냐에 있습니다. 텍스트 퇴행(text degeneration)을 보이는 출력들은 저품질 노이즈로서 필터링된 것이 아니라, 의도적으로 거부된 예시(rejected examples)로 라벨링되었습니다.
훈련 데이터에 퇴행적인 출력(degenerate outputs)이 나타날 때 취하는 전통적인 대응 방식은 이를 제거하는 것입니다. 그것들은 저품질 신호이며, 필터링을 통해 더 깨끗한 데이터셋을 만들 수 있기 때문입니다. DharmaOCR 방식은 이 논리를 뒤집었습니다. 퇴행적인 출력들은 각 (선택된, 거부된) 쌍에서 거부된 예시로 의도적으로 유지되었습니다. 왜냐하면 그것들이 바로 DPO 단계가 억제하도록 설계된 실패 모드(failure mode)를 정확히 나타내기 때문입니다. 그것들을 제거하는 것은 사용 가능한 가장 명확한 목표(target)를 버리는 것과 같았을 것입니다.
논문은 이를 "선호도 가이드형 암시적 비우호성 (preference-guided implicit unlikelihood)"이라고 설명합니다. 즉, 모델은 더 나은 출력을 향해 학습될 뿐만 아니라, 특정 유형의 실패로부터 멀어지도록 학습됩니다. SFT (Supervised Fine-Tuning)가 고품질 출력의 우도 (likelihood)를 최대화하는 반면, DPO (Direct Preference Optimization) 단계는 퇴행적 끌개 기하학 (degeneration attractor geometry)을 보이는 출력에 대해 동시에 패널티를 부여합니다. 최적화의 방향은 SFT 단독으로는 달성할 수 없는 방식으로 명시적입니다.
퇴행적 출력 (Degenerate outputs)은 다양한 저품질 출력이라기보다 일관된 실패 모드 (failure mode)를 나타내기 때문에 거부 예시 (rejection examples)로 사용하기에 특히 적합합니다. 단어를 누락하는 전사 (transcription)는 저품질이지만, 그 실패는 사례별로 다릅니다. 반면, 반복 루프 (Repetition loops)는 SFT 이후에도 문서와 모델 제품군 전반에 걸쳐 지속적으로 나타났으며, 이는 우도 기반 최적화가 안정적으로 수정하지 못하는 실패 모드와 일치하는 패턴입니다. DPO는 손실 함수 (loss)를 다르게 적용합니다. 즉, 명시적인 거부 신호와 함께 완성 (completion) 수준에서 적용합니다. 사후 분석 (post-hoc analysis)이 인과 관계를 확립할 수는 없지만, 증거는 SFT의 목적 함수가 해결하지 못한 문제를 DPO의 목적 함수가 해결할 수 있음을 시사합니다.
이 접근 방식은 전문적인 어노테이션 (annotation) 인프라를 필요로 하지 않습니다. 수용 가능한 출력과 식별 가능한 실패 출력을 모두 생성할 수 있는 모델, 그리고 선호도 쌍 (preference pairs)을 라벨링할 스코어링 모델 (scoring model)만 있으면 됩니다. 규칙 기반 메커니즘 (rule-based mechanism)은 반복 루프를 기계적으로 탐지할 수는 있지만, 어떤 출력이 선택된 예시 (chosen examples)로서 보존할 가치가 있는 고품질 전사인지를 식별할 수는 없습니다.
스코어링 모델은 이 두 가지를 모두 수행합니다. 퇴행을 거부된 출력 (rejected output)으로 표시하고, 깨끗한 추출을 선택된 출력 (chosen output)으로 검증함으로써, DPO 신호가 실패 모드에 패널티를 주는 동안 모델의 추출 능력은 온전하게 유지합니다. 결과적으로 생성된 학습 신호가 의도한 방향으로 분포를 성공적으로 이동시키는지, 그리고 다양한 아키텍처 (architectures) 전반에서 일관되게 그러한지는 검증해야 할 과제입니다.
DPO (Direct Preference Optimization) 단계는 테스트된 모든 모델 제품군에서 텍스트 퇴화 (text degeneration)를 감소시켰습니다. SFT (Supervised Fine-Tuning) 단독 모델과 비교했을 때, 감소 폭은 37%에서 88% 사이였으며 평균 59.4%에 달했습니다. 이 결과는 아키텍처 (architectures), 파라미터 규모 (parameter scales), 그리고 10배(one order of magnitude) 이상의 차이를 보이는 초기 퇴화 프로필 (degeneration profiles) 전반에 걸쳐 유지되었습니다. 데이터셋 중 한 사례에서는 DPO가 이를 교정하기 전, SFT 단계 이후에 퇴화가 오히려 증가하는 모습이 관찰되었습니다. 해당 사례는 일관성을 복잡하게 만드는 것이 아니라, 다른 어떤 사례보다 메커니즘을 더 직접적으로 확인시켜 줍니다.

Qwen2.5-VL-3B의 결과를 주의 깊게 읽어보면, 이는 복잡한 문제가 아니라 확인 과정입니다. 이 모델의 Vanilla 퇴화율은 0.60%였는데, 이는 모델이 안정적이어서가 아니라 길고 구조화된 출력을 생성하기에는 너무 일반적 (generic)이었기 때문입니다. 모델이 퇴화 끌개 (degeneration attractor)로 진입하지 않았던 이유는, 그 지점을 발견할 만큼 과업을 진지하게 수행하려 하지 않았기 때문입니다.
SFT가 이를 변화시켰습니다. 도메인 적응 (domain adaptation) 이후, Qwen2.5-VL-3B는 파이프라인이 요구하는 도메인 어휘와 형식을 사용하여 더 길고 구조화된 출력을 생성할 수 있게 되며 과업 수행 능력을 갖추게 되었습니다. 이러한 능력 덕분에 모델은 처음으로 퇴화 끌개 (degeneration attractor)에 근접하게 되었습니다. 이에 따라 퇴화율은 3.23%로 상승했습니다.
이것은 경험적으로 가시화된 메커니즘입니다: SFT (Supervised Fine-Tuning)는 모델을 작업(task) 방향으로 이동시키는 동시에, 작업의 실패 기하학 (failure geometry) 방향으로도 이동시켰습니다. 이 둘은 반드시 동일한 연산은 아닙니다. 작업 능력 (task capability)을 향상시키는 훈련 단계는 부작용으로 실패 모드 (failure-mode) 노출을 증가시킬 수 있으며, 특히 실패 모드가 능력의 경계선 (capability frontier)에 위치할 때 그러합니다. 이를 동일한 연산으로 취급한다면 Qwen2.5-VL-3B의 결과는 오류처럼 보입니다. 하지만 이를 별개의 연산으로 취급한다면 — 이것이 SFT + DPO 파이프라인이 공식적으로 수행하는 방식입니다 — 이 결과는 SFT와 DPO가 서로 다른 실패 차원 (failure dimensions)을 다룬다는 가설과 일치합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HuggingFace Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기