[논문 리뷰] 34. SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS
Chain-of-thought프롬프팅과 LLM을 결합하여 복잡한 추론 작업에서 고무적인 결과를 얻고 있음
이 논문에서는 Chain-of-thought 프롬프팅에서 사용되는 단순한 greedy decoding을 대체하는 새로운 디코딩 전략인 Self-consistency를 제안
Greedy Decoding과 Self-consistency 방식을 예시로 비교
문제:“주차장에 3대의 차가 있고, 2대의 차가 더 도착했습니다. 현재 주차장에 몇 대의 차가 있습니까?”
Greedy Decoding 예시
Greedy decoding은 매 단계에서 가장 확률이 높은 단어를 선택
이를 통해 언어 모델이 단일 경로로 문제를 풀게 됨
모델은 먼저 "3대의 차가 있다" 라는 문장을 생성
이후, "2대의 차가 더 도착한다" 라는 다음 문장을 생성
마지막으로, 모델은 "3 + 2 = 5대의 차가 있다" 라고 답을 생성
최종 답은 "5"로 도출
Greedy decoding은 이처럼 하나의 경로만을 따라가므로, 만약 중간 과정에서 모델이 실수를 하거나 잘못된 추론을 하면, 전체 답이 틀릴 수 있음
예를 들어, 모델이 2를 잘못 계산하여 3 + 2를 4로 답할 경우, 전체 답이 잘못되게 됨
Self-consistency 예시
Self-consistency는 Greedy decoding과 달리 여러 경로를 샘플링하여 다양한 추론 방법을 탐색하고, 그 중 가장 일관된 답을 선택
동일한 문제를 Self-consistency 방식으로 해결할 때, 모델은 다음과 같은 다양한 경로를 샘플링할 수 있음
경로 1
모델은 먼저 "3대의 차가 있다" 라고 시작하고, "2대의 차가 더 도착한다" 를 말함
마지막으로 "3 + 2 = 5대의 차" 라고 계산하여, 최종 답을 "5"로 도출
경로 2
모델은 "처음에 주차장에 3대의 차가 있었고, 2대가 더 도착했다" 를 생성하고, "따라서 3 + 2 = 5"라고 답을 생성
이 경우도 최종 답은 "5"
경로 3
모델이 "3대의 차가 있었고, 2대의 차가 도착했다" 까지는 맞게 생성하지만, "3 + 2 = 6" 이라고 잘못된 계산을 할 수 있음
이 경우, 최종 답은 "6"
경로 4
모델은 "3대의 차가 있었고, 2대가 도착하여 총 5대가 되었다"라고 생성하여 올바른 답을 도출
이처럼 Self-consistency는 다양한 추론 경로를 생성한 후, 최종적으로 각 경로에서 나온 답 중에서 가장 일관된 답을 선택
위 예시에서는 경로 1, 2, 4가 모두 "5"라는 답을 도출했기 때문에, 최빈값(majority vote)으로 "5"가 최종 답으로 선택
이 방법은 단일 greedy 경로를 따르는 대신 다양한 추론 경로를 샘플링한 후, 샘플링된 추론 경로를 평균화하여 가장 일관된 답변을 선택
Self-consistency는 복잡한 추론 문제는 종종 여러 가지 다른 사고방식을 허용하며, 이러한 사고방식이 고유한 정답으로 이어진다는 직관에 기반
우리의 광범위한 실험 결과, Self-consistency가 GSM8K(+17.9%), SVAMP(+11.0%), AQuA(+12.2%), StrategyQA(+6.4%), ARC-challenge(+3.9%)와 같은 인기 있는 산술 및 상식 추론 벤치마크에서 체인-오브-생각 프롬프팅의 성능을 크게 향상시킴을 확인
언어 모델은 다양한 자연어 처리 작업에서 놀라운 성공을 거두었지만, 추론 능력은 여전히 한계로 여겨지며 단순히 모델 크기를 확장하는 것만으로는 극복되지 않는 경우가 많음
이러한 문제를 해결하기 위해 Wei et al.(2022)은 Chain-of-thought 프롬프팅을 제안
이 방법에서는 언어 모델이 작업을 해결하는 데 있어 사람이 사용하는 사고 과정을 모방하는 일련의 짧은 문장을 생성하도록 프롬프트함
예를 들어, "주차장에 3대의 차가 있고 2대가 더 도착하면 주차장에 몇 대의 차가 있는가?"라는 질문에 대해, "5"라는 답을 바로 내놓는 대신, "주차장에 이미 3대의 차가 있다. 2대가 더 도착한다. 이제 3 + 2 = 5대의 차가 있다. 답은 5이다."와 같은 COT를 생성
이러한 프롬프팅 방식은 여러 단계의 추론 작업에서 모델의 성능을 크게 향상시키는 것으로 관찰
본 논문에서는 COT프롬프팅에서 사용되는 greedy decoding 전략을 대체하는 새로운 디코딩 전략인 Self-consistency를 제안
Self-consistency는 복잡한 추론 작업이 종종 여러 가지 추론 경로를 통해 정답에 도달할 수 있다는 직관에 기반
문제를 해결하기 위해 신중한 사고와 분석이 많이 필요할수록 다양한 추론 경로가 정답을 찾을 가능성이 커짐
그림 1은 Self-consistency 방법을 예시로 보여줌
먼저 언어 모델에 COT 프롬프팅을 하고, 탐욕적으로 최적의 추론 경로를 디코딩하는 대신, "샘플링 및 평균화" 디코딩 절차를 제안
언어 모델의 디코더에서 다양한 추론 경로를 샘플링하고, 각 경로가 서로 다른 최종 답변으로 이어질 수 있기 때문에, 샘플링된 추론 경로를 평균화하여 최종 답변 세트에서 가장 일관된 답변을 결정
이는 다양한 사고 방식이 동일한 답에 도달하면 그 답이 올바르다는 확신이 커진다는 인간의 경험과 유사
다른 디코딩 방법과 비교할 때, Self-consistency는 탐욕적 디코딩에서 발생하는 반복성과 지역 최적화를 피하면서 단일 샘플링 생성의 확률적 문제를 완화
Self-consistency는 추가적인 검증자를 학습하거나 생성 품질을 개선하기 위해 추가적인 인간 주석을 제공하는 방법보다 훨씬 간단
Self-consistency는 완전히 비지도 학습 방식으로 작동하며, 사전 훈련된 언어 모델에서 바로 적용할 수 있으며, 추가적인 인간 주석이나 훈련, 보조 모델, 또는 미세 조정이 필요하지 않음
또한, Self-consistency는 여러 모델을 학습하고 각각의 출력을 결합하는 전형적인 앙상블 접근 방식과 달리, 단일 언어 모델 위에서 작동하는 "자체 앙상블"과 유사하게 작동
우리는 UL2-20B, GPT-3-175B, LaMDA-137B, PaLM-540B 등 다양한 규모의 네 가지 언어 모델에서 Self-consistency를 평가
모든 언어 모델에서 Self-consistency는 COT 프롬프팅에 비해 모든 작업에서 성능을 크게 향상
특히 PaLM-540B 또는 GPT-3와 함께 사용했을 때, Self-consistency는 산술 추론 작업에서 새로운 최첨단 성능을 달성했으며, GSM8K에서 17.9%의 절대 정확도 향상, SVAMP에서 11.0%, AQuA에서 12.2%의 향상을 보였으며, 상식 추론 작업에서도 StrategyQA에서 6.4%, ARC-challenge에서 3.9%의 성능 향상을 달성
추가 실험에서는 Self-consistency가 표준 프롬프팅과 비교하여 COT를 추가하는 것이 성능을 저하시킬 수 있는 NLP 작업에서도 성능을 크게 향상시킬 수 있음을 보여주었으며, Self-consistency는 샘플링 전략과 불완전한 프롬프트에 대해 강건하다는 것을 확인
다양한 추론 경로에서의 Self-consistency
인간의 주요 특징 중 하나는 사람들이 각기 다른 방식으로 생각한다는 점
신중한 사고를 요구하는 작업에서는 문제를 해결하는 여러 가지 방법이 있을 가능성이 높음
언어 모델의 디코더에서 샘플링을 통해 이러한 과정을 시뮬레이션할 수 있다고 제안
예를 들어, 그림 1에서 보여지듯이 모델은 수학 문제에 대해 여러 가능한 응답을 생성할 수 있으며, 모두 동일한 정답에 도달할 수 있음
언어 모델은 완벽한 추론자가 아니므로, 때때로 잘못된 추론 경로나 특정 단계에서 실수를 저지를 수 있음
그러나 이러한 잘못된 경로는 같은 답에 도달할 가능성이 더 적음
즉, 올바른 추론 과정이 비록 다양하더라도 최종 답변에서 더 큰 일치를 보일 것이라는 가설을 세움
이러한 직관을 활용하여 다음과 같은 Self-consistency 방법을 제안
먼저, 언어 모델에 수동으로 작성된 COT를 사용해 프롬프팅
그 후, 언어 모델의 디코더에서 후보 출력을 샘플링하여 다양한 추론 경로를 생성
Self-consistency는 온도 샘플링, top-k 샘플링, 뉴클리어스 샘플링 등 기존 샘플링 알고리즘과 호환
마지막으로, 샘플링된 추론 경로를 평균화하여 가장 일관된 답변을 선택
더 자세히 설명하자면, 생성된 답변 \(a_i\)는 고정된 답변 세트 \(A\)에서 선택된다고 가정
\(i = 1, \dots, m\)은 디코더에서 샘플링된 \(m\)개의 후보 출력을 나타냄
주어진 프롬프트와 질문에 대해, Self-consistency는 추가적인 잠재 변수 \(r_i\)를 도입하며, 이는 \(i\)-번째 출력에서 추론 경로를 나타내는 토큰 시퀀스
이는 \(r_i \rightarrow a_i\)의 관계로 표현되며, 즉 \(r_i\)는 선택적으로 생성되며 최종 답변 \(a_i\)에 도달하기 위해 사용
예를 들어, 그림 1의 출력 3을 고려
첫 번째 몇 문장인 "그녀는 아침에 3개를 먹습니다. ... 따라서 그녀는 9개의 달걀에 $2를 곱하여 하루에 $18를 쓴다."는 \(r_i\)에 해당하고, 마지막 문장 "답은 $18입니다."에서 \(a_i\)는 18로 해석
이와 같이, 여러 \(r_i, a_i\)를 모델의 디코더에서 샘플링한 후, Self-consistency는 \(r_i\)에 대한 평균화를 적용하여 \(a_i\)에 대해 최빈값(majority vote)을 통해 가장 일관된 답을 선택
이는 아래 수식으로 표현
\[
\arg \max_a \sum_{i=1}^m 1(a_i = a),
\]
이 수식은 Self-consistency에서 최종 답을 선택하는 과정
간단히 말해, 모델이 여러 경로에서 생성한 답들 중 가장 많이 등장한 답을 선택하는 방법을 수식으로 표현한 것
수식 해석
\[ \arg \max_a \sum_{i=1}^m 1(a_i = a) \]
\(\arg \max_a\)
\(a\) 값을 최대로 만드는 \(a\)를 선택하라는 의미
즉, 가장 많이 등장한 답 \(a\)를 선택하라는 의미
\(\sum_{i=1}^m 1(a_i = a)\)
여기서 \(1(a_i = a)\)는 답 \(a_i\)가 \(a\)와 동일하면 1, 그렇지 않으면 0이 되는 지시 함수
이 지시 함수를 이용해 모든 경로에서 생성된 답 \(a_i\) 중에서 \(a\)와 일치하는 답의 개수를 세는 것
\(m\)
모델이 생성한 경로의 수
즉, \(i = 1\)부터 \(m\)까지의 경로에서 각각의 답 \(a_i\)를 확인하는 것
수식의 의미
모델이 여러 경로에서 답을 생성했을 때, 각 경로에서 나온 답 \(a_i\)를 모두 확인하고, 그 중 가장 많이 등장한 답 \(a\)를 선택
최종 답 \(a\)는 \(a_i\) 중에서 가장 빈도가 높은 답
예시로 설명
예시 문제: "주차장에 3대의 차가 있고, 2대의 차가 더 도착했습니다. 현재 주차장에 몇 대의 차가 있습니까?" 모델이 이 문제에 대해 여러 경로를 통해 답을 생성한다고 가정
경로 1에서 생성된 답 \(a_1\): 5
경로 2에서 생성된 답 \(a_2\): 5
경로 3에서 생성된 답 \(a_3\): 6 (잘못된 답)
경로 4에서 생성된 답 \(a_4\): 5
이 경우, \(m = 4\)이고, 각 경로에서 생성된 답이 5 또는 6
이제 수식을 적용해서 최종 답을 선택
수식 적용:
\(a = 5\)일 때
\[ \sum_{i=1}^m 1(a_i = 5) = 1(a_1 = 5) + 1(a_2 = 5) + 1(a_3 = 5) + 1(a_4 = 5) = 1 + 1 + 0 + 1 = 3 \] 답이 5인 경로는 3개
\(a = 6\)일 때
\[ \sum_{i=1}^m 1(a_i = 6) = 1(a_1 = 6) + 1(a_2 = 6) + 1(a_3 = 6) + 1(a_4 = 6) = 0 + 0 + 1 + 0 = 1 \] 답이 6인 경로는 1개
최종 답 선택
이제, \(a = 5\)에서 값이 더 크기 때문에, 최종 답은 "5"
즉, 가장 많이 나온 답인 "5"가 최종적으로 선택
즉, 최종 답변 세트에서 가장 "일관된" 답변을 선택하는 것
표 1에서는 다양한 답변 집계 전략을 사용하여 추론 작업에 대한 테스트 정확도를 보여줌
최빈값을 취하는 방법 외에도, 각 \(r_i, a_i\)를 \(P(r_i, a_i | \text{prompt}, \text{question})\)로 가중치를 부여하여 답을 집계할 수 있음
\(P(r_i, a_i | \text{prompt}, \text{question})\)를 계산하려면, 모델이 \(r_i, a_i\)를 생성할 확률을 정규화하지 않은 값으로 취하거나, 출력 길이에 따라 조건부 확률을 정규화할 수 있음
Self-consistency 방법에서 답을 선택할 때, 단순히 최빈값(majority vote)을 취하는 것 외에, 각 추론 경로 \(r_i\)와 답 \(a_i\)에 확률을 가중치로 부여해 더 정밀하게 답을 선택하는 방법에 대해 설명
이를 위해 각 추론 경로와 답이 생성될 확률을 계산하여 그 확률을 기반으로 가중치를 부여할 수 있음
이때 중요한 개념은 조건부 확률을 이용한 가중치 부여
주요 개념:
\(P(r_i, a_i | \text{prompt}, \text{question})\): 주어진 프롬프트와 질문에 대해, 추론 경로 \(r_i\)와 그로부터 나온 답 \(a_i\)가 생성될 확률을 의미
각 경로에서의 확률을 사용하여 답을 선택할 때 가중치를 부여하는 방식으로, 더 높은 확률로 생성된 답이 더 신뢰성 있다고 판단하여 그 답에 더 높은 가중치를 부여할 수 있음
경로 1
- 추론 경로 \(r_1\): "처음에 3대의 차가 있다. 2대의 차가 더 도착한다. 그래서 3 + 2 = 5."
- 생성된 답 \(a_1\): "5대"
- 확률 \(P(r_1, a_1 | \text{prompt}, \text{question}) = 0.85\)
경로 2
- 추론 경로 \(r_2\): "주차장에 3대의 차가 있었고, 2대가 더 도착한다. 따라서 3 + 2는 5."
- 생성된 답 \(a_2\): "5대"
- 확률 \(P(r_2, a_2 | \text{prompt}, \text{question}) = 0.75\)
경로 3
- 추론 경로 \(r_3\): "처음에 3대의 차가 있었고, 2대가 도착했으므로 총 6대이다." (잘못된 계산)
- 생성된 답 \(a_3\): "6대"
- 확률 \(P(r_3, a_3 | \text{prompt}, \text{question}) = 0.3\)
각 답에 가중치 부여:
Self-consistency 방법에서, 답이 생성된 확률을 기반으로 각 답에 가중치를 부여
이때 확률이 높은 답일수록 더 신뢰할 만하다고 판단하여 더 높은 가중치를 부여
- \(a_1 = 5\)에서 경로 1의 가중치는 0.85
- \(a_2 = 5\)에서 경로 2의 가중치는 0.75
- \(a_3 = 6\)에서 경로 3의 가중치는 0.3
최종 답 계산: 최종 답을 결정할 때는 각 답에 대한 가중치를 더하여, 가장 큰 가중치를 가진 답을 선택
- "5대": 경로 1과 2에서 나왔으므로, 두 경로에서 나온 답의 가중치를 더함
\[ 0.85 + 0.75 = 1.6 \]
- "6대": 경로 3에서 나왔으므로, 이 경로에서 나온 답의 가중치만 존재
\[ 0.3 \]
따라서, "5대"라는 답의 총 가중치가 1.6으로 가장 크기 때문에, 최종적으로 "5대"가 답으로 선택
두 가지 방법:
1. 정규화하지 않은 확률을 사용: 모델이 \(r_i\)와 \(a_i\)를 생성할 확률 자체를 가중치로 사용
여기서는 모델이 추론 경로와 답을 생성할 때의 확률을 직접 계산하여 그 값을 가중치로 고려
즉, 각 경로와 답이 나오게 될 확률을 비교해 더 신뢰성 있는 답을 선택
2. 출력 길이에 따른 정규화: 생성된 경로와 답의 길이에 따라 조건부 확률을 정규화하는 방법
문장이나 추론 경로가 길어질수록 확률이 작아질 수 있기 때문에, 이를 보정하기 위해 각 경로의 길이를 고려해 확률을 정규화
확률을 정규화하지 않은 값으로 계산하는 방법:
정규화되지 않은 확률은 단순히 모델이 주어진 프롬프트와 질문에 대해 \(r_i\)와 \(a_i\)를 생성할 확률
예를 들어, 모델이 특정 추론 경로와 답을 생성할 때 그 확률이 0.6이라면, 해당 경로와 답에 대해 0.6의 가중치를 부여해 더 신뢰할 수 있는 답을 선택할 수 있음
\[ P(r_i, a_i | \text{prompt}, \text{question}) \]
이 값은 모델이 프롬프트와 질문을 입력받았을 때 \(r_i\)와 \(a_i\)를 생성할 확률
여기서는 생성된 답 자체에 확률을 부여하여 가중치를 계산
출력 길이에 따른 정규화:
길이가 긴 경로는 전체 확률이 더 작아질 가능성이 있으므로, 각 단계의 토큰이 생성될 확률을 길이에 따라 조정
이 과정을 통해 정확도가 높지만 길이가 긴 경로가 불리하게 평가되지 않도록 조정
이때 사용되는 수식은 다음과 같음
\[ P(r_i, a_i | \text{prompt}, \text{question}) = \exp \left( \frac{1}{K} \sum_{k=1}^K \log P(t_k | \text{prompt}, \text{question}, t_1, \dots, t_{k-1}) \right) \]
여기서:
- \(K\)는 추론 경로와 답을 포함한 전체 토큰의 개수
- \(P(t_k | \text{prompt}, \text{question}, t_1, \dots, t_{k-1})\)는 이전 토큰들이 주어졌을 때 \(k\)-번째 토큰이 생성될 확률
즉, 모델이 각 토큰을 생성할 때 그 이전 토큰들을 조건으로 해서 \(k\)-번째 토큰의 확률을 계산하는 방식
이 수식은 전체 토큰에 대한 로그 확률의 평균을 계산하는 방식
로그 확률을 사용하면 매우 작은 확률 값을 더 잘 다룰 수 있으며, 문장의 길이가 길더라도 상대적으로 불리하게 평가되지 않도록 보정
\[
P(r_i, a_i | \text{prompt}, \text{question}) = \exp \left( \frac{1}{K} \sum_{k=1}^K \log P(t_k | \text{prompt}, \text{question}, t_1, \dots, t_{k-1}) \right),
\]
여기서 \( \log P(t_k | \text{prompt}, \text{question}, t_1, \dots, t_{k-1}) \)는 이전 토큰을 조건으로 \(r_i, a_i\)에서 \(k\)-번째 토큰 \(t_k\)를 생성할 로그 확률이며, \(K\)는 \(r_i, a_i\)에서의 총 토큰 수
표 1에서 보듯이 "정규화되지 않은 가중합(unweighted sum)", 즉 \(a_i\)에 대해 최빈값을 직접 취하는 방법은 "정규화된 가중합(normalized weighted sum)"을 사용하는 것과 매우 유사한 정확도를 나타냄
실험 결과
우리는 제안한 Self-consistency 방법을 기존 접근 방식과 비교하기 위해 다양한 추론 벤치마크에서 일련의 실험을 수행
실험 결과, Self-consistency는 언어 모델의 규모에 상관없이 모든 모델에서 추론 정확도를 안정적으로 향상시킴을 확인
실험 구성
작업 및 데이터셋
Self-consistency는 다음과 같은 추론 벤치마크에서 평가
- 산술 추론: AddSub, MultiArith, ASDiv, AQUA-RAT, GSM8K, SVAMP 등의 수학 문제 데이터셋을 사용
- 상식 추론: CommonsenseQA, StrategyQA, AI2 Reasoning Challenge을 사용
- 기호 추론: 마지막 문자 연결(예: "Elon Musk"를 입력으로 받아 "nk"를 출력)과 동전 뒤집기 문제도 평가
언어 모델 및 프롬프트
다음과 같은 다양한 규모의 트랜스포머 기반 언어 모델에서 Self-consistency를 평가
- UL2 (Tay et al., 2022): 20억 개의 파라미터를 가진 인코더-디코더 모델로, 완전히 오픈소스로 제공
이 모델은 GPT-3와 비교하여 더 적은 계산 자원으로 유사하거나 더 나은 성능 - GPT-3 (Brown et al., 2020): 1750억 개의 파라미터를 가진 모델로, Codex 시리즈에서 제공하는 두 개의 엔진(code-davinci-001, code-davinci-002)을 사용
- LaMDA-137B (Thoppilan et al., 2022): 1370억 개의 파라미터를 가진 디코더 전용 언어 모델
- PaLM-540B (Chowdhery et al., 2022): 5400억 개의 파라미터를 가진 디코더 전용 언어 모델로, 7800억 개의 고품질 토큰(웹 페이지, 책, 뉴스 기사 등)으로 사전 훈련
모든 실험은 few-shot 설정에서 수행되었으며, 모델 훈련이나 미세 조정 없이 진행
산술 추론 작업에는 동일한 8개의 수동으로 작성된 COT 예시가 사용되었고, 상식 추론 작업에는 4~7개의 예시가 무작위로 선택
샘플링 방법
다양한 추론 경로를 샘플링하기 위해, Radford et al.(2019) 및 Holtzman et al.(2020)의 설정을 따름
UL2-20B와 LaMDA-137B에서는 온도 샘플링(T = 0.5)과 top-k (k = 40) 샘플링을 적용했고, PaLM-540B에서는 T = 0.7, k = 40을, GPT-3에서는 T = 0.7만을 적용
주요 결과
각 실험은 10회 반복되었으며, 매회 디코더에서 40개의 출력을 독립적으로 샘플링
기준선으로는 탐욕적 디코딩을 사용하는 CoT-prompting을 사용
산술 추론
표 2에 제시된 결과는, Self-consistency가 모든 언어 모델에서 산술 추론 성능을 크게 향상시켰음을 보여줌
모델 규모가 커질수록 성능 향상이 더 두드러졌으며, UL2-20B에서는 3%~6%의 절대 정확도 향상이, LaMDA-137B 및 GPT-3에서는 9%~23%의 향상이 나타남
높은 정확도를 이미 달성한 큰 모델(GPT-3 및 PaLM-540B)에서도 AQuA와 GSM8K에서 12%~18%의 절대 정확도 향상이 있었고, SVAMP 및 ASDiv에서는 7%~11%의 향상을 기록
Commonsense and Symbolic Reasoning
표 3에서는 상식 및 기호 추론 작업에 대한 결과
Self-consistency는 네 가지 언어 모델 모두에서 큰 성능 향상을 가져왔으며, 6개 작업 중 5개에서 새로운 최첨단 성능(SoTA)을 달성
기호 추론의 경우, 입력 프롬프트가 2개의 문자 또는 2번의 동전 뒤집기 예시를 포함하지만, 우리는 4개의 문자 및 4번의 동전 뒤집기 예시로 테스트하는 Out-of-distribution (OOD) 설정에서 실험을 진행
이 설정은 PaLM-540B나 GPT-3가 이미 In-distribution에서 완벽한 정확도를 달성한 상태에서 더 도전적인 문제
이 어려운 OOD 설정에서도, 셀프-컨시스턴시는 충분한 모델 크기를 갖춘 상태에서 CoT-prompting보다 더 큰 성능 향상
또한, 샘플링된 추론 경로의 수가 성능에 미치는 영향을 보여주기 위해, 그림 2에서 1, 5, 10, 20, 40개의 경로에 대한 정확도(평균 및 표준 편차)를 10회 실험하여 그래프로 나타냄
결과는 샘플링된 추론 경로의 수가 많을수록 성능이 지속적으로 향상된다는 것을 보여주며, 다양한 추론 경로를 도입하는 것이 얼마나 중요한지 강조
표 4에서는 두 가지 작업에 대한 예시 질문과 함께, Self-consistency가 탐욕적 디코딩보다 더 풍부한 추론 경로를 제공함을 보여줌
Self-consistency helps when Chain-of-Thought hurts performance
Ye & Durrett(2022)의 연구에 따르면, few-shot in-context learning에서 때로는 COT 프롬프팅이 표준 프롬프팅보다 성능을 저하시킬 수 있다고 함
우리는 여기서 Self-consistency가 이러한 문제를 해결할 수 있는지 알아보기 위해 일반적인 NLP 작업에 대해 실험을 수행
실험에 사용된 작업들은 다음과 같습니다:
- Closed-Book Question Answering (폐쇄형 질문 응답): BoolQ, HotpotQA
- Natural Language Inference (자연어 추론): e-SNLI, ANLI, RTE
표 5는 PaLM-540B에서의 결과
일부 작업(e.g., ANLI-R1, e-SNLI, RTE)에서는 COT을 추가하는 것이 표준 프롬프팅보다 성능을 저하시켰지만, Self-consistency는 성능을 크게 향상시키고 표준 프롬프팅보다 더 나은 성능을 발휘
이를 통해, Self-consistency는 few-shot in-context learning에서 합리적인 설명(rationales)을 추가할 수 있는 신뢰할 수 있는 방법임이 입증
3.4 다른 기존 접근 방식과의 비교
우리는 여러 추가 연구를 통해 Self-consistency가 샘플링 및 순위 매기기(sample-and-rank), 빔 탐색(beam search), 앙상블 기반 접근법 등 기존 방법들보다 성능이 훨씬 뛰어나다는 것을 확인
샘플링 및 순위 매기기와의 비교
샘플링 및 순위 매기기는 디코더에서 여러 시퀀스를 샘플링한 후, 각 시퀀스의 로그 확률에 따라 순위를 매기는 방식으로, 생성 품질을 향상시키기 위한 일반적인 방법
우리는 GPT-3 코드-davinci-001에서 동일한 수의 시퀀스를 샘플링하여 Self-consistency와 샘플링 및 순위 매기기를 비교
그 결과는 그림 3에 나와 있음
샘플링 및 순위 매기기는 추가 샘플링과 순위 매기기를 통해 정확도를 약간 향상시키지만, Self-consistency와 비교할 때 그 성능 향상은 훨씬 적음
빔 탐색과의 비교
표 6에서는 UL2-20B 모델에서 Self-consistency와 빔 탐색 디코딩을 비교
동일한 수의 빔과 추론 경로를 사용하여 공정한 비교를 진행
두 가지 작업 모두에서 Self-consistency는 빔 탐색을 크게 능가
Self-consistency는 각 추론 경로를 디코딩하는 데 빔 탐색을 사용할 수도 있지만("셀프-컨시스턴시 사용 빔 탐색"으로 표시된 결과 참조), 샘플링을 사용하는 Self-consistency와 비교하여 성능이 떨어짐
이는 빔 탐색이 출력에서 낮은 다양성을 초래하기 때문
반면, Self-consistency는 추론 경로의 다양성이 성능 향상의 핵심
앙상블 기반 접근법과의 비교
우리는 Self-consistency를 few-shot 학습을 위한 앙상블 기반 방법과도 비교
특히, 두 가지 앙상블 방법을 고려
- 프롬프트 순서 변경: 프롬프트에 포함된 예시의 순서를 무작위로 40번 변경하여 모델이 프롬프트 순서에 민감하게 반응하는 것을 완화
- 여러 세트의 프롬프트: 세 가지 다른 프롬프트 세트를 수동으로 작성.
두 가지 접근법 모두에서 탐욕적 디코딩을 사용한 결과의 최빈값을 앙상블로
표 7에 따르면, Self-consistency와 비교할 때 기존의 앙상블 기반 접근법은 훨씬 적은 성능 향상을 달성
또한, Self-consistency는 여러 모델의 출력을 결합하는 전형적인 모델 앙상블 방식과는 달리, 하나의 언어 모델 위에서 작동하는 "자체 앙상블" 방식에 가까움
우리는 여러 모델을 앙상블한 결과가 Self-consistency보다 훨씬 성능이 떨어진다는 것을 부록 A.1.3에 추가로 제시
추가 연구
우리는 Self-consistency 방법의 다양한 측면을 분석하기 위해 추가 실험을 수행
여기에는 샘플링 전략 및 매개변수에 대한 견고성, 불완전한 프롬프트 및 비자연어 추론 경로에서의 성능을 포함
샘플링 전략 및 모델 크기에 대한 견고성
우리는 온도 샘플링에서의 T 값, top-k 샘플링에서의 k 값, 뉴클리어스 샘플링에서의 p 값을 변화시키며 Self-consistency가 얼마나 견고한지 PaLM-540B 모델을 통해 확인
그림 4(왼쪽)에 그 결과가 나와 있으며, Self-consistency는 다양한 샘플링 전략과 매개변수에 대해 견고한 성능을 발휘
그림 4(오른쪽)에서는 LaMDA-137B 모델 시리즈에서 모델의 크기에 상관없이 성능이 꾸준히 향상됨을 보여줌
작은 모델에서는 특정 능력(예: 산술)이 충분한 크기에 도달해야 나타나기 때문에 성능 향상이 상대적으로 적음
불완전한 프롬프트에 대한 견고성
수동으로 작성된 프롬프트에서 인간 주석자들이 때때로 사소한 실수를 저지르는 경우가 있음
우리는 Self-consistency가 언어 모델의 불완전한 프롬프트에 대한 견고성을 얼마나 향상시킬 수 있는지 추가 연구를 수행
표 8에서 그 결과를 확인할 수 있음
불완전한 프롬프트는 탐욕적 디코딩의 정확도를 낮췄지만(17.1 → 14.9), Self-consistency는 이러한 차이를 메우고 성능을 안정적으로 향상
또한, 최종 집계된 답과 일치하는 디코딩의 비율(일관성)이 정확도와 매우 높은 상관관계를 가진다는 것을 발견
이는 Self-consistency를 통해 모델이 생성한 솔루션의 불확실성을 추정할 수 있음을 시사
즉, 일관성이 낮으면 모델이 자신이 틀렸을 가능성이 높다는 것을 알 수 있음
Self-consistency는 모델이 "자신이 모를 때"를 인식할 수 있는 능력을 어느 정도 부여
비자연어 추론 경로 및 Zero-shot COT에서의 성능
우리는 Self-consistency 개념을 중간 추론 경로의 대안 형태(예: "주차장에 이미 3대의 차가 있다. 2대가 더 도착한다. 이제 3 + 2 = 5대의 차가 있다."에서 "3 + 2 = 5"와 같은 수식)에도 적용할 수 있는지 테스트
표 8("수식이 포함된 프롬프트")에서 그 결과를 확인
Self-consistency는 여전히 중간 수식을 생성하여 정확도를 향상시켰지만, 자연어 추론 경로를 생성하는 것과 비교했을 때, 수식은 훨씬 짧기 때문에 다양성을 생성할 기회가 줄어들어 성능 향상이 적음
zero-shot COT에서도 Self-consistency를 테스트한 결과, 이 방법이 효과적이며 성능을 크게 향상시켰음을 확인(+26.2%, 표 8).
결론 및 논의
Self-consistency라는 단순하면서도 효과적인 방법을 제안했으며, 이를 통해 다양한 산술 및 상식 추론 작업에서 성능이 크게 향상됨을 확인
이러한 성능 향상은 서로 다른 규모의 네 가지 대형 언어 모델에서 모두 관찰
정확도 향상 외에도, Self-consistency는 언어 모델을 사용할 때 추론 작업에 대한 합리적 설명을 수집하고, 불확실성 추정과 모델 출력의 개선된 보정(calibration)을 제공하는 데 유용
Self-consistency의 한 가지 제한점은 더 많은 계산 비용이 발생한다는 점
실제로는 5개 또는 10개의 경로만을 사용하여도 대부분의 성능 향상을 얻을 수 있으며, 비용이 크게 증가하지 않음
대부분의 경우 성능이 빠르게 포화되기 때문
추가로, 언어 모델이 때때로 잘못된 추론 경로를 생성하거나 비논리적인 경로를 생성할 수 있다는 점도 확인되었으며, 모델의 합리적 설명 생성을 더욱 개선하는 연구가 필요