
1. 대회 설명
- 목표: 사용자의 질문 기록을 기반으로, 그들이 생각한 정답이 무엇인지 예측하는 멀티 클래스 분류 문제입니다. 총 800개의 정답 후보 중 하나를 예측
- 문제 유형: 대규모 언어모델(LLM)을 활용한 멀티클래스 분류
- 데이터 배경: 사용자들이 '20 Questions' 게임을 하듯이 특정 정답(예: animal, object 등)을 생각하고 질문을 던지면, 데이터에는 각 사용자의 질문과 그에 대한 정답 여부('yes', 'no', 'unknown')가 포함되어 있으며, 이를 기반으로 정답을 추론
2. 성능 평가 방식 이해
3. 데이터 전처리
3-1) EDA
- train.csv에는 사용자 ID, 질문 순서, 질문 내용, 응답('yes', 'no', 'unknown')이 포함
- test.csv는 질문만 포함
- labels.csv는 각 사용자 세션의 실제 정답(label)을 포함
3-2) Data Cleansing
- LLM 기반 모델이므로 원문 그대로의 문장이 의미를 가지기 때문에 특별한 정제과정을 거치지 않음
- question, answer를 문장 형태의 prompt로 결합
3-3) Feature Engineering
- 하나의 세션(사용자 ID)에 대해 여러 질문-응답 쌍을 한 줄씩 연결하여 prompt 생성
- 너무 긴 prompt는 LLM에서 잘릴 수 있으므로 1200 토큰 이하로 제한
- 앞 질문부터 순서대로 유지하며, 토큰이 초과될 경우 가장 오래된 질문부터 제거
- LLM이 출력한 정답은 자연어 문자열이므로, 이를 categories.csv의 800개 중 하나로 유사도 비교하여 매핑
4. 모델링
4-1) 모델
- LLM Backbone: llama-8b 모델을 사용
- Inference 방식: Zero-shot 방식으로 prompt를 입력하면, 모델이 직접 정답(800개 중 하나)을 자연어로 출력
- 후처리: 모델 출력 텍스트에서 가장 유사한 categories.csv의 항목을 difflib.get_close_matches()로 추출하여 정답으로 변환
4-2) 데이터 분할
- 공식 대회 데이터 split을 그대로 사용
- 별도의 validation set 구성 없음
4-3) 하이퍼파라미터 튜닝
- prompt 구성 방식, LLM 모델 버전, 문자열 유사도 계산 방식에 대한 선택지 존재
- 별도의 하이퍼파라미터 튜닝 없음
4-4) 최종 성능
- Public LB Score: 0.750
- llama-8b 모델을 활용한 zero-shot 추론만으로도 꽤 높은 정확도를 달성
5. 정리(Lesson & Learned)
- LLM 기반 문제에서는 전통적인 feature engineering보다 prompt 설계가 성능을 좌우함을 체감
- Zero-shot 세팅임에도 불구하고 높은 정확도가 나오며, 이후 fine-tuning 없이도 상위권 성적이 가능한 구조임을 확인
- 추론 속도가 느리고, 한 세션당 inference 비용이 발생하므로 효율적인 prompt 길이 관리가 중요