AI/LLM

Reasoning and Planning - Paper 발표(Let’s Verify Step by Step)

규동이이 2024. 10. 5. 21:28

전체 슬라이드는 발표가 끝나고 올리는 걸로.

이번 발표 주제는 Language model이 어떻게 reasoning과 planning을 하는 가에 대해서였다.

지금까지는 Chain of Thought을 사용해 LM이 step by step으로 차근차근 inference를 진행하는 것으로 multi step reasoning이 필요한 고차원적 문제들에 대한 inference 성능을 높여왔다.

나는 reasoning의 improvement 부분을 맡아 OpenAI에서 ICLR 2024에 발표한 Let’s Verify Step by Step이라는 논문을 리뷰했다. 본 논문이 최근 발표된 openAI의 최신 모델 openAI o1과 아주 밀접한 관계를 가지고 있어 흥미로웠다.

openAI o1 모델 소개 - https://openai.com/index/learning-to-reason-with-llms/

 

논문은... 솔직히 말하면 조금 글을 못썼다고 생각한다. 이해하기 위해 같은 부분을 여러번 읽고 gpt한테도 내가 이해한 것이 맞는지 계속 물어봐야 했다.

COT 과정에서 Hallucination이 심각한데, 이를 막기 위해 LM이 뱉는 Outcome을 평가하는 reward model이 필요하다. 그래야 COT 과정에서 이상한 곳을 새버리는 오류를 막을 수 있음.

Reward model의 종류는 COT의 결과값만 보고 Reward를 주는 ORM과 COT Step by step으로 reward를 주는 PRM이 있다.(근데 생각해보면 PRM이 성능이 나은 것이 직관적으로 맞는데, 이를 실증적으로 증명 - dataset/자금이 충분한 빅테크만 가능한 것 같기도)

Reward model의 task는 수학 문제를 보고 generator language model이 여러개의 solution을 만들었을 때, 맞는 solution을 찾아내는 것이다. 이를 위해서 openAI는 PRM의 Training에 사용하기 위해 직접 step by step dataset을 만들고 무료로 배포함.

중요한 점은 solution을 만드는 Generator model과 만들어진 solution에 reward를 주는 Reward model 모두 language model이라는 점이다!! - 나는 Reward model이라길래 RL 알고리즘인줄 알고 한참 찾았다.

PRM의 예시로, 해당 step이 틀린 것 같으면(score가 낮으면) 빨간색으로 표시되었다.

PRM과 ORM은 각기 다른 Trainset에서 훈련되었다. 저자들은 이를 각자 모델의 SOTA 성능을 뽑아내기 위해서라는데 뭐... 아무튼 PRM이 ORM보다 성능이 좋았다. 여기서 Majority voting은 똑같은 solution들에 대해서 reward model이 여러번 scoring을 하고, top 1 score로 가장 많이 뽑힌 solution을 선택하는 것을 말한다.

N은 test 당시에 만들어진 solution의 개수이다. N이 커질수록 ORM과 PRM의 격차도 커진다.

아무튼 Trainset이 달라서 단순히 PRM>ORM이라고 결론을 내릴 수 없어 새로 실험을 해야한다.

다른 Training set과 false positive 문제 때문에 small scale supervision 실험을 다시한다.

False positive는 generator language model이 생성한 solution에서 풀이과정은 틀린데 답은 맞아서 ORM에게 True로 전달된 오류이다. 당연히 이런게 많아지면 ORM 성능에 안좋아진다.

small scale model에 대해서는 PRM_large를 Human labeler 대신에 정답 labeler로 썼다. 개인적인 생각으로는 PRM_large를 human labeler의 proxy로 써도 되는지에 대해 검증을 했어야 한다고 생각한다. 암튼 뭐 잘된다니까 뭐.

두번째 result 표가 진짜 헷갈리게 써놨는데 우선 왼쪽 표부터 보자.

왼쪽 표의 N은 Train시 reward model에게 제공된 solution의 개수다! 아까와 같이 test시 제공된 solution의 개수는 오른쪽 그림에 있다.

  1. PRM + Active learning: active learning에 대해서는 뒷슬라이드에서 다시 이야기하자.
  2. PRM + PRM_large supervised: PRM_large가 step by step labeling을 진행한 데이터를 PRM(small)에게 제공해서 train을 함.
  3. ORM + PRM_large supervised: PRM_large가 step by step으로 보고, 각 step들의 score를 곱하거나, minimum score를 뽑아서 전체 solution score를 생성한 뒤에, 이 solution score를 ORM에게 제공해서 train을 했다. PRM_large가 step by step을 살펴보고 전체 solution score를 생성했기에 아까 보았던 false positive 문제가 해결된 ORM이라고 볼 수 있다.
  4. ORM + final-answer supervised: large ORM에서처럼, Question에 맞는 final answer와 generator가 생성한 final answer가 같은지 틀린지만 확인한다.

오른쪽 표는 위에서 말한 것처럼 test 시 reward model에게 제공된 solution의 개수다. Test 시에 많은 응답을 생성할 수록(시간, computing source를 더 소모할 수록) 정답률이 높아진다. 이게 openAI o1모델의 핵심인듯 하다.

저자들은 PRM>ORM인 이유가 PRM이 잘못된 위치를 정확히 찍어서 feedback을 주는 반면, ORM은 마지막 결과가 맞는지 틀린지만으로 간접적인 feedback을 줘서 PRM 성능이 더 좋다고 주장한다. 

Model이 배우지 않은 분야이고 pretrain dataset에 포함되지 않은 out of distribution 실험에서도 PRM이 더 좋았다.

Active learning은 train할 때 모델이 스스로 다음 data를 고르는 것을 의미한다. 저자들은 이걸 써서 data efficiency가 2.6배 올라갔다고 한다.

과정은 읽어보면 알텐데, 중점은 model에게 도움이 되는(informative한) data들을 우선적으로 학습한다는 것이다. 

근데 왜 PRM_selector를 새로 label된 data로 train했을 때 성능이 안올라가는지(저자들은 instability가 관측된다고 적음)는 도저히 모르겠다. 1개의 문제당 1개의 sample answer만 학습한 LM보다 여러개의 sample answer를 학습한 LM이 더 Informative한 sample을 고를 수 있는 것이 아닌가? 고등학생의 수학 실력을 올리고 싶을 때, 초등학생이 계속 틀리는 문제보다 같은 고등학생이 틀리는 문제를 줘야 실력이 더 올라가지 않을까. 내 생각에는 train을 덜 시켜서 그런 것 같다. Ablation에 보면 어려운 상위 20% 문제에 대해서는 정답률이 30% 이하인데, 어려운 문제일 수록 개념이 파편화 되어있어서(쉬운 문제끼리의 필요 개념 차이 << 어려운 문제끼리의 필요 개념 차이) 훨씬 많은 학습이 필요할 것 같다. 그런데 매번 뽑히는 어려운 문제의 계통이 달라서 한 계통의 충분한 학습이 덜 이루어지지 않을까 싶다.

사실 그리고 왜 PRM_selelctor라는 다른 모델을 만들었는지도 잘 모르겠다. 그냥 small PRM을 쓰면 되지 않을까라는 생각.