생성 AI TIP

프롬프트 엔지니어의 AI에게 질문 잘하는 기술 - 단계별로 설명해줘

Neehoot 2023. 7. 28.

오늘은 AI에게 질문 잘하는 기술 세 번째 '단계별로 설명해줘'에 대해 이야기해보려고 합니다. 이전 이야기는 아래 링크를 참조해 주세요.

 

프롬프트 엔지니어의 AI에게 질문 잘하는 기술 - 기초

프롤로그 혹시 ChatGPT를 어떻게 사용하는지 아시나요? 생성 AI와 관련된 블로그를 작성하고, 대기업에서 사내 ChatGPT 강의를 진행하면서 생각보다 많은 사람들이 ChatGPT에 대한 관심은 많지만 이를

neeeez.com

 

 

프롬프트 엔지니어의 AI에게 질문 잘하는 기술 - N Shot

프롤로그 오늘은 AI에게 질문 잘하는 기술 두 번째 시간으로 N Shot에 대해 이야기해 보려고 합니다. 프롬프트를 구성할 때 가장 중요한 것은 AI에게 역할을 주어주는 것입니다. AI가 해야 할 일을

neeeez.com

 

들어가기에 앞서

AI의 변화 발전이 심상치가 않습니다. 패권을 쥐기 위해 구글, MS, OpenAI, X.AI등이 대규모 초 거대 AI를 만들고, Meta는 오픈소스 진영에 모델을 제공함으로 새로운 판을 짜려고 하고 있는 것 같은데요. 앞으로 이러한 모델을 활용한 기업들, 서비스들이 우후죽순 생겨나지 않을까 합니다. 하지만 AI가 못하는 분야가 있는데요. 대표적으로 수학 계산 같은 연산에 취약한 부분이 있습니다. 결론을 그럴듯하게 만들어내지만 동시에 그 과정이 틀려서 이상한 결론을 도출하는 경우가 종종 발생하곤 합니다. 아래 예시를 볼까요?

 

# 프롬프트

저는 시장에 가서 사과 10개를 샀습니다. 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 사과 5개를 더 사서 1개는 제가 먹었습니다. 저는 몇 개의 사과를 가지고 있었나요?

# 결과

시작할 때 10개의 사과를 샀습니다.
이웃에게 2개를 주었으므로 남은 사과는 10 - 2 = 8개입니다. 수리공에게 2개를 주었으므로 남은 사과는 8 - 2 = 6개입니다.
그리고 추가로 5개의 사과를 더 샀으므로 남은 사과는 6 + 5 = 11개입니다.
따라서, 최종적으로 당신은 11개의 사과를 가지고 있었습니다.

그럴듯하게 결론에 도달한 것 같지만 결과적으로 정답은 틀렸습니다. 오늘은 이러한 추론에 약점이 있는 GPT에게 더 정확한 결과를 얻을 수 있는 '단계별로 설명해줘' 기법에 대해 이야기해 보겠습니다.

 

생각은 어떻게 이루어질까?

AI는 인간보다는 조금 허술하게 결론을 도출합니다. 주어진 문제의 결론을 도달하는 과정에서 특정 단계를 생략하거나, 잘못된 방향으로 사고하기도 하지요. 일반적으로 결론에 도달하기 위해서는 아래와 같은 과정을 거치게 됩니다.

  • 인식: 뇌는 감각 정보나 기억을 인식하고, 이를 인지적 범주나 개념으로 분류합니다. 예를 들어, 눈으로 보는 것을 색깔이나 모양으로 인식하거나, 듣는 것을 소리나 의미로 인식합니다.
  • 주의: 뇌는 인식한 정보 중에서 중요하거나 관심 있는 것에 주의를 집중합니다. 예를 들어, 수업 시간에 선생님의 말씀에 집중하거나, 도서관에서 책을 읽을 때 주변 소음을 무시합니다.
  • 기억: 뇌는 주의한 정보를 장기 기억으로 저장하거나, 장기 기억에서 필요한 정보를 검색합니다. 예를 들어, 시험 공부를 할 때 배운 내용을 기억하거나, 시험 문제를 풀 때 알맞은 답을 찾아냅니다.
  • 판단: 뇌는 기억한 정보를 바탕으로 판단을 내립니다. 예를 들어, 어떤 사람이나 상황에 대해 좋다 나쁘다, 옳다 그르다, 찬성한다 반대한다 등의 평가를 합니다.
  • 추론: 뇌는 기억한 정보와 판단을 바탕으로 추론을 합니다. 예를 들어, 어떤 원인이나 결과, 규칙이나 법칙, 가설이나 예측 등을 도출합니다.
  • 문제 해결: 뇌는 기억한 정보와 판단과 추론을 바탕으로 문제 해결을 합니다. 예를 들어, 어떤 목표에 도달하기 위해 필요한 단계나 방법, 자원이나 도구 등을 결정하고 실행합니다.
  • 창의성: 뇌는 기억한 정보와 판단과 추론과 문제 해결을 바탕으로 창의성을 발휘합니다. 예를 들어, 새로운 아이디어나 작품, 발명품 등을 생각하고 만드는데 창의성을 발휘합니다.

위의 단계에서 AI는 '추론' 단계에서 취약한 점을 갖고 있습니다. 인식, 주의, 기억, 판단의 단계는 어느 정도 잘하는 부분이 있으나 추론하는 과정에서 오류를 발생하는 경우가 많이 있지요. 따라서 수학문제같이 기억한 정보와 판단을 바탕으로 정확하게 추론해야 하는 부분에서 오류를 발생하는 모습을 보여주기도 합니다. 위 프롬프트 예제를 한번 볼까요?

# 프롬프트

저는 시장에 가서 사과 10개를 샀습니다. 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 사과 5개를 더 사서 1개는 제가 먹었습니다. 저는 몇 개의 사과를 가지고 있었나요?

# 결과

시작할 때 10개의 사과를 샀습니다.
이웃에게 2개를 주었으므로 남은 사과는 10 - 2 = 8개입니다. 수리공에게 2개를 주었으므로 남은 사과는 8 - 2 = 6개입니다.
그리고 추가로 5개의 사과를 더 샀으므로 남은 사과는 6 + 5 = 11개입니다.
따라서, 최종적으로 당신은 11개의 사과를 가지고 있었습니다.

단계별로 보면 제가 1개를 먹은 부분을 빼먹었네요. 이렇게 상황을 인지하고 판단하는 부분에는 강점이 있으나 이를 추론해서 결론을 도달하는 과정에서 약한 모습을 보여주고 있습니다. 그렇다면 이러한 문제를 어떻게 보완할 수 있을까요?

 

Chain of Thought(CoT) 프롬프팅

출처 : Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, Wei et al. (2022)

위의 추론 문제를 해결하기 위한 방법으로 Chain of Thought 프롬프팅 기술을 활용하면 정확한 답에 가깝게 도출할 수 있게 됩니다.

위의 문제의 경우는 한줄만 추가하면 정답에 도달할 수 있게 됩니다. 아래 예제를 볼까요?

# 프롬프트

저는 시장에 가서 사과 10개를 샀습니다. 저는 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 사과 5개를 더 사서 1개는 제가 먹었습니다. 사과가 몇 개나 남았나요?
차근차근 생각해 봅시다.

# 결과

좋습니다! 차근차근 생각해보겠습니다.
1. 처음에 사과를 10개 구매합니다.
2. 이웃에게 2개를 주었으므로 남은 사과는 10 - 2 = 8개입니다.
3. 수리공에게 2개를 주었으므로 남은 사과는 8 - 2 = 6개입니다.
4. 그리고 추가로 사과 5개를 더 구매합니다. 남은 사과는 6 + 5 = 11개입니다.
5. 하지만 마지막으로 1개를 제가 먹었으므로 최종적으로 남은 사과는 11 - 1 = 10개입니다.
따라서, 최종적으로 사과는 10개가 남게 됩니다.

저는 원래 프롬프트에 '차근차근 생각해 봅시다.' 한 줄만 추가한 것밖에 없는데 결과적으로 정답을 도출하는 모습을 보여주고 있습니다.

결론을 도달하는 과정에서 문장이 길어지게 된다면 추론하는 단계에서 오류를 발생하게 되는데요, 이를 보완하기 위해 각 단계를 세분화해서 문제를 해결하도록 유도하는 것이지요. 추론을 어려워하는 AI에게 더 쉽게 추론할 수 있도록 유도하는 것입니다. Chain of Thought(생각의 사슬)은 복잡한 문제를 해결하기 위해 연속적인 추론을 하도록 유도함으로써 AI가 사고하는데 도움을 주는 기법입니다. 만약 결론에 도달하는 과정에서 오류가 발생한다면 Chain of Thought 기법을 사용하는 것이 더 나은 결론에 도달하는 방법이 될 수 있겠습니다.

 

Chain of Thought의 한계

모델에 Chain of Thought 예시를 몇 개 제공하면, 모델이 새로운 문제에 대해 자동으로 Chain of Thought를 생성할 수 있음을 보였습니다. 이 방법은 다양한 상황에서 성능을 향상할 수 있습니다. 하지만 Chain of Thought에도 한계점이 있습니다.

  1. Chain of Thought는 언어 모델이 실제로 추론을 하는 것이 아니라, 사람이 작성한 추론 단계를 흉내내는 것일 뿐입니다. 즉, 언어 모델은 문제를 이해하고 해결하는 능력을 갖춘 것이 아니라, 문제와 유사한 패턴을 찾아서 답을 생성하는 것입니다. 따라서, Chain of Thought가 적용되지 않은 새로운 유형의 문제에 대해서는 성능이 떨어질 수 있습니다.
  2. Chain of Thought는 언어 모델의 크기가 클수록 효과적입니다. 작은 언어 모델은 Chain of Thought 예시를 충분히 기억하고 활용할 수 없기 때문에, 성능이 낮게 나올 수 있습니다. 또한, Chain of Thought 예시의 개수와 질도 중요합니다. 예시가 적거나 잘못된 경우에는 언어 모델이 올바른 Chain of Thought를 생성하지 못할 수 있습니다.
  3. Chain of Thought는 사람이 언어를 이용하여 해결할 수 있는 태스크에만 적용할 수 있습니다. 예를 들어, 이미지 인식이나 음성 인식과 같은 태스크에는 Chain of Thought가 적합하지 않습니다. 또한, 언어 모델이 자신의 추론 과정을 설명하는 능력은 갖추지 못했습니다. 즉, 어떤 단계가 왜 필요한지, 어떤 규칙이나 원리에 기반한지 등을 알려주지 못합니다.

마치며

오늘은 Chain of Thought(생각의 사슬)을 통해 AI의 성능을 향상시킬 수 있는 방법에 대해 이야기해 보았습니다. '단계별로 설명해 줘'라는 요청에 대해 AI가 어떻게 결론에 도달하게 되는지 간단한 예제를 들어 설명해 보았는데요. OpenAI에 따르면 추론 단계별 보상훈련을 통해 AI의 잘못된 결론(Hollucination)을 줄일 수 있을 것이라고 합니다. (관련 내용은 해당 논문을 참고해 주세요.)

오늘의 생각의 사슬을 AI에게 적용하는 과정이 점점 인간의 사고와 유사하다는 생각이 들지 않나요? AI가 점차 추론능력이 발달함에 따라서 지식산업의 많은 부분이 대체되어 갈 수 있지 않을까 생각됩니다. 점점 발전하는 AI 속에서 인간의 역할의 변화와 적응의 방향이 어디로 향해야 하는지 고민이 되기 시작합니다. 그렇다면 우리는 AI가 하지 못하는 어떤 부분을 채워야 할까요?

 

오늘도 긴 글 읽어주셔서 감사합니다.

 

 

 

 

댓글

💲 추천 글