Merge pull request #243 from 11mLLM/01_Tech

🇰🇷 Advanced Korean Translation - II Techniques
pull/244/head^2
Elvis Saravia 11 months ago committed by GitHub
commit 8bfd16586b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4,9 +4,9 @@ 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 추론으로 라벨링)에 적용했습니다.
Chain-of-thought (CoT) 방법은 사람이 만든 고정된 규범을 의존합니다. 이 규범의 문제점은 다양한 작업에 대해 가장 효과적인 예시가 아닐 수 있다는 것입니다. 이 문제를 해결하기 위해 [Diao 외, (2023)](https://arxiv.org/pdf/2302.12246.pdf)는 최근 Active-Prompt라는 새로운 프롬프트 접근 방식을 제안하여 LLMs을 다양한 작업별 예시 프롬프트(사람이 설계한 CoT 추론으로 라벨링)에 적용했습니다.
아래는 제안 방식에 대한 개요도입니다. 첫 번째 단계는 몇 가지 CoT 예제를 포함하거나 포함하지 않고 LLM에 질문하는 것입니다. 일련의 훈련 질문에 대해 *k* 개의 가능한 답변이 생성됩니다. 불확실성 지표는 *k*개의 답변(불일치 사용)을 기반으로 계산됩니다. 가장 불확실한 질문은 사람이 라벨을 달도록 선택됩니다. 그런 다음 라벨이 달린 새로운 예시를 사용하여 각 질문을 추론합니다.
아래는 제안 방식에 대한 개요도입니다. 첫 번째 단계는 몇 가지 CoT 예제를 포함하거나 포함하지 않고 LLM에 질문하는 것입니다. 일련의 학습 질문에 대해 *k* 개의 가능한 답변이 생성됩니다. 불확실성 메트릭은 *k*개의 답변(불일치 사용)을 기반으로 계산됩니다. 가장 불확실한 질문은 사람이 주석을 달기 위해 선택합니다. 그런 다음 주석이 달린 새로운 예제를 사용하여 각 질문을 추론합니다.
<Screenshot src={ACTIVE} alt="ACTIVE" />
Image Source: [Diao et al., (2023)](https://arxiv.org/pdf/2302.12246.pdf)
이미지 출처: [Diao et al., (2023)](https://arxiv.org/pdf/2302.12246.pdf)

@ -6,21 +6,21 @@ import APE from '../../img/APE.png'
import APECOT from '../../img/ape-zero-shot-cot.png'
<Screenshot src={APE} alt="APE" />
Image Source: [Zhou et al., (2022)](https://arxiv.org/abs/2211.01910)
이미지 출처: [Zhou et al., (2022)](https://arxiv.org/abs/2211.01910)
[Zhou et al., (2022)](https://arxiv.org/abs/2211.01910)은 명령의 자동 생성 및 선택을 위한 프레임워크인 자동 프롬프트 엔지니어(APE)를 제안합니다. 명령 생성 문제는 LLM을 사용하여 솔루션 후보를 생성하고 검색하는 블랙 박스 최적화 문제로 취급되는 자연어 합성으로 해결됩니다.
[Zhou et al., (2022)](https://arxiv.org/abs/2211.01910)은 명령의 자동 생성 및 선택을 위한 프레임워크인 자동 프롬프트 엔지니어(APE)를 제안합니다. 명령 생성 문제는 LLM을 사용하여 솔루션 후보를 생성하고 검색하는 블랙 박스 최적화 문제로 해결된 자연어 합성으로 프레임화됩니다.
첫 번째 단계에는 태스크 명령어 후보를 생성하기 위한 출력 데모가 제공되는 대규모 언어 모델(추론 모델)이 포함됩니다. 이러한 후보 솔루션은 검색 절차를 안내합니다. 명령은 대상 모델을 사용하여 수행되며 계산된 평가 점수에 따라 최적의 명령이 선택됩니다.
첫 번째 단계는 작업에 대한 명령어 후보를 생성하기 위해 출력 데모가 제공되는 큰 언어 모델(인터페이스 모델)을 포함합니다. 이러한 후보 솔루션이 검색 절차를 안내합니다. 대상 모델을 사용하여 명령을 실행한 다음 계산된 평가 점수를 기준으로 가장 적합한 명령을 선택합니다.
APE는 사람이 설계한 "Let's think step by step" 프롬프트보다 더 우수한 zero-shot CoT 프롬프트(아래)를 찾아냈습니다. ([Kojima et al., 2022](https://arxiv.org/abs/2205.11916)).
APE는 사람이 설계한 "단계별로 생각하자" 프롬프트보다 더 우수한 zero-shot CoT 프롬프트를 찾아냈습니다. ([Kojima et al., 2022](https://arxiv.org/abs/2205.11916)).
"Let's work this out in a step by step way to be sure we have the right answer."라는 프롬프트는 CoT 추론을 유도하여 MultiArith와 GSM8K의 벤치마크에서 성능을 향상시켰습니다:
"우리가 올바른 답을 가지고 있는지 확인하기 위해 단계적으로 이 문제를 해결합시다."라는 프롬프트는 일련의 추론을 이끌어 내고 MultiArith 및 GSM8K 벤치마크에서 성능을 향상시킵니다:
<Screenshot src={APECOT} alt="APECOT" />
Image Source: [Zhou et al., (2022)](https://arxiv.org/abs/2211.01910)
이미지 출처: [Zhou et al., (2022)](https://arxiv.org/abs/2211.01910)
이 논문에서는 프롬프트를 자동으로 최적화하는 아이디어인 프롬프트 엔지니어링과 관련된 중요한 주제를 다룹니다. 이 페이지에서는 이 주제에 대해 더 자세히 설명하지는 않고, 관련된 중요한 논문을 아래에 소개합니다:
이 논문에서는 프롬프트를 자동으로 최적화하는 아이디어인 프롬프트 엔지니어링과 관련된 중요한 주제를 다룹니다. 우리는 이 주제에 대해 더 자세히 설명하지는 않지만, 관심이 있는 경우 몇 가지 주요 문서를 참조하세요:
- [AutoPrompt](https://arxiv.org/abs/2010.15980) - 경사 유도 검색(gradient-guided search)을 기반으로 다양한 일련의 작업에 대한 프롬프트를 자동으로 만드는 방법을 제안.
- [Prefix Tuning](https://arxiv.org/abs/2101.00190) - NLG 문제에서 학습 가능한 연속 접두사를 앞에 붙이는 미세 튜닝에 대한 가벼운 대안 제시.
- [Prompt Tuning](https://arxiv.org/abs/2104.08691) - 역전파를 통해 소프트 프롬프트를 학습하는 매커니즘 제안.
- [AutoPrompt](https://arxiv.org/abs/2010.15980) - 경사 유도 검색(gradient-guided search)을 기반하여 자동으로 생성하는 프롬프트의 다양한 방법을 제안.
- [Prefix Tuning](https://arxiv.org/abs/2101.00190) - NLG 작업에 대해 학습 가능한 연속 접두사를 추가하는 미세 조정에 대한 가벼운 대안.
- [Prompt Tuning](https://arxiv.org/abs/2104.08691) - 역전파를 통해 소프트 프롬프트를 학습하는 매커니즘 제안.

@ -1,3 +1,25 @@
# Automatic Reasoning and Tool-use (ART)
This page needs a translation! Feel free to contribute a translation by clicking the `Edit this page` button on the right side.
import { Callout, FileTree } from 'nextra-theme-docs'
import {Screenshot} from 'components/screenshot'
import ART from '../../img/ART.png'
import ART2 from '../../img/ART2.png'
생각의 사슬(chain-of-thought; CoT)프롬프팅과 도구를 교차적으로 결합하는 것은 대규모언어모델로 많은 작업을 처리하는 강력하고 견고한 접근방식인 것으로 밝혀졌습니다. 이러한 접근법들은 일반적으로 작업 특정 시연을 수작업으로 제작하고, 주의 깊게 교차하여 모델을 생성하고 도구를 사용해야 합니다. [Paranjape et al., (2023)](https://arxiv.org/abs/2303.09014)은 프로그램으로 중간 추론 단계를 자동 생성하기 위해 frozen 대규모언어모델을 사용하는 새로운 프레임워크를 제안합니다.
ART는 다음과 같이 작동합니다:
- 새로운 작업이 주어지면 작업 라이브러리에서 다단계의 추론 및 도구 사용 시연을 선택합니다.
- 테스트 시에는 외부 도구가 호출될 때마다 생성을 일시 중단하고, 생성을 재개하기 전에 그 출력들을 통합합니다.
ART는 모델이 시연들로부터 일반화하여 새로운 작업을 분해하고 적절한 장소에서 도구를 사용하도록
장려하는데, 이는 제로샷(zero-shot) 방식으로 이루어집니다. 또한 ART는 사람들로 하여금 추론 단계에서 오류를 수정하거나 단순히 작업 및 도구 라이브러리를 업데이트하여 새로운 도구를 추가할 수 있게 함으로써 확장 가능합니다. 과정은 다음과 같습니다:
<Screenshot src={ART} alt="ART" />
이미지 출처: [Paranjape et al., (2023)](https://arxiv.org/abs/2303.09014)
ART는 BigBench와 MMLU 벤치마크에서 보이지 않는 작업에 대해 퓨샷(few-shot) 프롬프팅과 자동 CoT를 크게 향상시키며, 사람의 피드백을 반영할 경우 수작업으로 만든 CoT 프롬프트의 성능을 능가합니다.
아래는 BigBench와 MMLU 작업에서 ART의 성능을 보여주는 표입니다:
<Screenshot src={ART2} alt="ART2" />
이미지 출처: [Paranjape et al., (2023)](https://arxiv.org/abs/2303.09014)

@ -1,13 +1,13 @@
# Self-Consistency
프롬프트 엔지니어링을 위한 더 진보된 기술 중 하나로 Self-Consistency가 있습니다. [Wang et al. (2022)](https://arxiv.org/pdf/2203.11171.pdf)에서 제안한 Self-Consistency는 "CoT 프롬프트에 사용되는 naive greedy 디코딩을 대체하는 것"을 목표로 합니다. 이 아이디어는 몇 번의 CoT를 통해 여러 가지 다양한 추론 경로를 샘플링하고, 여러 세대를 거쳐 가장 일관된 답을 선택하는 것입니다. 이는 산술 및 상식적인 추론이 필요한 작업에서 CoT 프롬프트의 성능을 향상시키는 데 도움이 됩니다.
프롬프트 엔지니어링을 위한 더 진보된 기법 중 하나로 자기 일관성(Self-Consistency)이 있습니다. [Wang et al. (2022)](https://arxiv.org/pdf/2203.11171.pdf)에서 제안한 자기 일관성은 "생각의 사슬 프롬프트에 사용되는 naive greedy 디코딩을 대체하는 것"을 목표로 합니다. 이 아이디어는 퓨샷 생각의 사슬(few-shot CoT)을 통해 여러 가지 다양한 추론 경로를 샘플링하고, 여러 번의 프롬프트 생성 과정을 거쳐 가장 일관된 답을 선택하는 것입니다. 이를 통해 산술 및 상식적인 추론과 관련된 작업에서 생각의 사슬 프롬프트의 성능을 향상시킬 수 있습니다.
다음의 산술 추론에 대한 예제를 살펴봅시다:
*Prompt:*
```
제가 6살이었을 때 제 동생은 제 나이의 절반이었습니다. 지금
저는 70살이고 여동생은 몇 살인가요?
내가 6살이었을 때 내 여동생은 내 나이의 절반인 나이였어. 지금
나는 70살이라면 여동생은 몇 살일까?
```
*Output:*
@ -15,63 +15,63 @@
35
```
결과가 틀렸습니다. Self-Consistency를 이용해 이 문제를 어떻게 개선할 수 있을까요? 한번 해봅시다. [Wang et al. 2022] 논문의 (Table 17) 예제를 이용할 겁니다:
결과가 틀렸습니다. 자기 일관성을 이용해 이 문제를 어떻게 개선할 수 있을까요? 한번 해봅시다. [Wang et al. 2022] 논문의 (Table 17) 퓨샷 예제를 이용할 겁니다:
*Prompt:*
```
질문: 숲에는 15그루의 나무가 있습니다. 숲의 일꾼들이 오늘 숲에 나무를 심을 것입니다. 나무 심기가 끝나면
21그루의 나무가 있을 것입니다. 오늘 숲 일꾼들은 몇 그루의 나무를 심었나요?
답변: 15그루로 시작합니다. 나중에 나무가 21그루가 됩니다. 그 차이는 그들이 심은 나무의 수일 것입니다.
Q: 과수원에는 15그루의 나무가 있어. 과수원의 일꾼들이 오늘 과수원에 나무를 심을 거야. 나무 심기가 끝나면
21그루의 나무가 있을 거야. 오늘 과수원 일꾼들은 몇 그루의 나무를 심었을까?
A: 15그루로 시작합니다. 나중에 나무가 21그루가 됩니다. 그 차이가 그들이 심은 나무의 수일 것입니다.
따라서 그들은 21 - 15 = 6그루의 나무를 심었어야 합니다. 정답은 6입니다.
질문: 주차장에 3대의 차량이 있고 2대의 차량이 더 도착하면 주차장에 몇 대의 차량이 있나요?
답변: 주차장에 이미 3대의 차량이 있습니다. 2대가 더 도착합니다. 이제 3 + 2 = 5대의 차량이 있습니다. 정답은 5입니다.
Q: 주차장에 3대의 차량이 있고 2대의 차량이 더 도착하면 주차장에 몇 대의 차량이 있을까?
A: 주차장에 이미 3대의 차량이 있습니다. 2대가 더 도착합니다. 이제 3 + 2 = 5대의 차량이 있습니다. 정답은 5입니다.
질문: 레아는 초콜릿을 32개, 여동생은 42개를 먹었습니다. 둘이 35개를 먹었다면 총 몇 개가 남았나요?
답변: 레아는 초콜릿 32개, 레아의 여동생은 42개를 먹었습니다. 즉, 원래 32개 + 42개 = 74개의
Q: 지호는 초콜릿을 32개, 여동생은 42개를 가지고 있었어. 둘이 35개를 먹었다면 총 몇 개가 남았을까?
A: 레아는 초콜릿 32개, 레아의 여동생은 42개를 가지고 있었습니다. 즉, 원래 32개 + 42개 = 74개의
초콜릿이 있었습니다. 35개를 먹었습니다. 따라서 총 74 - 35 = 39개의 초콜릿이 남아 있습니다. 정답은 39입니다.
질문: 제이슨은 막대 사탕을 20개 먹었습니다. 그는 데니에게 막대 사탕을 주었습니다. 이제 제이슨은 막대사탕 12개를 가지고 있습니다. 제이슨은 데니에게
몇 개의 막대 사탕을 데니에게 주었습니까?
답변: 제이슨은 막대 사탕 20개를 가지고 있었습니다. 이제 제이슨은 12개만 가지고 있으므로, 나머지는 데니에게 주었을 것입니다. 제이슨이 데니에게 준 막대사탕의
20 - 12 = 8개의 막대 사탕을 데니에게 주었어야 합니다. 정답은 8개입니다.
Q: 선우는 막대 사탕을 20개 가지고 있었어. 그는 두리에게 막대 사탕을 몇 개 주었어. 이제 선우는 막대사탕 12개를 가지고 있어. 선우는 두리에게
몇 개의 막대 사탕을 줬을까?
A: 선우는 막대 사탕 20개를 가지고 있었습니다. 이제 선우는 12개만 가지고 있으므로, 나머지는 두리에게 주었을 것입니다. 선우가 두리에게 준 막대사탕의
20 - 12 = 8개의 막대 사탕을 두리에게 주었어야 합니다. 정답은 8개입니다.
질문: 숀은 장난감이 다섯 개 있습니다. 크리스마스에 숀은 엄마와 아빠로부터 각각 두 개의 장난감을 받았습니다. 숀은 지금 몇 개의 장난감을
숀은 지금 몇 개의 장난감을 가지고 있습니까?
답변: 숀은 장난감이 5개입니다. 엄마로부터 2개를 받았으므로 5 + 2 = 7개의 장난감을 가지고 있습니다. 그리고 아빠한테서 2개를 더 받았어요.
Q: 도현이는 장난감이 다섯 개 있어. 크리스마스에 도현이는 엄마와 아빠로부터 각각 두 개의 장난감을 받았어. 도현이는 지금 몇 개의 장난감을
가지고 있을까?
A: 도현이의 장난감이 5개입니다. 엄마로부터 2개를 받았으므로 5 + 2 = 7개의 장난감을 가지고 있습니다. 그리고 아빠한테서 2개를 더 받았어요.
총 7 + 2 = 9 개의 장난감을 가지고 있습니다. 정답은 9입니다.
질문: 서버실에는 9대의 컴퓨터가 있었습니다. 월요일부터 목요일까지 매일 5대의 컴퓨터가 더 설치되었습니다.
월요일부터 목요일까지. 현재 서버실에는 몇 대의 컴퓨터가 있나요?
답변: 월요일부터 목요일까지 4일간입니다. 매일 5대의 컴퓨터가 추가되었습니다. 즉, 총 4 * 5 =
Q: 서버실에는 9대의 컴퓨터가 있었어. 월요일부터 목요일까지 각각 5대씩 컴퓨터가 더 설치되었어.
현재 서버실에는 몇 대의 컴퓨터가 있을까?
A: 월요일부터 목요일까지는 4일입니다. 매일 5대씩 컴퓨터가 추가되었습니다. 즉, 총 4 * 5 =
20대의 컴퓨터가 추가되었습니다. 처음에는 9대의 컴퓨터가 있었으므로 이제 9 + 20 = 29대의 컴퓨터가 있습니다.
정답은 29입니다.
질문: 마이클은 58개의 골프 공을 가지고 있었습니다. 화요일에 그는 23개의 골프 공을 잃었습니다. 수요일에 2개를 더 잃었습니다. 그가 수요일에 가지고 있던
수요일이 끝났을 때 그가 가지고 있던 골프 공은 몇 개였습니까?
답변: 마이클은 처음에 58개의 공을 가지고 있었습니다. 화요일에 23개를 잃어버렸으므로 그 이후에는 58 - 23 = 35개의 공을 가지고 있습니다. On
Q: 수완이는 58개의 골프공을 가지고 있었어. 화요일에 그는 23개의 골프공을 잃어버렸어. 수요일에 2개를 더 잃어버렸어.
수요일이 끝났을 때 그가 가지고 있던 골프공은 몇 개였을까?
A: 수완이는 처음에 58개의 공을 가지고 있었습니다. 화요일에 23개를 잃어버렸으므로 그 이후에는 58 - 23 = 35개의 공을 가지고 있습니다.
수요일에 2개를 더 잃어버렸으므로 이제 35 - 2 = 33개의 공을 가지고 있습니다. 정답은 33입니다.
질문: 올리비아는 23달러를 가지고 있습니다. 그녀는 각각 3달러에 베이글 5개를 샀습니다. 올리비아에게 남은 돈은 얼마입니까?
답변: 올리비아는 각각 3달러에 베이글 5개를 샀습니다. 이것은 그녀가 5달러를 썼다는 것을 의미합니다.
Q: 한얼이는 23달러를 가지고 있어. 그녀는 각각 3달러에 베이글 5개를 샀어. 한얼이에게 남은 돈은 얼마일까?
A: 한얼이는 각각 3달러에 베이글 5개를 샀습니다. 이것은 그녀가 5 * 3 = 15달러를 썼다는 것을 의미합니다.
질문: 제가 6살이었을 때 제 동생은 제 나이의 절반이었습니다. 지금 저는 70살인데 언니는 몇 살인가요?
답변:
Q: 내가 6살이었을 때 내 여동생은 내 나이의 절반인 나이였어. 지금 나는 70살이고 내 여동생은 몇 살일까?
A:
```
*출력 1:*
*Output 1:*
```
제가 6살이었을 때 누나는 제 나이의 절반이었으므로 3살이었어요. 이제 저는 70살이므로 누나는 70 - 3 = 67살입니다. 정답은 67입니다.
제가 6살이었을 때 여동생은 제 나이의 절반이었으므로 3살이었어요. 이제 저는 70살이므로 여동생은 70 - 3 = 67살입니다. 정답은 67입니다.
```
*출력 2:*
*Output 2:*
```
화자가 6살이었을 때 누나는 화자의 절반 나이인 3살이었습니다. 이제 화자가 70살이 되었으므로 누나는 70 - 3 = 67살이 됩니다. 정답은 67입니다.
화자가 6살이었을 때 여동생은 화자의 절반 나이인 3살이었습니다. 이제 화자가 70살이 되었으므로 여동생은 70 - 3 = 67살이 됩니다. 정답은 67입니다.
```
*출력 3:*
*Output 3:*
```
내가 6살이었을 때 누나는 내 나이의 절반이었으므로 3살이고, 이제 나는 70살이므로 누나는 70/2 = 35살입니다. 정답은 35입니다.
내가 6살이었을 때 여동생은 내 나이의 절반이었으므로 3살이고, 이제 나는 70살이므로 여동생은 70/2 = 35살입니다. 정답은 35입니다.
```
최종 정답을 계산하는 데는 몇 가지 단계가 필요하지만(자세한 내용은 논문에서 확인), 간단하게 설명하기 위해 이미 다수의 정답이 나타나고 있으므로 이 정답이 최종 정답이 되는 것을 확인할 수 있습니다.
최종 정답을 계산하는 데는 몇 가지 단계가 필요하지만(자세한 내용은 논문에서 확인하세요), 간단하게 설명하기 위해 이미 다수의 정답에서 확인할 수 있듯이 이 정답이 근본적으로 최종 정답이 되는 것을 확인할 수 있습니다.

@ -3,90 +3,110 @@
import {Screenshot} from 'components/screenshot'
import COT from '../../img/cot.png'
import ZEROCOT from '../../img/zero-cot.png'
import AUTOCOT from '../../img/auto-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)
[Wei et al. (2022)](https://arxiv.org/abs/2201.11903)에서 소개된 생각의 사슬(CoT) 프롬프트는 중간 추론 단계를 통해 복잡한 추론을 가능하게 합니다. 이를 단답형 프롬프트와 결합하면 응답하기 전에 추론이 필요한 복잡한 작업에서 더 나은 결과를 얻을 수 있습니다.
[Wei et al. (2022)](https://arxiv.org/abs/2201.11903)에서 소개된 생각의 사슬(Chain-of-Thought, CoT) 프롬프트는 중간 추론 단계를 통해 복잡한 추론을 가능하게 합니다. 이를 단답형 프롬프트와 결합하면 응답하기 전에 추론이 필요한 복잡한 작업에서 더 나은 결과를 얻을 수 있습니다.
*프롬프트:*
*Prompt:*
```
집합 {4, 8, 9, 15, 12, 2, 1}에서 홀수를 모두 더하면 짝수입니다.
답변: 홀수(9, 15, 1)를 모두 더하면 25가 됩니다. 위의 명제는 거짓입니다.
집합 {4, 8, 9, 15, 12, 2, 1}에서 홀수를 모두 더하면 짝수.
답변: 홀수(9, 15, 1)를 모두 더하면 25가 돼. 위의 명제는 거짓이야.
집합 {17, 10, 19, 4, 8, 12, 24}에서 홀수를 모두 더하면 짝수입니다.
답변: 홀수(17, 19)를 모두 더하면 36이 됩니다. 위의 명제는 참입니다.
집합 {17, 10, 19, 4, 8, 12, 24}에서 홀수를 모두 더하면 짝수.
답변: 홀수(17, 19)를 모두 더하면 36이 돼. 위의 명제는 참이야.
집합 {16, 11, 14, 4, 8, 13, 24}에서 홀수를 모두 더하면 짝수입니다.
답변: 홀수(11, 13)를 모두 더하면 24가 됩니다. 위의 명제는 참입니다.
집합 {16, 11, 14, 4, 8, 13, 24}에서 홀수를 모두 더하면 짝수.
답변: 홀수(11, 13)를 모두 더하면 24가 돼. 위의 명제는 참이야.
집합 {17, 9, 10, 12, 13, 4, 2}에서 홀수를 모두 더하면 짝수입니다.
답변: 홀수(17, 9, 13)를 모두 더하면 39가 됩니다. 위의 명제는 거짓입니다.
집합 {17, 9, 10, 12, 13, 4, 2}에서 홀수를 모두 더하면 짝수.
답변: 홀수(17, 9, 13)를 모두 더하면 39가 돼. 위의 명제는 거짓이야.
집합 {15, 32, 5, 13, 82, 7, 1}에서 홀수를 모두 더하면 짝수입니다.
집합 {15, 32, 5, 13, 82, 7, 1}에서 홀수를 모두 더하면 짝수.
답변:
```
*출력:*
*Output:*
```
홀수(15, 5, 13, 7, 1)를 모두 더하면 41이 됩니다. 위의 명제는 거짓입니다.
홀수(15, 5, 13, 7, 1)를 모두 더하면 41이 돼. 위의 명제는 거짓이야.
```
와우! 추론 단계를 추가했을 때 완벽한 결과를 볼 수 있습니다. 사실 더 적은 수의 예제, 즉 하나의 예제만 추가해도 이 과제를 해결할 수 있습니다:
와우! 추론 단계를 추가했을 때 완벽한 결과를 볼 수 있습니다. 사실 더 적은 수의 예시, 즉 하나의 예시만 추가해도 이 과제를 해결할 수 있습니다:
*프롬프트:*
*Prompt:*
```
이 그룹의 홀수는 4, 8, 9, 15, 12, 2, 1과 같이 짝수로 합산됩니다.
A: 홀수(9, 15, 1)를 모두 더하면 25가 됩니다. 정답은 거짓입니다.
이 그룹의 홀수의 합은 짝수야: 4, 8, 9, 15, 12, 2, 1
A: 홀수(9, 15, 1)를 모두 더하면 25가 돼. 정답은 거짓이야.
이 그룹의 홀수는 15, 32, 5, 13, 82, 7, 1과 같이 짝수로 합산됩니다.
이 그룹의 홀수의 합은 짝수야: 15, 32, 5, 13, 82, 7, 1
A:
```
*출력:*
*Output:*
```
홀수(15, 5, 13, 7, 1)를 모두 더하면 41이 됩니다. 답은 False입니다.
홀수(15, 5, 13, 7, 1)를 모두 더하면 41이 돼. 답은 거짓이야.
```
논문의 저자들은 위와 같은 결과가 충분히 큰 LLM에서만 발생하는 특성이라고 주장한다는 점을 명심하세요.
논문의 저자들은 위와 같은 결과가 충분히 큰 대규모언어모델에서만 발생하는 특성이라고 주장한다는 점을 명심하세요.
## Zero-shot COT Prompting
<Screenshot src={ZEROCOT} alt="Zero-shot COT" />
Image Source: [Kojima et al. (2022)](https://arxiv.org/abs/2205.11916)
이미지 출처: [Kojima et al. (2022)](https://arxiv.org/abs/2205.11916)
최근에 나온 아이디어 중 하나로 zero-shot CoT가 있습니다. [zero-shot CoT](https://arxiv.org/abs/2205.11916) (Kojima et al. 2022) 원래의 프롬프트에 "단계적으로 생각하자"를 추가하는 것이 핵심입니다. 간단한 문제를 풀고 모델이 어떻게 작동하는지 살펴봅시다:
최근에 나온 아이디어 중 하나로 제로샷 생각의 사슬\(zero-shot CoT\)이 있습니다. [zero-shot CoT](https://arxiv.org/abs/2205.11916) (Kojima et al. 2022) 원래의 프롬프트에 "단계별로 생각하기"를 추가하는 것이 핵심입니다. 간단한 문제를 풀고 모델이 어떻게 작동하는지 살펴봅시다:
*프롬프트:*
*Prompt:*
```
저는 시장에 가서 사과 10개를 샀습니다. 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 사과 5개를 더 사서 1개는 제가 먹었습니다. 저는 몇 개의 사과를 가지고 있었나요?
나는 시장에 가서 사과 10개를 샀어. 사과 2개를 이웃에게 주고, 2개를 수리공에게 주었어. 그리고 사과 5개를 더 사서 1개는 내가 먹었어. 나는 몇 개의 사과를 가지고 있었니?
```
*출력:*
*Output:*
```
사과 11개
```
정답이 틀렸습니다! 위에서 제안한 프롬프트로 시도해 보겠습니다.
오답입니다! 위에서 제안한 "단계별로 생각하기"를 추가한 프롬프트로 시도해 보겠습니다.
*프롬프트:*
*Prompt:*
```
저는 시장에 가서 사과 10개를 샀습니다. 저는 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 사과 5개를 더 사서 1개는 제가 먹었습니다. 사과가 몇 개나 남았나요?
나는 시장에 가서 사과 10개를 샀어. 나는 사과 2개를 이웃에게 주고, 2개를 수리공에게 주었어. 그리고 사과 5개를 더 사서 1개는 내가 먹었어. 사과가 몇 개나 남았니?
차근차근 생각해 봅시다.
단계별로 생각해 보자.
```
*출력:*
*Output:*
```
먼저 사과 10개로 시작했습니다.
이웃에게 2개, 수리공에게 2개를 나누어 주었으므로 사과가 6개가 남았습니다.
그런 다음 사과 5개를 더 사서 이제 사과가 11개가 되었습니다.
마지막으로 사과 1개를 먹었으므로 사과 10개가 남게 됩니다.
먼저 사과 10개로 시작했.
이웃에게 2개, 수리공에게 2개를 나누어 주었으므로 사과가 6개가 남았.
그런 다음 사과 5개를 더 사서 이제 사과가 11개가 되었.
마지막으로 사과 1개를 먹었으므로 사과 10개가 남게 .
```
이 간단한 프롬프트가 위와 같은 문제에 효과적이라는 점이 인상적입니다. 프롬프트에 사용할 예제가 너무 많지 않을 때 특히 유용합니다.
이 간단한 프롬프트가 위와 같은 문제에 효과적이라는 점이 인상적입니다. 프롬프트에 사용할 예시가 그리 많지 않을 때 특히 유용합니다.
## Automatic Chain-of-Thought (Auto-CoT)
데모와 함께 생각의 사슬 프롬프트를 적용할 때, 이 과정은 효과적이고 다양한 예시를 수작업으로 포함합니다. 이러한 수작업은 차선의 해결책으로 이어질 수 있습니다. [Zhang 등(2022)](https://arxiv.org/abs/2210.03493)은 "단계별로 생각해보자"라는 프롬프트가 있는 대규모언어모델을 활용하여 데모를 위한 추론 사슬을 하나씩 생성함으로써 수작업을 없애는 접근 방식을 제안합니다. 이 자동 프로세스는 여전히 생성된 체인에 실수가 있을 수 있습니다. 실수로 인한 영향을 완화하기 위해서는 데모의 다양성이 중요합니다. 이 연구에서는 다양한 질문을 샘플링하고 데모를 구성하기 위한 추론 체인을 생성하는 Auto-CoT를 제안합니다.
Auto-CoT는 두 가지 주요 단계로 구성됩니다:
- 1단계): **질문 클러스터링\(question clustering\)**: 주어진 데이터 세트의 질문을 몇 개의 클러스터로 분할합니다.
- 2단계): **데모 샘플링\(demonstration sampling\)**: 각 클러스터에서 대표 질문을 선택하고 간단한 휴리스틱과 함께 제로샷 생각의 사슬(Zero-Shot-CoT)를 사용해 추론 체인을 생성합니다.
간단한 휴리스틱은 질문의 길이(예: 60개의 토큰)와 추론 단계 수(예: 5개의 추론 단계)가 될 수 있습니다. 이렇게 하면 모델이 간단하고 정확한 데모를 사용하도록 장려합니다.
그 과정은 아래에 설명되어 있습니다:
<Screenshot src={AUTOCOT} alt="AUTOCOT" />
이미지 출처: [Zhang et al. (2022)](https://arxiv.org/abs/2210.03493)
Auto-CoT 코드는 [여기](https://github.com/amazon-science/auto-cot)에서 확인할 수 있습니다.

@ -4,13 +4,13 @@ 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을 더 잘 설명하는 새로운 프롬프트 기법을 제안합니다.
[Li et al., (2023)](https://arxiv.org/abs/2302.11520) 에서는 원하는 요약을 생성하는 데 있어 대규모언어모델을 더 잘 안내하는 새로운 프롬프팅 기법을 제안합니다.
조정 가능한 정책 LM은 자극/힌트를 생성하도록 훈련됩니다. LLMs을 최적화하기 위해 RL을 더 많이 사용하고 있습니다.
조정 가능한 정책 언어모델\(Tuneable policy LM\)은 자극\(stimulus\)/힌트\(hint\)를 생성하도록 훈련됩니다. 대규모언어모델을 최적화하기 위해 강화 학습\(RL\)을 더 많이 사용하고 있습니다.
아래 그림은 Directional Stimulus 프롬프트가 표준 프롬프트와 어떻게 비교되는지 보여줍니다. 정책 LM은 블랙박스 frozen LLM을 안내하는 힌트를 생성하기 위해 작게 최적화될 수 있습니다.
아래 그림은 Directional Stimulus 프롬프팅이 표준 프롬프팅과 어떻게 비교되는지 보여줍니다. 정책 언어모델은 블랙박스 고정 대규모언어모델\(black-box frozen LLM\)을 안내하는 힌트를 생성하기 위해 작게 최적화될 수 있습니다.
<Screenshot src={DSP} alt="DSP" />
Image Source: [Li et al., (2023)](https://arxiv.org/abs/2302.11520)
이미지 출처: [Li et al., (2023)](https://arxiv.org/abs/2302.11520)
전체 예는 곧 제공될 예정입니다!
전체 예는 곧 제공될 예정입니다!

@ -1,5 +1,5 @@
# GraphPrompts
[Liu et al., 2023](https://arxiv.org/abs/2302.08043)에서는 다운스트림 작업의 성능을 개선하기 위해 그래프를 위한 새로운 프롬프 프레임워크인 GraphPrompt를 소개합니다.
[Liu et al., 2023](https://arxiv.org/abs/2302.08043)에서는 다운스트림 작업의 성능을 개선하기 위해 그래프를 위한 새로운 프롬프 프레임워크인 GraphPrompt를 소개합니다.
더 많은 예제가 곧 추가될 예정입니다!

@ -7,15 +7,15 @@ import GENKNOW from '../../img/gen-knowledge.png'
Image Source: [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf)
LLM은 계속해서 개선되고 있으며, 인기 있는 기법 중 하나로 모델이 더 정확한 예측을 할 수 있도록 지식이나 정보를 통합하는 방법이 있습니다.
대규모언어모델은 계속해서 개선되고 있고 인기 있는 기법 중 하나로 모델이 더 정확한 예측을 할 수 있도록 지식이나 정보를 통합하는 방법을 포함합니다.
비슷한 아이디어를 사용하여 예측을 하기 전에 지식을 생성하는 데에도 모델을 사용할 수 있을까요? 이것이 바로 [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf) -- 의 논문에서 시도한 것, 즉 프롬프트의 일부로 사용할 지식을 생성하는 것입니다. 특히 상식적인 추론과 같은 작업에 얼마나 도움이 될까요?
비슷한 아이디어를 사용하여 예측을 하기 전에 지식을 생성하는 데에도 모델을 사용할 수 있을까요? 이것이 바로 [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf)의 논문에서 시도한 것, 즉 프롬프트의 일부로 사용할 지식을 생성하는 것입니다. 특히 상식적인 추론과 같은 작업에 얼마나 도움이 될까요?
간단한 예제 프롬프트를 살펴보겠습니다:
*프롬프트:*
```
골프의 목적중 하나는 다른 사람보다 더 높은 점수를 얻기 위해 노력하는 것입니다. 예, 아니오?
골프의 목적 중 하나는 다른 사람보다 더 높은 점수를 얻기 위해 노력하는 것다. 예, 아니오?
```
*출력:*
@ -23,70 +23,70 @@ LLM은 계속해서 개선되고 있으며, 인기 있는 기법 중 하나로
예.
```
이러한 유형의 실수는 세상에 대한 더 많은 지식이 필요한 작업을 수행하는 데 있어 LLM의 한계를 드러냅니다. 지식 생성을 통해 이 문제를 어떻게 개선할 수 있을까요?
이러한 유형의 실수는 세상에 대한 더 많은 지식이 필요한 작업을 수행하는 데 있어 대규모언어모델의 한계를 드러냅니다. 지식 생성을 통해 이 문제를 어떻게 개선할 수 있을까요?
먼저 몇 가지 "지식"을 생성합니다:
*프롬프트:*
```
입력: 그리스는 멕시코보다 큽니다.
지식: 그리스는 약 131,957 평방 킬로미터이고, 멕시코는 약 1,964,375 평방 킬로미터로 멕시코가 그리스보다 1,389% 더 큽니다.
Input: 그리스는 멕시코보다 크다.
Knowledge: 그리스는 약 131,957 제곱 킬로미터이고, 멕시코는 약 1,964,375 제곱 킬로미터로 멕시코가 그리스보다 1,389% 더 크다.
입력: 안경은 항상 김이 서립니다.
지식: 안경 렌즈에는 땀, 호흡 및 주변 습도에서 나오는 수증기가 차가운 표면에 닿아 식은 다음 작은 액체 방울로 변하여 안개처럼 보이는 막을 형성할 때 응결이 발생합니다. 특히 외부 공기가 차가울 때는 호흡에 비해 렌즈가 상대적으로 차가워집니다.
Input: 안경은 항상 김이 서린다.
Knowledge: 안경 렌즈에는 땀, 호흡 및 주변 습도에서 나오는 수증기가 차가운 표면에 닿아 식은 다음 작은 액체 방울로 변하여 안개처럼 보이는 막을 형성할 때 응결이 발생한다. 특히 외부 공기가 차가울 때는 호흡에 비해 렌즈가 상대적으로 차가워진다.
입력: 물고기는 생각할 수 있습니다.
지식: 물고기는 보기보다 훨씬 더 똑똑합니다. 기억력과 같은 많은 영역에서 물고기의 인지 능력은 인간이 아닌 영장류를 포함한 '고등' 척추동물과 비슷하거나 그 이상입니다. 물고기의 장기 기억력은 복잡한 사회적 관계를 추적하는 데 도움이 됩니다.
Input: 물고기는 생각할 수 있다.
Knowledge: 물고기는 보기보다 훨씬 더 똑똑하다. 기억력과 같은 많은 영역에서 물고기의 인지 능력은 인간이 아닌 영장류를 포함한 '고등' 척추동물과 비슷하거나 그 이상이다. 물고기의 장기 기억력은 복잡한 사회적 관계를 추적하는 데 도움이 된다.
입력: 평생 담배를 많이 피우면 폐암에 걸릴 확률이 정상보다 높다는 것은 일반적인 결과입니다.
지식: 평생 동안 하루 평균 담배를 한 개비 미만으로 꾸준히 피운 사람은 비흡연자보다 폐암으로 사망할 위험이 9배 높았습니다. 하루에 한 개비에서 열 개비 사이의 담배를 피운 사람들은 폐암으로 사망할 위험이 비흡연자보다 거의 12배 높았습니다.
Input: 평생 담배를 피우는 것의 일반적인 결과는 폐암에 걸릴 확률이 정상보다 높다는 것입니다.
Knowledge: 평생 동안 하루 평균 담배를 한 개비 미만으로 꾸준히 피운 사람은 비흡연자보다 폐암으로 사망할 위험이 9배 높았다. 하루에 한 개비에서 열 개비 사이의 담배를 피운 사람들은 폐암으로 사망할 위험이 비흡연자보다 거의 12배 높았다.
입력: 돌은 조약돌과 같은 크기입니다.
지식: 조약돌은 퇴적학의 우든-웬트워스 척도에 따라 입자 크기가 4~64밀리미터인 암석 덩어리입니다. 자갈은 일반적으로 과립(직경 2~4밀리미터)보다는 크고 자갈(직경 64~256밀리미터)보다는 작은 것으로 간주됩니다.
Input: 돌은 조약돌과 같은 크기다.
Knowledge: 조약돌은 퇴적학의 우든-웬트워스 척도에 따라 입자 크기가 4~64밀리미터인 암석 덩어리다. 조약돌은 일반적으로 과립(직경 2~4밀리미터)보다는 크고 자갈(직경 64~256밀리미터)보다는 작은 것으로 간주다.
입력: 골프의 목적중 하나는 다른 사람보다 더 높은 점수를 얻기 위해 노력하는 것입니다.
지식:
Input: 골프의 목적 중 하나는 다른 사람보다 더 높은 점수를 얻기 위해 노력하는 것이다.
Knowledge:
```
*지식 1:*
*Knowledge 1:*
```
골프의 목적은 최소의 스트로크로 전체 홀을 플레이하는 것입니다. 골프 라운드는 일반적으로 18홀로 구성됩니다. 각 홀은 표준 골프 코스에서 라운드 중 한 번씩 플레이됩니다. 각 스트로크는 1점으로 계산되며 총 스트로크 수를 사용하여 게임의 승자를 결정합니다.
골프의 목적은 최소의 스트로크로 한 세트의 홀을 플레이하는 것이다. 골프 라운드는 일반적으로 18홀로 구성된다. 각 홀은 표준 골프 코스에서 라운드 중 한 번씩 플레이된다. 각 스트로크는 1점으로 계산되며 총 스트로크 수를 사용하여 게임의 승자를 결정다.
```
*지식 2:*
*Knowledge 2:*
```
골프는 경쟁하는 선수(또는 골퍼)가 여러 종류의 클럽을 사용하여 가장 적은 수의 스트로크로 코스에 있는 전체 홀에 공을 치는 정밀한 클럽 앤 볼 스포츠입니다. 목표는 각 홀에서 기록한 총 타수를 합산하여 계산되는 최저 점수로 코스를 완주하는 것입니다. 가장 낮은 점수를 기록한 플레이어가 게임에서 승리합니다.
골프는 경쟁하는 선수(또는 골퍼)가 여러 종류의 클럽을 사용하여 가장 적은 수의 스트로크로 코스에 있는 한 세트의 홀에 공을 치는 정밀한 클럽 앤 볼 스포츠다. 각 홀에서 기록한 총 타수를 합산하여 계산하는 점수가 최저가 되도록 코스를 완주하는 것이 목표다. 가장 낮은 점수를 기록한 플레이어가 게임에서 승리한다.
```
[Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf)의 논문에서 제공한 프롬프트를 사용하고 있습니다.
다음 단계는 지식을 통합하고 예측을 얻는 것입니다. 답변 형식을 안내하기 위해 질문을 QA 형식으로 재구성했습니다.
다음 단계는 지식을 통합하고 예측하는 것입니다. 답변 형식을 알려주기 위해 질문을 질의응답 형식으로 재구성했습니다.
*프롬프트:*
```
질문: 골프의 목적중 하나는 다른 사람보다 더 높은 총점을 얻기 위해 노력하는 것입니다. 예, 아니오?
Question: 골프의 목적중 하나는 다른 사람보다 더 높은 총점을 얻기 위해 노력하는 것다. 예, 아니오?
지식: 골프의 목적은 최소의 스트로크로 전체 홀을 플레이하는 것입니다. 골프 라운드는 일반적으로 18홀로 구성됩니다. 각 홀은 표준 골프 코스에서 라운드 중 한 번씩 플레이됩니다. 각 스트로크는 1점으로 계산되며 총 스트로크 수를 사용하여 게임의 승자를 결정합니다.
Knowledge: 골프의 목적은 최소의 스트로크로 한 세트의 홀을 플레이하는 것이다. 골프 한 라운드는 일반적으로 18홀로 구성된다. 표준 골프 코스에서는 각 홀을 라운드마다 한 번씩 플레이합니다. 각 스트로크는 1점으로 계산되며 총 스트로크 수를 사용하여 게임의 승자를 결정다.
설명하고 답하십시오:
```
*정답 1(매우 높은 신뢰도):*
*Answer 1(매우 높은 확신):*
```
아니요, 골프의 목적은 다른 사람보다 더 높은 점수를 얻는 것이 아닙니다. 오히려 가장 적은 수의 스트로크로 전체 홀을 플레이하는 것이 목표입니다. 총 스트로크 수는 총 점수가 아니라 게임의 승자를 결정하는 데 사용됩니다.
아니요, 골프의 목적은 다른 사람보다 더 높은 점수를 얻는 것이 아닙니다. 오히려 가장 적은 수의 스트로크로 한 세트의 홀을 플레이하는 것이 목표입니다. 게임의 승자를 결정하는 데에는 총 점수가 아니라 총 스트로크 수가 사용됩니다.
```
```
질문: 골프의 목적중 하나는 다른 사람보다 더 높은 총점을 얻기 위해 노력하는 것입니다. 예, 아니오?
Question: 골프의 목적중 하나는 다른 사람보다 더 높은 총점을 얻기 위해 노력하는 것다. 예, 아니오?
지식: 골프는 경쟁하는 선수(또는 골퍼)가 여러 종류의 클럽을 사용하여 가장 적은 수의 스트로크로 코스에 있는 전체 홀에 공을 치는 정밀한 클럽 앤 볼 스포츠입니다. 목표는 각 홀에서 기록한 총 타수를 합산하여 계산되는 최저 점수로 코스를 완주하는 것입니다. 가장 낮은 점수를 기록한 플레이어가 게임에서 승리합니다.
Knowledge: 골프는 경쟁하는 선수(또는 골퍼)가 여러 종류의 클럽을 사용하여 가장 적은 수의 스트로크로 코스에 있는 한 세트의 홀에 공을 치는 정밀한 클럽 앤 볼 스포츠다. 각 홀에서 기록한 총 타수를 합산하여 계산하는 점수가 최저가 되도록 코스를 완주하는 것이 목표다. 가장 낮은 점수를 기록한 플레이어가 게임에서 승리한다.
설명하고 답하세요:
```
*정답 2(낮은 신뢰도)*
*Answer 2(낮은 확신)*
```
예, 골프의 목적중 하나는 다른 사람보다 더 높은 점수를 얻기 위해 노력하는 것입니다. 각 플레이어는 각 홀에서 기록한 총 타수를 합산하여 계산되는 가장 낮은 점수로 코스를 완주하려고 합니다. 가장 낮은 점수를 얻은 플레이어가 게임에서 승리합니다.
```
이 예는 정말 흥미로운 결과를 보여줍니다. 첫 번째 답변에서는 모델이 매우 신뢰도가 높았지만, 두 번째 답변에서는 그렇지 않았습니다. 데모 목적으로 프로세스를 단순화했지만 최종 정답에 도달할 때 고려해야 할 몇 가지 세부 사항이 더 있습니다. 자세한 내용은 논문을 참조하세요.
이 예는 정말 흥미로운 결과를 보여줍니다. 첫 번째 답변에서는 모델이 매우 신뢰도가 높았지만, 두 번째 답변에서는 그렇지 않았습니다. 논리를 증명하기 위해 프로세스를 단순화했지만 최종 정답에 도달할 때 고려해야 할 몇 가지 세부 사항이 더 있습니다. 자세한 내용은 논문을 참조하세요.

@ -4,7 +4,7 @@ import { Callout, FileTree } from 'nextra-theme-docs'
import {Screenshot} from 'components/screenshot'
import MCOT from '../../img/multimodal-cot.png'
[Zhang et al. (2023)](https://arxiv.org/abs/2302.00923)은 최근 멀티모달 CoT 프롬프트 접근 방식을 제안했습니다. 기존의 CoT는 언어 양식에 중점을 둡니다. 반면, 멀티모달 CoT는 텍스트와 이미지를 2단계 프레임워크에 통합합니다. 첫 번째 단계에서는 멀티모달 정보를 기반으로 근거 생성합니다. 그 다음에는 두 번째 단계인 답변 추론이 이어지며, 이 단계에서는 생성된 정보 활용하여 답변을 도출합니다.
[Zhang et al. (2023)](https://arxiv.org/abs/2302.00923)은 최근 멀티모달 생각의 사슬 프롬프팅\(multimodal chain-of-thought prompting\) 접근 방식을 제안했습니다. 기존의 CoT는 언어 양식\(language modality\)에 중점을 둡니다. 반면, 멀티모달 CoT는 텍스트와 이미지를 2단계 프레임워크에 통합합니다. 첫 번째 단계에서는 멀티모달 정보를 기반으로 근거 생성\(rationale generation\)을 포함합니다. 그 다음에는 두 번째 단계인 답변 추론이 이어지며, 이 단계에서는 생성된 정보적 근거들\(informative generated rationales\)을 활용하여 답변을 도출합니다.
멀티모달 CoT 모델(1B)은 ScienceQA 벤치마크에서 GPT-3.5보다 성능이 뛰어났습니다.

@ -1,3 +1,25 @@
# Retrieval Augmented Generation (RAG)
This page needs a translation! Feel free to contribute a translation by clicking the `Edit this page` button on the right side.
import { Screenshot } from 'components/screenshot';
import RAG from '../../img/rag.png';
General-purpose 언어 모델은 일반적인 작업을 달성하도록 감정 분석 및 명명된 엔티티 인식을 미세 조정할 수 있습니다. 이러한 작업에는 일반적으로 추가적인 배경 지식이 필요하지 않습니다.
더 복잡한 지식을 모아 요약하는 작업의 경우 외부 지식 소스에 액세스하여 완료하는 언어 모델 기반 시스템을 구축할 수 있습니다 이를 통해 사실적 일관성을 높이고, 생성된 응답의 신뢰성을 향상시키며, "환각" 문제를 완화하는 데 도움이 됩니다.
Meta AI 연구원들은 이러한 지식을 모아 요약하는 작업을 해결하기 위해 [Retrieval Augmented Generation (RAG)](https://ai.facebook.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/) 라는 방법을 도입했습니다. RAG는 정보 구성 요소를 글자 생성기 모델과 결합합니다. RAG는 미세 조정이 가능하며 전체 모델을 재교육할 필요 없이 내부 지식을 효율적으로 수정할 수 있습니다.
RAG는 입력을 받아 주어진 소스(예: 위키피디아)에서 관련된/지원하는 문서들을 찾습니다. 문서는 원래 입력 프롬프트와 컨텍스트로 연결되어 최종 출력을 생성하는 텍스트 생성기에 공급됩니다 따라서 시간이 지남에 따라 RAG는 어떤 상황이던 사실적으로 적응할 수 있습니다. 이는 LLM의 매개 변수 지식이 정적이기 때문에 매우 유용합니다. RAG는 언어 모델들의 재교육 우회를 허용하여, 검색 기반 생성을 통해 신뢰할 수 있는 출력물을 생성하여 최신 정보로 접속할 수 있습니다.
Lewis et al.,(2021)은 RAG에 대한 범용 미세 조정 레시피를 제안했습니다. 사전 훈련된 seq2seq 모델은 파라메트릭 메모리로 사용되고 위키피디아의 밀집한 벡터 인덱스는 논파라메트릭 메모리로 사용됩니다 (사전 훈련된 신경 리트리버를 사용하여 허용됨). 다음은 접근 방식의 개요입니다:
<Screenshot src={RAG} alt="RAG" />
이미지 소스: [Lewis et el. (2021)](https://arxiv.org/pdf/2005.11401.pdf)
RAG는 [자연스러운 질문](https://ai.google.com/research/NaturalQuestions), [웹 질문](https://paperswithcode.com/dataset/webquestions), 큐레이드 트랙과 같은 여러 벤치마크에서 강력한 성능을 발휘합니다. RAG는 MS-MARCO와 Jeopardy 질문들을 테스트할 때 보다 사실적이고 구체적이며 다양한 응답을 생성합니다. RAG는 ​​또한 FEVER 사실 검증 결과를 개선합니다.
이것은 지식을 모아 요약하는 작업에서 언어 모델의 출력을 향상시키기 위한 실행 가능한 옵션으로서 RAG의 잠재력을 보여줍니다.
최근에는 이러한 리트리버 기반 접근 방식이 더욱 대중화되었으며 기능과 사실적 일관성을 향상시키기 위해 ChatGPT와 같은 인기 있는 LLM이 결합되었습니다.
LangChain 문서에서 [소스를 사용한 질문 답변에 리트리버와 LLM을 사용하는 방법에 대한 간단한 예시](https://python.langchain.com/en/latest/modules/chains/index_examples/vector_db_qa_with_sources.html)를 찾을 수 있습니다.

@ -1,14 +1,167 @@
# ReAct
# ReAct Prompting
import { Callout, FileTree } from 'nextra-theme-docs'
import {Screenshot} from 'components/screenshot'
import REACT from '../../img/react.png'
import REACT1 from '../../img/react/table1.png'
import REACT2 from '../../img/react/alfworld.png'
[Yao et al., 2022](https://arxiv.org/abs/2210.03629)에서는 LLM을 사용하여 추론 추적과 작업별 액션을 인터리브 방식으로 생성하는 프레임워크를 소개했습니다. 추론 추적을 생성하면 모델이 실행 계획을 유도, 추적, 업데이트하고 예외를 처리할 수 있습니다. 실행 단계에서는 지식 기반이나 환경과 같은 외부 소스와 인터페이스하고 정보를 수집할 수 있습니다.
[Yao et al., 2022](https://arxiv.org/abs/2210.03629)에서는 대규모언어모델을 사용하여 *추론 추적\(reasoning traces\)*과 *작업별 행동\(task-specific actions\)*을 인터리브 방식으로 생성하는 ReAct라는 프레임워크를 소개했습니다.
ReAct 프레임워크를 사용하면 LLMs이 외부 도구와 상호 작용하여 보다 신뢰할 수 있고 사실적인 대응으로 이어지는 추가 정보를 검색할 수 있습니다.
추론 추적을 생성하면 모델이 행동 계획을 유도, 추적, 업데이트하고 예외를 처리할 수 있습니다. 행동 단계\(action step\)에서는 지식 기반이나 환경과 같은 외부 소스와 상호 작용하고 정보를 수집할 수 있습니다.
ReAct 프레임워크를 사용하면 대규모언어모델이 외부 도구와 상호 작용하여 보다 신뢰할 수 있고 사실적인 응답으로 이어지는 추가 정보를 검색할 수 있습니다.
연구 결과에 따르면 ReAct는 언어 및 의사 결정 작업에서 여러 최신 기술의 기준선을 능가할 수 있는 것으로 나타났습니다. 또한 ReAct는 인간의 해석 가능성과 대규모언어모델의 신뢰성을 향상시킵니다. 전반적으로 저자들은 추론 과정에서 얻은 내부 지식과 외부 정보를 모두 사용할 수 있는 생각의 사고(CoT)와 함께 ReAct를 사용하는 것이 가장 좋은 접근 방식이라는 사실을 발견했습니다.
## How it Works?
ReAct는 인간이 새로운 작업을 학습하고 의사 결정이나 추론을 할 수 있도록 하는 "행동" 과 "추론"의 시너지 효과에서 영감을 받았습니다.
생각의 사고(CoT) 프롬프팅은 다른 작업들 중에 산술 및 상식적 추론과 관련된 질문에 대한 답을 생성하기 위해 추론 추적을 수행하는 대규모언어모델의 능력을 보여주었습니다[(Wei et al., 2022)](https://arxiv.org/abs/2201.11903). 그러나 외부 세계에 대한 접근성이 부족하거나 지식을 업데이트하는 능력이 부족하면 사실 착각(fact hallucination)이나 오류 전파 같은 문제가 발생할 수 있습니다.
ReAct는 추론과 행동을 대규모언어모델과 결합하는 일반적인 패러다임입니다. ReAct는 대규모언어모델이 작업을 위해 언어 추론 추적과 행동을 생성하도록 유도합니다. 이를 통해 시스템은 행동에 대한 계획을 생성, 유지 및 조정하는 동시에 외부 환경(예: Wikipedia)과의 상호 작용을 통해 추론에 추가 정보를 통합할 수 있습니다. 아래 그림은 ReAct의 예와 질문 답변을 수행하는데 필요한 다른 단계들을 보여줍니다.
<Screenshot src={REACT} alt="REACT" />
Image Source: [Yao et al., 2022](https://arxiv.org/abs/2210.03629)
이미지 출처: [Yao et al., 2022](https://arxiv.org/abs/2210.03629)
위의 예에서, 우리는 [HotpotQA](https://hotpotqa.github.io/)에서 아래 질문과 같은 프롬프트를 전달합니다:
```
Apple Remote 외에 Apple Remote가 원래 상호 작용하도록 설계된 프로그램을 제어할 수 있는 다른 장치는 어떤 것이 있니?
```
문맥내(in-context) 예시는 프롬프트에 추가되지만, 여기에서는 단순화를 위해 제외됨을 유의하세요. 우리는 모델이 작업 해결 궤적(생각, 행동)으 생성하는 것을 볼 수 있습니다. Obs는 상호작용 중인 환경(예: 검색 엔진)에서의 관찰에 해당합니다. 본질적으로, ReAct는 추론을 지원하기 위해 정보를 검색할 수 있으면, 추론은 다음에 검색할 대상을 타겟팅하는데 도움이 됩니다.
## ReAct Prompting
ReAct 프롬프팅이 어떻게 작동하는지 설명하기 위해, 논문에서 예시를 살펴보겠습니다.
첫 번째 단계는 트레이닝 세트(예:HotPotQA)에서 사례를 선택하고 ReAct 형식의 궤적을 구성하는 것이다. 이것들은 프롬프트에서 퓨샷(few-shot) 견본으로 사용됩니다. 궤적은 위 그림과 같이 여러 생각-행동-관찰 단계로 구성됩니다. 자유 형태 사고는 질문 분해, 정보 추출, 상식/산술적 추론 수행, 검색 공식화 안내, 그리고 최종 답변 합성과 같은 다른 작업들을 수행하는데 사용됩니다.
다음은 ReAct 프롬프트 모범 예시입니다(논문에서 가지고 온 것으로, 간결하게 하기 위해 하나의 예로 줄였습니다).
```
질문 콜로라도 조산 운동의 동쪽 구역이 확장되는 지역의 표고 범위는 얼마이니?
생각 1 콜로라도 조산 운동을 검색하여, 콜로라도 조산 운동의 동쪽 구역이 확장되는 지역을 찾은 다음, 그 지역의 표고 범위를 찾아야 해.
행동 1 검색하기[콜로라도 조산 운동]
관찰 1 콜로라도 조산 운동은 콜로라도와 그 주변 지역에서 산이 형성되는 과정(조산 운동)을 말해.
생각 2 동부에 대한 언급이 없어. 그래서 동부 섹터를 찾아봐야겠어.
행동 2 찾아보기[동부 섹터]
관찰 2 (결과 1 / 1) 동쪽 섹터는 고원 지대까지 뻗어 있고 중앙 평원 조산 운동이라고 불려.
생각 3 콜로라도 조산 운동의 동쪽 섹터는 고원 지대까지 뻗어 있어. 따라서 고원 지대를 검색하여 해발 범위를 찾아야 해.
행동 3 검색[고원 지대]
관찰 3 고원 지대는 두 개의 다른 지대 중 하나를 가르켜.
생각 4 대신 고원 지대(미국)를 검색해야해.
행동 4 검색[고원 지대 (미국)]
관찰 4 고원 지대는 대평원\(the Great Plains\)의 일부 지역이야. 동쪽에서 서쪽으로, 고원 지대는 약 1,800피트에서 7,000피트(550~2,130m)까지 고도가 높아져.[3]
생각 5 고원 지대의 해발 고도는 약 1,800~7,000피트이므로, 정답은 1,800~7,000피트야.
행동 5 완료[1,800~7,000피트]
...
```
다른 형태의 작업을 위해서는 다른 프롬프트가 사용되는 것에 유의하세요. 추론이 가장 중요한 작업(예: HotpotQA)의 경우, 작업 해결 궤적에 여러 생각-행동-관찰 단계가 사용됩니다. 많은 행동 단계가 포함되는 의사 결정의 경우, 생각은 드물게 사용됩니다.
## Results on Knowledge-Intensive Tasks
이 논문에서는 먼저 질문 답변(HotPotQA) 그리고 사실 확인([Fever](https://fever.ai/resources.html))과 같은 지식 집약적 추론 작업에 대해 ReAct를 평가합니다. PaLM-540B를 프롬프팅을 위한 기본 모델로 사용하였습니다.
<Screenshot src={REACT1} alt="REACT1" />
이미지 출처: [Yao et al., 2022](https://arxiv.org/abs/2210.03629)
서로 다른 프롬프팅 방법을 사용하는 HotPotQA와 Fever에 대한 프롬프팅 결과를 보면 일반적으로 두 작업 모두에서 ReAct가 Act(행동만 포함)보다 더 나은 성능을 보입니다.
또한 ReAct가 Fever에서는 CoT보다 성능이 뛰어나고 HotPotQA에서는 CoT보다 뒤처지는 것을 관찰할 수 있습니다. 자세한 오류 분석은 논문에서 확인할 수 있습니다. 요약하자면:
- CoT 는 사실 착각에 시달립니다.
- ReAct의 구조적 제약은 추론 단계를 공식화할 때 유연성이 떨어집니다.
- ReAct는 검색하는 정보에 크게 의존합니다; 정보가 없는 검색 결과는 모델 추론을 방해하고 생각을 복구하고 재구성하는데 어려움을 초래합니다.
ReAct와 CoT+Self-Consistency 간의 전환을 결합하고 지원하는 프롬프팅 방법은 일반적으로 모든 다른 프롬프팅 방법들보다 성능이 뛰어납니다.
## Results on Decision Making Tasks
이 논문에서는 의사 결정 작업에서 ReAct의 성능을 입증하는 결과도 보고합니다. ReAct는 [ALFWorld](https://alfworld.github.io/)(텍스트 기반 게임)와 [WebShop](https://webshop-pnlp.github.io/)(온라인 쇼핑 웹사이트 환경)이라는 두 가지 벤치마크에서 평가되었습니다. 두 벤치마크 모두 효과적으로 행동하고 탐색하기 위해 추론이 필요한 복잡한 환경을 포함합니다.
ReAct 프롬프트는 추론과 행동의 결합이라는 동일하 핵심 아이디어를 유지하면서 이러한 작업들에 대해 다르게 설계되었습니다. 아래는 ReAct 프롬프팅이 포함된 ALFWorld 문제의 예시입니다.
<Screenshot src={REACT2} alt="REACT2" />
이미지 출처: [Yao et al., 2022](https://arxiv.org/abs/2210.03629)
ReAct는 ALFWorld와 Webshop 모두에서 Act 보다 성능이 뛰어납니다. 어떠한 생각이 없는 Act는 목표를 하위 목표로 정확하게 분해하는데 실패하였습니다. 추론은 이러한 유형의 작업에 대해 ReAct에서 이점이 있는 것으로 보이지만, 현재 프롬프팅 기반 방법은 여전히 이러한 작업들에 대한 전문 인력의 성능에는 미치지 못 합니다.
## LangChain ReAct Usage
아래는 ReAct 프롬프팅 접근 방식이 실제로 어떻게 이루어지는지에 대한 개략적인 예입니다. 우리는 대규모언어모델과 다른 도구의 힘을 결합하여 작업을 수행하는 에이전트를 구축하기 위해 ReAct 프레임워크를 활용하는 기능이 이미 내장되어 있기 때문에 대규모언어모델과 [LangChain](https://python.langchain.com/en/latest/index.html)에 대해 OpenAI를 사용할 것이다.
먼저 필요한 라이브러리를 설치하고 가지고 옵니다:
``` python
%%capture
# update or install the necessary libraries
!pip install --upgrade openai
!pip install --upgrade langchain
!pip install --upgrade python-dotenv
!pip install google-search-results
# import libraries
import openai
import os
from langchain.llms import OpenAI
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from dotenv import load_dotenv
load_dotenv()
# load API keys; you will need to obtain these if you haven't yet
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
os.environ["SERPER_API_KEY"] = os.getenv("SERPER_API_KEY")
```
이제 우리는 대규모언어모델, 우리가 사용할 도구들, 그리고 ReAct 프레임워크를 대규모언어모델과 도구를 함께 활용할 수 있는 에이전트를 구성할 수 있습니다. 외부 정보 검색하기 위한 검색 API와 수학 도구로는 대규모언어모델을 사용하는 것에 유의하세요.
``` python
llm = OpenAI(model_name="text-davinci-003" ,temperature=0)
tools = load_tools(["google-serper", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
```
구성이 완료되면, 우리는 이제 원하는 쿼리/프롬프트로 에이전트를 실행할 수 있습니다. 여기서는 백서에서 설명하는 것처럼 퓨샷 견본을 제공하지 않는다는 점에 유의하세요.
``` python
agent.run("Olivia Wilde의 남자 친구는 누구이니? 0.23 거듭제곱을 하면 현재 그의 나이는 얼마이니?")
```
체인 실행\(chain execution\)은 다음과 같습니다:
``` yaml
> Entering new AgentExecutor chain...
나는 Olivia Wilde의 남자 친구가 누구인지 알아내고 0.23 거듭제곱을 한 그의 나이를 계산해야해.
행동 : 검색
행동 입력 : "Olivia Wilde 남자 친구"
관찰 : Olivia Wilde는 Jason Sudeikis와 수년간의 약혼을 끝낸 후 Harry Styles와 사귀기 시작했어. (두 사람간의 관계 타임라인 참조)
생각 : Harry Styles의 나이를 알아야해.
행동 : 검색
행동 입력 : "Harry Styles 나이"
관찰 : 29 세
생각 : 나는 29 에 0.23 거듭제곱을 계산해야 해.
행동 : 계산기
행동 입력 : 29^0.23
관찰 : 답변 : 2.169459462491557
생각 : 나는 이제 마지막 답변을 알고 있어.
최종 답변 : Olivia Wilde의 남자 친구인 Harry Styles는 29 세이고, 그의 나이에 0.23 거듭제곱한 값은 2.169459462491557 이야.
> Finished chain.
```
출력은 다음과 같습니다:
```
"Olivia Wilde의 남자 친구인 Harry Styles는 29 세이고, 그의 나이에 0.23 거듭제곱한 값은 2.169459462491557 이야."
```
이 예제는 [LangChain 문서](https://python.langchain.com/docs/modules/agents/agent_types/react)에서 가져온 것이므로 해당 문서에 공로가 있습니다. 우리는 학습자가 다양한 도구와 작업의 조합을 탐색해 볼 것을 권장합니다.
전체 예제는 곧 제공될 예정입니다!
이 코드에 대한 노트북은 여기에서 찾을 수 있습니다: https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/react.ipynb

@ -1,3 +1,43 @@
# Tree of Thoughts (ToT)
This page needs a translation! Feel free to contribute a translation by clicking the `Edit this page` button on the right side.
import { Callout, FileTree } from "nextra-theme-docs";
import { Screenshot } from "components/screenshot";
import TOT from "../../img/TOT.png";
import TOT2 from "../../img/TOT2.png";
import TOT3 from "../../img/TOT3.png";
탐구나 전략적인 예측이 필요한 복잡한 작업들을 해결하기 위해서는 기존의 단순한 프롬프팅 기법으로는 부족합니다. [Yao et el. (2023)](https://arxiv.org/abs/2305.10601)와 [Long (2023)](https://arxiv.org/abs/2305.08291)는 최근 Tree of Thoughts(ToT)의 개념을 제안했는데, 이 프레임워크는 '생각의 사슬(chain-of-thought)' 프롬프팅 기법을 일반화하며, 언어모델을 사용하여 일반적인 문제 해결을 위한 중간 단계 역할을 하는 생각에 대한 탐색을 촉진합니다.
ToT는 문제를 해결하기 위한 중간 단계로서 일관된 언어 시퀀스를 나타내는 Tree of Touhgts를 유지합니다. 이 접근법을 통해 언어모델은 신중한 추론 과정을 거쳐 문제를 해결하기 위한 중간 생각들이 문제를 해결해나가는 과정을 자체적으로 평가할 수 있게 됩니다. 그리고 이 언어모델이 생각을 생성하고 평가하는 능력은 탐색 알고리즘(예: 너비 우선 탐색과 깊이 우선 탐색(DFS))과 결합되어, 선제적 탐색과 백트래킹이 가능한 생각의 체계적인 탐색을 가능하게 합니다.
ToT 프레임워크는 다음과 같습니다:
<Screenshot src={TOT} alt="TOT" />
이미지 출처: [Yao et el. (2023)](https://arxiv.org/abs/2305.10601){" "}
ToT를 사용할 때, 다른 작업들은 후보의 수와 생각/단계의 수를 정의하는 것을 요구합니다. 예를 들어, 논문에서 보여진 바와 같이, 24의 게임은 사고를 3단계로 분해하는 수학적 추론 과제로 사용되었습니다. 각 단계는 중간 방정식을 포함합니다. 각 단계에서, 최선의 b=5 후보들이 유지됩니다.
24의 게임 작업에 대한 ToT의 너비 우선 탐색(BFS)를 수행하기 위해, 언어모델은 각 사고 후보를 24에 도달하는 것에 대해 "확실함/아마도/불가능함"으로 평가하도록 요청합니다. 저자들은 "목표는 몇 번의 선제적 시험 내에서 판결을 내릴 수 있는 올바른 부분적 해결책을 촉진하고, '너무 크거나 작은' 상식에 기반한 불가능한 부분 해결책을 제거하고, 나머지 '아마도'를 유지하는 것"입니다. 각 생각에 대한 값은 3번 샘플링됩니다. 아래에 이 과정이 그림으로 나타나 있습니다:
<Screenshot src={TOT2} alt="TOT2" />
이미지 출처: [Yao et el. (2023)](https://arxiv.org/abs/2305.10601){" "}
아래 그림에서 보고된 결과에서 볼 수 있듯, ToT는 다른 프롬프팅 방법들에 비해 월등히 뛰어납니다:
<Screenshot src={TOT3} alt="TOT3" />
이미지 출처: [Yao et el. (2023)](https://arxiv.org/abs/2305.10601){" "}
[이곳](https://github.com/princeton-nlp/tree-of-thought-llm)과 [이곳](https://github.com/jieyilong/tree-of-thought-puzzle-solver)의 코드를 사용할 수 있습니다.
높은 수준에서 보면, [Yao et el. (2023)](https://arxiv.org/abs/2305.10601)와 [Long (2023)](https://arxiv.org/abs/2305.08291)의 주요 아이디어는 유사합니다. 두 연구 모두 다중 라운드 대화를 통한 트리 검색을 통해 대규모언어모델의 복잡한 문제 해결 능력을 향상시킵니다. 주요 차이점 중 하나는 [Yao et el. (2023)](https://arxiv.org/abs/2305.10601)이 깊이 우선 탐색/너비 우선 탐색/빔 탐색을 활용하는 반면, [Long (2023)](https://arxiv.org/abs/2305.08291)에서 제안하는 트리 검색 전략(즉, 언제 백트래킹을 하고, 몇 단계로 백트래킹을 하는지 등)은 강화 학습을 통해 훈련된 "ToT 컨트롤러"에 의해 주도됩니다. 깊이 우선 탐색/너비 우선 탐색/빔 탐색은 특정 문제에 대한 적응 없이 일반적인 해결책 검색 전략입니다. 반면, RL을 통해 훈련된 ToT 컨트롤러는 새로운 데이터 세트나 자체 플레이를 통해 학습할 수 있을 수 있으며(AlphaGo vs 무차별 검색), 따라서 RL 기반의 ToT 시스템은 고정된 LLM으로도 계속해서 발전하고 새로운 지식을 배울 수 있습니다.
[Hulbert (2023)](https://github.com/dave1010/tree-of-thought-prompting)은 Tree-of-Thought 프롬프팅을 제안했는데, 이는 ToT 프레임워크의 주요 개념을 단순한 프롬프팅 기법으로 적용하여 LLM이 단일 프롬프트에서 중간 생각을 평가하게 합니다. 샘플 ToT 프롬프트는 다음과 같습니다:
```
세 명의 다른 전문가들이 이 질문에 답하고 있다고 상상해보도록 해.
모든 전문가들은 자신의 생각의 한 단계를 적어내고,
그것을 그룹과 공유할거야.
그런 다음 모든 전문가들은 다음 단계로 넘어가. 등등.
만약 어떤 전문가가 어떤 시점에서든 자신이 틀렸다는 것을 깨닫게 되면 그들은 떠나.
그렇다면 질문은...
```

Loading…
Cancel
Save