프롬프트 엔지니어링은 필요한가
프롬프트 공학은 필요한가?
- AI 시스템이 개선됨에 따라 AI가 사용자가 원하는 것을 알아내는 데 능숙해지고 있음
- 난해한 프롬프트의 필요성 하락
- Sam Altman(ChatGPT를 만드는 OpenAI의 CEO)은 앞으로 5년 후에는 프롬프트 공학은 필요 없어질 것이라고 주장(2022)
유튜브: https://youtu.be/WHoWGNQRXb0?si=I2w5lZ8JJsVGQoVF&t=1507
LLM은 프롬프트를 "이해"하는가?
- 프롬프트 기반 모델은 의미적으로 올바른 지시적(instructive) 프롬프트뿐만 아니라, 의도적으로 오도하거나 관련 없는 내용의 프롬프트가 주어졌을 때도 비슷한 수준의 학습 속도를 보임
- 모델이 프롬프트의 의미를 인간처럼 이해하지 못함을 시사
- 모델 성능은 프롬프트 템플릿의 의미보다 예측해야 할 타겟 단어(target words)의 선택에 훨씬 더 큰 영향을 받음
- 예: "yes/no" vs. "cat/dog"
- 타겟 단어의 효과가 프롬프트 의미의 효과를 압도
- 이러한 현상은 초대형 모델(GPT-3)과 다양한 지시사항으로 튜닝된 모델(T0)에서도 일관되게 나타남
- 모델의 크기나 instruction tuning만으로는 이 문제가 해결되지 않음을 보여줌
출처: Do Prompt-Based Models Really Understand the Meaning of their Prompts? (https://arxiv.org/abs/2109.01247)
LLM은 프롬프트를 "이해"하는가?
- 5가지 종류의 설명:
- instructive: 이 과제를 처음 보는 사람에게 설명하듯이
- misleading-moderate: 관련은 있지만 다른 과제처럼 설명
- misleading-extreme: 전혀 다른 과제로 설명
- irrelevant: 어느 자연어 처리 과제와도 관련 없는 설명
- null: 설명 없음
- LLM이 프롬프트를 "이해"한다면, 설명에 따라서 성능에 차이가 있어야 함

설명의 의미와 성능의 관계
- few-shot에서는 설명의 의미와 성능에 큰 차이가 없음
- zero-shot에는 instructive한 설명의 성능이 더 나음



타겟 단어의 의미와 성능
- 타겟 단어의 종류를 다르게 하면, 대체로 의미와 성능에 관련이 있음
- Yes/No: 함의는 yes, 아니면 no
- Yes/No-like: yes-no와 비슷하지만 다른 단어(true/false, positive/negative)
- Arbitrary: 의미 없는 임의의 단어(cat/dog)
- Reversed: 의미를 반대로(no/yes)
- 프롬프트와 조합에 따라서는 성능이 역전되는 경우도 있음
- misleading 프롬프트 + yes/no 타겟(빨강)이 instructive 프롬프트 + arbitrary 타겟(초록)보다 성능이 높음


프롬프트의 민감도
- 프롬프트에 대한 민감도: 프롬프트의 변화가 결과 성능에 미치는 영향
- 민감도가 낮아질수록 프롬프트 엔지니어링의 필요도 낮아짐
- 말만 통하면 결과가 비슷하므로
- 모델이 커질수록, 예시를 많이 들수록 프롬프트에 대한 민감도가 낮아짐
- 일시적으로 작동하는 특이한 기법을 쓰는 것보다 성능이 좋은 모델을 사용하고, 프롬프트를 정확하게 쓰고, 예시를 충분히 드는 것이 중요
- 예: 아이스크림을 사주겠다고 하기 등


사람들이 프롬프트를 잘 쓰지 못하는 이유
- 과잉 일반화: 한두 번 해보고 된다, 안 된다고 쉽게 판단
- 언어 모형을 사람처럼 생각
- 불필요한 말 덧붙이기(예: please)
- 유용한 프롬프트 기법 사용을 주저
- 예시 들기
- 중요한 말 반복하기

프롬프트 공유 안하는 신입 사원?
- 결과물을 AI에게 주고 프롬프트를 물어보면 됨



프롬프트에서 컨텍스트로
그림 출처: https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents