현재 인턴을 진행하면서 reasoning쪽을 공부하고 있는데 처음에 reasoning이 뭘지에 대해서 고민을 했었는데 그냥 한번 적어본다.
reasoning의 직관적인 의미는 추론이다.
그러니까 보통 o1을 예시로 많이 드는데 o1은 문제를 풀기 전에 COT와 같은 중간 step을 이용해서 문제를 해결하는데 이러한 중간 step이 문제를 더 쉽게 해결할 수 있게 만들어준다.
그런데 이건 엄밀히 말해서 reasoning이 뭔지에 대한 답은 아니다. 앞에서 적은 내용은 o1이 문제를 어떻게 reasoning을 활용하는지 예시에 대한 답이지...
사실 reasoning이 뭔지에 대해서 정확하게 정의된 것은 아직 못본 것 같다.
랩실에 있는 주변 다른 학생들과 이야기를 해보면 대부분 reasoning을 이렇게 정의하는것 같다.
training time에 보지 못한 문제를 training time에서 배운 지식을 활용해서 푸는 것
즉, 가지고 있는 지식을 가지고 새로운 문제를 푸는 것이다.
그런 의미에서 앞에서 o1을 예시로 든 COT도 다음과 같이 볼 수 있을 것 같다.
"주어진 문제를 내가 알고 있는 문제로 쪼개서 차근차근 풀어보기"
사실 사람도 비슷하지 않을까? 셜록홈즈를 읽고 누군가에게 마지막에 범인이 누구냐고 질문을 한다고 해보자
그럼 누구든지 셜록홈즈의 내용과 단서를 생각해보며 범인을 추측할 것이다.
우리는 training time에서 범인을 보지 못하고 단서들만 봤지만
그 정보를 토대로 training time에서 보지 못한 범인에 대한 정보를 추론하는 것이다.
그런데 여기에서 함정이 있다. 사실 굳이 o1과 같이 COT와 같은 방법을 사용하지 않아도 reasoning이라고 볼 수 있지 않을까?
예를 들어서 앞의 내용을 그대로 따른다면 gpt4o 모델에게 셜록홈즈의 내용을 주고 답을 물어보면 COT를 안써도 그게 추론이 아닐까?
사실 최근 AI 논문들이 말하는 추론은 주로 test time computation을 의미하는 것으로 보인다.
MCTS, COT, search 등등...
test time에 더 계산을 추가해서 더 정확한 답을 찾는...
이러한 차이를 제대로 이해하려면 system 1 reasoning과 system 2 reasoning에 대해서 알아야 한다.
system 1 reasoning은 평소 아무생각 없이 진행하는 사고 과정이다.
예를 들어 길을 걸을때 우리는 별다른 생각하지 않는다.
왼발을 들어서 앞으로 옮기고 다시 내리고 땅을 박차고 등등...
반면 system 2 reasoning은 생각을 하고 진행하는 것이다
예를 들어 수학 문제를 푼다던가 복잡한 퀴즈를 푼다던가
이런 상황에서는 더욱 고민하고 진행할 것이다.
이게 ai reasoning의 결정적인 차이라고 생각한다.
그냥 추론하는 것도 reasoning이라고 볼 수 있지만 system 1 reasoning이고
cot, mcts 등 test time computation을 추가해서 더 고민하는 과정은 system 2 reasoning이다.
test time computation적인 reasoning 측면에서
참고할만한 자료가 있으면 좋을 것 같아서 좋은 자료를 공유한다.
Reasoning LLMs에 관한 비주얼 가이드
위 내용은 LLM에 대한 test time computation을 다루는데 최근 트랜드가 잘 정리되어 있는 것으로 보인다.
관심있으면 읽어보면 좋을 것 같다.