논문명: SELF-DISCOVER: Large Language Models Self-Compose Reasoning Structures
논문 링크: https://arxiv.org/abs/2402.03620
https://www.aitimes.com/news/articleView.html?idxno=157130
논문 아이디어만 정리합니다
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) 형태로 바꿔달라고 한다
- 솔직히.... 영어를 못해서 그런가, 말을 왜 이렇게 어렵게 하는지 그림 없었으면 이해 못할 뻔...
- 실제 프롬프트는 이런 식으로 넣는 것 같다
여튼 핵심은 파악했으니 됐다. 다만, 이 방법 쓰려면 언어모델을 최소 4번은 돌려야 하는 거 아니야? 사실 대충 이해한 거니까 틀린 부분 있다면 언제든지 알려주세요!