Models & Algorithms••EN

분류기, LLM, 판단 모델 중 무엇을 쓸까: 직접 잰 결과로 정리한 텍스트 분류 안내

이 블로그의 텍스트 분류 실측을 한 흐름으로 묶었습니다. 같은 은행 문의 154건에서 CPU 분류기는 90.3%, 가까운 사례 다섯 개를 붙인 LLM은 94.8%, Jev는 76.0%였습니다. 무엇을 언제 쓸지 순서대로 정리합니다.

분류기, LLM, 판단 모델 중 무엇을 쓸까: 직접 잰 결과로 정리한 텍스트 분류 안내

분류기, LLM, 판단 모델 중 무엇을 쓸까: 직접 잰 결과로 정리한 텍스트 분류 안내

9월 중순부터 짧은 글에 라벨을 붙이는 방법을 열 가지 넘게 재 왔습니다. 직접 학습한 분류기, 최신 LLM, 로컬 모델, 그리고 Jev처럼 선택지마다 확률을 돌려주는 판단 모델까지입니다. 글마다 질문 하나에 답했는데, 따로 읽으면 무엇부터 해야 하는지가 잘 보이지 않습니다. 이 글은 그 글들을 실제로 시스템을 만들 때 부딪히는 순서대로 다시 엮은 것입니다. 무엇을 먼저 해 볼지, 언어 모델은 언제 도움이 되는지, 판단 모델은 무엇을 고를지, 확률은 언제 믿어도 되는지 순서로 갑니다.

bag-of-words부터 트랜스포머, Jev식 점수 헤드까지 분류 모델이 어떻게 발전했고 내부가 어떻게 생겼는지는 Sebastian Raschka의 그림 설명 글이 잘 정리하고 있습니다. 이 글은 그쪽이 아니라 고르는 일을 다루고, 숫자는 모두 같은 문장으로 잰 것입니다.

먼저 표 하나

대부분의 글이 같은 시험지를 썼습니다. 은행 고객 문의를 의도 77개로 나눈 공개 데이터 BANKING77에서 의도마다 두 건씩, 고정 시드로 뽑은 154건입니다. 같은 문장에 같은 라벨 이름 77개를 주고 사람이 붙인 정답으로 채점했습니다.

BANKING77 154건정답쓴 라벨 데이터출처
GPT-5.6 Terra + 가까운 학습 사례 다섯 개 검색94.8% (146)10,003건에서 검색입력 구성 실험
MiniLM 임베딩 + 로지스틱 회귀, CPU90.3% (139)10,003건라벨 출력 기준선
GPT-5.6 Terra, 라벨 이름만83.8% (129)0라벨 출력 기준선
Kev-9B (BANKING77로 학습한 모델)82.5% (127)학습에 포함Kev와 MoJev
Jev 1.1376.0% (117)0Kev vs Jev
openjev(DiffusionGemma), 한 번 읽기66.9%0Jev 대안 셋
Jeff v1.1, 0.8B와 2B66.2%, 64.9%0Jeff vs Jev
Nimble 9B, Tev1 (Ollama 0.35)선택지 26개 초과로 거절0Ollama 판단 모델

분류기는 첫 글에서 139건, 문장별 결과를 남기려고 GPU에서 다시 돌렸을 때 138건이었습니다. GPT-5.6 Terra에 라벨 이름만 준 구성은 네 번 돌려 125건에서 129건 사이였습니다. 154건이면 몇 %p 차이는 그 자체로 유의하지 않으니, 각 글에 적은 짝지은 검정을 같이 봐야 합니다.

이 표에서 보이는 두 가지는 다른 글에서도 대체로 그대로였습니다. 선택지가 많고 라벨이 충분하면 작은 분류기를 이기기 어려웠습니다. 선택지가 적으면 달랐습니다. 선택지 6개인 TREC에서는 Nimble이 95.6%로 분류기(90.4%)를 앞섰습니다. 그리고 LLM에 라벨 데이터를 보여 줄 때는 가장 가까운 사례 몇 개를 찾아 붙이는 것이 제가 시험한 어떤 방법보다 효과가 컸습니다.

1단계: 기준선부터 학습합니다

라벨 데이터가 있다면 문장 임베딩 위에 로지스틱 회귀를 올린 분류기를 먼저 만들어 봅니다. 학습은 몇 초면 끝나고, CPU에서 한 건에 10ms가 안 걸립니다. BANKING77에서는 사례를 보지 못한 모든 모델을 이겼습니다. 최신 LLM 두 개, 문법 제약을 건 Qwen3-8B, 오픈소스 Jev 대안 셋이 모두 아래였습니다(라벨 출력 기준선, Jev 대안 셋).

2단계: 판단 모델은 라벨 몇 개의 값어치인가

분류기는 라벨이 있어야 하고, 판단 모델은 라벨 없이 바로 씁니다. 그러면 판단 모델은 라벨 몇 개만큼의 값을 할까요. Kev가 한 번도 학습하지 않은 과제 셋에서 Kev-9B는 클래스마다 라벨 2개에서 20개로 학습한 분류기와 비슷했습니다. 같은 과제에서 Jev는 셋 중 둘에서 Kev-9B보다 정확했고(CLINC150 68.5% 대 62.0%, MASSIVE 82.9% 대 76.0%, Kev vs Jev), 클래스마다 20개로 학습한 분류기와 비슷한 자리였습니다.

같은 400건, 175건CLINC150 (상한 75%)MASSIVE
분류기, 클래스당 라벨 5개64.8%71.2%
분류기, 클래스당 라벨 20개69.8%82.3%
분류기, 라벨 전부72.5%84.6%
Jev 1.13, 라벨 없음68.5%82.9%

라벨 5개, 20개 행은 사례를 다섯 번 새로 뽑아 낸 평균이고, 뽑을 때마다 1-5%p씩 달랐습니다. 그래서 이 표는 대략의 위치를 보여 줄 뿐 짝지은 검정은 아닙니다. CLINC150의 상한이 75%인 것은 표본의 4분의 1이 어느 선택지에도 맞지 않는 질문이기 때문입니다. 클래스마다 몇십 개씩 라벨을 달 수 있다면 분류기가 더 싸고 정확도도 비슷합니다. 라벨을 달 여유가 없다면 판단 모델이 가장 빨리 시작하는 방법입니다.

3단계: LLM을 쓴다면 규칙보다 사례를 줍니다

BANKING77에서 GPT-5.6 Terra는 그대로 두고 입력만 바꿔 봤습니다. 라벨 순서를 섞거나 주제별로 묶거나 추론 강도를 바꿔도 정확도는 유의하게 움직이지 않았습니다. 가장 가까운 학습 사례 다섯 개를 붙이자 19건이 맞게 바뀌었고 틀리게 바뀐 것은 없었습니다(입력 구성 실험). 모델이 틀린 문장들에서 규칙을 뽑아 붙이는 방법은 그만큼 효과가 없었습니다. 규칙 40줄은 4건을 고치고 5건을 망쳤습니다(Paper of the Week #4).

4단계: 판단 모델 고르기

여기 나오는 모델은 모두 같은 요청을 받습니다. 글 하나와 선택지가 정해진 질문을 보내면, 선택지마다 확률을 돌려줍니다. 차이는 무엇으로 학습했는지와 선택지를 몇 개까지 받는지에 있습니다.

  • Jev(TypeSafe의 API)는 Kev가 처음 보는 과제 셋 중 둘에서 Kev-9B보다 정확했고, 추론이 필요한 문항에서는 어떤 오픈 모델보다 앞섰습니다. Jeff의 4,599문항 패널에서 85.7이었습니다(Jeff vs Jev). Jev가 무엇이고 어떻게 동작하는지는 10분 만에 이해하는 Jev에 정리했습니다.
  • Kev(0.8B에서 9B, 가중치 공개)는 학습한 데이터셋에서는 Jev와 같거나 앞섰고(TREC 93.8% 대 89.0%), 학습하지 않은 셋 중 둘에서는 뒤졌습니다(Kev vs Jev, Kev와 MoJev).
  • Nimble 9B(Ollama)는 미세조정 데이터에 TREC가 없는데도 TREC에서 95.6%로 Jev(89.0%)를 앞섰습니다. 다만 추론 위주 패널에서는 76.0 대 85.7로 뒤졌습니다(Ollama 판단 모델).
  • Jeff(0.8B, 2B)는 금융 감성 분류와 답변을 근거 문서와 대조하는 일에서 Jev보다 나았고, 추론에서는 뒤졌습니다(Jeff vs Jev).
  • laya, openjev, NanoJev, DiffusionGemma는 빨랐지만 선택지가 77개가 되면 크게 뒤졌습니다(Jev 대안 셋, DiffusionGemma).

가장 먼저 볼 것은 선택지 개수입니다. 여러 모델이 26개에서 멈춥니다. Ollama 엔드포인트는 그보다 많으면 거절하고, DiffusionGemma 예제 서버도 26개가 한도이고, Jeff v1.0은 긴 목록을 받기는 했지만 27번째 이후를 한 번도 고르지 않았습니다(v1.1에서 고쳐짐). 선택지가 그보다 많으면 후보를 먼저 추리거나, 전체 목록을 받는 모델을 써야 합니다.

다음은 학습 데이터입니다. Kev는 BANKING77, TREC, AG News로, Tev1은 AG News와 BANKING77로, laya는 AG News로 학습했습니다. 학습에 쓴 데이터셋에서 나온 점수는 내 과제에서 어떨지를 거의 알려 주지 않습니다.

5단계: 확률을 믿고 처리해도 될 때

라벨만 받으면 되는데 굳이 판단 모델을 쓰는 이유는 확률입니다. 확신이 높은 답은 자동으로 처리하고, 나머지는 사람에게 넘길 수 있다는 것입니다. 실제로 그게 되는지는 모델보다 과제에 더 크게 좌우됐습니다.

  • BANKING77에서 Kev는 자동 처리한 답의 정확도를 95%로 지키면서 문의의 53-61%를 자동 처리할 수 있었습니다. 같은 조건에서 laya는 0%였습니다(Kev와 MoJev).
  • Jev의 확률은 실제 정확도보다 높게 나오고 소수 둘째 자리로 반올림돼 있어서, BANKING77에서는 95%를 지키는 임계값이 없었습니다(Kev vs Jev).
  • Kev가 처음 보는 과제에서는 확률이 실제보다 10-17%p 낮게 나왔습니다. 대신 어느 선택지에도 맞지 않는 질문 100개 중 95% 기준을 넘은 것은 5개뿐이었습니다. 이런 질문은 넘겨야 하니 바라던 동작입니다(Kev가 처음 보는 과제).
  • 같은 모델에 여러 번 물어보는 방법으로는 틀린 답을 가려내지 못했습니다. openjev가 틀린 답의 77-80%는 여덟 번 모두 같은 답이었습니다(판단 모델의 확신을 믿어도 될까).

어떤 모델을 쓰든 임계값은 과제마다 내 라벨 데이터 몇백 건으로 정해야 합니다.

아직 다루지 않은 것

모두 영어 짧은 글에 라벨 하나를 붙이는 분류였습니다. 시간이 지나며 돌아가는 시스템은 재지 않았습니다. 들어오는 문장이 바뀌면 정확도가 어떻게 변하는지, 임계값을 언제 다시 맞춰야 하는지, 일부를 사람에게 넘기는 데 비용이 얼마나 드는지가 그렇습니다. 각 모델은 한 버전만 쟀고, 표본이 154건에서 500건인 글이 많아서 몇 %p 차이는 함께 적은 짝지은 검정만큼만 믿을 수 있습니다.

이 글의 숫자는 모두 링크한 글에서 가져왔고, 실험 설정과 표본, 시드, 짝지은 검정은 그 글에 있습니다. BANKING77 표본은 테스트셋에서 의도마다 두 건씩 뽑은 154건(시드 20260918)입니다. CLINC150 표본은 범위 안 테스트 질문 300건과 범위 밖 질문 100건, MASSIVE는 영어 테스트 문장 175건입니다.

이 글과 이어지는 강좌

SOTAAZ 강좌

강좌는 하나씩 살 수 있습니다. 13개 전체가 필요하면 $199 평생 번들도 있습니다.

더 많은 콘텐츠를 받아보세요

SNS에서 새로운 글과 튜토리얼 소식을 가장 먼저 받아보세요

이메일로 받아보기

관련 포스트