Kaggle - LLM Science Exam

1. 대회 설명
- 목표: 대형 언어 모델(LLM)이 과학 관련 지문을 읽고, 문제에 답할 수 있는지를 측정
- 문제 유형: 자연어 처리 (NLP), LLM 평가, 텍스트 분류
- 데이터 배경
-> train.csv: 문제 ID, 질문, 선택지, 정답 레이블
-> test.csv: 동일한 형식이나 정답 없음
-> sample_submission.csv: 예측 결과 제출 형식
-> 모든 문항은 science 관련된 주제로, 실제 시험 환경을 시뮬레이션한 형태
2. 성능 평가 방식 이해
- Accuracy
-> 단일 정답 선택 문제에서 얼마나 많이 맞췄는지를 측정
-> 예측 값이 정답 레이블과 일치하는 비율로 계산
3. 데이터 전처리
3-1) EDA
- answer 컬럼의 분포를 보면 클래스 불균형은 크지 않음
- 대부분의 문항이 지문 + 질문 + 선택지로 구성
- prompt, question, A~D 선택지를 모두 포함한 입력 텍스트를 생성
3-2) Data Cleansing
- tokenizer 처리 시 너무 긴 입력은 truncation
- 정답 label에 대해 숫자 label로 변환 필요
3-3) Feature Engineering
- 선택지별로 하나의 예측 점수를 생성해야 하므로, 각 선택지마다 별도 추론
- Huggingface tokenizer 사용
4. 모델링
4-1) 모델
- sentence-transformers 기반 임베딩 모델
- 파라미터 학습 없이, 임베딩 유사도 기반으로 Top-3 후보를 선택하는 구조 (zero-shot 형태)
4-2) 데이터 분할
4-3) 하이퍼파라미터 튜닝
- 하이퍼파라미터 topk, embedding batch size, similarity cutoff 등을 조정 가능
- 실제 학습은 없지만, Top-K 유사도 후보 수 및 후처리 방식에서 성능 차이가 발생
4-4) 최종 성능
- 공개 노트북 기준 1등 솔루션
- 실제 필사에서는 MAP@3 평가를 위해 answer 병합 후 직접 구현된 평가 코드 사용
5. 정리(Lesson & Learned)
- Zero-shot 구조임에도 성능이 뛰어남
- 코사인 유사도 기반 Top-K 선택 방식의 효율성 확인
- 필사 과정에서 shell script 자동화 및 모듈 분리 구성 방식까지 학습하며, 현업형 프로젝트 구성법에 도움이 됨
kaggle-llm-science-exam