이전에 읽었던 Visual-RFT: Visual Reinforcement Fine-Tuning랑 비슷한 논문인거같다. 여기서도 object detection 을 명확한 reward function으로 정의하는걸로 강화학습을 했는데, 전체적인 방향은 비슷한거 같다.
object detection은 사실 명확한 답이 있는 task라서 이런 방식이 잘 통하는거 같은데, 다른 task들, qa task 등은 어떻게 reward function을 잘 설계할 수 있을지 고민해봐야할거 같다. 사실 reward function 자체가 한계점인거 같기도..
배경
- LVLM 은 이미지나 영상을 텍스트와 함께 이해시키기 위해 pretraining fine tunign 이런것들이 사용이 되는데
- 최근에는 Preference Data를 이용해 모델의 답변 품질을 높이는 Preference Optimization을 많이들 쓰고 있으나!
- 고품질의 인간 주석 데이터를 모으는 데 비용과 시간이 많이 들고,
- 이 preference를 제대로 학습할 Reward Model을 만들기도 쉽지 않다.
- 기존 방식(RLHF등등)에서는 사람의 preference 데이터를 직접 만들어 모델이 ‘어떤 답변이 더 좋은가’를 학습한다.
- 하지만 vision-language영역에서는 사람에게 이미지를 주고 질문·답변 쌍을 일일이 평가받는 과정이 매우 번거롭고, 시각 정보를 반영해야 하기에 reward 모델이 복잡해진다.
Contribution
- 별도의 복잡한 선호 데이터나 보상 모델 없이도, 이미 주어진 시각적 피드백을 활용해 모델이 정답을 객관적으로 평가받도록 하는 Vision-R1 을 제안한다.
- 구체적으로,
- Criterion-driven reward:
- 객체 위치 같은 시각 정보를 수치화해서 모델 답변의 정확도를 평가하고,
- 답변이 기준에 부합할수록 더 높은 보상을 제공한다.
- Progressive rule refinement:
- 학습 초기에는 완화된 기준을 적용해 모델이 기본 구조를 익히게 하고,
- 후반으로 갈수록 기준을 엄격하게 바꿔 모델이 계속 개선되도록 유도한다.
- 이렇게 하면 단순한 ‘reward hacking’ 문제를 막고, 모델이 꾸준한 발전을 이루게 된다.
- Criterion-driven reward:
Model
Vision-R1은 R1 계열 모델의 핵심이었던 규칙 기반 GRPO 알고리즘을 바탕으로 한다.
GRPO란!
GRPO는 (1) 여러 개의 답변을 한 그룹으로 생성한 뒤, (2) 각 답변에 대한 보상을 계산하고, (3) 이 그룹 내부에서 상대적 우위를 통해 모델을 업데이트한다.
Policy Model & Reference Model
πθ
: 학습 대상인 policy 모델πref
: 고정된 reference 모델πθold
: 이전 스텝의 policy 모델 (업데이트 전)
한 샘플 q
에 대해, 먼저 πθold
가 N
개의 답변 {o1, o2, ... , oN}
을 생성한다.
Reward Function
모델의 답변 각각에 대해 ri
라는 reward를 계산한다. 예를 들어, 질문이 “이미지에서 강아지의 위치는 어디인가?”라면, 각 답변의 정확도·적절성 등을 종합하여 ri
를 부여한다. 이를 통해 {r1, r2, ... , rN}
이라는 reward들을 얻는다.
Advantage계산
답변 i
에 대한 rewardri
가 그룹 내에서 얼마나 좋은지 정량화하기 위해, 다음과 같은 정규화 방식으로 이점을 계산한다:
Ai = ( ri - mean({rj}Nj=1) )
/ std({rj}Nj=1)
mean({rj})
: 그룹 내 reward의 평균std({rj})
: 그룹 내 reward의 표준편차- 즉,
Ai
는 해당 답변이 그룹 평균에 비해 얼마나 우수한지를 보여주는 z-score 형태가 된다.
Objective Function
레퍼런스 모델 πref
로부터 각 답변 oi
의 logit을 얻은 뒤, policy 모델 πθ
를 다음 식을 최대화하도록 학습한다:
JGRPO(θ)
= (1 / N) * Σi=1..N
[ ( (πθ(oi|q) / πθold(oi|q) ) * Ai )
- β * KL( πθ(oi|q) || πref(oi|q) ) ]
즉, 그룹 내에서 상대적으로 reward가 높은 답변(Ai
가 큰 답변)의 확률을 높이되, 동시에 레퍼런스 모델과 너무 달라지지 않게 조절하는 것이 목표이다.
Criteria-Driven Reward Function
기존 연구들은 주로 수학·코딩 도메인에 집중하여, 구조화된 템플릿에 기반한 답변을 문자나 캐릭터 단위로 매칭해 평가해 왔다. 하지만 vision task는 굳이 문자단위로 평가하는게 불필요하다. 오히려 똑같이 문자단위로 평가하면 강화학습의 장점을 제대로 살릴 수 없다.
이를 해결하기 위해 객체 위치 파악 작업의 특성과 현재 LVLM이 갖는 한계를 모두 고려하는 reward function을 설계한다. 우선 기존 LVLM들의 한계점은 다음과 같다.
- Formatting Error:
Multi instance에 대한 긴 시퀀스 예측을 수행할 때, 모델이 지시에 맞는 포맷을 제대로 따르지 못하는 문제 - Insufficient Detection:
탐지해야 할 객체가 여러 개일 경우, 모델이 일부 객체를 놓쳐서 유효한 예측을 충분히 내놓지 못한다. 결과적으로 누락된 객체가 존재하게 되어 성능이 떨어지는 문제 - Inaccurate:
작은 물체나 복잡하게 배치된 물체일수록 모델이 좌표나 경계 박스를 잘못 잡을 가능성이 높아지는 문제
이에 논문에서는 아래 세 가지 요소를 통합한 Criterion-Driven Reward Function을 제안한다:
- Dual-format Reward: 모델이 출력 형식을 제대로 지켰는지 확인하고, 올바른 포맷을 유지할 경우 추가 보상을 부여한다.
- Recall Reward: 요청된 객체들을 누락 없이 모두 찾아냈는지를 평가한다. 더 많이 찾아낼수록 높은 보상을 주어, 불충분한 예측을 줄이도록 유도한다.
- Precision Reward: 검출된 객체의 위치(좌표)가 실제와 얼마나 정확히 일치하는지 측정한다. 오차가 작을수록 높은 보상을 제공하여, 부정확한 예측 문제를 완화한다.
Box-prioritized Prediction Matching
object localization할때 LVLM은 bbox 좌표를 텍스트 시퀀스로 출력하는 경향이 있다. 예를 들어, “x1, y1, x2, y2
” 같은 문자열로 좌표를 명시한다. 그러나 object detection에서는 복수의 객체에 대해 IoU를 명확히 매칭해야 하므로, 이 텍스트 정보만으로는 체계적인 보상 계산이 어렵다.
이에 모든 객체 위치 파악 작업을 일반적인 객체 탐지 프레임워크로 통합하고, 보상 계산 전에 매칭 절차를 도입하여 예측된 좌표를 다음과 같이 align 한다.
{ Pim }Mm=1 = extract_match(oi)
Pim = { [x1, y1, x2, y2]im, labelim, IoUim }
LVLM이 생성한 텍스트 응답 oi
는 “x1=35, y1=60, x2=100, y2=150, label=dog, ...
”처럼 구조화되어 있을 수 있다. extract_match(oi)
함수를 통해, 이 문자열에서 객체별로 [[x1,y1,x2,y2], label, IoU]
와 같은 좌표 기반 정보를 추출한다.
결과적으로 {Pim}
는 하나의 응답 oi
내에 있는 M개의 예측 객체를 의미하며, 각 예측 객체 Pim
는 다음 요소를 가진다:
- 좌표:
[x1, y1, x2, y2]
- 라벨:
labelim
- IoU:
IoUim
Simplified Hungarian match
전통적인 디텍션 모델은 class 확률과 바운딩 박스를 매우 정확하게 예측하므로, Hungarian matcher 등의 알고리즘을 사용해 정확한 1:1 매칭(예측 vs. GT)을 한다. 하지만 LVLM은 클래스 확률을 직접 제공하지 않거나, 박스 정확도가 상대적으로 낮을 수 있으므로, box-prioritized loss 를 쓴다.
즉, box-based loss를 먼저 고려하여 예측 객체와 실제 객체를 alignment하는 방식. 이를 통해 좌표 정확성이 중요한 객체 위치 파악 과제에 더 적합한 매칭을 수행한다.
이 과정을 거치고 나면, 각 모델 예측은 Pim
형태로 구조화되어 좌표, 라벨, IoU 값을 모두 갖게 된다. 그 덕분에 이후 진행되는 강화학습 reward 계산에서 각 객체 예측이 얼마나 정확한지를 효과적으로 평가할 수 있다.
Dual Format Reward
템플릿을 잘 시키는지 안지키는지에 대한 reward
rewardDF(oi) =
{ 1, if ftem = 1 & fcont = 1
0, otherwise
}
ftem : LVLM이 출력한 응답이 미리 지정된 템플릿(예: JSON
구조의 좌표 배열 등)을 정확히 따르는지를 검사한다.
fcont : 템플릿 형식이 맞다면, 좌표, 지표 등이 실제 좌표계에서 유효한 범위 내에 있는지와, 소수점이나 정수 형태가 정확한지 등을 검사한다. 예를 들어, 이미지 해상도 범위를 벗어나는 좌표나, 불필요한 문자가 섞인 수치 값은 fcont = 0
으로 판정.
그리고, 아래와 같은 규칙으로 reward를 계산한다:
- 두 검사(
ftem, fcont
) 모두 만족(1
) 시 보상 = 1 - 하나라도 위배된다면 보상 = 0
Recall Reward
많은 객체를 놓치지 않고 찾아냈는가!
rewardrecall(oi)
= num(Valid Predictions) / num(GT)
- num(Valid Predictions)
: IoU ≥ ξ0
인 예측 객체의 개수 - num(GT)
: 실제 GT 객체(검출해야 하는 객체)의 총 개수
Precision Reward
찾아낸 객체의 좌표가 정확한가!
rewardprec(oi)
= ( Σm=1..M [ (IoUim ≥ ξ0) · IoUim ] ) / M
- M
: 예측된 객체의 총 개수 - (IoUim ≥ ξ0)
: 유효 예측 여부에 따라 1 또는 0이 됨 - IoUim
: m번 객체 예측의 IoU 값
최종 reward function
Dual Format Reward(rewardDF
), Recall Reward(rewardrecall
), Precision Reward(rewardprec
) 세 가지 reward을 합산하여, 최종적으로 각 응답 oi
에 대한 reward를 만든다
reward = rewardDF + rewardrecall + rewardprec
(식 7)
이렇게 하면 모델이 (1) 출력 형식을 정확히 지키고 (Format), (2) 가능한 모든 타깃을 놓치지 않으며 (Recall), (3) 각각의 위치를 최대한 정확하게 (Precision) 예측하도록 유도할 수 있다.
Progressive Rule Refinement Strategy
Localization에서 IoU가 높은 바운딩 박스를 예측하는 것은 특히 복잡한 장면에서 매우 어려운 task 이다. 그래서, 동일 그룹 내 여러 예측이 reward 측면에서 큰 차이가 없어져 모델 최적화에 제약이 생길 수 있다.
이를 해결하기 위해 Curriculum Learning과 인간 학습 과정에서 착안한 Progressive Rule Refinement Strategy을 제안된다. reward 계산 기준을 dynamic하게 조정함으로써 LVLM이 지속적인 성능 향상을 이루도록 유도한다. Recall Reward와 Precision Reward 모두에 적용되어, 최종적인 Ai
계산 전에 보상을 정교화한다. 주요 구성 요소는 Differentiation policy과 Staged Progression policy 두 가지로 나뉘는데 하나씩 보자
Differentiation
Differentiaiton 은 예측 결과와 실제 보상 간의 매핑에서 contrast를 높이는 데 중점을 둔다. 기존의 linear 매핑 대신, Recall과 평균 IoU가 낮은 예측은 더욱 강하게 패널티를 주고, 상대적으로 높은 예측에는 full reward을 주어 현재 모델 능력 내에서 최대한 좋은 응답을 내게 한다
이를 위해 ξ1
과 ξ2
라는 두 threshold를 둔다. 하나는 패널티 기준(낮은 예측), 다른 하나는 full reweard기준(높은 예측)이다.
f(x) =
{ 1, if x ≥ ξ2
0, elif x < ξ1
x, otherwise
}
그러니까! (1) x
값이 ξ2
이상이면 보상 = 1, (2) x
값이 ξ1
미만이면 보상 = 0, (3) 그 사이 구간은 x
그대로의 값으로 설정한다.
Staged Progression
학습 초기에는 달성하기 쉬운 기준을 제시하고, 모델 역량이 향상됨에 따라 점진적으로 난이도를 높이는 전략을 쓴다. 여기서도 Initial Learning과 Advanced Learning 두 단계로 나눈다. 각 단계는 Training STEP에 따라 구분되며, 단계가 바뀔 때마다 Threshold를 점점 많이 조정한다. 이러한 방식은 지속적인 성능 개선을 유도할 뿐 아니라, Reward Hacking을 방지하는 효과도 있다.