From 9c0dff1727cfab68cce969b7e1b5462f21e76b01 Mon Sep 17 00:00:00 2001 From: Pt J Date: Sun, 23 Jul 2023 13:36:16 +0900 Subject: [PATCH 1/2] Improve some Korean translation of Applications part --- pages/applications.kr.mdx | 4 +- pages/applications/_meta.kr.json | 4 +- pages/applications/generating.kr.mdx | 43 ++++++------ pages/applications/pal.kr.mdx | 66 +++++++++---------- pages/applications/workplace_casestudy.kr.mdx | 54 +++++++-------- 5 files changed, 84 insertions(+), 87 deletions(-) diff --git a/pages/applications.kr.mdx b/pages/applications.kr.mdx index 7c0c29a..60bb975 100644 --- a/pages/applications.kr.mdx +++ b/pages/applications.kr.mdx @@ -2,8 +2,8 @@ import { Callout } from 'nextra-theme-docs' -이 장에서는 프롬프트 엔지니어링을 사용하여 유용하고 고급 작업을 수행할 수 있는 몇 가지 흥미로운 고급 방법을 다룹니다. +이 장에서는 프롬프트 엔지니어링을 사용하여 유용한 고급 작업을 수행할 수 있는 몇 가지 흥미로운 고급 방법을 다룹니다. This section is under heavy development. - \ No newline at end of file + diff --git a/pages/applications/_meta.kr.json b/pages/applications/_meta.kr.json index 234ca6d..890235e 100644 --- a/pages/applications/_meta.kr.json +++ b/pages/applications/_meta.kr.json @@ -1,7 +1,7 @@ { - "pal": "PAL(프로그램 언어 지원 모델)", + "pal": "PAL(프로그램지원언어모델)", "generating": "데이터 생성", "coding": "Generating Code", - "workplace_casestudy": "학위가 필요한 직업을 분류한 사례연구", + "workplace_casestudy": "학위가 필요한 직업을 분류한 사례 연구", "pf": "Prompt Function" } diff --git a/pages/applications/generating.kr.mdx b/pages/applications/generating.kr.mdx index 47ce659..ebf3921 100644 --- a/pages/applications/generating.kr.mdx +++ b/pages/applications/generating.kr.mdx @@ -1,47 +1,44 @@ # 데이터 생성 +일관된 텍스트를 생성하는 것은 LLM이 두각을 나타내는 분야입니다. 효과적인 프롬프트 전략을 사용하면 모델을 조정하여 보다 우수하고 일관적이며 더욱 사실에 입각한 답변을 생성할 수 있습니다. 또한 LLM은 모든 종류의 실험과 평가를 수행하기 위한 유용한 데이터를 생성하는 데 특히 유용합니다. 가령, 다음과 같이 감정 분류기에 대한 빠른 샘플을 생성할 수 있습니다. -일관된 텍스트를 생성하는 것은 LLMs이 두각을 나타내는 분야입니다. 효과적인 프롬프트 전략을 사용하면 모델을 더 낫고, 일관성 있고, 더 사실에 기반한 답변을 생성할 수 있습니다. LLMs는 여러 종류의 실험과 평가를 수행하는 데 큰 도움이 되는 데이터를 생성하는 데 특히 유용합니다. 예를 들어, 다음과 같이 감정 분석을 위한 10가지 예를 생성해보겠습니다: - -_프롬프트:_ - +_Prompt:_ ``` -감정 분석을 위한 10가지 예시를 작성해 줘. 예시는 긍정적 혹은 부정적으로 둘 중 하나로 분류할 수 있어. 부정적인 예시 2개와 긍정적인 예시 8개를 생성해줘. 다음 예시와 같은 형식을 사용해줘: +감정 분석을 위한 10가지 예시를 작성해 줘. 예시는 긍정적 혹은 부정적 둘 중 하나로 분류할 수 있어. 부정적인 예시 2개와 긍정적인 예시 8개를 생성해줘. 다음 예시와 같은 형식을 사용해줘. Q: <문장> A: <감정> ``` -_출력:_ - +_Output:_ ``` Q: 나 방금 굉장한 소식을 들었어! -A: 긍정 +A: 긍정적 -Q: 우리 급여가 올랐네요! -A: 긍정 +Q: 우리 급여가 인상되었어! +A: 긍정적 Q: 나는 오늘 내가 성취한 일에 뿌듯함을 느껴. -A: 긍정 +A: 긍정적 Q: 최고의 하루를 보내고 있어! -A: 긍정 +A: 긍정적 -Q: 이번 주말을 매우 고대하고있어! -A: 긍정 +Q: 이번 주말을 매우 고대하고 있어! +A: 긍정적 Q: 나는 지금 최고의 선물을 받았어! -A: 긍정 +A: 긍정적 Q: 나는 지금 매우 행복해. -A: 긍정 +A: 긍정적 -Q: 이렇게 훌륭한 가족의 일원으로서 축복받았다고 느껴. -A: 긍정 +Q: 이렇게 훌륭한 가족의 일원이라는 건 정말 축복이야. +A: 긍정적 -Q: 바깥 날씨가 굉장히 흐리네요. -A: 부정 +Q: 바깥 날씨가 굉장히 흐려. +A: 부정적 -Q: 방금 끔찍한 소식을 들었어요. -A: 부정 +Q: 방금 끔찍한 소식을 들었어. +A: 부정적 ``` -이는 매우 유용합니다. 실제로 이 가이드의 또 다른 섹션의 테스트에서 이 예시를 사용하고 있을정도로요. +이는 매우 유용합니다. 이 가이드의 다른 섹션의 테스트에서 실제로 이 예시를 사용하고 있을 정도로요. diff --git a/pages/applications/pal.kr.mdx b/pages/applications/pal.kr.mdx index dabc4a3..289f95a 100644 --- a/pages/applications/pal.kr.mdx +++ b/pages/applications/pal.kr.mdx @@ -1,19 +1,19 @@ -# PAL (프로그램 지원 언어 모델) +# PAL (프로그램지원언어모델) import { Callout, FileTree } from "nextra-theme-docs"; import { Screenshot } from "components/screenshot"; import PAL from "../../img/pal.png"; -[Gao et al., (2022)](https://arxiv.org/abs/2211.10435)은 프로그램 지원 언어 모델(PAL)이라고 불리며 솔루션을 얻기 위한 자유 형식 텍스트 대신 Python 인터프리터와 같은 프로그램 실행 시 해결 단계를 오프로드합니다. +[Gao et al., (2022)](https://arxiv.org/abs/2211.10435)는 LLM을 이용하여 자연어 문제를 읽고 중간 추론 단계로서의 프로그램을 생성하는 방법을 제시합니다. 그 방법은 프로그램지원언어모델(program-aided language models; PAL)이라고 이름 붙었으며, 해답을 얻기 위해 자유 형식 텍스트를 사용하는 대신 파이썬 인터프리터와 같은 프로그래밍 방식의 런타임을 통해 단계적으로 해결해 나간다는 점에서 생각의 사슬(chain-of-thought) 프롬프팅과 차이가 있습니다. 이미지 출처: [Gao et al., (2022)](https://arxiv.org/abs/2211.10435) -LangChain과 OpenAI GPT-3을 사용한 예를 살펴보겠습니다. 우리는 Python 인터프리터를 활용하여 질문을 해석하고 답변을 제공할 수 있는 간단한 애플리케이션을 개발해야하는 상황이라고 가정해보겠습니다. +LangChain과 OpenAI GPT-3을 사용한 예시를 살펴보겠습니다. 우리는 파이썬 인터프리터를 활용하여 질문을 해석하고 답변을 제공하는 간단한 애플리케이션을 개발해야 하는 상황이라고 가정해 보겠습니다. -특히, 날짜 이해가 필요한 질문에 LLM을 사용하여 답변할 수 있는 기능을 만드는 것에 초점을 맞추겠습니다. 프롬프트에 제공한 몇 가지 예시는 [여기](https://github.com/reasoning-machines/pal/blob/main/pal/prompt/date_understanding_prompt.py)에서 채택했습니다. +그 중에서도 날짜에 대한 이해가 필요한 질문에 대해서 LLM을 이용하여 답할 수 있는 기능을 만들고자 합니다. LLM에 제공할 프롬프트의 예제 중 일부는 [여기](https://github.com/reasoning-machines/pal/blob/main/pal/prompt/date_understanding_prompt.py)에서 채택했습니다. -다음은 우리가 필요로하는 import 문 입니다: +다음은 우리가 사용하는 import 문입니다. ```python import openai @@ -24,69 +24,69 @@ from langchain.llms import OpenAI from dotenv import load_dotenv ``` -우선 몇 가지 설정을 해보겠습니다: +우선 몇 가지를 구성해 보겠습니다. ```python load_dotenv() -# API 설정 +# API 구성 openai.api_key = os.getenv("OPENAI_API_KEY") -# LangChain 설정 +# LangChain 구성 os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") ``` -모델 인스턴스를 셋업합니다: +모델 인스턴스를 설정합니다. ```python llm = OpenAI(model_name='text-davinci-003', temperature=0) ``` -설정 프롬프트 + 질문: +프롬프트와 질문을 설정합니다. ```python -question = "오늘은 2023년 2월 27일이야. 나는 정확히 25년전에 태어났어. 내가 태어난 날짜를 MM/DD/YYYY 형식으로 반환해줘" +question = "오늘은 2023년 2월 27일이야. 나는 정확히 25년 전에 태어났어. 내가 태어난 날짜를 MM/DD/YYYY 형식으로 알려줘." DATE_UNDERSTANDING_PROMPT = """ -# Q: 36시간이 지나면 2015년이야. 오늘로부터 일주일 뒤는 며칠인지 MM/DD/YYYY 형식으로 반환해줘. +# Q: 2015년까지 36시간 남았어. 오늘로부터 일주일 뒤는 며칠인지 MM/DD/YYYY 형식으로 알려줘. # 2015년이 되기까지 36시간이 남았다면 오늘은 36시간 전이다. today = datetime(2015, 1, 1) - relativedelta(hours=36) -# 오늘부터 일주일 뒤 +# 오늘부터 일주일 뒤는 one_week_from_today = today + relativedelta(weeks=1) -# The answer formatted with %m/%d/%Y is +# 답을 %m/%d/%Y 형식으로 하면 one_week_from_today.strftime('%m/%d/%Y') -# Q: 2019년의 첫 날은 화요일이고 오늘은 2019년의 첫 번째 월요일이야. 오늘 날짜를 MM/DD/YYY로 반환해줘. -# 2019년의 첫 날이 화요일이고 오늘이 2019년 첫 월요일이라면 오늘은 6일 후입니다. +# Q: 2019년의 첫 날은 화요일이고 오늘은 2019년의 첫 월요일이야. 오늘 날짜를 MM/DD/YYYY 형식으로 알려줘. +# 2019년의 첫 날이 화요일이고 오늘이 2019년의 첫 월요일이라면 오늘은 6일 후다. today = datetime(2019, 1, 1) + relativedelta(days=6) -# %m/%d/%Y 형식으로 포맷팅된 답변은 +# 답을 %m/%d/%Y 형식으로 하면 today.strftime('%m/%d/%Y') -# Q: 콘서트는 1943년 6월 1일에 열리기로 예정되어 있었는데, 하루 연기되어 오늘로 변경됐어. 10일 전 날짜를 MM/DD/YYY 형식으로 반환해줘. -# 콘서트가 1943년 6월 1일로 예정되어 있었으나 오늘로 하루 연기되었다면, 오늘은 하루가 지난 것입니다. +# Q: 콘서트는 1943년 6월 1일에 열리기로 예정되어 있었는데, 하루 연기되어 오늘로 변경됐어. 10일 전 날짜를 MM/DD/YYY 형식으로 알려줘. +# 콘서트가 1943년 6월 1일로 예정되어 있었으나 오늘로 하루 연기되었다면, 오늘은 하루가 지난 것이다. today = datetime(1943, 6, 1) + relativedelta(days=1) -# 열흘 전, +# 열흘 전의 날짜는 ten_days_ago = today - relativedelta(days=10) -# %m/%d/%Y의 형식으로 반환된 답은 +# 답을 %m/%d/%Y의 형식으로 하면 ten_days_ago.strftime('%m/%d/%Y') -# Q: 오늘은 1969년 4월 19일이야. 24시간 후의 날짜를 MM/DD/YYYY 형식으로 반환해줘. -# 오늘의 날짜는 4/19/1969 입니다. +# Q: 오늘은 1969년 4월 19일이야. 24시간 후의 날짜를 MM/DD/YYYY 형식으로 알려줘. +# 오늘의 날짜는 1969년 4월 19일이다. today = datetime(1969, 4, 19) -# 24시간 후, +# 24시간 후의 날짜는 later = today + relativedelta(hours=24) -# %m/%d/%Y의 형식으로 반환된 답은 +# 답을 %m/%d/%Y의 형식으로 하면 today.strftime('%m/%d/%Y') -# Q: Jane은 오늘이 2002년 3월 11일이라고 생각했지만 실제로는 3월 12일이고 하루 뒤야. 24시간 후의 날짜를 MM/DD/YYYY 형식으로 반환해줘. -# 제인은 오늘 날짜를 3/11/2002 라고 생각했고, 사실 오늘은 3월 12일이면 오늘 날짜는 3/1/2002 입니다. +# Q: 영희는 오늘이 2002년 3월 11일이라고 생각했지만 실제로는 다음날인 3월 12일이야. 24시간 후의 날짜를 MM/DD/YYYY 형식으로 알려줘. +# 영희는 오늘 날짜를 2002년 3월 11일이라고 생각했고, 사실 오늘은 3월 12일이면 오늘 날짜는 2002년 3월 12일이다. today = datetime(2002, 3, 12) -# 24시간 후, +# 24시간 후의 날짜는 later = today + relativedelta(hours=24) -# %m/%d/%Y의 형식으로 반환된 답은 +# 답을 %m/%d/%Y의 형식으로 하면 later.strftime('%m/%d/%Y') -# Q: Jane은 2001년 2월 마지막 날 태어났어. 오늘은 Jane의 16번째 생일이야. 어제의 날짜를 MM/DD/YYYY 형식으로 반환해줘. -# Jane이 2001년 2월의 마지막 날에 태어났다면 오늘은 16년 후입니다. +# Q: 영희는 2001년 2월 마지막 날 태어났어. 오늘은 영희의 16번째 생일이야. 어제의 날짜를 MM/DD/YYYY 형식으로 알려줘. +# 영희가 2001년 2월의 마지막 날에 태어났고 오늘이 영희의 16번째 생일이라면 오늘은 16년 후다. today = datetime(2001, 2, 28) + relativedelta(years=16) -# 어제, +# 어제 날짜는 yesterday = today - relativedelta(days=1) -# %m/%d/%Y의 형식으로 반환된 답은 +# 답을 %m/%d/%Y의 형식으로 하면 yesterday.strftime('%m/%d/%Y') # Q: {question} """.strip() + '\n' diff --git a/pages/applications/workplace_casestudy.kr.mdx b/pages/applications/workplace_casestudy.kr.mdx index 2db6511..f901b69 100644 --- a/pages/applications/workplace_casestudy.kr.mdx +++ b/pages/applications/workplace_casestudy.kr.mdx @@ -1,41 +1,42 @@ -# 학위가 필요한 직업을 분류한 사례연구 +# 학위가 필요한 직업을 분류한 사례 연구 -[Clavié et al., 2023](https://arxiv.org/abs/2303.07142)는 프롬프트 엔지니어링을 적용한 미디엄 스케일의 텍스트 분류 유스케이스 사례연구를 발표했습니다. 분류 작업을 통해서 특정 직업이 대학을 갓 졸업한 사람에게 꼭 맞는 "신입 레벨" 인지, 여러 프롬프트 엔지니어링 테크닉을 사용하여 평가한 뒤 GPT-3.5 (`gpt-3.5-turbo`)를 사용하여 결과를 공유했습니다. +[Clavié et al., 2023](https://arxiv.org/abs/2303.07142)는 생산 시스템에 중간 규모 텍스트 분류 사용 사례를 적용한 프롬프트 엔지니어링에 대한 사례 연구를 발표했습니다. 직업이 정말 대학을 갓 졸업한 사람에게 적합한 "입문 수준의 직업"인지 아닌지 분류하는 작업을 하여 일련의 프롬프트 엔지니어링 기술을 평가하고 GPT-3.5 (`gpt-3.5-turbo`)를 이용하여 결과를 보고했습니다. -이 연구는 강력한 베이스라인인 DeBERTa-V3를 포함한 여러 다른 모델들을 LLM이 가뿐히 능가했음을 증명합니다. 또한 `gpt-3.5-turbo`가 구 버전의 GPT3 variants의 모든 키 메트릭에서 두각을 나타냈음을 보여주었습니다만, 템플릿에 한정하여 추가 출력 파싱을 필요로 할 만큼 다른 variants보다는 조금 떨어진 성능을 확인할 수 있었습니다. +이 연구는 LLM이 DeBERTa-V3의 매우 강력한 기준선을 포함한 다른 모든 테스트된 모델들을 능가했음을 보여줍니다. `gpt-3.5-turbo` 또한 모든 주요 메트릭에서 구 버전의 GPT3 변종보다 눈에 띄게 뛰어난 성능을 보이지만, 템플릿에 대한 적용성이 다른 변종들에 비해 부족하여 추가적인 출력 파싱이 필요합니다. -프롬프트 엔지니어링 접근법에서 얻은 주요 결과는 다음과 같습니다: +이 연구의 프롬프트 엔지니어링 접근법에서 얻은 주요 결과는 다음과 같습니다. -- 전문가의 지식이 필요하지 않은 이러한 단순 작업의 경우, 모든 실험에서 Few-shot CoT 프롬프팅이 Zero-shot 프롬프팅에 비해 상대적으로 낮은 퍼포먼스를 보여주었습니다. -- 프롬프트는 올바른 추론 도출에 엄청난 영향을 미칩니다. 모델에게 직업을 분류하라고 간단하게 명령했을 때에는 65.6의 F1 점수를 얻었으나, 포스트-프롬프트 엔지니어링 모델은 91.7의 F1 점수를 보여주었습니다. -- 모델을 템플릿에 강제로 적용하려 한 모든 경우에 성능이 저하되었습니다. (이 방법은 논문 뒤 쪽의 GPT-4를 사용한 초기 테스트에서 사라졌습니다.) -- 아주 작은 수정사항이 성능에 엄청난 영향을 미쳤습니다. - - 아래 표에서 모든 수정사항에 따른 결과를 확인하세요. - - 적절한 지시를 내리고, 키 포인트를 반복하는 것이 가장 큰 성능 동력으로 나타났습니다. - - 모델에게 (사람)이름을 지어주고 불러주는 것은 F1 점수를 증가시켰습니다. +- 전문가의 지식이 필요하지 않은 이러한 단순 작업의 경우, 모든 실험에서 퓨샷 생각의 사슬 프롬프팅(Few-shot CoT prompting)이 제로샷 프롬프팅(Zero-shot prompting)에 비해 상대적으로 낮은 성능을 보여주었습니다. +- 프롬프트는 올바른 추론 도출에 엄청난 영향을 미칩니다. 모델에게 직업을 분류하라고 단순히 명령했을 때에는 65.6의 F1 점수를 얻었으나, 프롬프트 엔지니어링 된 모델은 91.7의 F1 점수를 보여주었습니다. +- 모델을 템플릿에 강제로 적용하려 한 모든 경우에 성능이 저하되었습니다(이 현상은 논문 후반의 GPT-4를 사용한 초기 테스트에서 사라졌습니다). +- 여러 작은 수정사항이 성능에 엄청난 영향을 미쳤습니다. + - 아래 표에서 테스트 된 모든 수정 사항을 확인할 수 있습니다. + - 적절한 지시를 내리고 요점을 반복하는 것이 가장 큰 성능 동력으로 나타났습니다. + - 단순히 모델에게 (사람) 이름을 지어주는 것으로 F1 점수가 0.6 상승했습니다. -### 실험에 쓰인 프롬프트 수정사항들 +### 테스트 된 프롬프트 수정 사항들 | 약어 | 설명 | | -------- | --------------------------------------------------------------------------------- | -| Baseline | 채용 공고를 제공하고 갓 졸업한 신입에게 적합한지 묻습니다. | -| CoT | 쿼리를 날리기 전에 몇 가지 정확한 예시를 제공합니다. | -| Zero-CoT | 모델에게 단계별로 추론한 뒤 정답을 제시하도록 요구합니다. | -| rawinst | 역할 및 작업에 대한 지침을 사용자 메시지에 추가하여 제공합니다. | -| sysinst | 시스템 메시지로서의 역할과 작업에 대한 지침을 제공합니다. | -| bothinst | 시스템 메시지로서의 역할과 사용자 메시지로서의 작업을 사용하여 명령을 분할합니다. | -| mock | 토론 내용을 인식하는 부분을 따라하여 작업 지시를 내립니다. | -| reit | 주요 요소를 반복하여 지시를 보강합니다. | +| Baseline | 채용 공고를 제공하고 갓 졸업한 사람에게 적합한지 묻습니다. | +| CoT | 질의를 하기 전에 정확히 분류된 몇 가지 예시를 제공합니다. | +| Zero-CoT | 모델에게 단계별로 추론하여 정답을 제시하도록 요구합니다. | +| rawinst | 역할 및 작업에 대한 지시를 사용자 메시지에 추가함으로써 제공합니다. | +| sysinst | 역할 및 작업에 대한 지시를 시스템 메시지로서 제공합니다. | +| bothinst | 시스템 메시지로서의 역할과 사용자 메시지로서의 작업으로 명령을 분할합니다. | +| mock | 그들을 인정하는 의사 토론을 통해 작업 지시를 제공합니니다. | +| reit | 요점을 반복하여 지시를 강화합니다. | | strict | 모델에게 주어진 템플릿을 엄격히 준수하여 답변하도록 요청합니다. | -| loose | 주어진 템플릿 뒤에 최종 답변만 반환하도록 요청합니다. | +| loose | 최종 답변만 주어진 탬플릿을 준수하여 반환하도록 요청합니다. | | right | 모델에게 올바른 결론에 도달하도록 요청합니다. | | info | 일반적인 추론 실패를 해결하기 위한 추가 정보를 제공합니다. | -| name | 모델에게 이름을 지어주고 대화 시 사용합니다. | -| pos | 쿼리를 날리기 전 모델에게 긍정적인 피드백을 제공합니다. | +| name | 모델에게 대화에서 부를 이름을 제공합니다. | +| pos | 질의를 하기 전 모델에게 긍정적인 피드백을 제공합니다. | -### 위의 프롬프트 수정사항이 성능에 미치는 영향 -| | 정확도 | 리콜 | F1 | 템플릿 고착도 | +### 프롬프트 수정 사항이 성능에 미치는 영향 + +| | 정확도 | 재현율 | F1 | 템플릿 고착도 | | --------------------------------------- | -------- | ------ | -------- | ------------- | | _Baseline_ | _61.2_ | _70.6_ | _65.6_ | _79%_ | | _CoT_ | _72.6_ | _85.1_ | _78.4_ | _87%_ | @@ -52,5 +53,4 @@ | +bothinst+mock+reit+right+info+name | 85.7 | 96.8 | 90.9 | 79% | | +bothinst+mock+reit+right+info+name+pos | **86.9** | **97** | **91.7** | 81% | -템플릿 고착도란 요구한 형식으로 모델이 응답한 빈도를 나타냅니다. -Template stickiness refers to how frequently the model answers in the desired format. +템플릿 고착도란 모델이 요구받은 형식으로 응답한 빈도를 나타냅니다. From b190d2f673b824017e5da366b19df73360b008a9 Mon Sep 17 00:00:00 2001 From: Pt J Date: Tue, 25 Jul 2023 22:17:23 +0900 Subject: [PATCH 2/2] Translate the development message --- pages/applications.kr.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/applications.kr.mdx b/pages/applications.kr.mdx index 60bb975..8cb6076 100644 --- a/pages/applications.kr.mdx +++ b/pages/applications.kr.mdx @@ -5,5 +5,5 @@ import { Callout } from 'nextra-theme-docs' 이 장에서는 프롬프트 엔지니어링을 사용하여 유용한 고급 작업을 수행할 수 있는 몇 가지 흥미로운 고급 방법을 다룹니다. - This section is under heavy development. + 해당 페이지는 개발 중에 있습니다.