프롤로그
오늘은 AI에게 질문 잘하는 기술 두 번째 시간으로 N Shot에 대해 이야기해 보려고 합니다. 프롬프트를 구성할 때 가장 중요한 것은 AI에게 역할을 주어주는 것입니다. AI가 해야 할 일을 명확하게 앎으로써 글의 방향이 정해지기 때문이지요. 관련 글은 아래 링크를 참고해 주세요.
각설하고 말씀드리면 ChatGPT는 내 글(자연어)를 입력받아서 결과물(자연어)을 만들어내는 함수에 불과합니다. 내가 요청한 프롬프트에 더해 AI가 학습한 정보를 조합하여 새로운 글을 생성해 내는 것이라고 생각하면 됩니다. 따라서 AI가 내 글을 보고 의도를 파악해서 내가 원하는 글을 작성하도록 유도하는 것이 프롬프트 엔지니어링의 핵심이라고 생각하시면 됩니다.
그렇다면 어떻게 해야 저의 의도대로 AI가 글을 생성하도록 '유도'할 수 있을까요? 글의 목적을 정해줌으로 AI가 의도에 맞게 작성하도록 유도할 수 있지만 조금 더 정교한 Format과 내용으로 AI가 글을 작성하도록 유도하려면 몇 가지 기술이 필요합니다. 오늘은 그 기술에서 가장 중요한 Shot의 개념에 대해 알아보겠습니다.
Shot이란?
아마 데이터 관련 업종에 종사하시는 분이 아니라면 Shot이라는 이야기는 처음 들어보셨을 것입니다. 데이터 분석에서 말하는 Shot이란 일반적으로 예제의 수를 의미한다고 생각하시면 간단합니다. 아래 예제를 볼까요?
위 이미지에서 보듯 k-way는 분류(class) 기준을 의미하고 n-shot은 해당 분류 내의 예제의 수를 의미합니다. 따라서 예제를 넣어줌으로써 AI가 패턴을 파악하는데 도움을 준다는 것이지요. 일반적으로 AI는 학습된 예제 내에서 판단을 하고 결과를 출력해 주는 것이 일반적이었다면, ChatGPT는 shot을 통해 패턴을 파악하고 패턴과 일치하는 결과물을 내보낸다는 차이가 있습니다. 예를 들어 다람쥐, 토끼, 햄스터라는 이미지를 학습한 AI가 있다고 한다면, 기존의 AI는 사진이 다람쥐인지, 토끼인지, 햄스터인지 구분하는 일을 했다면, ChatGPT는 다람쥐, 토끼, 햄스터를 분류한 기준을 갖고 수달 사진을 구분하는 일을 한다는 것이지요. 예제로 학습한 데이터가 아닌 패턴만을 파악해서 새로운 결과를 만들어 주는 것. 그것을 Few Shot Learning이라고 합니다.
Few Shot? Zero Shot?
조금 어려운 내용이었는데 간단하게 말씀드리면 Shot은 예제를 의미합니다. 아래 프롬프트를 볼까요?
너는 이제 내 문장의 감정을 이해해서 이모지 코드 형태로 번역하는 역할을 할거야.
내 요구사항은 아래와 같고 해당 순서대로 진행해줘 :
1. 내가 문장을 작성할거고 이를 하나의 감정적인 단어로 변경;
2. 변경한 단어를 바탕으로 적절한 이모지 선택;
3. 적절한 이모지 종류를 3가지 추천하여 나열;
4. 해당 감정의 파생 이모지를 추천;
5. 결과적으로 이모지 3개를 출력해 줘.
### 예시
q : 내가 개발하는데 오늘 요구사항이 변경되어 야근해야 할 것 같아.
a : 🥲😩🤬
q : 오늘 저녁에 맛있는 저녁을 먹기로 친구들과 약속했어!
a : 😆😙🥳
###
q: ChatGPT가 미래를 어떻게 바꿀지 궁금하기도 하고 두렵기도 해
a:
위 프롬프트에서 예시에 해당하는 것이 Shot입니다. 위의 그림에서 way를 줄이기 위해 요구사항을 상세하게 적었고, 2개의 shot을 줌으로써 맞춤형 데이터를 생성하도록 유도하는 것이지요. 이로 인한 결과는 아래와 같습니다.
😍😨🤔
😍 : 흥미롭고 기대되는
😨 : 두려운
🤔 : 궁금한
어떤가요? Two Shot을 통해 내가 원하는 방향으로 맞춤형 결과물을 얻을 수 있게 되었습니다. 제가 제시한 예제의 패턴대로 새로운 결과물을 만들어내는데 성공한 것을 볼 수 있습니다.
위의 예제를 보니 조금 감이 잡히시나요? 그렇다면 Few Shot과 Zero Shot에 대해 조금 더 자세하게 알아보겠습니다.
Few Shot
위에서 언급한 예시가 바로 Few Shot 입니다. 내게 맞춤형 결과물을 원할 때 예시를 듦으로써 AI가 예시와 유사도 높은 결과물을 뽑도록 유도합니다. 제공한 예시의 라벨링을 통해 답변의 범위를 제한하여 맞춤 결과를 얻을 수 있게 되는 것이지요.
우리가 일반적으로 ChatGPT를 사용하면서 Few Shot(예시)을 사용하는 경우는 아래와 같습니다.
- 답변의 형태를 지정하고 싶을 때
- 답변의 결과물이 정확하게 나와야 할 때
대체로 위 두가지 상황에서 사용하게 됩니다. 원하는 결과의 답변이 있는 경우에 보통 사용하게 됩니다. 물론 답정너라고 생각할 수 있겠지만 정해진 범위 내에서 적절한 형태의 글을 생성할 때 주로 사용하게 됩니다. 만약 Gpt를 활용하여 어떤 글을 생성하는 App을 기획하게 된다면 Few Shot을 활용하는 것이 일관된 결과를 얻는 방법이 될 수 있겠지요.
물론 Few Shot의 단점이 없는 것은 아닙니다. 예제를 상세하게 들어야 한다는 점, 그리고 overfitting 확률이 높다는 점이 Few Shot의 단점입니다. 그럼에도 Few Shot을 한다면 라벨링을 통해 AI가 더 좋은 결과물을 찾을 수 있다는 것은 상황에 따라 큰 장점이 될 수 있겠지요.
Zero Shot
일반적으로 ChatGPT를 접한 대부분은 Zero Shot으로 프롬프트를 시작합니다. Zero Shot은 기존에 AI에게 학습되어 있는 데이터를 활용하여 자유로운 글을 작성하도록 유도합니다. 지난번 예제를 가져와 볼까요?
# 프롬프트
오늘은
# 답변
2023년 7월 17일입니다. 무엇을 도와드릴까요?
'오늘은'이라는 프롬프트만 제공했는데 ChatGPT가 오늘의 날짜를 추론해서 가져오는 것을 볼 수 있습니다. 이처럼 답변 예시 없이 ChatGPT에게 질문을 하게 되면 AI가 스스로 갖고 있는 데이터를 기반으로 답변을 달아주는 것을 볼 수 있습니다. 또 다른 예시를 가져와 볼까요?
# 프롬프트
부동산 재테크 하는 방법 알려줘.
# 답변
부동산 재테크는 재정적인 안정과 장기적인 재무 성장을 위해 부동산을 투자하는 전략입니다. 아래에 몇 가지 일반적인 부동산 재테크 전략을 안내해 드리겠습니다.
1. 주택 투자: 주택을 구매하고 장기적으로 가치가 상승할 것으로 예상되는 지역에 투자합니다. 임대 수익을 얻을 수 있으며, 장기적으로 주택의 가치 상승으로 이익을 얻을 수 있습니다.
2. 상업용 부동산 투자: 사무실, 상가, 창고 등의 상업용 부동산에 투자합니다. 임대 수익을 얻을 수 있고, 장기적으로 재산 가치의 상승과 임대료의 상승으로 수익을 창출할 수 있습니다.
3. 부동산 개발: 토지나 부동산을 구입하여 부동산을 개발하고 판매하는 전략입니다. 부동산을 구입한 후 주거용 또는 상업용 건물을 건설하고, 수익을 얻을 수 있습니다.
4. 부동산 투자 신탁(REITs): 부동산 투자 신탁은 투자자들의 자금을 모아 부동산을 구매하고 운영하는 기업입니다. 투자자는 REITs를 통해 부동산 시장에 진입하고 임대 수익과 자산 가치 상승을 배당금 형태로 수령할 수 있습니다.
5. 부동산 투자 클럽: 부동산 투자 클럽은 여러 투자자들이 자금을 모아 부동산을 구매하고 관리하는 형태의 그룹입니다. 투자자들은 자산과 경험을 공유하고, 수익과 위험을 나눌 수 있습니다.
부동산 재테크를 시작하기 전에 몇 가지 고려해야 할 사항이 있습니다.
- 재정적인 목표와 투자 전략을 설정합니다.
- 부동산 시장을 연구하고 전문가의 조언을 구합니다.
- 재정적인 역량을 평가하고 예산을 계획합니다.
- 부동산 투자의 위험과 수익에 대해 충분히 이해합니다.
- 관리 및 유지 보수 비용을 고려합니다.
마지막으로, 부동산 재테크는 장기적인 투자입니다. 신중한 계획과 조사, 전문가의 도움을 받아 투자 결정을 내리는 것이 중요합니다.
내가 AI에게 묻고싶은 질문을 하면 AI가 갖고 있는 데이터를 바탕으로 이에 맞는 답변을 하는 것을 볼 수 있습니다. 이처럼 Zero Shot Prompting의 경우 AI가 갖고 있는 데이터에서 정보를 찾고 싶을 때 유용한 기법입니다. 정해진 데이터에서 검색하고 싶을 때 사용하는 기법이라고 생각하면 편할 것 같네요. 다만 답변의 품질은 보유한 데이터의 품질에 영향을 크게 받는다는 점을 인지하고 사용하셔야 합니다. ChatGPT의 경우 갖고 있는 데이터가 2021년까지밖에 안되므로 이를 알고 질문해야겠지요.따라서 Zero Shot을 활용할 때는 최신 데이터를 갖고있는 Bing Chat을 적절하게 활용하시어 답변을 얻는 것을 추천드립니다.
Zero Shot과 Few Shot은 언제 사용해야 할까?
위의 내용을 바탕으로 Zero Shot과 Few Shot을 언제 사용하는 것이 좋을까요? 모든 상황에 전부 대입할 수는 없지만 제 경험에 비추어 비교를 한다면 Zero Shot은 검색을 한 결과를 만들 때 주로 사용하고 Few Shot은 AI에게 원하는 결과를 창작하라고 요청할 때 사용한다고 보시면 됩니다. (Few Shot은 결과물의 형식을 지정할 수 있기 때문에 창작에 유리합니다.)
물론 Zero Shot도 창작하는데 사용할 수 있고, Few Shot도 검색에 사용될 수 있지만 검색과 창작 중 어떤 쪽으로 더 치중되는지에 따라서 프롬프트 기법을 선택하시면 더 나은 답변을 얻을 수 있습니다.
Zero Shot : 검색
Few Shot : 창작
마치며
오늘은 프롬프트 엔지니어의 AI에게 질문 잘하는 기술 두번째 시간으로 N Shot의 개념에 대해 알아보았습니다. 프롬프팅의 중요성이 대두되는 만큼 어떤 기법을 활용해서 답변을 얻는지도 중요해지고 있습니다. 이에 따라 오늘 배운 Zero Shot, Few Shot의 개념을 이해하고 상황에 맞게 적절히 사용할 수 있다면 답변의 퀄리티를 크게 높일 수 있지 않을까요?
앞으로도 더 나은 노하우로 찾아오겠습니다.
오늘도 긴 글 읽어주셔서 감사합니다.
'생성 AI TIP' 카테고리의 다른 글
프롬프트 엔지니어의 AI에게 질문 잘하는 기술 - 단계별로 설명해줘 (0) | 2023.07.28 |
---|---|
프롬프트 엔지니어의 AI에게 질문 잘하는 기술 - 기초 (0) | 2023.07.04 |
Stable diffusion 세상을 그림으로 가득채울 기술 (0) | 2023.06.19 |
ChatGPT Plugin 사용해보기 (0) | 2023.05.21 |
ChatGPT Prompt 작성 강의 추천 (0) | 2023.04.29 |
댓글