다르마OCR, 모델 자신의 실패를 DPO 신호로 삼아 OCR 반복 오류 줄였다
허깅페이스 블로그에 공개된 글에서 다르마AI가 자사 구조화 OCR 모델 ‘다르마OCR(DharmaOCR)’을 학습하며 적용한 방법을 소개했다. 핵심은 모델이 스스로 만들어낸 실패 출력을 직접 선호 최적화(DPO)의 ‘거부(rejected) 샘플’로 활용해, OCR에서 자주 나타나는 텍스트 퇴행, 즉 같은 토큰을 무한히 반복하는 문제를 줄였다는 점이다.
다르마AI는 지난 4월 다르마OCR을 허깅페이스에 공개하면서 방법론을 담은 논문과 벤치마크를 함께 냈다. 벤치마크는 브라질 포르투갈어 텍스트의 구조화 문서 추출 과제에서 오픈소스와 상용 비전언어모델 계열들을 비교했고, 평가 지표 중 하나가 모델이 전사 대신 같은 토큰을 반복하는 빈도인 ‘텍스트 퇴행률(text degeneration rate)’이었다.
측정 결과 오픈소스 계열의 기본(vanilla) 퇴행률은 1% 미만에서 33% 이상까지 폭이 컸다. 지도형 미세조정(SFT)은 대부분의 모델에서 이 수치를 낮췄지만, 실서비스에 쓸 만한 수준까지 내려가는 경우는 드물었다. SFT가 정답 출력을 최적화할 뿐 퇴행 자체를 명시적으로 벌하지는 않는다는 구조적 한계가 드러난 것이다.
다르마AI는 SFT 이후 같은 문서와 같은 모델에 두 번째 학습 단계를 추가했고, 그 결과 테스트한 모든 계열에서 예외 없이 퇴행이 줄었다고 밝혔다. 평균 감소폭은 59.4%, 최대는 87.6%였다. 예컨대 나노넷츠-OCR2-3B(Nanonets-OCR2–3B)는 퇴행률이 1.61%에서 0.20%로 떨어졌다.
이 두 번째 단계가 바로 DPO다. 보고서에 따르면 지금까지 공개된 DPO 사례는 대부분 사람의 ‘도움이 되는지·해로운지’ 판단을 학습하는 챗봇 정렬에 쓰였다. 반면 OCR은 주관성도 대화 맥락도 없지만, 올바른 전사는 ‘선택’되고 반복 루프는 ‘거부’된다는 명확한 선호 신호가 존재한다는 것이다.
다르마AI는 SFT가 퇴행에 한계를 보이는 이유로 손실 함수의 단위 문제를 지목했다. SFT는 토큰 단위로 학습해 각 예측을 따로 평가하기 때문에 반복 루프를 ‘완성 단위의 실패’로 벌하지 않는다. DPO는 출력 전체를 선택 또는 거부로 다루므로, 퇴행한 결과물 자체를 잘못된 결과로 명시적으로 표시할 수 있다.
보고서는 텍스트 퇴행이 단순한 디코딩 부작용이 아니라 학습 목표와 학습된 분포, 추론 중 확률이 한곳으로 쏠리는 방식이 얽힌 시스템 차원의 문제라고 설명했다(홀츠먼 외, 2020). 반복 패널티나 온도 조정, 조기 중단 같은 추론 단계 개입은 증상을 억제할 뿐 이를 만들어내는 분포 자체는 건드리지 못한다는 것이다.
다만 한 모델 계열에서는 기본 0.60%였던 퇴행률이 SFT 후 3.23%로 오히려 높아졌다가 DPO를 거쳐 1.41%로 내려가는 예외도 나타났다. 보고서는 이를 단일 사례라고 선을 그으면서도, SFT가 퇴행을 일관되게 줄여주지는 못하며 성능과 퇴행 저항성이 따로 움직일 수 있음을 보여준다고 했다.
핵심 설계 결정은 SFT 모델이 추론 중 만들어낸 퇴행 출력을 노이즈로 걸러내지 않고 거부 샘플로 보존한 데 있다. DPO는 같은 입력에 대해 선택 출력과 거부 출력 쌍을 요구하는데, 사람 주석이 없는 구조화 과제에서는 모델 자신의 실패가 가장 유용한 부정 신호가 된다는 것이다.
다르마AI는 이 방식을 2만 3,726건의 학습 문서에 적용했다. SFT 모델로 문서마다 여러 후보 응답을 생성한 뒤 자동 LLM 심판으로 점수를 매겨, 퇴행을 보인 출력을 의도적으로 거부 예시로 라벨링했다.