← 목록으로

Qwen으로 나만의 의사결정 모델 만들기

요약
  • Qwen 모델의 출력을 고정된 선택지로 제한하여 한 번의 순전파로 답을 도출하는 의사결정 모델 구현 방법을 제시합니다.
  • 모델이 모호한 질문에 과도한 확신을 보이는 문제를 해결하기 위해 온도 스케일링을 통한 확률 보정 기법을 적용했습니다.
  • 관련 실험 스크립트와 데이터셋 구성 방법이 공개되었습니다.
  • LLM의 출력을 고정된 선택지 토큰으로 제한하면 한 번의 순전파로 답을 선택하는 의사결정 모델 구현 가능
  • 선택지 밖의 응답을 막아도 정답이 보장되지는 않으며, 토큰 확률과 실제 정답 확률은 다를 수 있음
  • Qwen/Qwen3-1.7B로 구현한 모델은 CommonsenseQA 홀드아웃 평가에서 정확도 59.38%를 기록했고, 간단한 미세 조정 후 62.41%로 높아짐
  • 모델은 모호한 질문에도 높은 확률을 부여했으며, 평가에서 평균 신뢰도 98.55% 인 구간의 실제 정확도는 70.09%에 그침
  • 온도 스케일링으로 확률 분포를 완만하게 조정해 신뢰도와 정확도의 차이를 줄였으며, 데이터셋 구성부터 평가, 미세 조정, 보정까지 실험할 수 있는 스크립트를 공개함
고정 선택지로 한 번에 답 선택하기
  • System one 의사결정 모델은 허용된 각 답에 대해 보정된 확률을 추론하고 반환하는 모델임
  • 일반적인 언어 모델은 구조화된 출력으로 유효한 JSON을 보장할 수 있지만, 입력을 한 번에 프리필한 뒤에도 응답 토큰마다 순전파를 수행해야 함
    • 하늘 색을 묻는 예시에서 최종 JSON 출력까지 11번의 순전파가 필요함
    • 이 비교에서는 추측 디코딩과 기타 추론 최적화 기법을 고려하지 않음
  • Jev 같은 의사결정 모델은 선택지가 고정되어 있다는 전제로 한 번의 순전파에서 답을 고름
    • 가능한 출력을 A, B, C, D, E로 제한하고, 어휘의 나머지 토큰을 마스킹함
    • 허용된 토큰 중 확률이 가장 높은 것을 답으로 선택함
  • 선택지 제한과 정답 여부는 별개임
    • 모델이 선택지 밖의 답을 내지 못하게 할 뿐, 선택한 답이 맞다고 보장하지는 않음
    • 출력 토큰 확률을 신뢰도 점수로 쓰기도 하지만, 추가 학습 없이는 정답 확률보다 다음 토큰에 대한 확신을 반영할 가능성이 큼
Qwen으로 구현하고 평가하기
  • Qwen/Qwen3-1.7B 와 PyTorch, Transformers를 사용해 출력 토큰을 제한하는 동작을 구현함
    • 질문과 다섯 선택지, Answer:를 프롬프트로 구성하고 채팅 템플릿에서 enable_thinking=False로 설정함
    • 각 선택지의 토큰 ID를 구한 뒤, 한 번의 모델 실행에서 마지막 위치의 로짓만 가져옴
    • 선택지 토큰의 로짓에만 소프트맥스(softmax)를 적용하고, 최댓값을 가진 선택지와 각 선택지의 확률을 출력함
  • 하늘 색 질문에서는 B: Blue를 선택해 타당한 답을 냄
    • 선택지는 Red, Blue, Green, Purple, I don't know였음
    • Blue의 출력 확률은 0.9988, I don't know는 0.0012였으며 나머지는 표시 정밀도에서 0.0000이었음
  • CommonsenseQA의 무작위 홀드아웃 표본 1,221개로 평가함
    • 기본 모델은 725개를 맞혀 정확도 59.38%, 매크로 F1 0.5844를 기록함
    • 데이터셋으로 간단히 미세 조정한 뒤에는 762개를 맞혀 정확도 62.41%, 매크로 F1 0.6234로 개선됨
토큰 확률을 신뢰도로 볼 때 생기는 과신
  • 모호한 질문에도 모델이 극도로 높은 확률을 부여할 수 있음
    • “bat을 어디에서 가장 쉽게 찾을 수 있는가?”라는 질문에 Cave, Baseball game, Attic, Zoo, Sporting goods store를 선택지로 사용함
    • 영어 bat은 박쥐와 야구방망이를 모두 뜻하므로, 동굴과 야구장 중 어느 쪽을 고를지 문맥만으로 확정하기 어려움
    • 명확한 정답이 없는 질문인데도 Cave를 선택하고 0.9978의 확률을 부여함
  • 평가 결과를 신뢰도 구간별로 나누면 신뢰도와 실제 정확도가 일치하지 않아 확률 보정이 필요함
    • 신뢰도 0.9~1.0 구간의 809개 예측은 평균 신뢰도 0.9855에 비해 정확도가 0.7009였음
    • 0.8~0.9 구간의 121개 예측도 평균 신뢰도 0.8555에 비해 정확도가 0.4711에 그침
    • 전반적으로 출력 확률이 실제 정답률보다 높은 과신을 보임
온도 스케일링으로 확률 보정하기
  • 온도 스케일링은 온도 값을 조절해 출력 확률 분포를 완만하게 만들고, 점수가 실제 정확도에 가까워지도록 조정하는 방법임
  • 시각화 예시에서는 온도를 1.0에서 2.2로 높이면서 B의 확률이 94.3%에서 63.2%로 낮아짐
    • 기대 보정 오차는 20.1%에서 2.9%로 줄어듦
    • 각 신뢰도 수준의 실제 정답률은 각각 82%, 61%였음
  • 실제 평가에서는 정확도에 맞춰 온도 매개변수를 피팅한 결과 3.797280788421631 을 얻었고, 보정 상태가 크게 개선됨
    • 신뢰도 0.5~0.6 구간은 평균 신뢰도 0.5475, 정확도 0.5482로 가까워짐
    • 0.9~1.0 구간은 109개 예측에 대해 평균 신뢰도 0.9333, 정확도 0.9541을 기록함
  • GitHub 저장소에 데이터셋 구성, 평가, 미세 조정, 확률 보정을 진행하는 스크립트가 있으며, 더 큰 모델로도 실험해 볼 수 있음
그냥 목록으로
원문 보기 ↗