https://arxiv.org/pdf/2212.09561


Abstract:

  • 이 논문은 LLM 이 CoT 와 같은 기법을 사용해서 추론을 할 때 성능을 높이는 방법을 소개함.
  • CoT 는 단계별 여러 단계의 추론 과정 각각이 매우 중요함. 단계별 과정에서 작은 실수가 발생하면 최종 결과에 오류가 축적될 수 있다. 즉, 한 단계에서의 잘못된 답이 다음 단계의 입력이 되면서 오류가 이어질 수 있음.
  • 이러한 문제를 해결하기 위해선 LLM들은 자신의 답을 검증하고 오류를 바로잡는 능력이 필요하다. 이를 위해 Self-Verification (자기 검증) 매커니즘을 제안함.
  • Self-Verification 는 사람들은 복잡한 문제에 대한 결론을 도출한 후, 그 결론이 맞는지 다시 검토하는 과정을 거치는 것에서 영감을 받음. 그러니까 LLM 이 스스로 유도한 답을 역방향으로 검토해보는 기법이다. (Backward Verification)
  • 제안된 자기 검증 방법을 적용하면, 다양한 산술, 상식, 논리 추론 데이터셋에서 LLM의 추론 성능이 향상된다고 함.

 

 

Introduction:

  • 이전 연구들은 모델의 출력이 올바른지 평가하기 위해 별도의 검증기를 훈련하는 방법을 사용했었음. 하지만 이런 방법에는 검증기를 훈련하기 위해 많은 양의 인적 주석과 추가적인 미세조정이 필요하다는 단점이 있었다.
  • 이런 문제를 해결하는 방법으로 LLM 이 스스로 자신의 추론 결과를 검증할 수 있는 방법을 제안함.
  • 인간은 판단을 내린 후 그 결과를 스스로 검토하는 자기 검증 과정을 통해 오류를 줄이는데 이 방법을 차용한거임.
  • 제안된 방법은 크게 두 가지 주요 단계가 있음:
    • Forward Reasoning (순방향 추론):
      • 모델은 CoT 를 통해 문제에 대한 후보 답안을 생성함.
    • Backward Verification (역방향 검증):
      • 생성된 답안을 바탕으로 역으로 조건을 검증함. 즉, 최종적으로 도출된 답을 조건으로 사용하여 원래의 문제 조건이 일관되는지 확인한다.
      • 원래 문제의 조건을 마스킹하고, 모델이 이전 단계에서 도출한 답안을 조건으로 사용하여 마스킹된 조건을 예측하는 식으로 작동함.
      • 모델이 예측한 조건 값과 실제 조건 값을 비교하여 일관성을 평가하고, 이를 통해 각 후보 답안에 대한 검증 점수를 계산하는 방법.
  • GSM8K에서 60.8%에서 65.1%로, SingleEq에서 91.01%에서 93.40%로 성능이 향상 됨.

 

 

The Proposed Method:

  • 대형 언어 모델(LLM)이 자기 검증(Self-Verification)을 통해 예측 결과를 검증하고, 최종적으로 가장 신뢰할 수 있는 답변을 선택하는 방법임.
  • 대략적인 가이드는 다음과 같음:
    • Forward Reasoning (순방향 추론):
      • 일반적인 체인 오브 쏘트(CoT)와 유사하지만, 샘플링 디코딩(Sampling Decoding)을 통해 여러 후보 답변을 생성함.
    • Backward Verification (역방향 검증):
      • 각 후보 답변에 대해 자기 검증 방법을 사용하여 검증 점수를 계산하고, 가장 높은 점수를 받은 답변을 최종 답으로 선택함.
  • Forward Reasoning:
    • 체인 오브 쏘트(CoT) 프롬프트를 사용하여 문제에 대한 여러 후보 답변을 생성하는 단계임.
    • 이를 위해서 Few-shot CoT + 샘플링 디코딩(Sampling Decoding) 매커니즘을 사용.
  • Backward Verification:
    • Forward Reasoning 단계에서 생성된 여러 후보 답변 중에서 가장 정확한 답변을 선택하는 과정.
    • 이 과정은 여러 하위 단계로 나뉘며, 각 후보 답변의 정확성을 평가하고 점수를 부여하여 최종적으로 가장 높은 점수를 받은 답변을 선택한다.
    • a) Rewritten Candidate Conclusion (후보 결론 재작성):
      • 이 하위 섹션에서는 각 후보 답변을 검증하기 위해 원래의 질문을 결론으로 재작성하고 이를 새로운 조건으로 보완하는 과정임.
      • 원래의 질문 q 와 후보 답변 y 를 결론 형태의 완전한 선언문으로 재작성하는 거임.
        • 선언문은 사실이나 주장을 진술하는 문장으로, 질문이나 명령문과는 달리 단순히 정보를 전달하는 문장임. 예로 “오늘은 비가 온다.“ 와 같은 것. 선언문은 명확한 사실이나 상태를 진술하기 때문에, 모델이 이를 기반으로 논리적 검증을 수행하기 용이함.
      • 이 과정을 위해서 LLM에게 다음과 같은 명령 프롬프트를 사용함: “Please change the questions and answers into complete declarative sentences [q] The answer is [y]”.
    • b) Condition Masking (조건 마스킹)
      • 조건 마스킹을 통해 다양한 검증 질문을 생성하는 거임.
      • 이를 위한 두 가지 방법이 있다:
        • True-False Item Verification (TFV):
          • 일반적인 질문 응답(QA) 작업에 널리 적용 가능한 방법.
          • 모든 조건을 기반으로 “Do it is correct (True or False)?“라는 질문을 추가하여, LLM이 이 조건들이 상호 충족되는지 여부를 스스로 평가하는 기법임.
          • LLM은 이에 대해서 “True” 또는 “False”로 답변할 것이다.
        • Condition Mask Verification (CMV):
          • 산술 추론 작업에 적용 가능한 벙법임.
          • 특정 조건(예: 숫자)을 정규 표현식을 사용하여 필터링한 후, 순차적으로 마스킹 함.
          • 이렇게 마스킹 한 이후 이전에 생성된 재구성된 문제를 통해서 한번 예측해본다.
          • LLM 이 이걸 풀 수 있다면 기존의 답변은 올바르게 구성된 것이라는 걸 가정한다.
          • 분명 이렇게 조건은 맞췄더라도 추론 과정에 문제가 생기는 건 있을 수 있음.
    • c) Verification Score Calculation (검증 점수 계산):
      • 각 후보 답변의 검증 점수를 계산하는 방법임.
      • TFV 방법으로 검사를 했는지, CMV 를 위해 검사를 했는지에 따라서 계산 수식이 조금 다름.
      • 아무튼 이렇게 계산한 이후에 가장 높은 점수를 받은 답변으로 최종 답변을 선택

 

 

실험 설정 및 결과:

  • 실험 설정:
    • 산술 추론 데이터 셋: SingleEq, AddSub, MultiArith, AQUA-RAT, GSM8K, SVAMP
    • 상식 추론 데이터 셋: CommonsenseQA (CSQA)
    • 논리 추론 데이터 셋: Date Understanding (DU)
    • 사용한 모델: GPT-3, code-davinci-001, code-davinci-002
  • 성능이 증가하긴 하나, SC 를 쓴 것과 비교했을 떄 유의미할까?
    • 성능 증가폭을 보면 평균 2.33%의 성능 향상이 되었다고 함.
    • 산술 추론 작업에서 1.67%에서 2.84%로 향상.
    • 다른 추론 작업에서는 0.62%에서 0.78% 상승.
  • 검증 조건의 수가 많을수록 성능이 향상된다는 점은 기억해두자.

+ Recent posts