본문 바로가기

NLP/논문이해

[논문이해] SELF-DISCOVER: Large Language Models Self-Compose Reasoning Structures

논문명: SELF-DISCOVER: Large Language Models Self-Compose Reasoning Structures

논문 링크: https://arxiv.org/abs/2402.03620

 

Self-Discover: Large Language Models Self-Compose Reasoning Structures

We introduce SELF-DISCOVER, a general framework for LLMs to self-discover the task-intrinsic reasoning structures to tackle complex reasoning problems that are challenging for typical prompting methods. Core to the framework is a self-discovery process whe

arxiv.org

 

 

https://www.aitimes.com/news/articleView.html?idxno=157130

 

구글, LLM이 스스로 성능 향상하는 '자기 발견' 프롬프트 방식 공개 - AI타임스

대형언어모델(LLM)이 스스로 성능을 향상한다는 \'자기 발견(self-discover)\' 프롬프트 프레임워크가 등장했다. 구글 딥마인드는 이를 통해 \'GPT-4\'의 성능을 최대 32% 끌어올렸다고 주장했다.벤처비

www.aitimes.com

 

 

논문 아이디어만 정리합니다


 

3줄 요약

  • 문제: CoT 방식은 '풀어야 할 태스크에 관계 없이 냅다 근거만 생성하면 성능이 오를 꺼라는 믿음'으로 모델에게 부탁해
  • 해결: 문제마다 푸는 방식이 다 달라. 그걸 먼저 모델이 스스로 찾게 하고, 그 다음 문제를 풀어야 해
  • 성능: 겁나 올랐으니 논문 읽어봐

 

(CoT 는 Chain-of-Thoughts 의 줄임말인데, 그래도 모르겠다 싶으시면 검색해서 꼬옥 기초부터 다지고 오셔야 합니다)

 

 

방법

 

  • 어어 겁먹지 말고 예제니까 천천히 읽어보면 된다.
  • Task 를 보자. 'Reasoning colored objects' 라고 적혀 있다. 번역기 돌려봐도 애매해서 대충 '대상들을 색깔별로 구분하기/추론하기' 라고 생각하자.

 

Stage1

  • Language Model: 필수 준비물이다. 당연히 언어모델 기술이니까 언어모델 쓰겠지...?
  • Task: 아까 위에서 요약했듯이, 이 논문은 task 마다 고유한 해결책이 있으니까 task 가 무엇인지 알아야 한다.
  • Atomic Reasoning Modules: 원자? 모듈? 이게 뭐야....나도 그랬다. 대충 의역해보자면 '핵심적인 추론 능력' 이라고 생각하면 된다. Atomic 은 진짜 기본적으로, 그냥 태어나서 갖고 있는 이런 의미로 보면 될 것 같고. 모듈은 능력, 기능 그냥 내가 갖고 있는 거다. 본 논문에선 언어모델이 기본적으로 “breakdown into sub tasks” and “critical thinking” 을 탑재하고 있다고 본다. 그러니까 큰 문제를 작은 문제로 나누는 능력과 비판적 사고가 가능하다고 보는 것이고 이걸 atomic reasoning modules 라고 부른다.
  • Self - Discover: 이 3가지 준비물을 통해 Self-Discover 를 한다. Self 가 붙으면 모델이 인간의 도움 없이 스스로 한다고 보면 된다. 옆에 파란 상자 'Reasoning Structure' 를 보니, Task 를 풀기 위해 조사해야 할 항목들이 적혀 있다.
  • 이게 핵심이다. 언어모델 보고 직접 이 문제를 풀기 위해서 필요한 것들을 알아내라고 하는 것이다.

 

Stage2

  • 이제 Stage 1 에서 얻은 걸 함께 언어 모델에게 제공하면, 언어 모델의 성능이 좋아진다고 한다.

 

 

그래서 Stage 1 어떻게 하는 건데?

: 대충 느낌은 얻었는데, 그래도 조금 더 자세하게 알려줘. 언어모델한테 뭐라고 프롬프트를 줘야 하는 거지?

 

 

  • Stage 1 은 사실 3단계로 이뤄진다. 핵심만 정리한다고 했으니 대충 써보겠다.
  • SELECT: 사실 Module 은 여러개니까 골라야 한다. 이것도 언어 모델 보고 고르라고 한다
  • ADAPT: 고른 모듈을 태스크에 맞게 구체적으로 변경하도록 한다
  • IMPLEMENT: 실행가능한 플랜 구조(JSON) 형태로 바꿔달라고 한다
  • 솔직히.... 영어를 못해서 그런가, 말을 왜 이렇게 어렵게 하는지 그림 없었으면 이해 못할 뻔...

 

Appendix

  • 실제 프롬프트는 이런 식으로 넣는 것 같다

 

여튼 핵심은 파악했으니 됐다. 다만, 이 방법 쓰려면 언어모델을 최소 4번은 돌려야 하는 거 아니야? 사실 대충 이해한 거니까 틀린 부분 있다면 언제든지 알려주세요!