self-confistency
Self-Consistency(자기 일관성)는 같은 문제를 여러 번 독립적으로 추론한 뒤, 가장 많이 나온 답을 최종 답으로 선택하는 기법
CoT가 정답률을 높이지만 100%은 아니며 단계가 많거나 숫자가 큰 문제에서 더 믿음직하게 하기위해 자기일관성기법, 여러번 풀어 일관되게 답이 나왔을때 가장 많이 나온 답. 다수결을 채택한다. 이는 비용이 배로 든다는 단점이 있다. 핵심은 이전 풀이를 통째로 보여주며 이게 맞는지 다시 계산하라고 시키는 것.
https://standout.tistory.com/1908
CoT란? Chain of Thought 프롬프트 방법 (" 단계적으로 생각하고 마지막에 최종 답을 제시해.")
Chain of Thought 생각의 사슬 CoTLM이 복잡한 문제를 해결할 때 단계적으로 추론하도록 유도하는 프롬프팅 기법" 단계적으로 생각하고 마지막에 최종 답을 제시해."https://standout.tistory.com/1875 프롬프트
standout.tistory.com
verfy() 프롬프트 기법.
Verify는 Self-Consistency와는 조금 다른 접근이다.
Self-Consistency는 여러 번 독립적으로 처음부터 다시 풀지만 Verify는
이미 나온 답을 다시 검토한다.
| Self-Consistency | Verify |
| 같은 문제를 여러 번 독립적으로 풀이 | 한 번 생성한 답을 다시 검토 |
| 여러 개의 추론 결과를 비교 | 기존 결과를 검산 |
| 다수결로 최종 답 결정 | 오류를 찾아 수정 |
| 비용 증가가 큼 | 비용 증가가 비교적 적음 |
현업 에이전트에서 민감한 계산에 검사한번을 기본 정책으로 둔다 비용을 조금 더 내고 사고를 예방하는 것. 보험과 같은 개념.
answers = []
for _ in range(5):
answer = llm(
"487 × 236을 단계적으로 계산하고 최종 답을 알려줘."
)
answers.append(answer)
final_answer = majority_vote(answers)
print(final_answer)
answer = llm(
"487 × 236을 단계적으로 계산해."
)
verified = llm(f"""
다음 풀이를 검토해.
{answer}
계산 오류가 있는지 다시 확인하고,
틀렸다면 수정해.
""")
print(verified)