RL로 훈련된 추론 모델(DeepSeek R1 등)은 텍스트 추론은 뛰어나나, 구조화된 문제 해결(기하학적 추론, 정확한 계산, 복잡한 방정식)에 어려움 겪음
구조화 문제에서는 코드 인터프리터(CI) 같은 도구가 좋은 성능 보임
제안하는 방법:
자연어 추론 과정중에 코드 실행 가능하도록 함.
다중 턴 코드 실행을 통해 모델이 tool을 언제 호출할 지 학습하는 RL 프레임워크
방법론
cold start데이터 생성, 베이스 모델 fine tuning
RL훈련으로 도구 사용 전략을 세분화함. 인간의 지식 없이 최적의 도구 사용 패턴을 자율적으로 학습
결과
32B모델 - AIME 67%정확도 (기존 텍스트 RLM보다 27%높은 정확도)
Extended 설정에서는 32B모델이 o1-preview성능 능가.
aha moment발견
1. Introduction
강화학습은 LLM이 추론능력을 갖추기 위한 인기있는 방법으로 떠오름. 허나, 기하학적 추론, 정확한 수치 계산에서는 한계점이 있음. -> CI(Code interpreter)와 같은 것을 사용하면 정확한 계산을 수행할 수 있음. 이는 기존 LLM이 갖고 있던 약점을 보완할 수 있음.
기존 접근: prompting, SFT
한계: 데이터 분포를 모방, 보지 못한 패턴을 일반화, 외부 도구를 이해하는데 어려움을 갖고있음.
극복: RL은 이러한 한계점을 극복하는데 유용할 수 있음. -> 도구를 잘못 실행시 자체적으로 수정, 추론 과정 중 언제 도구를 사용할 것인지 등
ReTool 프레임워크 제안
외부 Tool을 사용하는데 최적의 전략을 사용하도록하는 Tool-augmented Reinforcement Learning프레임워크임.
구성:
데이터 파이프라인 개발: :코드 인터프리터를 언제 호출할지 명시적으로 작성된 cold-start데이터셋을 큐레이션하기 위한 파이프라인
결과 기반 보상으로 최적의 tool사용 전략을 사용하는 RL
2. Methodology
2.1 Overview
Cold-start SFT, Rollout RL두개 파트로 구성.
2.2 Cold-start for Tool-Integrated Reasoning Foundation
데이터 수집:
다양한 출처에서 수학 추론 데이터 수집(OpenThought, etc)
필터링: 인간과 Deepseek-R1를 사용해서 유효하지 않은 데이터를 필터링
$D_{init}$: 고품질 추론 데이터셋 수집
코드 추가한 추론 데이터셋 구축:
구조화된 prompt 템플릿으로 자연어 풀이를 -> 자연어 + 코드 + 실행 결과로 대체(Figure 8) -> 어떤 모델을 사용했는지에 대해서는 나와있지 않음
input: query, original thinking process를 input
output: reasoning responses with code usage
데이터 검증: 포맷 검증과 답변 검증
포멧 검증: 가독성 향상, 일관된 구문을 보장 -> 강화학습시 tool 호출을 쉽게 추출할 수 있음
답변 검증: 수학 문제 답변과 정확하게 일치하는 데이터셋만 남김. -> $D_{CI} 수집$
2.3 ReTool: Reinforcement Learning for Strategic Tool Use
정리: Old Policy가 t까지 만들어낸 Token들을 기반으로, New Policy가 업데이트 되도록 하고 싶음. t-1까지의 Token들로 T토큰을 예측. 잘못보면 Old policy를 따라가도록 훈련하는거 아니야? 라고 생각할 수 있으나, 그부분은 A^ 부분에서 결정된다.
Old Policy가 잘하고 있었다면 따라가는게 맞는데, 잘못하고 있어서 New policy가 더 잘해야 해서 분포가 달라지면 min안에 있는 식 기준으로는 분자의 값이 분모보다 작아지지만, A^부분이 커질 수 있다.
또한, 문제가 주어지면 정답까지 생성하고, 그리고 Loss를 계산함. (Next token prediction과 다름)
$q, o<t, CI$: query, t미만의 token들, CI
Clip부분: Old policy에서 너무 많이 바뀌지 않도록 함.
A^: 이 부분은 정확하게 나와 있지 않으나 Reward라고 간주해야 할 것 같음. (github살펴봐야 할 것 같음...)
Reward Design:
규칙기반 정확도 보상을 구현함. boxed안에 최종 답변을 작성하도록 하여, 규칙 기반 검증이 가능함.
규칙기반을 한 이유: 리워드 해킹을 예방하기 위함, 결과만 측정하여 더 다양한 행동을 하도록 장려하기 위해서 단순화함.
Rollout with Interleaves Code Execution:
롤아웃을 하는데, NLP로만 하는것이 아닌 CI와 함께 Interact하는 롤아웃을 한다.
훈련을 위해 VeRL 프레임워크를 사용. RL 방법으로는 PPO 사용. cold-start 데이터로 2에포크 동안 모델을 훈련. AdamW 옵티마이저: 초기 학습률 1e-6 예상 최대 시퀀스 길이: 16384 토큰 미니 배치 크기는 512로 설정 KL 계수는 0.0으로 설정
Backbone model: Qwen2.5-32B-Instruct를 사용
Interpreter Feedback Mask:
Loss계산시 <interpreter></interpreter> 피드백 출력을 마스킹.
interpreter는 CI가 생성한 출력물, 에러에 해당함. 이건 모델이 생성한 답변이 아니기에, 이를 손실에 포함시키면 모델 훈련에 부정적인 영향을 끼침.
KV-Cache Reuse:
rollout 중 메모리 비용을 줄이기 위해, 코드 종료 트리거(</code>)가 감지될 때마다 코드 실행 전의 모든 KV-cache를 캐싱하고 인터프리터 피드백(<interpreter></interpreter>)의 KV-cache만 계산하여 추가함. 이는 각 rollout에 필요한 KV-cache를 크게 줄인다. -> 기존의 KV-cache와 같은말을 하는것 같음. 다만 CI와 통합되었을 때 어떻게 하는지 작성되었을 뿐인 것 같음.
Response Length(a): 훈련 초기에는 길이가 줄어드는데, 복잡한 서술과정을 코드로 단순화 하기 떄문에 줄어든 것으로 생각함. 다시 늘어나는 이유는 RL훈련동안 더 다양하고 복잡한 코드 행동이 생성된 것으로 간주함.
Code Ratio(b): 훈련이 진행될 수록 모든 풀이과정에서 코드 Tool을 사용하는 것을 확인함.
Code Lines(c): 생성된 코드의 라인 수는 복잡성을 반영함. -> 더 복잡한 코드 생성 전략을 학습했음을 의미함.
Total Test Set Correct Code Counts(d): 생략
Code Pass Rate(e): Y축 - LLM이 생성한 풀이 과정중에 코드를 작성하는데, 생성 초반에 에러가 포함되게 코드를 작성할 수 있으나, Log를 보고 재수정함. 이때 몇번만에 코드를 실행시켰냐를 의미함. 맞춘 정답들을 보니, 중간 풀이과정에서 한번에 코드를 생성하더라 라는 것을 말하고자함. 코드 실행 가능성이 추론 과정 및 결과에 영향을 미친다는 것을 시사함.
코드 수정을 위한 데이터셋이 없음에도, 실행 불가능한 코드를 자체적으로 수정하는 능력이 개화하는 것을 발견함. 그림4에서 정의되지 않은 함수 greedy()로 인해 실행 실패한 코드를 생성함. 그러나 오류를 인식하고 'Oops, the functions ...'와 같은 Self reflection을 진행함. 그 뒤에 모델은 실행 가능한 코드를 작성함.
Code Purpose Analysis
훈련 전후의 코드의 목적을 분석함. RL훈련 후 코드를 작성하는 목적이 매우 다양해졌으며 이는 tool선택의 메타인지 발전을 보여주고 광범위한 문제로의 일반화를 의미함.
CI-powered Reasoning vs. Text-based Reasoning
복잡한 계산과정을 코드로 간단화 하는것을 볼 수 있음.
또한 외부 코드 인터프리터의 도움으로 계산 정확성을 보장함. -> 전체적인 추론 전략에 더 효과적으로 집중할 수 있게함.
기존 연구의 한계를 극복하기 위해, 명시적 오류 신호나 보상 함수에 의존하는 방법들을 사용함. -> 허나 코드 수정, 수학 추론과 같은 single 턴 시나리오에만 초점 -> 상호작용 환경에서 제안한 연구는 없음 -> 또한 상호작용 환경은 긴 추론이 필요한데, 높은 품질의 보상 함수를 설계하는것은 어려움.
모델 스스로의 힘으로 성장하기 위해선 exploration, exploitation의 balance가 중요함.
이를 측정하기 위한 balance score를 제안. 매 n iteration마다 bs를 계산해서 configuration( temperature, reward model's threshold)를 재조정하여, 이 configuration으로 일정 iteration을 학습함