inference-time, RLHF/search (language)

graph of thought 논문 리뷰 (GoT)

jinuklee 2024. 7. 19. 01:37

 

기존의 related work

CoT- SC (여러개의 CoT 생성후 best를 선택)

ToT (LLM의 reasoning 과정을 tree형태로 모델링)

 

GoT

---------------------

사고의 다양한 과정을 사용, 또한 이전의 사고(thought)으로 backtrack도 가능하게함

 

하지만 사고라는 과정 자체를 rigid한 tree 구조에만 제한했다는 한계가 존재

 

이 연구에서 우리는 LLM의 사고가 임의의 그래프 구조를 형성할 수 있게 함으로써 근본적으로 더 강력한 프롬프팅을 달성할 수 있다고 주장

 

e.g)

이는 인간의 추론, 뇌 구조, 또는 알고리즘 실행과 같은 다양한 현상에서 동기를 얻었다.

 

새로운 아이디어를 작업할 때, 인간은 단순히 사고의 연쇄(CoT에서처럼)를 따르거나 서로 다른 별개의 사고(ToT에서처럼)를 시도하는 것이 아니라, 실제로 더 복잡한 사고의 네트워크를 형성할 것이다.

 

예를들어)

특정 reasoning chain을 탐색하고, 되돌아가서 새로운 것을 시작한 다음, 이전 chain의 특정 아이디어가 현재 탐색 중인 것과 결합될 수 있다는 것을 깨닫고, 두 가지를 새로운 해결책으로 병합하여 각각의 강점을 활용하고 약점을 제거할 수도 있다

 

GoT는 (G, T , E, R)로 모델링 될수 있느데 

G는 LLM reasoning process

T는 thought transformations

E는 evaluator function

R은 ranking function

 

자세히 설명하면

GoT에서는 사고(thought)들이 점(vertices)로 선(edges)은 관계를(dependancy)를 나타낸다

G = (V, E) 가 현재 상태의 그래프고

Thought (G, pθ) = G′ = (V ′ , E′ ) 가 되는데 이와 함께 vertice, edge 또한 업데이트

e.g ) V ′ = (V ∪ V +) \ V −

(각 step마다 V와 V+를 합집합(∪) 그 다음, 이 합집합에서 V−를 제거(차집합, )

이 새로운 V(vertice)를 생성하기 위한 방법에는

 

1. Aggregation Transformations

2. Refining Transformations

3. Generation Transformations

 

가 있다.

 

이렇게 생성된 v가 좋은 사고(thought)인지 평가해야한다

Evaluation(v, G, pθ) = score

 

이를 통해 순위를 세울수 있다

v1, ..., vh = R(G, pθ, h) 

h는 그냥 highest score thought 순서대로 h개 의미

 

예시)

글쓰기시

V에는 실제 paragraph, 혹은 paragraph작성에 대한 계획 등이 속할 수 잇는데 이를 class로 {plan, paragraph} 이런식으로 mapping

 

 

 

아키텍쳐

1. controller -  transformation( 전체 reasoning 과정을 조정하고 진행 방향을 결정하는 역할)

2. parser - extractor

3. scoring module

4. prompter

 

controller는 2가지 요소를 가지고 잇는데

1. Graph of Operations (GoO) 

정적 구조(static structure)

주어진 task의 그래프 decompose

즉, LLM 사고에 적용될 transformation을 추천( + order& dependency)

2. Graph Reasoning State (GRS)

동적 구조

현재 진행되는 LLM reasoning과정을 유지(maintain)

= 지금까지 한 사고(thought)와 그 state들의 기록관리 

GoO:

1. Merge the 4 NDAs into a single one 5 times; Score each attempt and keep the best 3

2. Aggregate the merge attempts into a single one 5 times; Score each aggregation attempt and keep the overall best attempt (including Step 1)

3. Improve the merged NDA 10 times; Score each and keep the best

 

 

 

실제 github 코드