텍스트 분류의 역사: Bag-of-Words에서 Jev까지
Language models for text classification: From bag-of-words to Jev
TL;DR Highlight
Bag-of-words부터 Transformer까지 훑어 Jev가 왜 '그냥 분류기'가 아닌지 짚었다
Who Should Read
텍스트 분류에 LLM을 쓸지 전용 분류기를 만들지 고민하는 백엔드·ML 엔지니어
Core Mechanics
- Jev는 분류기지만 '그냥 분류기'는 아니다
- 최신 GPT·오픈웨이트 LLM도 같은 분류를 하지만 Jev는 더 빠르고 싸다는 게 저자 평가다.
- 좁고 명확한 문제에서는 전용 분류기보다 낫지 않을 것이라고 본다.
- 대신 전용 모델보다 훨씬 범용이라는 점이 강점이다.
- Bag-of-words + 로지스틱 회귀는 여전히 기본 베이스라인이다
- 단어별 등장 횟수를 고정 길이 벡터로 바꿔 고전 분류기에 넣는 방식이다.
- 단어 순서를 잃는 게 단점이다("the dog bites the man"과 "the man bites the dog"가 같은 벡터).
- IMDb 영화 리뷰(균형 데이터셋)에서 정확도 89.9%였다.
- RNN(LSTM)은 같은 데이터에서 오히려 졌다
- 처음부터 학습한 LSTM은 IMDb에서 85.66%로, bag-of-words 로지스틱 회귀 89.9%보다 낮았다.
- 학습 정확도가 더 높아 과적합이 심했다.
- 사전학습 후 파인튜닝하는 ULMFiT(2018)는 IMDb 테스트 정확도 95.4%를 냈다.
- 텍스트 CNN은 병렬 계산이 되고 성능도 괜찮았다
- 인접한 단어 임베딩 창(window)에 필터를 적용하고 global max pooling으로 길이에 무관한 벡터를 만든다.
- 필터 계산은 위치별로 병렬 실행되어 RNN처럼 순차 의존이 없다.
- 저자 실험에서 IMDb 정확도 90.07%였다(아키텍처에 따라 크게 달라진다고 단서를 붙였다).
Community Reactions
- Jev 홍보와 현실의 간극을 꼬집는 의견
- 일부는 AGI·시스템 1·'환각 없음' 같은 말을 무비판적으로 인용했다는 의견이 있었다.
- 게임 데모(Doom, Minecraft 등)는 게임 상태를 입력으로 쓴다는 설명이 거의 없어 오해를 키웠다는 의견이다.
- 이메일 분류 전략을 비교해 봤더니 Jev가 유망했다는 경험
- 한 댓글러가 이메일 분류 전략을 비교 중이며 Jev가 괜찮아 보인다고 했다.
- 비교 결과를 블로그(housecat.com/blog/classifying-email)에 정리했다.
- 분류의 'ChatGPT 모멘트'라는 평가
- 작업마다 분류기를 파인튜닝하지 않고도 여러 텍스트를 싸게 분류한다는 점이 흥분의 이유라는 의견이다.
- bag-of-words와 신경망 사이를 잇는 CBOW 보완 의견
- 단어 임베딩을 문서 단위로 합산·평균하는 continuous bag-of-words가 중간 다리라는 의견이다.
- 사전학습 임베딩을 쓰면 작은 데이터셋에서 성능이 오르며, fastText가 이 방식이라고 했다.
How to Apply
- 로지스틱 회귀 베이스라인부터 만들기
- 지금 분류 작업의 라벨 데이터로 TF-IDF + 로지스틱 회귀를 30분 안에 돌려 정확도를 기록하라.
- 이 수치를 LLM 프롬프트 분류나 파인튜닝 모델과 비교하는 기준으로 삼아라.
- 정형 출력이 필요한 분류는 ModernBERT 파인튜닝 후보에 올리기
- 라벨이 고정된 도메인이면 프롬프트 분류와 ModernBERT 파인튜닝의 정확도·지연·비용을 같은 테스트셋에서 비교하라.
- 튜닝은 최소한으로 하고 기본 설정 결과부터 확인하라.
- Jev 도입 판단은 우리 작업의 범위로 가르기
- 좁고 명확한 단일 작업이면 전용 분류기를 유지하라.
- 라벨 종류가 자주 바뀌는 다목적 분류면 Jev 같은 범용 분류 API를 후보에 넣어 비용과 속도를 재 봐라.
Try It
# Claude나 ChatGPT에 붙여넣기 (논문 방법의 간이 버전: 분류 방식 선택 점검)
나는 텍스트 분류 기능을 만들려고 한다. 아래 조건을 보고 후보를 비교해 줘.
- 작업: {{분류 작업 설명}}
- 라벨 목록: {{라벨}}
- 라벨 데이터 수: {{개수}}
- 하루 요청량과 지연 목표: {{요청량·지연}}
다음 네 가지를 비교해 줘: (1) TF-IDF + 로지스틱 회귀, (2) ModernBERT 파인튜닝, (3) LLM 프롬프트 분류, (4) 범용 분류 API.
각각 정확도 기대, 속도, 비용, 라벨 변경 시 유지보수 부담을 표로 정리하고, 가장 먼저 돌려볼 베이스라인 순서를 제안해 줘.
이어서 해 볼 것: 추천한 1번 방식의 scikit-learn 코드를 {{내 데이터 형식}}에 맞춰 작성하게 시켜 봐.Terminology
관련 논문
The Judge Can Debias Itself: LLM-as-a-Judge가 스스로 편향을 고치게 하는 법
심사 프롬프트에 편향 경고를 넣거나 스스로 비판시켰더니 21개 중 20개 조합에서 정확도가 올랐다
미국 노동시간의 90%는 AI 벤치마크가 제대로 다루지 못하는 일이다
벤치마크 29개를 직업 과제에 매핑했더니 노동시간 90%가 커버 밖
Postgres 19, AI 코드 리뷰가 버그를 너무 많이 찾아 출시 연기
LLM 코드 리뷰가 버그를 쏟아내 Postgres 19가 11월로 밀리고 기능 8~10개가 빠졌다
StarSkirmish Bench v0.2: LLM이 1시간 만에 짜는 StarCraft 봇 대결
LLM에게 1시간 동안 StarCraft 봇을 짜게 했더니 GPT-6 Astra가 1위
그럴듯한 설명 하나면 멀티모달 LLM 심사위원도 속는다 (JUPE 벤치마크)
정답은 그대로 두고 설명만 붙였더니 MLLM 심사위원의 오답 거절률이 12.7~13.8%p 떨어졌다
신경망은 이미 깔끔하다: polysemanticity의 원인 재해석
뉴런을 직접 들여다봤더니 대부분 한 가지 역할이 있었다는 주장
Linus Torvalds의 첫 LLM 보조 패치 시리즈
Linus가 LLM으로 folio 조회 패치 10개를 만들어 read() 벤치가 10배 빨라졌다