Merge pull request #8 from won81/01_Tech

Translate dsp, graph, multimodalcot, react files
This commit is contained in:
11mLLM 2023-07-28 13:13:55 +09:00 committed by GitHub
commit 4def8957ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 172 additions and 9 deletions

View File

@ -4,11 +4,11 @@ import { Callout, FileTree } from 'nextra-theme-docs'
import {Screenshot} from 'components/screenshot' import {Screenshot} from 'components/screenshot'
import DSP from '../../img/dsp.jpeg' 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 프롬프팅이 표준 프롬프팅과 어떻게 비교되는지 보여줍니다. 정책 LM은 블랙박스 frozen LLM을 안내하는 힌트를 생성하기 위해 작게 최적화될 수 있습니다.
<Screenshot src={DSP} alt="DSP" /> <Screenshot src={DSP} alt="DSP" />
Image Source: [Li et al., (2023)](https://arxiv.org/abs/2302.11520) Image Source: [Li et al., (2023)](https://arxiv.org/abs/2302.11520)

View File

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

View File

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

View File

@ -1,14 +1,177 @@
# ReAct # ReAct Prompting
import { Callout, FileTree } from 'nextra-theme-docs' import { Callout, FileTree } from 'nextra-theme-docs'
import {Screenshot} from 'components/screenshot' import {Screenshot} from 'components/screenshot'
import REACT from '../../img/react.png' 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)에서는 대규모언어모델을 사용하여 추론 추적과 작업별 작업을 인터리브 방식으로 생성하는 ReAct라는 프레임워크를 소개했습니다.
ReAct 프레임워크를 사용하면 LLMs이 외부 도구와 상호 작용하여 보다 신뢰할 수 있고 사실적인 대응으로 이어지는 추가 정보를 검색할 수 있습니다. 추론 추적을 생성하면 모델이 실행 계획을 유도, 추적, 업데이트하고 예외를 처리할 수 있습니다. 작업 단계\(action step\)에서는 지식 기반이나 환경과 같은 외부 소스와 상호 작요하고 정보를 수집할 수 있습니다.
ReAct 프레임워크를 사용하면 대규모언어모델이 외부 도구와 상호 작용하여 보다 신뢰할 수 있고 사실적인 대응으로 이어지는 추가 정보를 검색할 수 있습니다.
연구 결과에 따르면 ReAct는 언어 및 의사 결정 작업에서 여러 최신 기술의 기준선을의능가할 수 있는 것으로 나타났습니다. 또한 ReAct는 인간의 해석 가능성과 LLMs의 신뢰성을 향상시킵니다. 전반적으로 저자들은 추론 과정에서 얻은 내부 지식과 외부 정보를 모두 사용할 수 있는 생각의 연쇄(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" /> <Screenshot src={REACT} alt="REACT" />
Image Source: [Yao et al., 2022](https://arxiv.org/abs/2210.03629) Image Source: [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 프롬프트 모범 예시입니다(논문에서 가지고 온 것으로, 간결하게 하기 위해 하나의 예로 줄였습니다).
```
Question What is the elevation range for the area that the eastern sector of the
Colorado orogeny extends into?
Thought 1 I need to search Colorado orogeny, find the area that the eastern sector
of the Colorado orogeny extends into, then find the elevation range of the
area.
Action 1 Search[Colorado orogeny]
Observation 1 The Colorado orogeny was an episode of mountain building (an orogeny) in
Colorado and surrounding areas.
Thought 2 It does not mention the eastern sector. So I need to look up eastern
sector.
Action 2 Lookup[eastern sector]
Observation 2 (Result 1 / 1) The eastern sector extends into the High Plains and is called
the Central Plains orogeny.
Thought 3 The eastern sector of Colorado orogeny extends into the High Plains. So I
need to search High Plains and find its elevation range.
Action 3 Search[High Plains]
Observation 3 High Plains refers to one of two distinct land regions
Thought 4 I need to instead search High Plains (United States).
Action 4 Search[High Plains (United States)]
Observation 4 The High Plains are a subregion of the Great Plains. From east to west, the
High Plains rise in elevation from around 1,800 to 7,000 ft (550 to 2,130
m).[3]
Thought 5 High Plains rise in elevation from around 1,800 to 7,000 ft, so the answer
is 1,800 to 7,000 ft.
Action 5 Finish[1,800 to 7,000 ft]
...
```
다른 형태의 작업을 위해서는 다른 프롬프트가 사용되는 것에 유의하세요. 추론이 가장 중요한 작업(예: HotpotQA)의 경우, 작업 해결 궤적에 여러 생각-행동-관찰 단계가 사용됩니다. 많은 행동 단계가 포함되는 의사 결정의 경우, 생각은 드물게 사용됩니다.
## Results on Knowledge-Intensive Tasks
이 논문에서는 먼저 질문 답변(HotPotQA) 그리고 사실 확인([Fever](https://fever.ai/resources.html))과 같은 지식 집약적 추론 작업에 대해 ReAct를 평가합니다. PaLM-540B를 프롬프팅을 위한 기본 모델로 사용하였습니다.
<Screenshot src={REACT1} alt="REACT1" />
Image Source: [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" />
Image Source: [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("Who is Olivia Wilde's boyfriend? What is his current age raised to the 0.23 power?")
```
체인 실행은 다음과 같습니다:
``` yaml
> Entering new AgentExecutor chain...
I need to find out who Olivia Wilde's boyfriend is and then calculate his age raised to the 0.23 power.
Action: Search
Action Input: "Olivia Wilde boyfriend"
Observation: Olivia Wilde started dating Harry Styles after ending her years-long engagement to Jason Sudeikis — see their relationship timeline.
Thought: I need to find out Harry Styles' age.
Action: Search
Action Input: "Harry Styles age"
Observation: 29 years
Thought: I need to calculate 29 raised to the 0.23 power.
Action: Calculator
Action Input: 29^0.23
Observation: Answer: 2.169459462491557
Thought: I now know the final answer.
Final Answer: Harry Styles, Olivia Wilde's boyfriend, is 29 years old and his age raised to the 0.23 power is 2.169459462491557.
> Finished chain.
```
출력은 다음과 같습니다:
```
"Harry Styles, Olivia Wilde's boyfriend, is 29 years old and his age raised to the 0.23 power is 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