자연어 처리 패러다임의 변화
- 트랜스포머 이전(~2017): 과제에 맞는 특징(feature), 모델을 잘 설계
- 사전 학습과 미세조정(2017~2019):
- 대량의 데이터를 이용해 언어 모형으로 사전 학습
- 특정한 다운스트림 과제에 맞춰 미세조정
- 다운스트림(downstream) 과제: 실제로 풀고자 하는 구체적 과제(예: 감성 분석 등)
- 프롬프트 방식(~현재): 미세조정 없이 적절한 프롬프트(제시문)로 다운스트림 과제를 해결
- Prefix prompt: 다음 단어를 예측(GPT 스타일)
- 예) 문장: 이 영화 재밌다. 감정:
- Cloze prompt: 빈 칸을 예측(BERT 스타일)
- 예) "이 영화 재밌다."는 [MASK] 감정이다.
프롬프트 방식의 필요성
- 모델의 크기가 점점 커지고 있음
- 미세 조정을 하기에 너무 많은 비용이 큼

프롬프트 작성 시 주의할 점
- 언어 모형은 사람이 아님
- 다음에 나올 토큰의 확률을 예측하여, 확률에 따라 문장을 생성할 뿐
- 생성 과정에서 눈에 보이는 문장들 외에 별도의 "생각"을 하지 않음
- 의도, 믿음, 지식, 생각, 감정 등이 없음
- 마치 그런 것처럼 보이는 텍스트를 생성하나 의인화하지 말 것
- 확률적으로 생성하므로 같은 프롬프트도 다른 결과를 낼 수 있음
- 한두 번 시도해보고 결론내지 말 것
- 한 문제에 효과적인 프롬프트도 다른 문제에서는 효과가 떨어질 수 있음
- 프롬프트를 여러 번 다양하게 시도해봐야 함
들쭉날쭉한 미개척지 Jagged Frontier
- 미국 펜실베니아 대학 이선 몰릭(Ethan Mollick) 교수가 제안한 개념
- 비슷한 난이도라도 어떤 과업은 매우 잘하지만, 어떤 과업은 그렇지 못함
- 최근 모델들의 정답률과 안정성은 증가하였으나, 신중성은 감소하였고 사람이 생각하는 난이도와 일치(difficulty concordance)는 오히려 하락하거나 정체
- LLM이 어떤 일을 잘/못할 것이라고 쉽게 가정하면 안 됨
- 참고: 모라벡의 역설(Maravec's Paradox)
- 인간에게 쉬운 것은 AI와 로봇에게 어려움(예: 이족보행, 빨래 개기)
- 인간에게 어려운 것은 AI와 로봇에게 쉬움(예: 수학, 체스)


프롬프트 엔지니어링
- 퓨샷(Few-Shot): 몇 개의 예시를 제시하는 방법
- 제로샷(Zero-Shot): 예시를 들지 않는 방법
- 생각 생성(Thought Generation): 추리를 고도화하는 방법
- 앙상블(Ensemble): 하나의 문제를 여러 번 풀고, 그 결과를 합치는 방법
- 자기 비판(Self-Criticism): 생성형 AI의 출력을 생성형 AI가 비판하게 하는 방법
- 분해(Decomposition): 문제를 쪼개는 방법
프롬프트 구성 요소와 작성 원칙
- 지시(Directive): 명령이나 질문 등 프롬프트의 핵심 의도
- 예: "휴가 때 할 재미있는 활동 5가지를 제안해라"
- 예시(Examples): 생성에 참고할 예시
- 예시로도 의도를 암묵적으로 전달할 수 있음
- 예시를 많이 들면 의도대로 생성할 가능성이 높음
- 예: "밤 = Night, 낮 =" → 낮에 해당하는 영어 단어를 답하라는 암묵적 지시
- 출력 형식(Output Formatting): 출력 형태를 지정
- 프로그램으로 처리하기 좋은 형식(Markdown, CSV, JSON 등)으로 지정할 때 사용
- 예: 다음 표를 CSV 형태로 정리해라
프롬프트 구성 요소와 작성 원칙
- 스타일 명령(Style Instructions): 출력 스타일에 대한 명령
- 예: 마우스에 대해 유치원생을 위해 동시 형식으로 짧게 설명해라
- 역할(Role): 생성 AI가 수행하는 역할
- 예: "너는 친절한 영어 교사이다. 내가 작성한 영어 이메일 내용을 교정해라"
- 추가 정보(Additional Information): 생성에 참고할 정보들
- 예: 이메일 작성 시 사용자의 이름 및 직책 등
지시형 및 예시 기반 프롬프트
- In-Context Learning: 생성형 AI가 과업을 수행할 수 있는 능력을 지시와 예시로부터 학습하는 것
- 엄밀한 의미에서 "학습"은 아님
- 딥러닝에서 학습은 모델의 파라미터를 수정
- ICL에서 파라미터가 수정되지는 않음
- 모델을 학습시킬 때 여러 데이터를 쓰듯이, 모델을 사용하는 맥락에서 마치 학습시키듯이 여러 데이터를 예시로 보여준다고 하여 이렇게 부름
- 참고: Brown et al. (2020) Language Models are Few-Shot Learners

In-Context Learning이 가능한 이유
- GPT는 다양한 종류의 과제를 특정 맥락에서 학습
- 충분히 다양한 맥락들을 학습하면, 새로운 맥락으로도 일반화할 수 있음
- 새로운 종류의 과제도 맥락을 제시하면 잘 수행할 수 있음

역할 부여와 출력 형식 제어
- 역할 프롬프트: "너는 누구인가?" (예: "너는 변호사다")
- ChatGPT의 기본 역할 프롬프트: "You are a helpful assistant."
- 청중 프롬프트: "너는 누구에게 말하는가?" (예: "너는 소방관에게 말하고 있다")
- 관계 프롬프트: "우리의 관계는 무엇인가?" (예: "너는 너의 엄마에게 말하고 있다")
- 대체로 성능이 높은 방식:
- 일반적인 직업보다는 교사, 관리자, 동료, 친구 등의 역할
- 성별 중립적 호칭(예: 아빠, 엄마보다 부모)
- "상상하라(imagine)"라고 하는 것보다 단정적으로 지시
- 청중 프롬프트의 경우 역할 앞에 your를 붙이는 것보다 부정관사(a/an)
- 질문에 맞는 역할