NL-225, STaR: Self-Taught Reasoner Bootstrapping Reasoning With Reasoning, NeurIPS 2022
◼ Comment
- https://contents.premium.naver.com/banya/banyacompany/contents/231125123348825aj
- https://contents.premium.naver.com/banya/banyacompany/contents/240715100053975sz
- https://contents.premium.naver.com/banya/banyacompany/contents/240725103026985tb
- https://contents.premium.naver.com/banya/banyacompany/contents/240913111816666ih
- 위의 아티클을 보다가 알게 된 논문이라 읽어봄.
- Q*라는 알고리즘과 연관되는 논문인거 같음.
- 논문은 구글,standford에서 나온걸로 믿을만하다고 판단
- 이 방법은 근데 논문을 몰랐을때에도 비슷하게 실무에서 시도했었던거긴함.
- 실무에서 완전히 똑같은 결론을 낸건 아니지만, 반복적인 데이터 증강이 효과가 있다고 느끼긴했음
- 논문의 핵심은, 근거도 생성하도록 하면 추론능력이 향상되는데 근거를 가진 데이터를 어떻게 만드냐? 이거임
- 그래서 few-shot으로 근거를 만들고, 정답이 제대로 도출되면 그 근거가 맞다고 가정하고 들어감
- 이렇게 데이터 증강하고, 그걸로 모델학습하고, 다시 그걸로 데이터 증강하고, 그걸로 모델학습하고 이런느낌임 (여기서 모델학습할땐 오버피팅 안일어나게 매번 pretraining 에서 학습)
- 이렇게만 하면 한계가 있기 때문에, 정답을 알려주고 근거를 생성하는 이유화(합리화 느낌) 방법을 제안함.
- 실험부분을 읽어보진 않았긴함.
Abstract
- 단계별 "연쇄적 사고(chain-of-thought)" 논리를 생성하면 복잡한 추론 과제(예: 수학 또는 상식 질문 응답)에서 언어 모델의 성능이 향상됩니다.
- 그러나 현재 언어 모델의 논리 생성 유도는 대규모 논리 데이터셋을 구축하거나 소수의 예시를 사용한 추론으로 정확도를 희생해야만 가능합니다.
- 우리는 소수의 논리 예시와 논리가 없는 대규모 데이터셋을 반복적으로 활용하여 점진적으로 더 복잡한 추론 능력을 향상시키는 기술을 제안합니다.
- 이 기술은 "자기 학습 추론자(Self-Taught Reasoner, STaR)"로, 간단한 반복 과정을 따릅니다.
- 몇 가지 논리 예시로 질문에 대한 답변을 생성하고, 생성된 답변이 틀리면 정답을 바탕으로 다시 논리를 생성한 후, 결국 맞는 답을 도출한 모든 논리에 대해 미세 조정을 합니다.
- 이 과정을 반복합니다.
- 우리는 STaR이 여러 데이터셋에서 최종 답변을 직접 예측하도록 미세 조정된 모델에 비해 성능을 크게 향상시킴을 보여주었으며, CommonsenseQA에서 30배 더 큰 최첨단 언어 모델을 미세 조정한 것과 유사한 성능을 보였습니다.
- 따라서 STaR은 모델이 스스로 생성한 추론을 학습하여 자체적으로 성능을 향상시킬 수 있게 합니다.
1 Introduction
- 인간의 의사결정은 종종 연장된 사고의 연쇄 결과로 이루어집니다 [1, 2].
- 최근 연구에 따르면, 명시적인 중간 추론("논리")이 대형 언어 모델(LLM)의 성능을 개선할 수 있음을 보여주었습니다 [3–8].
- 예를 들어, [5]는 중간 단계를 위해 "스크래치패드"를 사용하도록 명시적으로 훈련된 LLM이 산술 문제에서 완벽한 분포 내 성능과 강력한 분포 외 일반화 성능을 달성할 수 있음을 보여주었고, 답을 직접 예측하도록 훈련된 모델은 두 가지 모두에 실패한다는 것을 입증했습니다.
- [5]도 읽어볼 필요가 있는듯
- Show your work: Scratchpads for intermediate computation with language models.
- 이러한 연구들은 최종 답변을 제시하기 전에 명시적인 논리를 생성하는 것("논리 생성")이 수학적 추론, 상식적 추론, 코드 평가, 사회적 편향 추론, 자연어 추론을 포함한 다양한 과제에서 LLM에 유용하다는 것을 시사합니다.
- o1의 결과가 이때부터 언급됐군?
- 그러나 논리 생성을 유도하는 두 가지 주요 방법에는 모두 심각한 단점이 있습니다.
- 하나는 인간 주석자에 의해 수동으로 또는 수작업으로 설계된 템플릿을 사용하여 자동으로 논리로 구성된 미세 조정 데이터셋을 구축하는 방법입니다 [3–5, 9].
- 수동 방법은 비용이 많이 들며, 흥미로운 문제마다 이러한 데이터셋을 구성하는 것은 비현실적입니다 [3].
- 반면 템플릿 기반 방법은 자동으로 생성된 논리에 의존하지만, 이미 일반적인 해결책이 알려져 있거나 합리적인 하드코딩 휴리스틱을 만들 수 있을 때만 작동합니다 [5, 4].
- 어쨌든 자동으로 데이터를 만드는 방법을 개발해야하는거 아닐까?
- 대안으로는 언어 모델 프롬프트에 소수의 논리 예시만 포함시켜 맥락 내 학습을 활용하는 방법이 있습니다.
- 이는 논리가 없는 프롬프트("직접" 프롬프트)와 비교할 때 수학적 및 상징적 추론 과제의 정확도를 향상시키는 것으로 나타났습니다 [5, 6].
- 하지만 논리를 포함한 소수 예시 기법이 비추론 모델보다 성능이 우수한 경향이 있는 반면, 일반적으로 더 큰 데이터셋을 사용하여 직접 답을 예측하도록 미세 조정된 모델보다는 성능이 크게 떨어집니다 [5, 6].
- 논리가 있는 few-shot 프롬프트로 성능을 올릴 수 있긴 하나, 더 많은 데이터로 학습된 모델보단 성능이 떨어진다는 것 (같은 데이터 기준에서 좋으면 된거 아닌가?)
- 이 논문에서는 LLM(대형 언어 모델)의 기존 추론 능력을 활용하여 고품질 논리 생성을 점진적으로 향상시키는 새로운 접근 방식을 채택했습니다.
- 구체적으로, 소수의 예시를 사용해 대형 언어 모델이 스스로 논리를 생성하도록 유도하고, 올바른 답을 이끌어낸 논리에 대해 미세 조정을 통해 모델의 능력을 더욱 향상시킵니다.
- 이 절차를 반복하여, 향상된 모델을 사용해 매번 새로운 훈련 세트를 생성하는데, 이 과정은 상호작용적인 시너지 효과를 발생시킵니다.
- 논리 생성의 개선이 훈련 데이터의 품질을 향상시키고, 훈련 데이터의 개선이 다시 논리 생성 능력을 높이는 방식입니다.
- 실무에서 쓰는 것과 비슷한 느낌. 반복적으로 최대한 주어진 소수의 데이터가지고 향상시키는 느낌
- 그러나 이 루프는 훈련 세트에서 풀지 못한 문제들에 대한 직접적인 학습 신호가 없기 때문에 결국 새로운 문제를 해결하는 데 실패하는 경우가 발생합니다.
- 대표적인 단점인듯
- 이 문제를 해결하기 위해 우리는 '합리화(rationalization)'라는 개념을 제안합니다.
- 모델이 문제에 대해 올바른 답을 내지 못할 때, 정답을 제공하여 새로운 논리를 생성하게 합니다.
- 이를 통해 모델은 정답을 기준으로 역으로 추론할 수 있으며, 이 방법이 더 유용한 논리를 생성하는 데 도움이 됩니다.
- 이렇게 생성된 논리는 훈련 데이터에 추가되어 전체 정확도를 향상시키는 데 기여합니다.
- 단점을 해결할 돌파구!!
- 우리는 이 과정을 통해 **Self-Taught Reasoner (STaR)** 방법을 개발했습니다.
- STaR는 확장 가능한 부트스트래핑 방법으로, 모델이 자체적으로 논리를 생성하는 방법을 학습하는 동시에 점점 더 어려운 문제를 해결하는 능력도 학습하도록 합니다.
- 이 방법에서는 다음 과정을 반복합니다.
- 각 반복에서 먼저 현재 모델의 논리 생성 능력을 사용하여 데이터셋을 해결하려고 시도하고, 그다음 모델이 해결하지 못한 문제에 대해 정답을 바탕으로 논리를 생성하여 데이터셋을 보강합니다.
- 마지막으로, 이 결합된 데이터셋을 바탕으로 대형 언어 모델을 미세 조정합니다.
- STaR를 산술 문제, 수학 서술 문제, 상식적 추론에 적용한 결과, 소수의 예시 프롬프트를 대규모 논리 데이터셋으로 효과적으로 변환하여 성능을 크게 향상시킬 수 있음을 확인했습니다.
- CommonsenseQA [10]에서 STaR는 소수 예시 기반 모델 대비 35.9%, 답을 직접 예측하도록 미세 조정된 모델 대비 12.5% 성능을 개선했으며, 30배 더 큰 모델과 비교했을 때도 유사한 성능을 보였습니다(72.5% vs. 73.0%).
- 따라서 우리는 다음과 같은 공헌을 합니다:
- 1. 우리는 초기의 소수 논리 예시들로부터 반복적으로 논리 데이터셋을 생성하는 부트스트래핑 메커니즘을 제안합니다—새롭게 생성된 논리의 정확성을 검증할 필요가 없습니다. (왜 검증이 필요없지?)
- 2. 우리는 논리 생성을 보완하는 방식으로 '합리화(rationalization)'를 도입했습니다. 모델이 답을 정당화하는 과제를 수행하고, 마치 논리를 스스로 생각해낸 것처럼 미세 조정됩니다. 우리는 합리화가 부트스트래핑 과정을 가속화하고 개선함을 보여줍니다.
- 3. 우리는 이러한 기법을 수학적 추론과 상식적 추론 영역에서 다양한 절단 실험(ablations)을 통해 평가합니다.
- 4. 우리는 사전 훈련된 대형 언어 모델이 스스로의 언어 모델링 능력을 반복적으로 사용해 스스로를 개선할 수 있게 하는 최초의 기법을 제안합니다.
2 Background and Related Work
- 맥락 내 학습(In-context Learning)
- 최근 대형 언어 모델이 맥락 내 학습을 수행하는 능력을 탐구하는 여러 연구들이 등장했습니다 [11, 12]. 맥락 내 학습은 소수 예시 학습(few-shot learning)을 언어 모델링 문제로 다루며, 프롬프트 내에서 몇 가지 예시를 보여주고 모델이 새로운 예시에 적용할 패턴을 학습하고 식별하게 합니다. 일부 연구는 맥락 내 학습을 베이지안 추론 관점에서 언어 모델링 목표로 분석했으며 [13], 다른 연구는 이를 '유도 헤드(induction heads)'와 같은 기계적 과정으로 설명하려고 시도했습니다 [14]. 또한 프롬프트 구성의 차이가 소수 예시 성능에 큰 영향을 미친다는 것이 알려져 있으며, 일부 연구는 소수 예시 프롬프트를 최적화할 수 있는 "소프트 프롬프트"로 대체하면 성능이 눈에 띄게 향상된다는 것을 발견했습니다 [15]. 우리는 질문의 표현보다 모델의 출력을 강조하며, 특히 모델이 결론에 도달하기 전에 문제를 통해 추론하는 능력에 중점을 둡니다.
- 논리(Rationales)
- 논리가 언어 모델 성능에 미치는 영향을 다룬 초기 연구 중 하나는 [3]으로, 답변 전에 명시적인 논리가 포함된 데이터셋으로 언어 모델을 훈련하면 최종 답을 생성하는 모델의 능력이 향상될 수 있음을 보여주었습니다. 그러나 이는 수천 개의 훈련 예시를 인간의 추론으로 수동으로 주석 달아야 했습니다. 최근 연구 [5]에서는 단계별 "스크래치패드"를 사용하면 산술, 다항식 평가, 프로그램 평가와 같은 작업에서 미세 조정된 LLM의 성능과 일반화 능력을 향상시킬 수 있음을 보여주었습니다. 유사하게 [6]는 소수의 "연쇄적 사고(chain-of-thought)" 논리 프롬프트를 사용해 미세 조정 없이 다양한 과제에서 모델 성능을 향상시켰습니다. 마지막으로 [16]은 커리큘럼 학습 접근법을 통해 공식 수학 문제를 해결할 수 있음을 보여주었으며, 그 조건으로는 1) 문제들이 Lean이라는 정리 증명 언어로 번역되어야 하고 [17], 2) 증명의 타당성을 직접 평가할 수 있어야 하며, 3) 각 문제에 대해 수많은 잠재적 솔루션을 샘플링할 수 있어야 하고, 4) 별도의 가치 함수 모델을 훈련시켜야 하며, 5) GPT-f라는 대규모 수학 데이터셋으로 미세 조정된 모델을 사용해야 한다는 점이 있었습니다 [18]. 우리는 이러한 조건들이 모두 적용되지 않는 도메인이 많다는 점을 주목합니다. 또한 논리가 유익한 효과를 나타내는 이유를 설명하려는 연구들도 있습니다. 일부는 잠재 변수 모델 관점에서 그 영향을 분석했으며 [19], 다른 연구들은 중간 작업 감독의 이점에 대한 공식적인 증명을 제공했습니다 [20].
- 반복 학습(Iterated Learning)
- 반복 학습 알고리즘은 다양한 솔루션이나 성공적인 방법을 찾아 이를 기반으로 추가 솔루션을 찾아내는 방식으로 제안되었습니다 [21, 22, 16]. [21]은 우리의 접근 방식에 영감을 준 강화 학습 기법인 **전문가 반복(Expert Iteration, ExIt)**을 도입했습니다. 이 방식은 기본적으로 '견습생'의 자기 대결 후, 더 느린 '전문가'의 피드백을 받아 모방 학습을 하고, 개선된 견습생이 전문가를 대체하는 루프로 이루어집니다. [16]은 ExIt을 공식적 추론에 적용했으며, [22]는 반복 학습을 시각적 질문 응답에 모듈형 네트워크를 활용하여 적용했습니다. STaR와 전문가 반복 방법 간에는 여러 유사점이 있습니다 [21]. 예를 들어, 생성된 예시가 목표와 일치하는지 여부에 따라 필터링하는 과정은 전문가의 피드백으로 볼 수 있습니다. 그러나 우리는 고정된 '전문가'를 사용하며 별도의 가치 함수 모델을 훈련하지 않습니다.
- 자연어 설명(Natural Language Explanations)
- 자연어 설명은 설명 가능한 기계 학습의 관점에서 논의되며, 추론보다는 정당화에 초점을 맞춥니다 [23, 24]. 이러한 연구의 동기는 주로 설명 가능한 의사결정에 근거하며, [3]과 유사하게, 사후(post-hoc) 설명을 요구하는 것이 모델 성능을 향상시키지는 않는다는 점을 발견하는 경향이 있습니다.
3 Method
3.1 Rationale Generation Bootstrapping (STaR Without Rationalization)
- 주어진 사전 학습된 LLM M과 문제 x와 정답 y로 구성된 초기 데이터셋 D = {(xi, yi)}D_i=1이 있습니다.
- 우리의 기법은 중간 추론 과정 r을 포함한 소규모 프롬프트 집합 P로 시작합니다.
- P = {(x_p_i, r_p_i, y_p_i)}P_i=1, 여기서 P는 D의 부분집합입니다(예: P = 10).
- 일반적인 소수 예시 프롬프트 방식처럼, 우리는 이 프롬프트 집합을 D의 각 예시에 연결합니다.
- 즉, xi = (x_p_1, r_p_1, y_p_1, ..., x_p_P, r_p_P, y_p_P, xi)와 같이 연결하여 모델이 xi에 대한 추론 rˆi와 정답 yˆi를 생성하도록 유도합니다.
- 즉 처음엔 few-shot 추론으로 시작
- 우리는 올바른 정답으로 이어지는 추론이 그렇지 않은 것보다 더 높은 품질이라고 가정합니다.
- 따라서, 생성된 추론 중 올바른 답을 도출한 것(yˆi = yi)을 필터링합니다.
- 정답을 맞추면 맞는 근거라고 가정하는듯
- 이 필터링된 데이터셋으로 기본 모델 M을 미세 조정하고, 새로 미세 조정된 모델로 새로운 추론을 생성하는 과정을 다시 시작합니다.
- 이 과정을 성능이 안정화될 때까지 반복합니다.
- 이 과정에서, 새로운 데이터셋을 수집할 때마다 원래의 사전 학습된 모델 M에서 훈련을 시작하며, 한 모델을 지속적으로 훈련하여 과적합을 방지합니다.
- 모은 데이터로 M을 학습한걸 M'라고 하자.
- M'로 다시 few-shot 추론시작. M보다 나은녀석이니 더 많은 데이터 모음
- 더 많은 데이터로 학습할때 다시 M부터 학습 (과적합방지)
- 실제로 사내에서 이렇게 거의 똑같이 했었음 (역시 이미 누군가 연구했었던 거군)
- 이 알고리즘의 개요는 알고리즘 1에 나와 있습니다.
- STaR는 RL 스타일의 정책 기울기 목표에 대한 근사치로 볼 수 있습니다.
- 이를 이해하기 위해, M을 이산 잠재 변수 모델 pM(y | x) = Σ_r p(r | x)p(y | x, r)로 볼 수 있습니다.
- 즉, M은 y를 예측하기 전에 잠재 추론 r을 샘플링합니다.
- 이제, 지표 보상 함수 1(ˆy = y)를 고려할 때, 데이터셋 전체에 대한 총 기대 보상은 아래로 정의됩니다.
- 이때, 지표 함수는 올바른 답 yi로 이어지지 않는 모든 샘플 추론에 대한 기울기를 제거합니다:
- 이것이 STaR에서 필터링 과정입니다(라인 5).
- 따라서, STaR는
- (1) (rˆi, yˆi)의 샘플을 탐욕적으로 디코딩하여 이 추정치의 분산을 줄이고(이는 잠재적으로 추론의 편향된 탐색을 야기할 수 있음),
- (2) 동일한 데이터 배치에서 여러 번의 기울기 업데이트를 수행함으로써 J를 근사합니다(일부 정책 기울기 알고리즘과 유사합니다[25]).
- 즉 정답을 제대로 생성하는 경우 reward(J)을 받는 느낌. 왜냐하면 정답을 제대로 생성한 데이터로 모델이 학습이 되니까?
- 이러한 근사는 STaR를 간단하고 광범위하게 적용 가능한 방법으로 만들며, 표준 LLM 훈련 기법을 통해 쉽게 구현할 수 있습니다.
- 향후 연구는 STaR와 위에서 언급한 RL 목표 간의 연결을 더 면밀히 조사해야 합니다.
3.2 Rationalization
- 이유 생성 부트스트래핑(bootstrap) 알고리즘은 한 가지 한계가 있습니다.
- 모델이 올바르게 답한 예시에만 훈련되기 때문에, 새로운 문제를 해결하지 못하면 성능 개선이 중단됩니다.
- 이는 알고리즘이 실패한 예시로부터 훈련 신호를 얻을 수 없기 때문에 발생하는 근본적인 문제입니다.
- 이에 영감을 받아 [3]에서 제안된 기법을 참고하여, 우리는 "이유화(rationalization)"라고 부르는 새로운 방법을 제안합니다.
- 구체적으로, 정답을 힌트로 모델에 제공하고, 이전의 이유 생성 단계에서와 같은 스타일로 이유를 생성하도록 요청합니다.
- 정답을 알게 되면 모델은 역추론을 통해 더 쉽게 올바른 답으로 이어지는 이유를 생성할 수 있습니다.
- 사람도 잘 모르는 문제를 정답을 알고 이유를 추측하면, 합리화하면서 그럴싸한 이유를 만들거 같긴함. 이런 느낌아닐까? 물론 애초에 모델이 모르는 지식인 경우 근거가 잘못되는 케이스가 생길거 같긴함
- 예를 들어, 그림 2에서 우리는 "정답이 (b) grocery cart"라는 힌트를 프롬프트에 제공하여 이유를 생성하도록 합니다.
- 우리는 이유 생성에서 모델이 실패한 문제들에 rationalization를 적용합니다.
- rationalization 과정에서 생성된 이유를 데이터셋에 추가할 때, 해당 프롬프트에서 힌트를 제거하여 마치 모델이 힌트 없이 이유를 생각해낸 것처럼 합니다.
- 필터링을 거친 후, 이전에 생성된 데이터셋과 이유화로 생성된 데이터셋을 결합하여 모델을 미세 조정(fine-tuning)합니다.
4 Experiments
4.1 Experimental Protocol
4.2 Datasets
4.3 Symbolic Reasoning: Results on Arithmetic
- 모델이 1-5 사이의 숫자에 대한 정확도를 반복적인 외부 루프에서 기록한 결과가 그림 4에 나타나 있습니다. STaR을 16번의 반복(iteration) 동안 실행한 후, 전체 정확도는 89.5%에 도달했습니다. 참고로, 추론 과정 없이 10,000개의 예시로 5,000단계 동안 훈련된 기본 모델의 정확도는 76.3%였습니다. 주목할 만한 점은, 소수 예시로 산술 문제를 푸는 정확도가 매우 낮다는 것입니다. 2자리 덧셈의 정확도는 1% 미만이며, 더 많은 자리수에서는 거의 0에 가깝습니다.
- 그러나 **이유화(rationalization)** 기법을 사용하면 정확도가 매우 빠르게 개선됩니다. 모델이 생성한 scratchpad를 사용한 1회 미세 조정(fine-tuning) 후, 2자리 덧셈의 정확도는 1% 미만에서 32%로 상승했습니다. 이유화 없이 성능 향상은 단계적으로 이루어지며, 모델은 (n-1)자리 덧셈에서 좋은 성능을 내기 전까지 n자리 덧셈에서는 일반적으로 성능이 낮습니다. 반면에 이유화를 사용하면 모델이 여러 자리수를 동시에 학습할 수 있지만, 정확도가 모든 자리수에서 동일하지는 않습니다. 이유화를 통해 많은 문제들이 소수 예시만으로 해결 가능해지기 때문에, 우리는 STaR 훈련을 300단계에서 시작했습니다(참고로, 이유화 없이 1자리 덧셈에서 과적합이 발생함). 이후 반복(iteration)마다 20단계를 추가하여 훈련을 진행했습니다.
- 또한, 우리는 20번째 반복 전에 이유화된 STaR을 추가 자리수로 계속 사전 훈련(pre-training)하는 실험을 수행했고, 반복마다 전체 훈련 예시 수를 고정했습니다. 그 결과, 초기 자리수 집합에 대한 성능이 빠르게 개선될 뿐만 아니라, 훈련 중에 한 번도 본 적 없는 9자리와 10자리 문제에서도 모델이 많은 분포 외 문제를 성공적으로 해결하는 것을 확인했습니다. 그림 5에서 시각적으로 볼 수 있듯이, 이 새로운 자리수의 도입은 훈련을 다소 불안정하게 만들었지만, 그 정확한 원인은 명확하지 않습니다.
4.4 Natural Language Reasoning: Commonsense Question Answering
- 표 1: 우리는 여러 기준 모델을 평가했습니다. 여기에는 scratchpad를 사용한 경우와 사용하지 않은 경우 모두에 대한 소수 예시 GPT-J 평가, 정답을 직접 예측하도록 미세 조정된 GPT-J 기준 모델, 그리고 이유화(rationalization)를 적용한 경우와 적용하지 않은 경우의 STaR 알고리즘을 GPT-J에 적용한 평가가 포함됩니다. CoT는 STaR가 아닌 모델들이 추론(rationale)을 출력하는 경우를 의미하며, Direct는 최종 답을 직접 예측하는 모델을 의미합니다. 최종 STaR 모델은 추론 생성으로 훈련 데이터셋의 78.2%에서 훈련되었으며, 이유화를 통해 추가적으로 8.5%가 포함되었습니다.
- 즉 GPT-J기반에 STaR을 적용하면 꽤 유의미하게 오른다
4.5 Mathematical Reasoning in Language: Grade School Math
- The Impact of Rationalization
- 핵심적인 질문은 이유화가 정확히 어떤 역할을 하는가입니다. 직관적으로, 이유화는 모델이 해답을 역공학(reverse-engineer)하거나 각 단계가 결론에 얼마나 가까워지는지를 식별하는 휴리스틱을 제공하는 역할을 합니다. 이는 현실 세계의 문제와 유사합니다. 최종 결과는 알고 있지만, 이를 정당화하기 어려운 경우가 많습니다. 수학적으로 보면, 이유 생성(rationale generation)은 모델 M이 제공한 분포 p(r | x)에서 이유를 샘플링하는 반면, 이유화는 정답을 조건으로 하여, 이유에 대한 더 나은 탐색 공간을 제공할 수 있는 대안적인 분포 p(r | x, y)에 접근하게 합니다. 이렇게 보면, 이유화는 식 1에 나오는 목표를 제안 분포(proposal distribution)로 힌트를 추가한 모델에서 샘플링하는 오프 정책(off-policy) 추정으로 정의될 수 있습니다. 향후 연구에서는 이유화와 이러한 강화 학습(RL) 목표 간의 더 많은 연관성을 규명하고, 이유화가 학습을 언제, 왜 개선하는지에 대해 더 일반적으로 조사할 필요가 있습니다.
- 또한, 낮은 샘플링 온도(temperature)로 인해 이유화 없이 생성된 출력은 모델이 자신이 답을 가장 확신하는 예시에 해당합니다. 이는 이러한 예시들이 첫 번째 반복(iteration)에서는 이유화 예시에 비해 더 약한 기울기 신호를 제공하게 만듭니다. 우리가 매번 미세 조정(fine-tuning) 반복을 할 때마다 사전 학습된 모델에서 다시 훈련을 시작하기 때문에, 이러한 효과의 정도를 직접적으로 측정하기도 어렵습니다. 마지막으로, "힌트"를 추가하는 방법이 즉각적으로 질문과 답에서 도출되지 않으며, 일부 맥락에서는 이를 제공하는 것이 간단하지 않을 수 있다는 점을 지적해야 합니다. 다양한 힌트 기법의 영향을 탐구하고, 그 일반성을 평가하는 것도 향후 연구의 한 방향이 될 수 있습니다.
- Temperature
- 훈련 데이터셋을 확장하려는 경우, 이유화에 대한 직관적인 대안은 더 많은 샘플링과 더 높은 온도로 샘플링하는 것입니다. 그러나 실제로는 이것이 역효과를 낳는다는 것을 발견했습니다.
- 이건 새롭게 안 사실. 괜히 근거가 헛소리하게 만드는 경향이라고 보면 될듯. (오히려 성능을 떨어뜨리기도 한다고함)
- 일반적으로, 이는 잘못된 추론에도 불구하고 정답을 맞출 가능성을 크게 높이며, 잘못된 추론 또는 관련 없는 추론을 학습하면 일반화에 방해가 됩니다. 특히 산술 문제와 같은 더 구조화된 작업에서는 모델이 더 높은 온도로 학습한 scratchpad가 의미 없는 방향으로 확산되어 모델이 정체하게 됩니다. 전반적으로, 0.5 또는 0.7과 같은 더 높은 온도에서의 샘플링은 이유화 없이 추론만을 사용한 모델보다 성능이 일관되게 나빴습니다. 또한, 대형 언어 모델에서의 텍스트 생성은 순차적이기 때문에(즉, 이전 토큰을 생성하지 않고는 다음 토큰을 생성할 수 없음), 텍스트 생성이 병목이 되며 이는 이유화보다 계산적으로 훨씬 비효율적입니다. 예를 들어, 10개의 샘플 출력을 생성하는 것은 단일 샘플 출력을 생성하는 것보다 약 10배 더 느립니다.
- 그러나 여러 샘플을 활용하는 잠재적으로 유용한 방법은 [32]에서 제안된 방법을 사용하는 것입니다. 여러 고온 scratchpad의 다수결 결과를 기준으로 저온 scratchpad를 비교하는 방식입니다. 이를 통해 답만 있는 데이터셋에도 STaR를 적용할 수 있을 것입니다.
- temperature을 높여서 여러개 샘플링해서, 다수결을 통해 근거를 선택하는 방법? 뭐 그렇게 활용해볼 수도 있을거 같기는함
- Few-shot Prompting
- 주목할 만한 현상은, 샘플링 중에 소수 예시 프롬프트를 포함하면 나중에 생성된 이유들이 초기 소수 예시의 이유들과 점점 더 달라지는 '드리프트(drift)' 현상이 크게 줄어든다는 점입니다. 이로 인한 이점은 모델이 초기 이유들의 품질과 난이도에 덜 제약받게 되어 이론적으로 더 많이 일반화할 수 있다는 것입니다. 잠재적으로 부정적인 결과는 이유의 스타일이 원래 프롬프트 스타일과 덜 일치할 수 있다는 점입니다. 또 다른 이점은 계산 자원의 관점에서 프롬프트 길이가 짧아지면 샘플링할 때 시퀀스 길이가 줄어들어 효율성이 높아진다는 것입니다. 훈련 중 언제 소수 예시 프롬프트를 "비활성화"할지 결정하는 것은 또 다른 하이퍼파라미터이지만, 이는 향후 연구 과제로 남겨둡니다. 또한 외부 루프의 첫 반복 이후 프롬프트를 생략하면 모델이 시간이 지남에 따라 이유화 성능이 점진적으로 저하되는 경향이 있습니다. 따라서 이 접근 방식을 사용할 때 장기적인 훈련에서는 일부 힌트를 포함하는 것이 필요할 수 있습니다.
- 결국, 훈련의 후반 반복에서 소수 예시 프롬프트를 포함할지 여부는 사용 사례에 따라 달라집니다. 특정 프롬프트 스타일을 일관되게 따르는 것이 목표일 경우(이는 설명 가능성에 이점을 줄 수 있음), 샘플링에 소수 예시 프롬프트를 포함해야 하며, 더 빠른 훈련 루프가 목표일 경우 이를 제거할 수 있습니다. 또한, 다른 데이터셋이나 더 큰 모델을 사용할 경우 성능에 미치는 영향을 고려할 수 있기 때문에, 이를 일반적으로 하이퍼파라미터로 다루는 것이 바람직합니다.
- few-shot이 반복학습의 후반부에서는 상황에따라 뺄 수도 있을거 같다는 것
6 Conclusion
- 우리는 문제를 해결하기 위한 이유를 생성하는 모델의 능력을 반복적으로 향상시키는 Self-Taught Reasoner (STaR)를 제안합니다.
- 우리는 소수 예시 프롬프트를 사용하여 모델이 여러 문제를 단계별로 해결하도록 하고, 모델이 틀린 문제에 대해서는 올바른 답을 이유화(rationalization)하도록 프롬프트합니다.
- 이후, 처음부터 맞았던 해답과 이유화된 올바른 해답 모두를 바탕으로 미세 조정을 하고, 이 과정을 반복합니다.
- 이 기법이 상징적 추론과 자연어 추론 모두에서 모델의 일반화 성능을 상당히 개선함을 확인했습니다.
- STaR에는 몇 가지 중요한 한계가 있습니다.
- 첫 번째 반복이 성공하기 위해서는 소수 예시 성능이 우연 수준(chance) 이상이어야 하며, 이는 초기 모델이 어느 정도 추론 능력을 가지고 있어야 함을 의미합니다.
- 예를 들어, GPT-2는 산술 영역에서도 소수 예시 추론을 통해 부트스트래핑할 수 없었습니다.
- 즉 pretraining이 어느정도 되서 모델이 지식을 좀 가지고 있어야한다.. 당연한 얘기인듯
- 또 다른 한계는, 우연 성능이 높은 환경(예: 이진 결정)에서는 많은 잘못된 이유가 발생해 STaR 접근법이 혼란을 일으킬 수 있다는 점입니다.
- 이러한 환경에서 잘못된 이유를 어떻게 필터링할 것인지가 풀리지 않은 문제입니다.
- 논문 읽을때부터 든 생각이긴함. 잘못된 근거를 어떻게 걸러낼 것인가
- 그럼에도 불구하고, 우리는 추론 없이 제공된 예시를 사용해 추론을 부트스트래핑하는 것이 매우 일반적인 접근 방식이라고 믿으며, STaR가 여러 분야에서 더 정교한 기법의 기초가 될 수 있다고 생각합니다.
Reference
- https://arxiv.org/pdf/2203.14465
- https://ostin.tistory.com/489
댓글
댓글 쓰기