AI바라기의 인공지능
LLM : 논문리뷰 : Marco-o1: Towards Open Reasoning Models for Open-Ended Solutions 본문
LLM : 논문리뷰 : Marco-o1: Towards Open Reasoning Models for Open-Ended Solutions
AI바라기 2024. 12. 3. 18:52최근 GPT-o1 출시 이후 추론 모델이 오픈소스로 하나둘씩 나오기 시작하였습니다. qwq와 같은 오픈소스도 있지만 Marco-o1은 그 중 먼저 공개된 paper 이기 때문에 먼저 리뷰를 시작합니다.
abstract
현재 OpenAI의 o1은 large reasoning models (LRM) 연구에 대한 관심을 급증시키고 있습니다. 이러한 추세를 기반으로 Marco-o1은 수학, 물리학, 코딩과 같이 reinforcement learning (RL)에 적합한 표준 답변이 있는 분야뿐만 아니라 개방형 해결에 더 중점을 둡니다. 우리는 "o1 모델이 명확한 기준이 없고 보상을 정량화하기 어려운 광범위한 영역으로 효과적으로 일반화될 수 있을까?"라는 질문에 답하고자 합니다. Marco-o1은 복잡한 실제 문제 해결 작업에 최적화된 Chain-of-Thought (CoT) fine-tuning, Monte Carlo Tree Search (MCTS), reflection 메커니즘 및 혁신적인 추론 전략을 기반으로 합니다.

현재 업계에서 핫한 r의 갯수를 맞추는 문제인데, 잘 맞추는 모습입니다.
1. Introduction
OpenAI는 최근 뛰어난 추론 능력으로 유명한 획기적인 o1 모델 [OpenAI, 2024, Zhong et al., 2024]을 소개했습니다. 이 모델은 AIME 및 CodeForces와 같은 플랫폼에서 다른 주요 모델을 능가하는 뛰어난 성능을 보여주었습니다. 이러한 성공에 영감을 받아 복잡한 실제 문제를 해결하기 위해 LLMs의 경계를 더욱 넓히고 추론 능력을 향상시키는 것을 목표로 합니다.
OpenAI의 o1에서 영감을 받아 현재 불분명한 large reasoning models (LRM)의 기술 로드맵을 밝힐 수 있는 잠재적인 접근 방식을 모색하고자 합니다. Marco-o1은 CoT fine-tuning [Wei et al., 2022], MCTS [Wei et al., 2022, Feng et al., 2023, Silver et al., 2017] 및 Reasoning Action Strategies와 같은 고급 기술을 활용하여 추론 능력을 향상시킵니다. 그림 2에서 볼 수 있듯이 필터링된 Open-O1 CoT 데이터 세트 [OpenO1 Team, 2024], Marco-o1 CoT 데이터 세트 및 Marco-o1 Instruction 데이터 세트를 결합하여 Qwen2-7B-Instruct [Yang et al., 2024]을 fine-tuning함으로써 Marco-o1은 복잡한 작업 처리를 개선합니다. MCTS를 사용하면 상위 𝑘개의 대체 토큰의 softmax 적용 로그 확률에서 파생된 신뢰도 점수를 사용하여 여러 추론 경로를 탐색하여 모델을 최적의 솔루션으로 안내할 수 있습니다. 또한, 우리의 추론 행동 전략에는 검색 효율성과 정확성을 최적화하기 위해 단계 및 미니 단계 내에서 행동의 세분성을 변경하는 것이 포함됩니다.
예비 실험 결과, 우리 모델이 o1과 유사한 추론 특성을 보일 수 있음을 보여줍니다. 또한 Marco-o1은 MGSM (영어) 데이터 세트에서 +6.17%, MGSM (중국어) 데이터 세트에서 +5.60%의 정확도 향상을 달성하여 향상된 추론 능력을 보여줍니다 [Shi et al., 2022]. 또한 번역 작업에서 Marco-o1이 속어 표현을 번역하는 데 탁월하다는 것을 보여줍니다. 예를 들어, 이 모델은 문자 그대로 "이 신발은 똥을 밟는 느낌을 제공합니다"를 의미하는 중국어 구어체 표현을 영어 "이 신발은 편안한 밑창을 가지고 있습니다"로 정확하게 번역하여 구어체 뉘앙스에 대한 뛰어난 이해를 보여줍니다. 현재 우리의 주요 기여는 다음과 같습니다.
- CoT 데이터를 사용한 Fine-Tuning: 오픈 소스 CoT 데이터 세트와 합성 데이터를 결합하여 기본 모델에서 전체 매개변수 fine-tuning을 수행하여 Marco-o1-CoT를 개발합니다.
- MCTS를 통한 솔루션 공간 확장: 모델의 출력 신뢰도를 사용하여 검색을 안내하고 솔루션 공간을 확장하는 LLM과 MCTS (Marco-o1-MCTS)를 통합합니다.
- 추론 행동 전략: MCTS 프레임워크 내에서 다양한 행동 세분성을 탐색하고 모델이 자기 반성하도록 촉구하는 것을 포함하여 새로운 추론 행동 전략과 반성 메커니즘 (Marco-o1-MCTS 미니 단계)을 구현하여 모델의 복잡한 문제를 해결하는 능력을 크게 향상시킵니다.
- 번역 작업의 응용: 다국어 및 번역 영역에서 추론 시간 스케일링 법칙을 탐구하여 기계 번역 작업에서 LRM을 처음으로 조사합니다.
Introduction 정리 노트
목표:
- OpenAI의 o1 모델에서 영감을 받아 large reasoning models (LRM) 의 추론 능력을 향상시키는 것을 목표로 함.
- 복잡한 실제 문제를 해결할 수 있는 LRM 개발.
- o1 모델의 기술 로드맵을 밝히는 데 기여.
핵심 기술:
- CoT fine-tuning: Chain-of-Thought 방식으로 fine-tuning하여 모델의 추론 능력 향상.
- MCTS: Monte Carlo Tree Search를 사용하여 다양한 추론 경로 탐색.
- Reasoning Action Strategies: 추론 단계의 세분성을 조절하여 검색 효율성과 정확성을 최적화.
주요 성과:
- o1-like reasoning characteristics: 예비 실험에서 o1과 유사한 추론 특성을 보임.
- MGSM 데이터 세트 정확도 향상: MGSM (영어) 데이터 세트에서 +6.17%, MGSM (중국어) 데이터 세트에서 +5.60% 정확도 향상.
- 뛰어난 번역 능력: 속어 표현을 정확하게 번역하는 등 뛰어난 번역 능력 보유.
2. Marco Reasoning Datasets
Marco-o1 모델의 추론 능력을 향상시키기 위해 다양한 데이터 세트를 사용하는 Supervised Fine-Tuning (SFT) 전략을 사용합니다.
- Open-O1 CoT Dataset (Filtered) [OpenO1 Team, 2024]: 휴리스틱 및 품질 필터링 프로세스를 적용하여 Open-O1 프로젝트의 CoT 데이터 세트를 개선합니다. 이러한 개선을 통해 모델은 구조화된 추론 패턴을 효과적으로 채택할 수 있습니다.
- Marco-o1 CoT Dataset (Synthetic): MCTS를 사용하여 Marco-o1 CoT 데이터 세트를 생성하여 복잡한 추론 경로를 공식화하고 모델의 추론 능력을 강화합니다.
- Marco Instruction Dataset: 복잡한 작업을 실행하는 데 있어 강력한 명령 준수 기능의 중요한 역할을 인식하여 일련의 명령 준수 데이터를 통합합니다. 이러한 통합을 통해 모델은 광범위한 작업에서 역량을 유지하여 전반적인 효율성을 유지하면서 추론 능력을 크게 향상시킵니다.

3. Solution Space Expansion via MCTS
Marco-o1 모델의 추론 능력을 향상시키기 위해 LLMs를 MCTS와 통합합니다.
- 노드를 추론 상태로: MCTS 프레임워크에서 각 노드는 문제 해결 프로세스의 추론 상태를 나타냅니다.
- LLM 출력을 작업으로: 노드에서 가능한 작업은 LLM에서 생성된 출력입니다. 이러한 출력은 추론 체인의 잠재적인 단계 또는 미니 단계를 나타냅니다.
- 롤아웃 및 보상 계산: 롤아웃 단계에서 LLM은 추론 프로세스를 최종 상태까지 계속합니다.
- MCTS 안내: 이 보상 점수 𝑅은 MCTS 내에서 유망한 경로를 평가하고 선택하는 데 사용되어 보다 확실하고 신뢰할 수 있는 추론 체인으로 검색을 효과적으로 안내합니다.
또한, 신뢰도 점수를 계산하여 각 상태의 값을 얻습니다. 롤아웃 중에 생성된 각 토큰 𝑡𝑖에 대해 softmax 함수를 로그 확률과 상위 5개 대체 토큰의 로그 확률에 적용하여 신뢰도 점수를 계산합니다. 이는 다음과 같이 주어집니다.
𝑐𝑖 = exp( 𝑝(𝑡𝑖)) / (∑_{k=1}^{5} exp( 𝑝(𝑡𝑘)))
여기서 𝑐𝑖는 롤아웃에서 𝑖번째 토큰의 신뢰도 점수입니다. 𝑝(𝑡𝑖)는 LLM에서 생성된 𝑖번째 토큰의 로그 확률입니다. 𝑘 = 1에서 5까지의 𝑝(𝑡𝑘)는 𝑖번째 단계에서 예측된 상위 5개 토큰의 로그 확률입니다. 𝑛은 롤아웃 시퀀스의 총 토큰 수입니다. 이 방정식은 신뢰도 점수가 상위 대안과 비교하여 선택한 토큰의 상대적 확률을 반영하여 0과 1 사이의 점수를 효과적으로 정규화하도록 합니다.
롤아웃 시퀀스의 모든 토큰에 대한 신뢰도 점수를 얻은 후 모든 토큰의 평균 신뢰도 점수를 계산하여 전체 보상 점수를 도출합니다.
𝑣 = (1/𝑛) ∑_{i=1}^{n} 𝑐𝑖
여기서 𝑣는 롤아웃 경로에 대한 전체 보상 점수입니다. 이 평균은 롤아웃 중에 취해진 추론 경로의 품질을 평가하는 보상 신호 역할을 합니다. 𝑣가 높을수록 더 확실하고 정확할 가능성이 높은 추론 경로를 나타냅니다.
이 방법을 사용하여 솔루션 공간을 효과적으로 확장하여 모델이 광범위한 추론 경로를 탐색하고 계산된 신뢰도 점수를 기반으로 가장 가능성이 높은 경로를 선택할 수 있도록 합니다.
MCTS 작동 방식:
- 노드: MCTS는 '트리' 형태로 가능한 경로를 탐색합니다. 각 노드는 문제 해결 과정의 특정 상태를 나타냅니다. 예를 들어, "나는 오늘 학교에 ____" 라는 문장에서 빈칸은 하나의 노드가 됩니다.
- 가능한 행동: 각 노드에서 가능한 행동은 LLM(Large Language Model)이 생성하는 출력입니다. 즉, 빈칸에 들어갈 수 있는 다양한 단어들이죠. ("갔다", "가지 않았다", "간다" 등)
- 롤아웃: 각 행동에 대해 LLM은 문장을 계속 생성하여 최종 상태(문장의 끝)에 도달할 때까지 시뮬레이션을 진행합니다. 이를 '롤아웃'이라고 합니다.
- 보상 계산: 각 롤아웃 경로에 대해 '신뢰도 점수'를 계산합니다. 이 점수는 LLM이 해당 경로를 얼마나 확신하는지를 나타냅니다.
- MCTS 안내: 신뢰도 점수를 기반으로 MCTS는 가장 유망한 경로를 선택하고, 이 과정을 반복하여 최적의 솔루션(가장 자연스럽고 의미있는 문장)에 도달합니다.
3. Solution Space Expansion via MCTS
MCTS 활용 목적:
- LLM의 추론 능력 향상
- 다양한 답변 경로 탐색
- 최적의 솔루션 도출
MCTS 구성 요소:
- 노드: 추론 상태
- 행동: LLM 출력 (가능한 단어)
- 롤아웃: 최종 상태까지 시뮬레이션
- 보상: 신뢰도 점수 (softmax 적용 로그 확률)
신뢰도 점수 계산:
- 각 토큰의 로그 확률과 상위 5개 대체 토큰의 로그 확률을 softmax 함수에 적용하여 계산.
- 롤아웃 시퀀스의 모든 토큰에 대한 평균 신뢰도 점수를 계산하여 전체 보상 점수를 도출.
효과:
- 솔루션 공간 확장
- 계산된 신뢰도 점수를 기반으로 가장 가능성 있는 경로 선택
- 더욱 정확하고 자연스러운 답변 생성
4. Reasoning Action Strategy
4.1. Action Selection
MCTS 검색에서 action을 단위로 사용하는 것은 상대적으로 거칠다는 것을 알게 되었고, 종종 모델이 복잡한 문제를 해결하는 데 중요한 미묘한 추론 경로를 간과하게 만듭니다. 이를 해결하기 위해 MCTS 검색에서 다양한 수준의 세분성을 탐구합니다. 처음에는 step을 검색 단위로 사용합니다. 모델의 검색 공간을 더욱 확장하고 문제 해결 능력을 향상시키기 위해 이러한 step을 "mini-step"이라고 하는 64 또는 32 토큰의 더 작은 단위로 나누는 실험을 합니다. 이러한 더 세밀한 세분성을 통해 모델은 추론 경로를 더 자세히 탐색할 수 있습니다. 토큰 수준 검색은 이론적으로 최대의 유연성과 세분성을 제공하지만, 현재로서는 상당한 계산 리소스가 필요하고 이 수준에서 효과적인 보상 모델을 설계하는 데 어려움이 있기 때문에 실용적이지 않습니다.
실험에서 MCTS 프레임워크 내에서 다음 전략을 구현합니다.
- Step as Action: 모델이 완전한 추론 step을 action으로 생성하도록 허용합니다. 각 MCTS 노드는 전체 생각 또는 action 레이블을 나타냅니다. 이 방법은 효율적인 탐색을 가능하게 하지만 복잡한 문제 해결에 필수적인 더 세분화된 추론 경로를 놓칠 수 있습니다.
- Mini-step as Action: 32 또는 64 토큰의 mini-step을 action으로 사용합니다. 이러한 더 세밀한 세분성은 검색 프로세스에서 더 미묘한 단계를 고려하여 솔루션 공간을 확장하고 복잡한 추론 작업을 탐색하는 모델의 능력을 향상시킵니다. 이 수준에서 솔루션 공간을 탐색함으로써 모델은 더 큰 action 단위로는 간과될 수 있는 정답을 찾는 데 더 잘 준비됩니다.
4.2. Reflection after Thinking
각 사고 과정이 끝날 때 "잠깐! 뭔가 실수를 한 것 같아! 처음부터 다시 생각해 봐야겠어."라는 문구를 추가하여 reflection 메커니즘을 도입합니다. 이렇게 하면 모델이 자기 반성을 하고 추론 단계를 재평가하게 됩니다. 이러한 reflection을 구현하면 특히 원래 모델이 처음에 잘못 해결한 어려운 문제에서 상당한 개선이 이루어집니다. reflection을 추가하면 이러한 어려운 문제의 약 절반이 올바르게 답변됩니다.
자기 비판적 관점 [Valmeekam et al., 2023]에서 이 접근 방식을 통해 모델은 자체 비평가 역할을 하여 추론에서 잠재적인 오류를 식별할 수 있습니다. 모델이 초기 결론에 의문을 제기하도록 명시적으로 촉구함으로써 사고 과정을 재표현하고 개선하도록 장려합니다. 이러한 자기 비판적 메커니즘은 모델이 자체 출력에서 불일치 또는 실수를 감지하는 능력을 활용하여 보다 정확하고 신뢰할 수 있는 문제 해결로 이어집니다 [Madaan et al., 2024, Li et al., 2024, Huang et al., 2022]. reflection 단계는 내부 피드백 루프 역할을 하여 외부 개입 없이 모델의 자체 수정 능력을 향상시킵니다.
4. Reasoning Action Strategy
목표:
- LLM의 추론 능력 향상
- 효율적인 문제 해결
핵심 전략:
- Action Selection:
- Step: 큰 단위의 추론 단계
- Mini-step: Step을 더 작은 단위로 나누어 세밀한 탐색 가능
- Reflection after Thinking:
- LLM이 스스로 추론 과정을 반성하고 오류 수정
- 자기 비판적 메커니즘을 통해 정확도 향상
효과:
- 복잡한 문제 해결 능력 향상
- 정확하고 신뢰할 수 있는 답변 생성
참고:
- Action Selection은 문제의 복잡도에 따라 적절한 단위 (Step 또는 Mini-step) 선택
- Reflection은 LLM의 자체 수정 능력을 활용하여 외부 개입 최소화
Marco-o1에 적용된 MCTS 알고리즘 상세 설명
Marco-o1은 기존 LLM의 디코더에서 사용되는 오토리그레시브 방식을 MCTS로 대체하여 추론 능력을 향상시켰습니다. 즉, 단어를 순차적으로 예측하는 대신, MCTS를 통해 다양한 문장 생성 경로를 탐색하고 최적의 경로를 선택하는 방식을 사용합니다.
1. MCTS 트리 구축 및 탐색:
- 초기 상태: 입력 텍스트가 주어지면, 이를 루트 노드로 하는 MCTS 트리를 생성합니다.
- 노드 확장: 각 노드는 LLM 디코더의 특정 hidden state를 나타냅니다. 노드를 확장한다는 것은 해당 hidden state에서 LLM이 생성할 수 있는 다음 토큰들을 자식 노드로 추가하는 것을 의미합니다. 각 자식 노드는 부모 노드의 hidden state와 생성된 토큰을 결합하여 새로운 hidden state를 갖습니다.
- Selection: 트리를 탐색하면서 UCB (Upper Confidence Bound)와 같은 알고리즘을 사용하여 가장 유망한 노드를 선택합니다. UCB는 탐색과 활용의 균형을 맞추는 데 사용되는 알고리즘으로, 노드의 기대 보상과 탐색 횟수를 고려하여 다음에 탐색할 노드를 결정합니다.
- Expansion: 선택된 노드가 터미널 노드 (문장의 끝)가 아니면, LLM 디코더를 사용하여 다음 토큰들을 예측하고 자식 노드를 생성합니다.
- Simulation: 새로 생성된 자식 노드에서 롤아웃을 수행합니다. 롤아웃은 LLM 디코더를 사용하여 문장을 끝까지 생성하는 과정입니다.
- Backpropagation: 롤아웃 결과 얻은 보상을 역전파하여 경로 상의 모든 노드의 가치를 업데이트합니다.
2. 롤아웃 및 보상 계산:
- 롤아웃 과정에서 생성된 각 토큰에 대해 신뢰도 점수를 계산합니다. 신뢰도 점수는 해당 토큰의 로그 확률과 상위 5개 대체 토큰의 로그 확률을 softmax 함수에 적용하여 얻습니다.
- 롤아웃 시퀀스의 모든 토큰에 대한 평균 신뢰도 점수를 계산하여 해당 경로의 전체 보상 점수를 얻습니다.
3. Action Selection:
- MCTS 트리 탐색은 step 또는 mini-step 단위로 수행됩니다.
- Step 단위: LLM이 생성하는 전체 추론 단계를 하나의 action으로 간주합니다.
- Mini-step 단위: 32개 또는 64개의 토큰으로 구성된 mini-step을 하나의 action으로 간주합니다.
- Mini-step 단위를 사용하면 더 세분화된 경로 탐색이 가능해집니다.
4. Reflection 메커니즘:
- 각 롤아웃이 끝날 때마다 "Wait! Maybe I made some mistakes! I need to rethink from scratch." 와 같은 문구를 추가하여 LLM이 스스로의 추론 과정을 반성하도록 유도합니다.
- 이를 통해 LLM은 오류를 인지하고 수정하여 더 정확한 답변을 생성할 수 있습니다.
5. 최적 경로 선택 및 답변 생성:
- MCTS 트리 탐색이 완료되면, 가장 높은 가치를 갖는 경로를 선택합니다.
- 선택된 경로를 따라 생성된 토큰들을 결합하여 최종 답변을 생성합니다.
결론:
Marco-o1은 MCTS를 활용하여 LLM의 추론 능력을 향상시켰습니다. 다양한 경로 탐색, 세분화된 action 선택, 자기 반성 메커니즘 등을 통해 더욱 정확하고 신뢰할 수 있는 답변을 생성할 수 있게 되었습니다.
- 인풋: 답변을 생성할 입력 텍스트가 주어집니다.
- 루트 노드: 인풋 전체를 포함하는 루트 노드가 생성됩니다. (인코더 출력 + 초기 hidden state)
- 자식 노드 생성: LLM이 예측한 상위 k개의 토큰으로 자식 노드를 생성합니다. (첫 번째 mini-step)
- 노드 선택: 처음에는 랜덤하게 자식 노드를 선택합니다. (UCB 알고리즘은 아직 사용 X)
