Translation of some files in 'techniques' chapter
parent
ee9de0f6ab
commit
6d1880c60a
@ -0,0 +1,14 @@
|
||||
{
|
||||
"zeroshot": "Zero-shot Prompting",
|
||||
"fewshot": "Few-shot Prompting",
|
||||
"cot": "Chain-of-Thought Prompting",
|
||||
"consistency": "Self-Consistency",
|
||||
"knowledge": "Generate Knowledge Prompting",
|
||||
"ape": "Automatic Prompt Engineer",
|
||||
"activeprompt": "Active-Prompt",
|
||||
"dsp": "Directional Stimulus Prompting",
|
||||
"react": "ReAct",
|
||||
"multimodalcot": "Multimodal CoT",
|
||||
"graph": "Graph Prompting"
|
||||
}
|
||||
|
@ -0,0 +1,12 @@
|
||||
# Active-Prompt
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import ACTIVE from '../../img/active-prompt.png'
|
||||
|
||||
Chain-of-thought (CoT) 방식은 사람이 라벨링을 한 예제에 의존합니다. 이 방법의 문제점은 예시가 다양한 작업에 가장 효과적인 예시가 아닐 수 있다는 것입니다. 이 문제를 해결하기 위해 [Diao 외, (2023)](https://arxiv.org/pdf/2302.12246.pdf)는 최근 Active-Prompt라는 새로운 프롬프트 접근 방식을 제안하여 LLMs을 다양한 작업별 예시 프롬프트(사람이 설계한 CoT 추론으로 라벨링)에 적용했습니다.
|
||||
|
||||
아래는 제안 방식에 대한 개요도입니다. 첫 번째 단계는 몇 가지 CoT 예제를 포함하거나 포함하지 않고 LLM에 질문하는 것입니다. 일련의 훈련 질문에 대해 *k* 개의 가능한 답변이 생성됩니다. 불확실성 지표는 *k*개의 답변(불일치 사용)을 기반으로 계산됩니다. 가장 불확실한 질문은 사람이 라벨을 달도록 선택됩니다. 그런 다음 라벨이 달린 새로운 예시를 사용하여 각 질문을 추론합니다.
|
||||
|
||||
<Screenshot src={ACTIVE} alt="ACTIVE" />
|
||||
Image Source: [Diao et al., (2023)](https://arxiv.org/pdf/2302.12246.pdf)
|
@ -0,0 +1,92 @@
|
||||
# Chain-of-Thought Prompting
|
||||
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import COT from '../../img/cot.png'
|
||||
import ZEROCOT from '../../img/zero-cot.png'
|
||||
|
||||
|
||||
## Chain-of-Thought (CoT) Prompting
|
||||
|
||||
<Screenshot src={COT} alt="COT" />
|
||||
|
||||
Image Source: [Wei et al. (2022)](https://arxiv.org/abs/2201.11903)
|
||||
|
||||
[Wei et al. (2022)](https://arxiv.org/abs/2201.11903)에서 소개된 chain-of-thought (CoT) 프롬프트는 중간 추론 단계를 통해 복잡한 추론 능력을 가능하게 합니다. 이를 few-shot 프롬프트와 결합하면 답변하기 전에 추론이 필요한 복잡한 작업에 대해 더 나은 결과를 얻을 수 있습니다.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
이 집합 {4, 8, 9, 15, 12, 2, 1}의 홀수를 모두 더하면 짝수입니다.
|
||||
A: 홀수(9, 15, 1)를 모두 더하면 25가 됩니다. 정답은 거짓입니다.
|
||||
|
||||
이 집합 {17, 10, 19, 4, 8, 12, 24}의 홀수를 모두 더하면 짝수입니다.
|
||||
답: 홀수(17, 19)를 모두 더하면 36이 됩니다. 정답은 참입니다.
|
||||
|
||||
이 집합 {16, 11, 14, 4, 8, 13, 24}의 홀수를 모두 더하면 짝수입니다
|
||||
답: 홀수(11, 13)를 모두 더하면 24가 됩니다. 정답은 참입니다.
|
||||
|
||||
이 집합 {17, 9, 10, 12, 13, 4, 2}의 홀수를 모두 더하면 짝수입니다.
|
||||
A: 홀수(17, 9, 13)를 모두 더하면 39가 됩니다. 정답은 거짓입니다.
|
||||
|
||||
이 집합 {15, 32, 5, 13, 82, 7, 1}의 홀수를 모두 더하면 짝수입니다.
|
||||
A:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
홀수(15, 5, 13, 7, 1)를 모두 더하면 41이 됩니다. 정답은 거짓입니다.
|
||||
```
|
||||
|
||||
와우! 추론 단계를 추가했을 때 완벽한 결과를 볼 수 있습니다. 사실 더 적은 수의 예제, 즉 하나의 예제만 제공해도 이 문제를 해결할 수 있습니다:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
이 집합 {4, 8, 9, 15, 12, 2, 1}의 홀수를 모두 더하면 짝수입니다.
|
||||
A: 홀수(9, 15, 1)를 모두 더하면 25가 됩니다. 정답은 거짓입니다.
|
||||
|
||||
이 집합 {15, 32, 5, 13, 82, 7, 1}의 홀수를 모두 더하면 짝수입니다.
|
||||
A:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
홀수(15, 5, 13, 7, 1)를 모두 더하면 41이 됩니다. 정답은 거짓입니다.
|
||||
```
|
||||
|
||||
저자들은 이 기능이 충분히 큰 언어 모델에서 발생하는 새로운 능력이라고 주장한다는 점을 명심하세요.
|
||||
|
||||
## Zero-shot COT Prompting
|
||||
|
||||
<Screenshot src={ZEROCOT} alt="Zero-shot COT" />
|
||||
|
||||
Image Source: [Kojima et al. (2022)](https://arxiv.org/abs/2205.11916)
|
||||
|
||||
최근에 나온 아이디어 중 하나는 원래의 프롬프트에 "단계별로 생각하자"를 추가하는 [zero-shot CoT](https://arxiv.org/abs/2205.11916) (Kojima et al. 2022)의 아이디어 입니다. 간단한 문제를 풀고 모델이 어떻게 작동하는지 살펴봅시다:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
저는 시장에 가서 사과 10개를 샀습니다. 저는 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 가서 사과 5개를 더 사서 1개를 먹었습니다. 저는 몇 개의 사과를 가지고 있었나요?
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
11개
|
||||
```
|
||||
|
||||
정답이 틀렸습니다! 이제 특별 프롬프트로 시도해 봅시다.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
저는 시장에 가서 사과 10개를 샀습니다. 저는 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 가서 사과 5개를 더 사서 1개를 먹었습니다. 사과가 몇 개나 남았나요?
|
||||
|
||||
차근차근 생각해 봅시다.
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
먼저 사과 10개로 시작했습니다.
|
||||
이웃에게 2개, 수리공에게 2개를 나눠주었으므로 사과가 6개가 남았습니다.
|
||||
그런 다음 사과 5개를 더 사서 이제 사과가 11개가 되었습니다.
|
||||
마지막으로 사과 1개를 먹었으므로 사과 10개가 남게 됩니다.
|
||||
```
|
||||
|
||||
이 간단한 프롬프트("차근차근 생각해 봅시다.")가 이 문제를 해결하는데 효과적이라는 점이 인상적입니다. 프롬프트에 사용할 예제가 많지 않은 경우 특히 유용합니다.
|
@ -0,0 +1,16 @@
|
||||
# Directional Stimulus Prompting
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import DSP from '../../img/dsp.jpeg'
|
||||
|
||||
[Li et al., (2023)](https://arxiv.org/abs/2302.11520) 에서는 원하는 요약을 생성하는 데 있어 LLM을 더 잘 설명하는 새로운 프롬프트 기법을 제안합니다.
|
||||
|
||||
조정 가능한 정책 LM은 자극/힌트를 생성하도록 훈련됩니다. LLMs을 최적화하기 위해 RL을 더 많이 사용하고 있습니다.
|
||||
|
||||
아래 그림은 Directional Stimulus 프롬프트가 표준 프롬프트와 어떻게 비교되는지 보여줍니다. 정책 LM은 블랙박스 frozen LLM을 안내하는 힌트를 생성하기 위해 작게 최적화될 수 있습니다.
|
||||
|
||||
<Screenshot src={DSP} alt="DSP" />
|
||||
Image Source: [Li et al., (2023)](https://arxiv.org/abs/2302.11520)
|
||||
|
||||
전체 예제는 곧 제공될 예정입니다!
|
@ -0,0 +1,109 @@
|
||||
# Few-Shot Prompting
|
||||
|
||||
대규모 언어 모델은 뛰어난 zero-shot 기능을 보여주지만, 복잡한 작업에서는 여전히 개선이 필요합니다. Few-shot 프롬프트는 프롬프트에서 데모를 제공하여 모델이 더 나은 성능을 발휘하도록 유도하는 문맥 내 학습을 가능하게 하는 기술로 사용할 수 있습니다. 이 데모는 모델이 응답을 생성하기를 원하는 후속 예제에 대한 조건부 역할을 합니다.
|
||||
|
||||
[Touvron et al. 2023](https://arxiv.org/pdf/2302.13971.pdf)에 따르면 모델이 충분한 크기로 커졌을 때 [(Kaplan et al., 2020)](https://arxiv.org/abs/2001.08361)에 처음으로 few-shot 속성이 나타났습니다.
|
||||
|
||||
[Brown et al. 2020](https://arxiv.org/abs/2005.14165)에 제시된 예제를 통해 few-shot 프롬프트를 시연해 보겠습니다. 이 예제에서는 문장에서 새로운 단어를 올바르게 사용하는 것이 과제입니다.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
"whatpu"는 탄자니아에 서식하는 작은 털복숭이 동물입니다. whatpu를 사용하는 문장의 예
|
||||
라는 단어를 사용하는 문장의 예입니다:
|
||||
우리는 아프리카를 여행하고 있었는데 아주 귀여운 whatpu를 보았습니다.
|
||||
"farduddle"을 한다는 것은 정말 빠르게 위아래로 점프한다는 뜻입니다. farduddle을 사용하는 문장의 예
|
||||
를 사용하는 문장의 예입니다:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
게임에서 이겼을 때 우리 모두는 farduddle를 시작했습니다.
|
||||
```
|
||||
|
||||
게임에서 이겼을 때, 우리는 모델이 하나의 예시(예, 1-shot)만 제공함으로써 어떻게든 과제를 수행하는 방법을 학습했음을 관찰할 수 있습니다. 더 어려운 과제의 경우 예시(예, 3-shot, 5-shot, 10-shot, etc.)를 늘려가며 실험해 볼 수 있습니다.
|
||||
|
||||
[Min et al. (2022)](https://arxiv.org/abs/2202.12837)의 연구 결과에 따라, 다음은 few-shot을 사용할 때 시연/예시를 위한 몇 가지 팁입니다:
|
||||
|
||||
- "레이블 공간과 데모에서 지정한 입력 텍스트의 분포는 (개별 입력에 대해 레이블이 올바른지 여부와 관계없이) 모두 중요합니다."
|
||||
- 사용하는 형식도 성능에 중요한 역할을 하며, 무작위 레이블만 사용하더라도 레이블이 전혀 없는 것보다 훨씬 낫습니다.
|
||||
- 추가 결과에 따르면 라벨의 실제 분포에서 (균일한 분포 대신) 무작위 라벨을 선택하는 것도 도움이 됩니다.
|
||||
|
||||
몇 가지 예를 살펴보겠습니다. 먼저 무작위 레이블이 있는 예제(즉, 부정 및 긍정 레이블이 입력에 무작위로 할당됨)를 시도해 보겠습니다:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
정말 멋지네요! // 부정
|
||||
이건 나쁘다! // 긍정
|
||||
와우 그 영화 정말 멋졌어요! // 긍정
|
||||
정말 끔찍한 쇼였어! //
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
부정
|
||||
```
|
||||
|
||||
레이블이 무작위로 지정되었음에도 불구하고 여전히 정답을 얻을 수 있습니다. 형식도 그대로 유지한 것도 도움이 됩니다. 실제로 추가 실험을 통해 우리가 실험하고 있는 최신 GPT 모델은 무작위 형식에도 더 강력해지고 있는 것으로 보입니다. 예시:
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
긍정적 이거 멋지다!
|
||||
이것은 나쁘다! 부정적
|
||||
와우, 그 영화 정말 멋졌어요!
|
||||
긍정
|
||||
정말 끔찍한 쇼였어! --
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
부정
|
||||
```
|
||||
|
||||
위의 형식에는 일관성이 없지만 모델은 여전히 올바른 레이블을 예측했습니다. 다양한 프롬프트의 변형을 포함하여 더 다양하고 복잡한 작업에서도 이러한 결과가 유지되는지 확인하기 위해 더 철저한 분석을 수행해야 합니다.
|
||||
|
||||
### Limitations of Few-shot Prompting
|
||||
|
||||
일반적인 few-shot 프롬프트는 많은 작업에 효과적이지만, 특히 복잡한 추론 작업을 처리할 때는 여전히 완벽한 기술은 아닙니다. 그 이유를 설명해 보겠습니다. 다음 작업을 제공했던 이전 예제를 기억하시나요?
|
||||
|
||||
```
|
||||
이 집합{15, 32, 5, 13, 82, 7, 1}에서 홀수를 모두 더하면 짝수이다.
|
||||
|
||||
A:
|
||||
```
|
||||
|
||||
이 작업을 다시 시도하면 모델이 다음과 같이 출력합니다:
|
||||
|
||||
```
|
||||
네, 이 집합의 홀수를 모두 더하면 짝수인 107입니다.
|
||||
```
|
||||
|
||||
이는 정답이 아니며, 이러한 시스템의 한계를 보여줄 뿐만 아니라 더 발전된 프롬프트 엔지니어링이 필요하다는 것을 보여줍니다.
|
||||
|
||||
몇 가지 예를 추가하여 몇 번의 질문으로 프롬프트가 결과를 개선하는지 확인해 보겠습니다.
|
||||
|
||||
*Prompt:*
|
||||
```
|
||||
이 집합 {4, 8, 9, 15, 12, 2, 1}에서 홀수의 합은 짝수입니다.
|
||||
A: 답은 거짓입니다.
|
||||
|
||||
이 집합 {17, 10, 19, 4, 8, 12, 24}에서 홀수의 합은 짝수입니다.
|
||||
A: 정답은 참입니다.
|
||||
|
||||
이 집합 {16, 11, 14, 4, 8, 13, 24}에서 홀수의 합은 짝수입니다.
|
||||
A: 답은 참입니다.
|
||||
|
||||
이 집합 {17, 9, 10, 12, 13, 4, 2}에서 홀수의 합은 짝수입니다.
|
||||
A: 답은 거짓입니다.
|
||||
|
||||
이 집합 {15, 32, 5, 13, 82, 7, 1}에서 홀수의 합은 짝수입니다.
|
||||
A:
|
||||
```
|
||||
|
||||
*Output:*
|
||||
```
|
||||
답은 참입니다.
|
||||
```
|
||||
|
||||
작동하지 않았습니다. 이러한 유형의 추론 문제에 대해 신뢰할 수 있는 답변을 얻으려면 몇 번의 프롬프트만으로는 충분하지 않은 것 같습니다. 위의 예는 작업에 대한 기본 정보를 제공합니다. 자세히 살펴보면 우리가 소개한 작업 유형에는 몇 가지 추론 단계가 더 포함되어 있습니다. 즉, 문제를 여러 단계로 나누고 이를 모델에 시연하면 도움이 될 수 있습니다. 최근에는 더 복잡한 산술, 상식, 상징적 추론 작업을 처리하기 위해 [chain-of-thought (CoT) prompting](https://arxiv.org/abs/2201.11903) 가 대중화되었습니다.
|
||||
|
||||
전반적으로 예제를 제공하는 것이 특정 문제를 해결하는 데 유용한 것으로 보입니다. zero-shot 프롬프트와 few-shot 프롬프트가 만족할 만한 답변을 주지 못한 경우 모델이 학습한 내용이 해당 작업을 잘 수행하기에 충분하지 않다는 의미일 수 있습니다. 이때부터 모델을 미세 조정하거나 고급 프롬프트 기법을 실험해 보는 것이 좋습니다. 다음에는 많은 인기를 얻고 있는 chain-of-thought 프롬프트라는 인기 있는 프롬프트 기법 중 하나에 대해 이야기하겠습니다.
|
@ -0,0 +1,5 @@
|
||||
# GraphPrompts
|
||||
|
||||
[Liu et al., 2023](https://arxiv.org/abs/2302.08043)에서는 다운스트림 작업의 성능을 개선하기 위해 그래프를 위한 새로운 프롬프트 프레임워크인 GraphPrompt를 소개합니다.
|
||||
|
||||
더 많은 예제가 곧 추가될 예정입니다!
|
@ -0,0 +1,14 @@
|
||||
# ReAct
|
||||
|
||||
import { Callout, FileTree } from 'nextra-theme-docs'
|
||||
import {Screenshot} from 'components/screenshot'
|
||||
import REACT from '../../img/react.png'
|
||||
|
||||
[Yao et al., 2022](https://arxiv.org/abs/2210.03629)에서는 LLM을 사용하여 추론 추적과 작업별 액션을 인터리브 방식으로 생성하는 프레임워크를 소개했습니다. 추론 추적을 생성하면 모델이 실행 계획을 유도, 추적, 업데이트하고 예외를 처리할 수 있습니다. 실행 단계에서는 지식 기반이나 환경과 같은 외부 소스와 인터페이스하고 정보를 수집할 수 있습니다.
|
||||
|
||||
ReAct 프레임워크를 사용하면 LLMs이 외부 도구와 상호 작용하여 보다 신뢰할 수 있고 사실적인 대응으로 이어지는 추가 정보를 검색할 수 있습니다.
|
||||
|
||||
<Screenshot src={REACT} alt="REACT" />
|
||||
Image Source: [Yao et al., 2022](https://arxiv.org/abs/2210.03629)
|
||||
|
||||
전체 예제는 곧 제공될 예정입니다!
|
Loading…
Reference in New Issue