Merge pull request #27 from 11mLLM/revert-26-main

Revert "Add New Korean translation for Techniques"
pull/244/head
11mLLM 12 months ago committed by GitHub
commit 3b86e6cd45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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

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

@ -1,66 +1,3 @@
# Tree of Thoughts (ToT)
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를 유지합니다.
이 접근법을 통해 언어모델은 신중한 추론 과정을 거쳐 문제를 해결하기 위한 중간 생각들이 문제를
해결해나가는 과정을 자체적으로 평가할 수 있게 됩니다. 그리고 이 언어모델이 생각을 생성하고 평가하는
능력은 탐색 알고리즘(예: 너비 우선 탐색과 깊이 우선 탐색)과 결합되어, 선제적 탐색과 백트래킹이 가능한
생각의 체계적인 탐색을 가능하게 합니다.
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)이
DFS/BFS/Beam 검색을 활용하는 반면, [Long (2023)](https://arxiv.org/abs/2305.08291)에서 제안하는
트리 검색 전략 (즉, 언제 백트래킹을 하고, 몇 단계로 백트래킹을 하는지 등)은 강화 학습을 통해 훈련된
"ToT 컨트롤러"에 의해 주도됩니다. DFS/BFS/Beam 검색은 특정 문제에 대한 적응 없이 일반적인 해결책 검색
전략입니다. 반면, RL을 통해 훈련된 ToT 컨트롤러는 새로운 데이터 세트나 자체 플레이를 통해 학습할 수 있을
수 있습니다 (AlphaGo vs 무차별 검색), 따라서 RL 기반의 ToT 시스템은 고정된 LLM으로도 계속해서 발전하고
새로운 지식을 배울 수 있습니다.
[Hulbert (2023)](https://github.com/dave1010/tree-of-thought-prompting)은 Tree-of-Thought 프롬프팅을
제안했는데, 이는 ToT 프레임워크의 주요 개념을 단순한 프롬프팅 기법으로 적용하여 LLM이 단일 프롬프트에서 중간
생각을 평가하게 합니다. 샘플 ToT 프롬프트는 다음과 같습니다:
```
세 명의 다른 전문가들이 이 질문에 답하고 있다고 상상해보세요.
모든 전문가들은 자신의 생각의 한 단계를 적어내고, 그것을 그룹과 공유합니다.
그런 다음 모든 전문가들은 다음 단계로 넘어갑니다, 등등.
만약 어떤 전문가가 어떤 시점에서든 자신이 틀렸다는 것을 깨닫게 되면 그들은 떠납니다.
그렇다면 질문은...
```
This page needs a translation! Feel free to contribute a translation by clicking the `Edit this page` button on the right side.
Loading…
Cancel
Save