언어모델의 추론
중간 풀이를 제시하는 chain-of-thought와 도구 사용을 결합한 ReAct를 살펴보고, 실험에서 확인한 추론 능력과 아직 설명하지 못한 부분을 구분한다.
고친 내용: 독자에게 보이는 문장과 용어를 다듬고 기존 근거 연결을 유지했다.
추론이란 무엇인가
언어모델 연구에서 추론은 여러 의미로 쓰인다. 좁게는 수학 문제처럼 답까지의 단계가 분명한 과제를 푸는 능력이고, 넓게는 계획을 세우고 예외를 처리하는 일반적 문제 해결이다. 벤치마크가 재는 것은 대개 좁은 의미의 추론이며, 넓은 의미의 추론은 측정 자체가 어렵다. 이 글에서 추론이라는 말을 쓸 때는 어떤 의미인지 함께 밝힌다.
과정과 결과도 구분해야 한다. 중간 단계를 그럴듯하게 적는 것과 그 단계가 실제로 답을 도출한 과정을 반영하는 것은 다르다. 겉으로는 논리적인 풀이도 이미 정한 답에 맞춰 사후에 구성한 설명일 수 있다. 이를 faithfulness 문제라고 부른다. 이 글에서는 쟁점을 소개하는 데 그치며 특정 해법을 지지하지 않는다.
중간 풀이를 제시하는 chain-of-thought
Chain-of-thought 프롬프팅은 중간 풀이가 담긴 예시를 주고 모델도 같은 방식으로 답하게 한다. 논문은 이 방법으로 산술, 상식, 기호 추론 과제에서 성능이 올랐다고 보고했다. 대표적으로 540B 파라미터 모델에 8개의 예시를 주었을 때 수학 문장제 벤치마크 GSM8K에서 당시 최고 정확도를 달성했다. 풀이의 정확성을 평가하는 검증 모델인 verifier를 붙인 파인튜닝 GPT-3보다도 높은 점수였다.
이 결과는 파인튜닝 없이 프롬프트만으로 추론 능력을 끌어낼 수 있음을 보인 사례로 읽힌다. 다만 조건이 있다. 충분히 큰 모델에서 관찰된 현상이며, 모든 규모와 모든 과제에서 같은 효과가 난다는 뜻이 아니다. 논문 초록의 emergence 서술, 즉 충분히 큰 모델에서 추론 능력이 자연스럽게 나타난다는 표현은 논문 저자들의 해석이다. 이 글은 그 서술이 원 논문에 있음을 전달하되, 정설로 단정하지 않는다.
왜 중간 단계가 도움이 되나
중간 단계가 도움이 되는 이유는 여러 가지로 해석할 수 있다. 계산 과정을 여러 토큰에 나누어 표현하면 한 번에 답하는 부담이 줄어들 수 있다. 단계마다 앞선 내용을 참고하면서 오류를 바로잡을 기회가 생기고, 예시를 통해 문제의 형식을 파악할 수도 있다. 이는 원 논문의 직접 주장이 아닌 편집자의 해석이다. 논문은 실험으로 방법의 효과를 확인했지만, 효과가 나타나는 이유까지 충분히 설명한 것은 아니다.
중간 단계는 디버깅에 활용할 수 있다. 답이 틀렸을 때 어느 단계에서 오류가 생겼는지 확인하는 단서가 되기 때문이다. 다만 앞에서 말한 faithfulness 문제를 잊어서는 안 된다. 모델이 제시한 풀이가 실제 계산 과정을 그대로 기록했다는 보장은 없다. 오류를 찾는 데 참고하되 답의 근거를 별도로 확인해야 한다.
외부 정보와 도구를 활용하는 ReAct
외부 확인 없이 추론을 이어가면 환각이 생기거나 오류가 전파될 수 있다. 중간 단계가 그럴듯해도 출발점의 사실이 틀렸다면 결론도 틀리기 때문이다. ReAct는 추론에 외부 행동을 결합한다. 추론 중에 검색 같은 행동으로 사실을 확인하고, 실행 결과를 읽은 뒤 다음 단계를 추론한다. 질의응답과 사실 검증 과제에서 단순 Wikipedia API와의 결합만으로 chain-of-thought의 환각과 오류 전파 문제를 완화했다고 보고되었다.
이 글에서는 외부 환경과 정보를 주고받는 과정까지 포함해 추론을 살펴본다. 다만 행동이 만능은 아니다. 검색 결과가 틀리면 관찰도 틀리고, 행동의 연쇄가 길어지면 그만큼 실패 지점이 늘어난다. 생각과 행동의 균형은 과제마다 다시 맞춰야 하는 설계 변수다.
남은 쟁점: 모델 규모와 풀이의 신뢰성
두 가지 질문을 살펴본다. 첫째, 추론 능력이 규모와 함께 어떻게 달라지는가. 원 논문에는 충분히 큰 모델에서 능력이 자연스럽게 나타난다는 emergence 서술이 있으며, 이를 둘러싼 이후 논쟁의 세부 내용은 이 글에서 다루는 출처 범위에 없어 다루지 않는다. 둘째, 중간 단계는 믿을 만한가. 단계가 답의 진짜 이유인지, 사후 구성된 이야기인지 가리는 일은 어렵다. 이 질문은 평가의 문제이기도 해서 평가 주제 글과 맞닿아 있다.
이 글에서는 논문에서 보고한 결과, 편집자의 해석, 아직 해결되지 않은 문제를 구분한다. 점수를 비교할 때도 각 연구가 추론의 어떤 측면을 평가했는지 함께 살펴야 한다.
실무에 적용할 때
실무에서는 복잡한 과제에 중간 풀이를 요구하고 사실 확인이 필요할 때 검색을 결합하는 방법을 검토할 수 있다. 풀이 과정은 디버깅에 참고하되 그 자체를 정답의 증거로 삼지는 않는다. 효과를 평가할 때는 과제와 모델 규모를 함께 적는다. 같은 방법도 조건에 따라 결과가 달라지기 때문이다. 이는 각 출처의 보고에서 정리한 제안이므로 실제 과제에 맞춰 검토해야 한다.
중간 단계를 요구하는 법
중간 풀이를 요청하는 한 방법은 정답에 이르는 과정을 설명한 예시를 몇 개 보여주는 것이다. 모델이 그 예시를 참고해 풀이를 작성하도록 한다. 풀이의 길이는 과제에 맞춰 조절한다. 간단한 과제는 짧게, 복잡한 과제는 필요한 과정을 충분히 설명하도록 요청한다. 모델이 작성한 풀이를 읽고 어느 부분에서 오류가 생겼는지 확인하면 디버깅에 도움이 된다.
풀이 과정을 요청한다고 항상 효과가 있는 것은 아니다. 규모가 작은 모델에서는 효과가 다르거나 없을 수 있고, 외부 사실을 확인해야 하는 문제는 추론만으로 해결하기 어렵다. 그럴 때는 검색 같은 도구 사용을 결합한다. 과제에 따라 단계별 추론과 도구 사용을 함께 활용할 수 있다.
현재 판 출처 (이 개정의 출처 보관본 아님) 2건
아래는 현재 판의 출처 목록을 고리 풀이용으로 그대로 둔 참조이며, 이 개정의 출처 보관본이 아니다.