Post

MMLU로 확인한 기본 프롬프팅 튜토리얼

MMLU로 확인한 기본 프롬프팅 튜토리얼

MMLU로 확인한 기본 프롬프팅 튜토리얼

실습 정보

  • 주차: Week 05, Day 01
  • 유형: Jupyter Notebook
  • 상태: 완료
  • 원본 자료: SeSAC_2강_Tutorial.ipynb, [Daily Mission] Day1 Prompt Engineering을 적용하여 MMLU 풀이하기

실습 목표

MMLU 객관식 문제를 대상으로 프롬프트 구조가 답변 품질에 어떤 영향을 주는지 확인한다. 단순히 “좋은 프롬프트”를 감으로 작성하는 것이 아니라, 입력 형식, 출력 제약, 예시 제공, temperature 설정을 바꾸면서 결과를 비교하는 것이 목표다.

핵심 학습 포인트

  • Zero-shot과 Few-shot의 차이를 문제 풀이 정확도로 비교한다.
  • LLM 응답에서 최종 선택지 A/B/C/D만 안정적으로 추출하는 후처리가 필요하다.
  • temperature가 높아질수록 출력 다양성은 커지지만 객관식 채점 안정성은 떨어질 수 있다.
  • 프롬프트는 역할, 문제, 선택지, 출력 형식, 금지 조건을 분리해서 설계하는 편이 디버깅하기 쉽다.

실습 흐름

1. MMLU 문제 형식 확인

먼저 MMLU 데이터셋에서 질문, 선택지, 정답 라벨이 어떤 구조로 제공되는지 확인한다. 이 단계에서 중요한 것은 모델 호출보다 입출력 계약을 먼저 정하는 것이다.

1
2
3
입력: question, choices
출력: A/B/C/D 중 하나
평가: 모델 출력에서 선택지를 추출한 뒤 정답 라벨과 비교

객관식 문제에서는 설명이 길게 붙은 답변보다 채점 가능한 형식이 우선이다. 그래서 프롬프트에는 “정답 알파벳 하나만 출력” 같은 제약을 명확히 둔다.

2. Baseline 프롬프트 만들기

처음에는 예시를 넣지 않고 문제와 선택지만 제공한다. 이 baseline이 있어야 이후 few-shot, CoT, self-verification을 적용했을 때 실제로 개선됐는지 비교할 수 있다.

1
2
질문과 선택지를 읽고 정답을 고르세요.
반드시 A, B, C, D 중 하나만 출력하세요.

이 단계에서 확인할 것은 “모델이 지식을 알고 있는가”보다 “출력 형식을 지키는가”다. 형식이 흔들리면 정확도 계산이 왜곡된다.

3. 출력 후처리와 채점

LLM은 지시를 줘도 정답은 A입니다처럼 부가 설명을 붙일 수 있다. 따라서 모델 출력 전체를 그대로 비교하지 않고, A/B/C/D 후보를 추출한 뒤 채점한다.

1
모델 원문 출력 -> 선택지 추출 -> 정답 라벨과 비교 -> accuracy 계산

프롬프트 실험에서 후처리가 빠지면, 프롬프트가 나빠서 틀린 것인지 채점 코드가 약해서 틀린 것인지 구분하기 어렵다.

4. Zero-shot과 Few-shot 비교

Zero-shot은 지시만 제공하고, Few-shot은 같은 형식의 예시를 몇 개 넣어 모델이 답변 패턴을 따라오게 만든다. Few-shot이 항상 더 좋은 것은 아니지만, 출력 형식이 중요한 작업에서는 안정성을 높이는 데 도움이 된다.

비교할 때는 다음 기준을 함께 본다.

기준확인할 내용
정확도정답률이 실제로 올라갔는가
형식 준수A/B/C/D만 안정적으로 출력하는가
비용예시 추가로 토큰이 과하게 늘지 않는가
일반화예시에 너무 끌려가지 않는가

5. Temperature 실험

튜토리얼 노트북에서는 temperature 값을 바꾸며 응답 분포를 확인한다. 객관식 정답 추출처럼 재현성이 중요한 작업에서는 낮은 temperature가 유리하다. 반대로 아이디어 생성이나 문장 변형처럼 다양성이 필요한 작업에서는 높은 temperature가 의미가 있다.

진행 순서

  1. MMLU 샘플의 질문, 선택지, 정답 라벨 구조를 확인한다.
  2. Zero-shot baseline 프롬프트를 작성하고 모델을 호출한다.
  3. 출력에서 선택지 라벨만 추출하는 후처리 함수를 둔다.
  4. 정확도를 계산해 baseline을 기록한다.
  5. Few-shot 예시와 출력 형식 제약을 추가해 같은 방식으로 재평가한다.
  6. temperature를 바꾸며 형식 안정성과 정답률 변화를 비교한다.

체크포인트

  • 모델 출력 원문과 후처리 결과를 분리해서 기록했다.
  • Zero-shot과 Few-shot의 차이를 정확도와 형식 준수율로 비교했다.
  • temperature 변경이 객관식 문제 풀이에 어떤 영향을 줬는지 설명할 수 있다.
  • 프롬프트 개선 전후의 차이를 “느낌”이 아니라 평가 기준으로 정리했다.

회고 질문

  • 프롬프트를 바꿨을 때 실제로 개선된 부분은 정확도였나, 출력 형식 안정성이었나?
  • Few-shot 예시는 문제 해결에 도움을 줬나, 아니면 불필요한 bias를 만들었나?
  • 실서비스에서 객관식 평가와 자유형 답변 평가는 어떤 점이 다르게 설계되어야 하나?

관련 글

This post is licensed under CC BY 4.0 by the author.