2023. 12. 1. 16:50ㆍDL Life
0. background
- Chain of Thought 에 대한 간단한 설명
Chain of Thought : LLM 이 질문에 대한 답을 예측할 때, 답을 추론해가는 과정을 생각할 수 있도록 Prompt 를 구성하는 방법
Few-shot 의 경우에는 정답을 풀이하는 과정을 답변과 함께 넣어주어 LLM 이 해당방식으로 문제를 풀이할 수 있도록 만듦
Zero-shot 의 경우에는 정답대신 Let’s Think step by step 과 같이 문제에 대한 정답을 추론해가며 풀 수 있도록 Prompting 을 진행
본 논문에서는 Few-shot Setting 에 집중
1. Introduction
많은 LLM 모델들이 등장한 가운데 Complex reasoning 과 같이 어려운 Task 에 대해서는 성능이 빠르게 좋아지지 않았고, 이를 해결하기 위해서 CoT Prompting 이 등장해서 이러한 추론 능력을 상승시키는데 많은 기여를 하였다.
해당 논문 관련 블로그
[! note] Tree of Thought
문제 : 다른 branch를 탐색하지 않음 & Global한 계획을 세우거나 되돌아가 탐색하는 방식을 이용하지 않음
- 하나의 경로를 따라가지 않고 다양한 가능성을 탐색
- 현재 상태를 평가해 앞으로 나아가거나 되돌아가는 방식으로 global decision을 진행
[! note] Graph of Thought
LLM에서 생성된 정보를 개별 '생각’을 나타내는 노드와 이러한 생각 간의 종속성을 나타내는 에지가 있는 그래프로 표현
생각의 결합, 생각의 네트워크 추출, 피드백 루프 생성 등 생각 간의 보다 복잡한 상호작용을 가능하게 만듦
이런 성공에도 불구하고 아직 CoT 가 왜 이런 추론 능력을 상승시키는지 등에 대한 자세한 이해는 이루어지지 않고 있습니다. 기존에는 정답을 추론하는 과정만 넣어주는 것이 추론 능력을 상승시킬 것이라 예상했으나 최근 연구에서는 Invalid Reasoning 을 CoT 의 예시로 넣어주어도 성능이 향상되는 결과도 발견할 수 있었다.
따라서 LM 이 CoT 를 통해 추론을 어떻게 배우는지는 아직 명확하지 않다
틀린 추론을 넣어주는 것과 달리 추론 중간과정에서 실수가 발생하는 것은 추론 과정을 오히려 복잡하게 만들고 오답을 추론하게 만들 수 있다
추론 과정에서 발생하게 되는 오류는 정확성 뿐만 아니라 언어모델의 신뢰성까지 떨어뜨린다.
따라서 추론 중간 과정에서 실수가 발생하는 것을 줄이는 것도 중요하다
[!Inspired]
사람이 정답만으로 학습하는 것이 아니라 오답을 보고도 학습하는 것에서 영감
예 ) 풀이 과정을 세울 때 우리는 정답에서 올바른 단계를 학습하기도 하지만, 오답에서 어떤 오류를 피해야하는지에 대한 학습을 할 수 있습니다
따라서 우리는 LM 의 reasoning 능력 향상을 위해서 모델이 따라야하는 올바른 추론 과정과 잘못된 추론 과정을 모두 사용하는 Contrastive CoT 를 제안합니다.
→ 이 때 효과적인 부정 추론을 어떻게 설계할 수 있는지, 그리고 이를 다양한 방법에 일반화하여 사용할 수 있는지에 대한 의문이 있을 수 있고, 다양한 부정 추론의 유형을 분석하여 기존의 CoT 에서 Contrastive demonstration 을 자동으로 생성할 수 있는 간단하고 효과적인 방법까지 설계 하였다.
또한 이 Contrastive CoT 는 Task 에 영향을 받지 않으므로 전반적인 Task 에 대한 CoT성능을 향상시키는데 도움이 될 수 있을 것이라 생각합니다.
주요 Contribution
(1) 우리는 다양한 무효한 추론 유형을 분석하고, 긍정적인 예시와 부정적인 예시를 결합하는 것이 일반적으로 체인 오브 쏘트의 효과를 향상시킨다는 것을 발견했습니다. (2) 위의 분석을 기반으로 우리는 언어 모델 추론을 향상시키기 위해 대조적인 체인 오브 쏘트를 제안합니다. 일반화를 향상시키기 위해 대조적인 예시를 구축하기 위한 자동화된 방법을 제안하기도 합니다. (3) 여러 추론 벤치마크에서의 평가는 기존의 체인 오브 쏘트와 비교하여 상당한 개선을 보여줍니다.
- 다양한 부정 추론 유형을 분석하고, 정답 예시와 오답 예시를 결합하는 것이 일반적인 CoT 성능의 향상을 가져온다는 것을 발견
- 위의 분석을 기반으로 우리는 언어 모델의 Reasoning 능력 향상을 위해서 Contrastive CoT 제안
- Negative Demonstration 을 구축하기 위한 자동화 방법을 제안
- 기존의 CoT 와 비교하여 상당한 성능 개선을 가져옴
2. Preliminary Study
[!note]
an invalid reasoning demonstrations be instead used to enhance chain of thought?
we aim to study the effect of providing chain-of-thought demonstrations in a “contrastive” manner
CoT Reasoning 은 다음 두 요소를 포함:
*산술 작업의 예: *예시
"사과가 3개 있는데 5개를 더 사면 총 사과가 몇 개가 되는가?"라는 수학 문제가 있다고 가정해 보겠습니다.
- Bridging objects : 숫자 또는 변수, Object entities
최종 솔루션에 도달하기 위해 모델이 사용하는 기호 예를 들어, 산술 문제에서는 숫자와 방정식이 될 수 있고, 사실적인 과제에서는 개체의 이름이 될 수 있습니다.
→ 모델이 질문에서 답으로 넘어갈 수 있도록 도와주는 디딤돌과 같다
이 경우 브리징 객체는 다음과 같습니다:
- 처음에 가지고 있는 사과의 개수(사과 3개)
- 구매한 사과의 개수(사과 5개)
- 이러한 양을 결합하는 연산(덧셈)
- 이 모델은 이러한 연결 개체를 사용하여 합계를 계산하는 최종 답으로 이어지는 중간 단계를 구성합니다: 사과 3개 + 사과 5개 = 사과 8개.
-
- "초기 사과 개수인 3개로 시작한 다음, 구매한 사과 개수인 5개를 더하면 총 사과 개수는 3 + 5 = 8개가 됩니다."와 같은 응답이 생성됩니다.
- Language templates (언어 템플릿): 관계나 추론 과정을 유도하는 언어
언어 모델이 추론 과정에서 올바른 객체를 유도하고 문맥화하는 데 도움을 주는 텍스트 힌트입니다.
- 언어 템플릿은 다음과 같이 구조화할 수 있습니다: “사과의 초기 개수부터 시작합니다. 그런 다음 구매한 사과 수를 더합니다. 그러면 총 사과 수가 나옵니다.”
따라서 "Chain of Thought"의 구성 요소는 교차 객체와 언어 템플릿이며, 이들은 언어 모델이 단계별로 추론을 진행하며 과업을 해결하는 데 도움을 줍니다.
2.2 What is Invalid Chain of Thought
Component 에 대한 이해를 하였으니 그것을 기반으로 잘못된 추론으로 이어지게 되는 과정이 어디인지 체계적으로 측정할 수 있다. 두가지 측면이 있다.
1. Coherence → Language Template 에서 중요한 것 - 단락이 논리적인 전개인지 일관성
논리적인 전개 과정은 맞으나 내용이 틀린 것
2. Relevance → Bridging Object 에서 중요한 것 - 정확한 숫자와 변수가 언급되는지 관련성
Query 에 있는 숫자나 Object 를 정확하게 이용해서 Answer 를 만들었는지
Incoherent Object : 각 Bridging object 에서 일관성이 없는 경우
1번 예시를 보면 Component 의 값이 정답과는 상관없이 중간에 변경되는 것을 볼 수 있음 하지만 값 자체는 아예 다른 값이 아닌 문맥에 맞지않는 주어진 다른 변수를 가져와서 사용하고 있는 것을 볼 수 있다.
Incoherent Language : 관계를 설명하는 Language Template 에서 일관성이 없는 경우
1번 예시를 보면 계산 과정에서 사용되는 Language Template 들이 사용되고 있는 것은 맞으나 알맞은 순서로 배치되지 않고 있음
Irrelevant Objects : 각 Bridging object 에서 연관성이 없는 경우
계산 과정은 일치하지만 주어진 Bridginf Object 를 사용하지 않고 전혀 다른 숫자를 가져와서 계산
Irrelavant Language : 관계를 설명하는 Language Template 에서 연관성이 없는 경우
1번 예시를 보면 아예 연관이 없는 Patricia 라는 사람을 가져와서 문제를 진행, 또한 초콜릿을 먹는 과정을 이야기 하는 것이 아닌 donate, hair cut 등에 대한 이야기를 진행 답은 맞지만 전혀 연관성이 없는 풀이
GPT-3.5 를 사용하였고, 4-shot prompt 사용
위와 같은 형식으로 Prompt 를 구성해서 실험을 진행하였다
Pre-Result
부정 추론의 예시를 줄 때 어떤 예시를 주는 것이 가장 성능이 좋은지? 에 대한 연구 결과
GSM8K
중학생 수준의 수학 문제 풀이 데이터셋 - 기본 산술 연산을 바탕으로 다단계 수학적 추론을 할 수 있는지에 대한 데이터
Bamboogle
125개의 Multi-hop factual QA 데이터셋
3. Methods
선행 연구에 따르면 유효하지 않은 증명을 사용할 때 그 영향은 미미하다
대조적인 방식으로 긍정 과정과 부정 과정을 제공하면 Reasoning 능력이 크게 향상된다는 것을 발견
하지만 부정 과정을 수동으로 구성해야하기 때문에 새로운 Task 에 대해서는 일반화 하기 어렵다는 단점이 존재
따라서 이런 대조적 방식을 자동으로 구성할 수 있는 Contrastive CoT 를 제안
언어 모델에는 구체적으로 질문, 정답 설명, 오답 설명이 제공된다.
중간 단계를 분해하여 모델이 더 복잡한 Reasoning 을 실행할 수 있도록 한다
기존의 CoT 와 비교했을 때, 본 연구의 방식이 정답과 오답 설명을 대조하여 모델이 더 정확한 추론을 할 수 있도록 유도
- Standard Modeling
- Chain of Thought
- Contrastive CoT
위 방식에서 긍정 추론 단계에 대해서는 주석이 달려있는 예제를 사용하고, 의 경우는 Section2 에서의 “Incoherent Objects” 를 기반으로 에서 자동으로 생성하도록 구성
기존의 개체 인식 모델 (## en_core_web_trf) 를 사용하여 주어진 CoT 에서 Bridging object 추출, 그 후 object 를 무작위로 섞어 재배치 해서 해당 부정 추론 단계를 만들어내는 형식으로 진행
따라서 해당 과정을 진행하게 되면 모델이 부정 추론 단계를 생성해야하기 때문에 이전 방법들 보다는 시간 등의 비용이 더 발생할 수 있다는 점이 단점으로 보인다
4. Experiments
컴퓨팅 비용 때문에 테스트는 최대 500 개로 제한 → 선택하는 방법은 무작위 샘플링으로 진행
Main Results
Contrastive CoT demonstrates consistent improvements over conventional CoT
수학적 추론 및 사실 추론 문제에서 모두 일관되게 우수한 성능을 보임
기존에 CoT 가 있는 데이터에서 Negative sample 을 자동으로 구축하 수 있으므로 Annotation 비용은 기존과 동일하지만 성능에는 상승을 가져옴
Contrastive CoT is more effective when applied with self-consistency.
Self consistency : 주어진 질문에 대해 여러 개의 출력 또는 추론 경로를 생성한 다음 다수결 투표 또는 일부 형태의 집계를 사용하여 가장 가능성이 높은 정답을 선택하는 것
→ 하나의 출력이 틀릴 수도 있지만, 독립적으로 생성된 여러 개의 출력에서 정답이 일관되게 나타날 가능성이 높다는 아이디어를 활용
결과를 통해 Self-Consistency 를 추가하는 것이 생각보다 더 성능이 좋아지는 것을 AQuA 데이터에서 확인할 수 있었다.
AQuA Dataset
{
"question": "A grocery sells a bag of ice for $1.25, and makes 20% profit. If it sells 500 bags of ice, how much total profit does it make?",
"options": ["A)125", "B)150", "C)225", "D)250", "E)275"],
"rationale": "Profit per bag = 1.25 * 0.20 = 0.25\nTotal profit = 500 * 0.25 = 125\nAnswer is A.",
"correct": "A"
}
6. Conclusion
- 부정 추론 예시 (Negative Demonstration) 의 유형을 분석
- 긍정 추론 과 부정 추론을 결합하여 사용하여 CoT 성능 향상을 이끌어냄
- 부정 추론을 생성하는 문제를 자동화하여 해결하는 방법을 제안
- 긍정 추론 예시가 존재하는 데이터셋에 대해서 추가 Annotation 이 필요 없음
- 기존의 CoT 방법과 비교하여 상당한 성능 향상
- Contrastive CoT 와 Self-Consistency 를 활용하면 성능 향상이 나타남을 확인
의문점 : 과연 자동으로 Contrastive Example 을 생성하는 과정으로 인해서 시간적인 측면에서는 손해가 발생할텐데 이런 부분에 대한 이야기가 없어서 궁금하다
Reference
GSM8K : https://paperswithcode.com/dataset/gsm8k
Bamboogle : https://ofir.io/The-Bamboogle-Dataset/
AQuA : https://github.com/google-deepmind/AQuA
CoT 후속 연구 : http://blog.mahler83.net/archives/3637
ToT : http://blog.mahler83.net/archives/3800
Papers
Self-consistency : https://arxiv.org/pdf/2203.11171.pdf
A survey of chain of thought : https://arxiv.org/abs/2309.15402
Towards Understanding Chain-of-Thought Prompting: An Empirical Study of What Matters : https://aclanthology.org/2023.acl-long.153.pdf
“이 글은 Obsidian 에서 작성되어 업로드 되었습니다”
'DL Life' 카테고리의 다른 글
Dacon 도배 하자 질의 응답 처리 경진대회 (4)QLoRA + 4bit quantization + LDCC-SOLAR-10.7B(≈9GB vram used) 코드 테스트 (0) | 2024.02.20 |
---|---|
Dacon 도배 하자 질의 응답 처리 경진대회 (3) Ko-SOLAR 모델 테스트 및 Data Parallel (0) | 2024.02.20 |
Dacon 도배 하자 질의 응답 처리 경진대회 (2) 임베딩 모델 및 베이스라인 코드 (0) | 2024.02.19 |
Dacon 도배 하자 질의 응답 처리 경진대회 (1) 대회 탐색 (0) | 2024.02.12 |
Long-tail Distribution Learning Survey Review (0) | 2024.02.08 |