본문 바로가기
Groups - Lead/Kaggle Korea - Study - CMYK

3. Prompt : Self Consistency (with Few Shot + CoT)

by Finn# 2024. 2. 29.
728x90

2024. 2. 26

역시나 지난 게시글에 이어 CMYK 스터디 2기 첫번째 활동에 대해서 리뷰해보겠습니다.

이번 시간에는 지난 번에 다뤘던 Zero/One/Few Shot에 Chain of Thought 에 여러 CoT 중 특정 기준에 의해서 가장 적합한 CoT를 채택하여 답변을 생성하도록 유도하는 Self-Consistency에 대한 예를 다뤄보려고 합니다. 사실 논문들도 review해봐야겠지만.. 이는 따로 정리해서 댓글에 추가해보도록 하겠습니다. 이번 내용부터는 이전에 다뤘던 내용들에 대해서 이해하고 오셔야하기 때문에 아래 게시글들을 보고 오시는 것을 추천드립니다. 어렵지않은 개념들이라 빠르게 보고오시면 좋을 것 같습니다.

 

2024.02.29 - [KaKR - CMYK] - 1. Prompt : Zero/One/Few Shot

 

1. Zero/One/Few Shot

2024. 2. 26 CMYK 스터디 2기 첫번째 활동이었습니다. 발표는 한시간동안 진행되었고 LLM에서 Fine-Tuning을 하지않아도 NLP Task를 수행할 수 있게 만들어주는 zero/one/few shot에 대한 이야기와 발전하는 promp

finns-know-how.tistory.com

2024.02.29 - [KaKR - CMYK] - 2. Prompt : CoT (with Zero/One/Few Shot)

 

2. CoT (with Zero/One/Few Shot)

2024. 2. 26 지난 게시글에 이어 CMYK 스터디 2기 첫번째 활동에 대해서 리뷰해보겠습니다. 이번 시간에는 지난 번에 다뤘던 Zero/One/Few Shot에 Chain of Thought 정보를 추가하는 Prompt에 대해서 알아보겠습

finns-know-how.tistory.com


프롬프트 작성 지침

(1) 지침은 명확하고 구체적으로

(2) 간결하게 작성

(3) 행동 동사 사용(action verbs) - 행동 동사로 명령 요소를 시작 "Summarize the given text"

(4) 충분한 맥락을 제공 - 충분한 배경 정보를 제공

(5) 구분 기호(delimiter) 사용 • 프롬프트의 다른 요소를 분리해서 프롬프트를 더 잘 이해할 수 있도록 도움.

(6) 톤 지정 - 생성된 출력의 스타일, 형식 및 전반적인 감정을 결정함

(7) 형식 지정 - 지정된 형식이 없으면 임의의 방식으로 응답을 생성함

(8) 제약 조건 지정- LLM의 응답 범위를 제한하여 관련성을 유지하고 특정 요구에 초점을 맞추도록 제어

(9) 예시 사용- 주어진 예시와 일치하는 출력을 이해하고 생성할 수 있도록 구체적인 지침을 제공할 수 있음


Self Consistency Exp

: 지난 시간에 배웠던 내용들에 대해서 생각해보면 CoT를 통해 LLM이 사고회로에 기반하여 Naive한 답변을 생성하려고 하는 경향을 보인다는 것을 알 수 있었습니다. 이 때, 하나의 문제에 대해서도 여러 개의 CoT를 제시할 때에 대해 생각해보면 어떠한  기준(예로 Greedy)에 의해서 답변을 생성하게 된다면 좀 더 Robust한 답변이 가능해지고 복잡한 추론도 가능할 것이라 기대해볼 수 있을 겁니다. 다만, 항상 옳은 답변을 하는 것은 아니니 적절한 알고리즘을 만들어두고 결과를 모니터링하는 것이 중요해보입니다. (인터넷에 나와있는 다양한 예제들은 더이상.. 똑똑해진 GPT에게 통하지 않습니닼ㅋ..)

 

더보기

ChatGPT Python API

사용한 ChatGPT API와 코드는 다음과 같습니다.

openai 공식 홈페이지에 가면 자세한 정보를 참고해보실 수 있습니다.

 

 

먼저 Self-Consistency  Exp의 condition에 대해서 이야기해보면 Few Shot + CoT Prompt를 독립적으로 여러번 질의했을 때 생성되는 결과들을 종합합니다. 인터넷에서 다루고 있는 많은 예제들은 과거 자료를 바탕으로 진행된 부분이다보니. 현재 시점(2024.02)에서 gpt-3.5-turbo는 그냥 첫 물음부터 완벽한 답변을 합니다. 그래서 적절한 예제를 찾기 위해 직접 예제문항을 만들어보았습니다.

 

문제 정의 및 Zero Shot 답변

기본적으로 이같은 문제가 있다고 해봅시다.

 

우선 Zero Shot으로 질문을 했을 때 생성된 답변으로는 "고양이는 음식에 대한 갈망이 강하기에 더 주라고 생각할 것이다. "라는 답변을 하고 있습니다. 이를 이제 Few Shot + CoT Prompt로 여러번 독립적으로 질문을 해보았을 때 바뀌는 답변들을 종합해보겠습니다.

 

 

Few Shot + CoT의 다양한 답변 생성

Few Shot으로는 기분과 관련된 다양한 QA 데이터를 넣어주었습니다.

 

이번에는 답변으로 "간식을 즐기고 있어서 기분이 좋을 것이다" 또는 "더 먹고 싶어할 수도 있다" 라고 이야기하고 있습니다.

동일한 Prompt로 여러번 답변을 생성해보겠습니다. (Self-Consistency의 핵심은 동일한 Prompt를 독립적으로 여러번 시행했을 때의 결과를 종합하는 것이기에 항상 동일한 답변을 하는 것은 실험에 큰 의미가 없습니다. 이미 Robust하기 때문입니다.)

 

동일한 질문을 해보았습니다.

 

동일한 질문을 해보았을 때, 이번에는 "기분좋게 즐기고 있을 것이다" 라고 답변해주었습니다.

이제는 답변은 생략하고 동일한 Prompt로 여러번 질문했을 때의 결과만 제시해보도록 하겠습니다.

 

 

더 먹고 싶어할 것이다.

 

만족해하고 행복한 상태일 것이다.
만족하고 편안한 상태일 것이다.
만족해하고 행복해하고 있을 것이다.
만족스럽고 기분이 좋은 상태일 것이다.

 

 

 여러 개의 답변 결과를 확인해보면 대체로 LLM이 생성한 결과가 "만족스럽고 행복한 상태일 것이다" 라는 답변에 Robust한 결과를 가진다는 것을 알 수 있습니다. 따라서 Self-Consistency에 기반하여 생성된 결과를 종합해보면 "고양이가 간식을 먹고 서있을 때 기분 상태는?" 이라는 답변에 " 만족스럽고 기분이 좋은 상태일 것이다" 라는 답변이 강건한 답변이 될 수 있다는 것을 알 수 있습니다.

 

 

  사실 이런 원리로 동작하는 것이라면 Zero Shot + CoT와 One Shot + CoT에도 Self-Consistency를 활용해서 동일한 과정으로 문제를 풀어볼 수도 있다는 것을 생각해볼 수 있습니다. (Zero Shot + CoT, One Shot + CoT에도 적용할 수 있는 개념이라 생각합니다)

 

 

 이상으로 CMYK 첫번째 발표에 대해 조사한 자료를 마치도록 하겠습니다. 추후에 업로드 될 Prompt는 이후 추가로 조사한 내용들에 대해 다뤄보도록 하겠습니다.


울집 고양이 망고도 기분이 좋을까요?

 


발표 영상 (2024.02.24)

 

 


CMYK 로고

insta : https://www.instagram.com/f.inn_sharp/

반응형