끄적

CoT와 Zero-Shot CoT

uvumbu 2025. 1. 6. 15:49

 

Chain of Thought

사고하는 과정을 프롬프트에 넣어보자! 라는 아이디어에서 출발한다.

 

우리가 예시를 줄 때, 결과를 도출하는 과정 자체를 프롬프트에 넣는 것이다.

 

ex

일반 : 답은 10개다.

CoT : 6개의 공과 2개의 공이 들어 있는 캔 2개가 있으므로, 답은 10개다.

 

 

이렇게 과정을 출력하기 위해서 스탭을 밟는다.

사고의 흐름을 모사하다보니, 자신의 논리를 쌓다보니 생성된 논리에 의해서 좀 더 정답률이 오르게 되고, 복잡했던 문제도 풀 수 있다는 것을 확인할 수 있다.

 

 

주의점

 

(1) CoT는 자연어 형태일 때 가장 효과적이다.

  • LLM 자체가 자연어 기반으로 사전 학습하다 보니 수식으로 푸는 것보다는 말로 설명하면서 푸는 것이 LLM에게 좀 더 친숙한 형태다.
  • 따라서 '식만 입력'하거나 '변수 계산'만 할 경우에는 효과가 없다.

 

(2) 답을 먼저 적고 이유를 적는 경우 효과가 없다.

  • CoT는 근거 스탭을 차근차근 밟고 나가다가 복잡한 문제를 푸는 것이다.
  • 그런데 답을 먼저 뱉고 스탭을 밟는 것은 의미가 없다.

 

(3) CoT는 Emergent ability다.

  • 때문에 큰 모델에서만 효과를 발휘한다.

 

단점

  • 예시가 적어도 하나는 필요하다.

 

그렇다면 이런 예시 없이 CoT를 어떻게 할 지 고민하게 된다.

이를 위한 것이 바로 Zero Shot Chain of Thought다.

 

 

 

 

 

 

Zero Shot Chain of Thought

우리가 하고 싶은 것은 사고의 흐름을 만드는 것이다.

그러니 모델이 예시를 통해 유도하는 것이 아닌, 모델이 사고 흐름을 뱉지 않으면 참을 수 없는, 그런 프롬프트를 넣어서 사고의 흐름을 만들자는 아이디어다.

 

  • 질문을 넣고, 답변 부분에 다음과 같이 입력하는 것이다. '차근차근 생각해보자.'
  • 그렇게 하면 Step by Step으로 설명할 것이다.

 

다만, 답의 추출이 어려울 수 있다.

사고 흐름을 만드는 과정에서 답을 어떻게 뱉을지에 대해 말하지 않았다.

때문에 답 자체는 흐름 속에 있을 수 있지만, 그들 중 어떤 것이 정답인지를 모르는 문제가 발생할 수 있다.

 

이에 대한 해결방안은 간단하다.

  • 생성이 끝나고 나서 우리는 다음과 같은 프롬프트를 추가하면 된다. '따라서 정답은 (아라비아 숫자)야.'

 

 

주목할만한 점

  • Zero Shot CoT는 Zero Shot 보다 다양한 분야에서 높은 정확도를 보인다.
  • 단, 쉬운 문제보다 복잡한 문제에서 더 두각을 드러낸다.
  • Few Shot CoT 보다는 정확도가 낮으나, 예시를 요구하지 않는다는 점에서 장점이다.
  • Zero Shot CoT로 여러 예시를 생성한 후 그 예시로 Few Shot CoT를 하면 정확도가 상승한다.
  • 근거 도출을 위한 프롬프트는 그 이후에 이유가 나올만할 떄, 효과가 있다.
    • 의미가 없거나 잘못된 지시를 제시할 경우 효과는 없다.
  • Zero Shot CoT는 큰 모델에서만 작동한다.

 

 

 

'끄적' 카테고리의 다른 글

LLM 응용 : LLM Agent, Visual ChatGPT  (1) 2025.01.07
Self-Consistency  (0) 2025.01.06
모델 평가  (0) 2024.12.18
Github Action  (0) 2024.12.17
환경 분리와 배포  (2) 2024.12.17