반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

오늘은 Openai Cookbook 에 있는 Fine Tuning 관련 글을 공부해 보겠습니다.

 

https://docs.google.com/document/d/1rqj7dkuvl7Byd5KQPUJRxc19BJt8wo0yHNwK84KfU3Q/edit

 

[PUBLIC] Best practices for fine-tuning GPT-3 to classify text

This document is a draft of a guide that will be added to the next revision of the OpenAI documentation. If you have any feedback, feel free to let us know. One note: this doc shares metrics for text-davinci-002, but that model is not yet available for fin

docs.google.com

 

This document is a draft of a guide that will be added to the next revision of the OpenAI documentation. If you have any feedback, feel free to let us know.

 

이 문서는 OpenAI 문서의 다음 개정판에 추가될 가이드의 초안입니다. 의견이 있으시면 언제든지 알려주십시오.

 

One note: this doc shares metrics for text-davinci-002, but that model is not yet available for fine-tuning.

참고: 이 문서는 text-davinci-002에 대한 메트릭을 공유하지만 해당 모델은 아직 미세 조정에 사용할 수 없습니다.

 

Best practices for fine-tuning GPT-3 to classify text

GPT-3’s understanding of language makes it excellent at text classification. Typically, the best way to classify text with GPT-3 is to fine-tune GPT-3 on training examples. Fine-tuned GPT-3 models can meet and exceed state-of-the-art records on text classification benchmarks.

 

GPT-3의 언어 이해력은 텍스트 분류에 탁월합니다. 일반적으로 GPT-3으로 텍스트를 분류하는 가장 좋은 방법은 training examples 로 GPT-3을 fine-tune하는 것입니다. Fine-tuned GPT-3 모델은 텍스트 분류 벤치마크에서 최신 기록을 충족하거나 능가할 수 있습니다.

 

This article shares best practices for fine-tuning GPT-3 to classify text.

 

이 문서에서는 GPT-3을 fine-tuning 하여 텍스트를 분류하는 모범 사례를 공유합니다.

 

Other resources:

Outline:

Best practices for fine-tuning GPT-3 to classify text

Other resources:

Outline:

How fine-tuning GPT-3 works

Training data

How to format your training data

Separator sequences

How to pick labels

How much training data do you need

How to evaluate your fine-tuned model

Example fine-tuning calls using the OpenAI CLI

The following metrics will be displayed in your results file if you set --compute_classification_metrics:

For multiclass classification

For binary classification

Example outputs

Example metrics evolution over a training run, visualized with Weights & Biases

How to pick the right model

How to pick training hyperparameters

More detail on prompt_loss_weight

Example hyperparameter sweeps

n_epochs

learning_rate_multiplier

prompt_loss_weight

How to pick inference parameters

Advanced techniques

Add reasoning steps

Fine-tune a fine-tuned model

Common mistakes

Common mistake #1: Insufficiently specified training data

Common mistake #2: Input data format that doesn’t match the training data format

More examples

 

 

How fine-tuning GPT-3 works

 

The OpenAI fine-tuning guide explains how to fine-tune your own custom version of GPT-3. You provide a list of training examples (each split into prompt and completion) and the model learns from those examples to predict the completion to a given prompt.

 

OpenAI fine-tuning guide는 사용자 지정 GPT-3 버전을 fine-tune하는 방법을 설명합니다. 교육 예제 목록(각각 prompt completion로 분할)을 제공하면 모델이 해당 예제에서 학습하여 주어진 prompt에 대한 completion 를 예측합니다.

 

Example dataset:

 

Prompt Completion
“burger -->” “ edible”
“paper towels -->” “ inedible”
“vino -->” “ edible”
“bananas -->” “ edible”
“dog toy -->” “ inedible”

In JSONL format:

{"prompt": "burger -->", "completion": " edible"}

{"prompt": "paper towels -->", "completion": " inedible"}

{"prompt": "vino -->", "completion": " edible"}

{"prompt": "bananas -->", "completion": " edible"}

{"prompt": "dog toy -->", "completion": " inedible"}

 

During fine-tuning, the model reads the training examples and after each token of text, it predicts the next token. This predicted next token is compared with the actual next token, and the model’s internal weights are updated to make it more likely to predict correctly in the future. As training continues, the model learns to produce the patterns demonstrated in your training examples.

 

fine-tuning 중에 모델은 교육 예제를 읽고 텍스트의 각 토큰을 받아들여 그 다음 토큰이 무엇이 올 지 예측을 하게 됩니다.  이 예측된 다음 토큰은 실제 다음 토큰과 비교되고 모델의 내부 가중치가 업데이트되어 향후에 올바르게 예측할 가능성이 높아집니다. 학습이 계속됨에 따라 모델은 학습 예제에 표시된 패턴을 생성하는 방법을 배웁니다.

 

After your custom model is fine-tuned, you can call it via the API to classify new examples:

 

사용자 지정 모델이 fine-tuned된 후 API를 통해 호출하여 새 예제를 분류할 수 있습니다.

 

Prompt Completion
“toothpaste -->” ???

Example API call to get the most likely token

가장 유사한 토큰을 얻는 API call 예제

api_response = openai.Completion.create(
    model="{fine-tuned model goes here, without brackets}",
    prompt="toothpaste -->",
    temperature=0,
    max_tokens=1
)
completion_text = api_response['choices'][0]['text']
if completion_text == ' edible':
    label = 'edible'
elif completion_text == ' in':
    label = 'inedible'
else:
    label = 'other'

As ‘ edible’ is 1 token and ‘ inedible’ is 3 tokens, in this example, we request just one completion token and count ‘ in’ as a match for ‘ inedible’.

 

'edible'은 토큰 1개이고 'inedible'은 토큰 3개이므로 이 예에서는 완료 토큰 하나만 요청하고 'inedible'에 대한 일치 항목으로 'in'을 계산합니다.

 

Example API call to get probabilities for the 5 most likely tokens

 가장 유사한 토큰 5개에 대한 probabilities를 얻기 위한 API call 예제

api_response = openai.Completion.create(
    model="{fine-tuned model goes here, without brackets}",
    prompt="toothpaste -->",
    temperature=0,
    max_tokens=1,
    logprobs=5
)
dict_of_logprobs = api_response['choices'][0]['logprobs']['top_logprobs'][0].to_dict()
dict_of_probs = {k: 2.718**v for k, v in dict_of_logprobs.items()}

 

Training data

 

The most important determinant of success is training data.

Fine-tuning 성공의 가장 중요한 결정 요인은 학습 데이터입니다.

 

Your training data should be:

학습 데이터는 다음과 같아야 합니다.

  • Large (ideally thousands or tens of thousands of examples)
  • 대규모(이상적으로는 수천 또는 수만 개의 예)
  • High-quality (consistently formatted and cleaned of incomplete or incorrect examples)
  • 고품질(불완전하거나 잘못된 예를 일관되게 형식화하고 정리)
  • Representative (training data should be similar to the data upon which you’ll use your model)
  • 대표(학습 데이터는 모델을 사용할 데이터와 유사해야 함)
  • Sufficiently specified (i.e., containing enough information in the input to generate what you want to see in the output)
  • 충분히 특정화 되어야 함 (즉, 출력에서 보고 싶은 것을 생성하기 위해 입력에 충분한 정보 포함)

 

If you aren’t getting good results, the first place to look is your training data. Try following the tips below about data formatting, label selection, and quantity of training data needed. Also review our list of common mistakes.

 

좋은 결과를 얻지 못한 경우 가장 먼저 살펴봐야 할 곳은 훈련 데이터입니다. 데이터 형식, 레이블 선택 및 필요한 학습 데이터 양에 대한 아래 팁을 따르십시오. common mistakes 목록도 검토하십시오.

 

How to format your training data

 

Prompts for a fine-tuned model do not typically need instructions or examples, as the model can learn the task from the training examples. Including instructions shouldn’t hurt performance, but the extra text tokens will add cost to each API call.

 

모델이 교육 예제에서 작업을 학습할 수 있으므로 fine-tuned 모델에 대한 프롬프트에는 일반적으로 지침(instruction)이나 예제가 필요하지 않습니다. 지침(instruction)을 포함해도 성능이 저하되지는 않지만 추가 텍스트 토큰으로 인해 각 API 호출에 비용이 추가됩니다.

 

Prompt Tokens Recommended
“burger -->"
“Label the following item as either edible or inedible.

Item: burger
Label:”
20 
“Item: cake
Category: edible

Item: pan
Category: inedible

Item: burger
Category:”
26 

 

Instructions can still be useful when fine-tuning a single model to do multiple tasks. For example, if you train a model to classify multiple features from the same text string (e.g., whether an item is edible or whether it’s handheld), you’ll need some type of instruction to tell the model which feature you want labeled.

 

지침(instruction)은 여러 작업을 수행하기 위해 단일 모델을 fine-tuning할 때 여전히 유용할 수 있습니다. 예를 들어, 동일한 텍스트 문자열에서 여러 기능을 분류하도록 모델을 훈련하는 경우(예: 항목이 먹을 수 있는지 또는 휴대 가능한지 여부) 라벨을 지정하려는 기능을 모델에 알려주는 일종의 지침이 필요합니다.

 

Example training data:

Prompt Completion
“burger --> edible:” “ yes”
“burger --> handheld:” “ yes”
“car --> edible:” “ no”
“car --> handheld:” “ no”

 

Example prompt for unseen example:

Prompt Completion
“cheese --> edible:” ???

 

Note that for most models, the prompt + completion for each example must be less than 2048 tokens (roughly two pages of text). For text-davinci-002, the limit is 4000 tokens (roughly four pages of text).

 

대부분의 모델에서 각 예제에 대한 prompt + completion은 2048 토큰(약 2페이지의 텍스트) 미만이어야 합니다. text-davinci-002의 경우 한도는 4000개 토큰(약 4페이지의 텍스트)입니다.

Separator sequences

For classification, end your text prompts with a text sequence to tell the model that the input text is done and the classification should begin. Without such a signal, the model may append additional invented text before appending a class label, resulting in outputs like:

 

분류를 위해 입력 텍스트가 완료되고 분류가 시작되어야 함을 모델에 알리는 텍스트 시퀀스로 텍스트 프롬프트를 종료합니다. 이러한 신호가 없으면 모델은 클래스 레이블을 appending 하기 전에 추가  invented text append 하여 다음과 같은 결과를 얻을 수 있습니다.

 

  • burger edible (accurate)
  • burger and fries edible (not quite was asked for)
  • burger-patterned novelty tie inedible (inaccurate)
  • burger burger burger burger (no label generated)

Examples of separator sequences

Prompt Recommended
“burger”
“burger -->”
“burger

###

“burger >>>”
“burger

Label:”

 

Be sure that the sequence you choose is very unlikely to otherwise appear in your text (e.g., avoid ‘###’ or ‘->’ when classifying Python code). Otherwise, your choice of sequence usually doesn’t matter much.

 

선택한 sequence 가 텍스트에 다른 방법으로 사용되는 부호인지 확인하세요. (예: Python 코드를 분류할 때 '###' 또는 '->'를 피하십시오). 그러한 경우가 아니라면 시퀀스 선택은 일반적으로 그다지 중요하지 않습니다.

 

How to pick labels

One common question is what to use as class labels.

일반적인 질문 중 하나는 클래스 레이블로 무엇을 사용할 것인가입니다.

 

In general, fine-tuning can work with any label, whether the label has semantic meaning (e.g., “ edible”) or not (e.g., “1”). That said, in cases with little training data per label, it’s possible that semantic labels work better, so that the model can leverage its knowledge of the label’s meaning.

 

일반적으로 fine-tuning은 레이블에 semantic  의미(예: "식용")가 있든 없든(예: "1") 모든 레이블에서 작동할 수 있습니다. 즉, 레이블당 학습 데이터가 적은 경우 시맨틱 레이블이 더 잘 작동하여 모델이 레이블의 의미에 대한 지식을 활용할 수 있습니다.

 

When convenient, we recommend single-token labels. You can check the number of tokens in a string with the OpenAI tokenizer. Single-token labels have a few advantages:

 

가능하면 단일 토큰 레이블을 사용하는 것이 좋습니다. OpenAI 토크나이저를 사용하여 문자열의 토큰 수를 확인할 수 있습니다. 단일 토큰 레이블에는 다음과 같은 몇 가지 장점이 있습니다.

  • Lowest cost . 적은 비용
  • Easier to get their probabilities, which are useful for metrics confidence scores, precision, recall
  • 메트릭 신뢰도 점수, 정밀도, recall에 유용한 확률을 쉽게 얻을 수 있습니다.
  • No hassle from specifying stop sequences or post-processing completions in order to compare labels of different length
  • 다른 길이의 레이블을 비교하기 위해 중지 시퀀스 또는 후처리 완료를 지정하는 번거로움이 없습니다.

Example labels

Prompt Label Recommended
“burger -->” “ edible”
“burger -->” “ 1”
“burger -->” “ yes”
“burger -->” “ A burger can be eaten” (but still works)

 

One useful fact: all numbers <500 are single tokens. 500 이하는 single token입니다.

 

If you do use multi-token labels, we recommend that each label begin with a different token. If multiple labels begin with the same token, an unsure model might end up biased toward those labels due to greedy sampling.

 

multi-token label을 사용하는 경우 각 레이블이 서로 다른 토큰으로 시작하는 것이 좋습니다. 여러 레이블이 동일한 토큰으로 시작하는 경우 greedy  샘플링으로 인해 불확실한 모델이 해당 레이블로 편향될 수 있습니다.

 

How much training data do you need

How much data you need depends on the task and desired performance.

 

필요한 데이터의 양은 작업과 원하는 성능에 따라 다릅니다.


Below is an illustrative example of how adding training examples improves classification accuracy.

 

아래는 학습 예제를 추가하여 분류 정확도를 향상시키는 방법을 보여주는 예시입니다.

 

Illustrative examples of text classification performance on the Stanford Natural Language Inference (SNLI) Corpus, in which ordered pairs of sentences are classified by their logical relationship: either contradicted, entailed (implied), or neutral. Default fine-tuning parameters were used when not otherwise specified.

 

SNLI(Stanford Natural Language Inference) 코퍼스의 텍스트 분류 성능에 대한 예시로, 정렬된 문장 쌍이 논리적 관계(모순됨, 함축됨(암시됨) 또는 중립)에 따라 분류됩니다. 달리 지정되지 않은 경우 기본 fine-tuning 매개변수가 사용되었습니다.

 

Very roughly, we typically see that a few thousand examples are needed to get good performance:

 

아주 대략적으로 말해서 좋은 성능을 얻으려면 일반적으로 수천 개의 예제가 필요하다는 것을 알 수 있습니다.

 

Examples per label Performance (rough estimate)
Hundreds Decent
Thousands Good
Tens of thousands or more Great

 

To assess the value of getting more data, you can train models on subsets of your current dataset—e.g., 25%, 50%, 100%—and then see how performance scales with dataset size. If you plot accuracy versus number of training examples, the slope at 100% will indicate the improvement you can expect from getting more data. (Note that you cannot infer the value of additional data from the evolution of accuracy during a single training run, as a model half-trained on twice the data is not equivalent to a fully trained model.) 

 

더 많은 데이터를 얻는 가치를 평가하기 위해 현재 데이터 세트의 하위 집합(예: 25%, 50%, 100%)에서 모델을 교육한 다음 데이터 세트 크기에 따라 성능이 어떻게 확장되는지 확인할 수 있습니다. 정확도 대 교육 예제 수를 플로팅하는 경우 100%의 기울기는 더 많은 데이터를 얻을 때 기대할 수 있는 개선을 나타냅니다. (두 배의 데이터로 절반만 훈련된 모델은 완전히 훈련된 모델과 동일하지 않기 때문에 단일 훈련 실행 동안 정확도의 진화에서 추가 데이터의 가치를 추론할 수 없습니다.)

 

How to evaluate your fine-tuned model

Evaluating your fine-tuned model is crucial to (a) improve your model and (b) tell when it’s good enough to be deployed.

 

fine-tuned 모델을 평가하는 것은 (a) 모델을 개선하고 (b) 언제 배포하기에 충분한 지를 알려주는 데 중요합니다.

 

Many metrics can be used to characterize the performance of a classifier

 

많은 메트릭을 사용하여 분류기의 성능을 특성화할 수 있습니다.

 

  • Accuracy
  • F1
  • Precision / Positive Predicted Value / False Discovery Rate
  • Recall / Sensitivity
  • Specificity
  • AUC / AUROC (area under the receiver operator characteristic curve)
  • AUPRC (area under the precision recall curve)
  • Cross entropy

Which metric to use depends on your specific application and how you weigh different types of mistakes. For example, if detecting something rare but consequential, where a false negative is costlier than a false positive, you might care about recall more than accuracy.

 

사용할 메트릭은 특정 응용 프로그램과 다양한 유형의 실수에 가중치를 두는 방법에 따라 다릅니다. 예를 들어 거짓 음성이 거짓 긍정보다 비용이 많이 드는 드물지만 결과적인 것을 감지하는 경우 정확도보다 리콜에 더 관심을 가질 수 있습니다.

 

The OpenAI API offers the option to calculate some of these classification metrics. If enabled, these metrics will be periodically calculated during fine-tuning as well as for your final model. You will see them as additional columns in your results file

 

OpenAI API는 이러한 분류 메트릭 중 일부를 계산하는 옵션을 제공합니다. 활성화된 경우 이러한 지표는 최종 모델뿐만 아니라 미세 조정 중에 주기적으로 계산됩니다. 결과 파일에 추가 열로 표시됩니다.

 

To enable classification metrics, you’ll need to:

분류 지표를 활성화하려면 다음을 수행해야 합니다.:

  • use single-token class labels
  • 단일 토큰 클래스 레이블 사용
  • provide a validation file (same format as the training file)
  • 유효성 검사 파일 제공(교육 파일과 동일한 형식)
  • set the flag --compute_classification_metrics
  • compute_classification_metrics 플래그 설정
  • for multiclass classification: set the argument --classification_n_classes
  • 다중 클래스 분류: --classification_n_classes 인수 설정
  • for binary classification: set the argument --classification_positive_class
  • 이진 분류: --classification_positive_class 인수 설정

 

Example fine-tuning calls using the OpenAI CLI

 

# For multiclass classification
openai api fine_tunes.create \
  -t <TRAIN_FILE_ID_OR_PATH> \
  -v <VALIDATION_FILE_OR_PATH> \
  -m <MODEL> \
  --compute_classification_metrics \
  --classification_n_classes <NUMBER_OF_CLASSES>
# For binary classification
openai api fine_tunes.create \
  -t <TRAIN_FILE_ID_OR_PATH> \
  -v <VALIDATION_FILE_OR_PATH> \
  -m <MODEL> \
  --compute_classification_metrics \
  --classification_n_classes 2 \
  --classification_positive_class <POSITIVE_CLASS_FROM_DATASET>

 

The following metrics will be displayed in your results file if you set --compute_classification_metrics:For multiclass classification

compute_classification_metrics 를 설정하면 결과 파일에 다음 지표가 표시됩니다.

  • classification/accuracy: accuracy
  • classification/weighted_f1_score: weighted F-1 score

For binary classification

 

The following metrics are based on a classification threshold of 0.5 (i.e. when the probability is > 0.5, an example is classified as belonging to the positive class.)

 

다음 메트릭은 0.5의 분류 임계값을 기반으로 합니다(즉, 확률이 > 0.5인 경우 예는 포지티브 클래스에 속하는 것으로 분류됨).

  • classification/accuracy
  • classification/precision
  • classification/recall
  • classification/f{beta}
  • classification/auroc - AUROC
  • classification/auprc - AUPRC

Note that these evaluations assume that you are using text labels for classes that tokenize down to a single token, as described above. If these conditions do not hold, the numbers you get will likely be wrong.

 

이러한 평가에서는 위에서 설명한 대로 단일 토큰으로 토큰화하는 클래스에 대해 텍스트 레이블을 사용하고 있다고 가정합니다. 이러한 조건이 충족되지 않으면 얻은 숫자가 잘못되었을 수 있습니다.

 

Example outputs

Example metrics evolution over a training run, visualized with Weights & Biases

 

Weights & Biases로 시각화된 교육 실행에 대한 메트릭 진화의 예

 

 

How to pick the right model

OpenAI offers fine-tuning for 5 models: OpenAI는 fine-tuning에 다음 5가지 모델을 사용할 것을 권장합니다.

  • ada (cheapest and fastest)
  • babbage
  • curie
  • davinci
  • text-davinci-002 (highest quality)

 

Which model to use will depend on your use case and how you value quality versus price and speed. 

 

사용할 모델은 사용 사례와 품질 대 가격 및 속도의 가치를 어떻게 평가하는지에 따라 달라집니다.

 

Generally, we see text classification use cases falling into two categories: simple and complex.

 

일반적으로 텍스트 분류 사용 사례는 단순과 복합의 두 가지 범주로 나뉩니다.

 

For tasks that are simple or straightforward, such as classifying sentiment, larger models offer diminishing benefit, as illustrated below:

 

감정 분류와 같이 간단하거나 직접적인 작업의 경우 더 큰 모델은 아래 그림과 같이 이점이 적습니다.

 

Model Illustrative accuracy* Training cost** Inference cost**
ada 89% $0.0004 / 1K tokens (~3,000 pages per dollar) $0.0016 / 1K tokens (~800 pages per dollar)
babbage 90% $0.0006 / 1K tokens (~2,000 pages per dollar) $0.0024 / 1K tokens (~500 pages per dollar)
curie 91% $0.003 / 1K tokens (~400 pages per dollar) $0.012 / 1K tokens (~100 pages per dollar)
davinci 92% $0.03 / 1K tokens (~40 pages per dollar) $0.12 / 1K tokens (~10 pages per dollar)
text-davinci-002 93% unreleased unreleased

 

*Illustrative accuracy on the SNLI dataset, in which sentence pairs are classified as contradictions, implications, or neutral

*문장 쌍이 모순, 암시 또는 중립으로 분류되는 SNLI 데이터 세트에 대한 설명 정확도

**Pages per dollar figures assume ~800 tokens per page. OpenAI Pricing.

 

Illustrative examples of text classification performance on the Stanford Natural Language Inference (SNLI) Corpus, in which ordered pairs of sentences are classified by their logical relationship: either contradicted, entailed (implied), or neutral. Default fine-tuning parameters were used when not otherwise specified.

 

SNLI(Stanford Natural Language Inference) 코퍼스의 텍스트 분류 성능에 대한 예시로, 정렬된 문장 쌍이 논리적 관계(모순됨, 함축됨(암시됨) 또는 중립)에 따라 분류됩니다. 달리 지정되지 않은 경우 기본 미세 조정 매개변수가 사용되었습니다.

 

For complex tasks, requiring subtle interpretation or reasoning or prior knowledge or coding ability, the performance gaps between models can be larger, and better models like curie or text-davinci-002 could be the best fit.

 

미묘한 해석이나 추론 또는 사전 지식이나 코딩 능력이 필요한 복잡한 작업의 경우 모델 간의 성능 차이가 더 클 수 있으며 curie 또는 text-davinci-002와 같은 더 나은 모델이 가장 적합할 수 있습니다.

 

A single project might end up trying all models. One illustrative development path might look like this:

단일 프로젝트에서 모든 모델을 시도하게 될 수 있습니다. 예시적인 개발 경로는 다음과 같습니다.

  • Test code using the cheapest & fastest model (ada)
  • 가장 저렴하고 빠른 모델(ada)을 사용하여 테스트 코드
  • Run a few early experiments to check whether your dataset works as expected with a middling model (curie)
  • 중간 모델(curie)에서 데이터 세트가 예상대로 작동하는지 확인하기 위해 몇 가지 초기 실험을 실행합니다.
  • Run a few more experiments with the best model to see how far you can push performance (text-davinci-002)
  • 최상의 모델로 몇 가지 실험을 더 실행하여 성능을 얼마나 높일 수 있는지 확인하십시오(text-davinci-002).
  • Once you have good results, do a training run with all models to map out the price-performance frontier and select the model that makes the most sense for your use case  (ada, babbage, curie, davinci, text-davinci-002)
  • 좋은 결과를 얻으면 모든 모델로 교육 실행을 수행하여 가격 대비 성능 한계를 파악하고 사용 사례에 가장 적합한 모델(ada, babbage, curie, davinci, text-davinci-002)을 선택합니다.

Another possible development path that uses multiple models could be:

여러 모델을 사용하는 또 다른 가능한 개발 경로는 다음과 같습니다.

  • Starting with a small dataset, train the best possible model (text-davinci-002)
  • 작은 데이터 세트로 시작하여 가능한 최상의 모델 훈련(text-davinci-002)
  • Use this fine-tuned model to generate many more labels and expand your dataset by multiples
  • 이 미세 조정된 모델을 사용하여 더 많은 레이블을 생성하고 데이터 세트를 배수로 확장하십시오.
  • Use this new dataset to train a cheaper model (ada)
  • 이 새로운 데이터 세트를 사용하여 더 저렴한 모델(ada) 훈련

 

How to pick training hyperparameters

Fine-tuning can be adjusted with various parameters. Typically, the default parameters work well and adjustments only result in small performance changes.

 

미세 조정은 다양한 매개변수로 조정할 수 있습니다. 일반적으로 기본 매개변수는 잘 작동하며 조정해도 성능이 약간만 변경됩니다.

 

Parameter Default Recommendation
n_epochs

controls how many times each example is trained on

각 예제가 훈련되는 횟수를 제어합니다.
4 For classification, we’ve seen good performance with numbers like 4 or 10. Small datasets may need more epochs and large datasets may need fewer epochs.

분류의 경우 4 또는 10과 같은 숫자로 좋은 성능을 보였습니다. 작은 데이터 세트에는 더 많은 에포크가 필요할 수 있고 큰 데이터 세트에는 더 적은 에포크가 필요할 수 있습니다.


If you see low training accuracy, try increasing n_epochs. If you see high training accuracy but low validation accuracy (overfitting), try lowering n_epochs.

훈련 정확도가 낮은 경우 n_epochs를 늘려 보십시오. 훈련 정확도는 높지만 검증 정확도(과적합)가 낮은 경우 n_epochs를 낮추십시오.


You can get training and validation accuracies by setting compute_classification_metrics to True and passing a validation file with labeled examples not in the training data. You can see graphs of these metrics evolving during fine-tuning with a Weights & Biases account.

compute_classification_metrics를 True로 설정하고 교육 데이터에 없는 레이블이 지정된 예제가 있는 유효성 검사 파일을 전달하여 교육 및 유효성 검사 정확도를 얻을 수 있습니다. Weights & Biases 계정을 사용하여 미세 조정하는 동안 진화하는 이러한 지표의 그래프를 볼 수 있습니다.
batch_size
controls the number of training examples used in a single training pass
단일 교육 패스에 사용되는 교육 예제의 수를 제어합니다.
null
(which dynamically adjusts to 0.2% of training set, capped at 256)
(트레이닝 세트의 0.2%로 동적으로 조정되며 256으로 제한됨)
We’ve seen good performance in the range of 0.01% to 2%, but worse performance at 5%+. In general, larger batch sizes tend to work better for larger datasets.

우리는 0.01%에서 2% 범위에서 좋은 성능을 보았지만 5% 이상에서는 더 나쁜 성능을 보였습니다. 일반적으로 더 큰 배치 크기는 더 큰 데이터 세트에서 더 잘 작동하는 경향이 있습니다.
learning_rate_multiplier
controls rate at which the model weights are updated
모델 가중치가 업데이트되는 속도를 제어합니다.
null
(which dynamically adjusts to 0.05, 0.1, or 0.2 depending on batch size)
(배치 크기에 따라 0.05, 0.1 또는 0.2로 동적으로 조정됨)
We’ve seen good performance in the range of 0.02 to 0.5. Larger learning rates tend to perform better with larger batch sizes.

0.02~0.5 범위에서 좋은 성능을 보였습니다. 더 큰 학습 속도는 더 큰 배치 크기에서 더 잘 수행되는 경향이 있습니다.
prompt_loss_weight
controls how much the model learns from prompt tokens vs completion tokens
모델이 프롬프트 토큰과 완료 토큰에서 학습하는 양을 제어합니다.



0.1 If prompts are very long relative to completions, it may make sense to reduce this weight to avoid over-prioritizing learning the prompt. In our tests, reducing this to 0 is sometimes slightly worse or sometimes about the same, depending on the dataset.

프롬프트가 완료에 비해 매우 긴 경우 프롬프트 학습에 과도한 우선순위를 두지 않도록 이 가중치를 줄이는 것이 좋습니다. 테스트에서 데이터 세트에 따라 이를 0으로 줄이는 것이 때때로 약간 더 나쁘거나 거의 동일합니다.

 

More detail on prompt_loss_weight

 

When a model is fine-tuned, it learns to produce text it sees in both the prompt and the completion. In fact, from the point of view of the model being fine-tuned, the distinction between prompt and completion is mostly arbitrary. The only difference between prompt text and completion text is that the model learns less from each prompt token than it does from each completion token. This ratio is controlled by the prompt_loss_weight, which by default is 10%.

 

모델이 미세 조정되면 prompt and the completion 모두에 표시되는 텍스트를 생성하는 방법을 학습합니다. 실제로 미세 조정되는 모델의 관점에서 신속함과 완료의 구분은 대부분 임의적입니다. 프롬프트 텍스트와 완료 텍스트의 유일한 차이점은 모델이 각 완료 토큰에서 학습하는 것보다 각 프롬프트 토큰에서 학습하는 내용이 적다는 것입니다. 이 비율은 prompt_loss_weight에 의해 제어되며 기본적으로 10%입니다.

 

A prompt_loss_weight of 100% means that the model learns from prompt and completion tokens equally. In this scenario, you would get identical results with all training text in the prompt, all training text in the completion, or any split between them. For classification, we recommend against 100%.

 

100%의 prompt_loss_weight는 모델이 프롬프트 및 완료 토큰에서 동일하게 학습함을 의미합니다. 이 시나리오에서는 프롬프트의 모든 학습 텍스트, 완성의 모든 학습 텍스트 또는 이들 간의 분할에 대해 동일한 결과를 얻습니다. 분류의 경우 100% 대비를 권장합니다.

 

A prompt loss weight of 0% means that the model’s learning is focused entirely on the completion tokens. Note that even in this case, prompts are still necessary because they set the context for each completion. Sometimes we’ve seen a weight of 0% reduce classification performance slightly or make results slightly more sensitive to learning rate; one hypothesis is that a small amount of prompt learning helps preserve or enhance the model’s ability to understand inputs.

 

0%의 즉각적인 손실 가중치는 모델의 학습이 완료 토큰에 전적으로 집중되어 있음을 의미합니다. 이 경우에도 프롬프트는 각 완료에 대한 컨텍스트를 설정하기 때문에 여전히 필요합니다. 때때로 우리는 0%의 가중치가 분류 성능을 약간 감소시키거나 결과가 학습률에 약간 더 민감해지는 것을 보았습니다. 한 가지 가설은 소량의 즉각적인 학습이 입력을 이해하는 모델의 능력을 유지하거나 향상시키는 데 도움이 된다는 것입니다.

 

Example hyperparameter sweeps

n_epochs

The impact of additional epochs is particularly high here, because only 100 training examples were used.

 

100개의 학습 예제만 사용되었기 때문에 추가 에포크의 영향이 여기에서 특히 높습니다.

learning_rate_multiplier

prompt_loss_weight

How to pick inference parameters

 

Parameter Recommendation
model (discussed above) [add link]
temperature Set temperature=0 for classification. Positive values add randomness to completions, which can be good for creative tasks but is bad for a short deterministic task like classification.
분류를 위해 온도=0으로 설정합니다. 양수 값은 완성에 임의성을 추가하므로 창의적인 작업에는 좋을 수 있지만 분류와 같은 짧은 결정론적 작업에는 좋지 않습니다.
max_tokens If using single-token labels (or labels with unique first tokens), set max_tokens=1. If using longer labels, set to the length of your longest label.
단일 토큰 레이블(또는 고유한 첫 번째 토큰이 있는 레이블)을 사용하는 경우 max_tokens=1로 설정합니다. 더 긴 레이블을 사용하는 경우 가장 긴 레이블의 길이로 설정하십시오.
stop If using labels of different length, you can optionally append a stop sequence like ‘ END’ to your training completions. Then, pass stop=‘ END’ in your inference call to prevent the model from generating excess text after appending short labels. (Otherwise, you can get completions like “burger -->” “ edible edible edible edible edible edible” as the model continues to generate output after the label is appended.) An alternative solution is to post-process the completions and look for prefixes that match any labels.
길이가 다른 레이블을 사용하는 경우 선택적으로 학습 완료에 ' END'와 같은 중지 시퀀스를 추가할 수 있습니다. 그런 다음 짧은 레이블을 추가한 후 모델이 과도한 텍스트를 생성하지 않도록 추론 호출에서 stop=' END'를 전달합니다. (그렇지 않으면 레이블이 추가된 후에도 모델이 계속 출력을 생성하므로 "burger -->" " edible edible edible edible edible"와 같은 완성을 얻을 수 있습니다.) 대체 솔루션은 완성을 후처리하고 접두사를 찾는 것입니다. 모든 레이블과 일치합니다.
logit_bias If using single-token labels, set logit_bias={“label1”: 100, “label2”:100, …} with your labels in place of “label1” etc.

For tasks with little data or complex labels, models can output tokens for invented classes never specified in your training set. logit_bias can fix this by upweighting your label tokens so that illegal label tokens are never produced. If using logit_bias in conjunction with multi-token labels, take extra care to check how your labels are being split into tokens, as logit_bias only operates on individual tokens, not sequences.

데이터가 적거나 레이블이 복잡한 작업의 경우 모델은 훈련 세트에 지정되지 않은 발명된 클래스에 대한 토큰을 출력할 수 있습니다. logit_bias는 불법 레이블 토큰이 생성되지 않도록 레이블 토큰의 가중치를 높여 이 문제를 해결할 수 있습니다. 다중 토큰 레이블과 함께 logit_bias를 사용하는 경우 logit_bias는 시퀀스가 아닌 개별 토큰에서만 작동하므로 레이블이 토큰으로 분할되는 방식을 특히 주의하십시오.


Logit_bias can also be used to bias specific labels to appear more or less frequently.
Logit_bias를 사용하여 특정 레이블이 더 자주 또는 덜 자주 표시되도록 바이어스할 수도 있습니다.
logprobs Getting the probabilities of each label can be useful for computing confidence scores, precision-recall curves, calibrating debiasing using logit_bias, or general debugging.
각 레이블의 확률을 얻는 것은 신뢰도 점수 계산, 정밀도 재현 곡선, logit_bias를 사용한 편향성 보정 보정 또는 일반 디버깅에 유용할 수 있습니다.


Setting logprobs=5 will return, for each token position of the completion, the top 5 most likely tokens and the natural logs of their probabilities. To convert logprobs into probabilities, raise e to the power of the logprob (probability = e^logprob). The probabilities returned are independent of temperature and represent what the probability would have been if the temperature had been set to 1. By default 5 is the maximum number of logprobs returned, but exceptions can be requested by emailing support@openai.com and describing your use case.

logprobs=5로 설정하면 완료의 각 토큰 위치에 대해 가장 가능성이 높은 상위 5개 토큰과 해당 확률의 자연 로그가 반환됩니다. logprobs를 확률로 변환하려면 e를 logprob의 거듭제곱으로 올립니다(probability = e^logprob). 반환된 확률은 온도와 무관하며 온도가 1로 설정되었을 경우의 확률을 나타냅니다. 기본적으로 5는 반환되는 logprobs의 최대 수. 예외는 support@openai.com으로 이메일을 보내주세요 귀하의 사용 사례를 보내 주세요.


Example API call to get probabilities for the 5 most likely tokens
가능성이 가장 높은 5개의 토큰에 대한 확률을 얻기 위한 API 호출 예

api_response = openai.Completion.create(
    model="{fine-tuned model goes here, without brackets}",
    prompt="toothpaste -->",
    temperature=0,
    max_tokens=1,
    logprobs=5
)
dict_of_logprobs = api_response['choices'][0]['logprobs']['top_logprobs'][0].to_dict()
dict_of_probs = {k: 2.718**v for k, v in dict_of_logprobs.items()}
echo In cases where you want the probability of a particular label that isn’t showing up in the list of logprobs, the echo parameter is useful. If echo is set to True and logprobs is set to a number, the API response will include logprobs for every token of the prompt as well as the completion. So, to get the logprob for any particular label, append that label to the prompt and make an API call with echo=True, logprobs=0, and max_tokens=0.

logprobs 목록에 나타나지 않는 특정 레이블의 확률을 원하는 경우 echo 매개변수가 유용합니다. echo가 True로 설정되고 logprobs가 숫자로 설정되면 API 응답에는 완료뿐 아니라 프롬프트의 모든 토큰에 대한 logprobs가 포함됩니다. 따라서 특정 레이블에 대한 logprob를 가져오려면 해당 레이블을 프롬프트에 추가하고 echo=True, logprobs=0 및 max_tokens=0으로 API 호출을 수행합니다.


Example API call to get the logprobs of prompt tokens

프롬프트 토큰의 logprobs를 가져오기 위한 API 호출 예
import openai


response = openai.Completion.create(
 model="text-davinci-002",
 prompt="burger --> edible",
 temperature=0,
 max_tokens=0,
 logprobs=0,
 echo=True
)


print(response['choices'][0]['logprobs']['token_logprobs'])


===
[None, -0.8182136, -7.7480173, -15.915648]

 

Advanced techniques

Add reasoning steps

For complex tasks that require reasoning, one useful technique you can experiment with is inserting explanations before the final answer. Giving the model extra time and space to think ‘aloud’ can increase the odds it arrives at the correct final answer.

 

추론이 필요한 복잡한 작업의 경우 실험할 수 있는 유용한 기술 중 하나는 최종 답변 앞에 설명을 삽입하는 것입니다. 모델에게 '큰 소리로' 생각할 수 있는 추가 시간과 공간을 제공하면 올바른 최종 답변에 도달할 가능성이 높아질 수 있습니다.

 

Example (from Zelikman, Wu, et al.):

Prompt Completion Completion with reasoning
“Q: Where do you put your grapes just before checking out?
Answer Choices:
(a) mouth
(b) grocery cart
(c) supermarket
(d) fruit basket
(e) fruit market
A:”
“(b)” “The answer should be the place where grocery items are placed before checking out. Of the above choices, grocery cart makes the most sense for holding grocery items. Therefore, the answer is grocery cart (b).”

“답은 체크아웃하기 전에 식료품을 두는 장소여야 합니다. 위의 선택 중에서 식료품 카트는 식료품을 보관하는 데 가장 적합합니다. 따라서 정답은 식료품 카트(b)입니다.”

Although it can sound daunting to write many example explanations, it turns out you can use large language models to write the explanations. In 2022, Zelikman, Wu, et al. published a procedure called STaR (Self-Taught Reasoner) in which a few-shot prompt can be used to generate a set of {questions, rationales, answers} from just a set of {questions, answers}

많은 예제 설명을 작성하는 것이 어렵게 들릴 수 있지만 큰 언어 모델을 사용하여 설명을 작성할 수 있습니다. 2022년 Zelikman, Wu, et al. {질문, 답변} 세트에서 {질문, 근거, 답변} 세트를 생성하기 위해 몇 번의 프롬프트를 사용할 수 있는 STaR(Self-Taught Reasoner)라는 절차를 발표했습니다.

 

 

Sequential fine-tuning

Models can be fine-tuned sequentially as many times as you like. One way you can use this is to pre-train your model on a large amount of relevant text, such as unstructured domain text or similar classification tasks, and then afterwards fine-tune on examples of the task you want the model to perform. An example procedure could look like:

 

모델은 원하는 만큼 순차적으로 미세 조정할 수 있습니다. 이를 사용할 수 있는 한 가지 방법은 구조화되지 않은 도메인 텍스트 또는 유사한 분류 작업과 같은 많은 양의 관련 텍스트에 대해 모델을 사전 훈련한 다음 나중에 모델이 수행할 작업의 예를 미세 조정하는 것입니다. 예제 절차는 다음과 같습니다.

 

  • Step 1: Fine-tune on cheap, semi-relevant data
    • E.g., unstructured domain text (such as legal or medical text)
    • E.g., similar task data (such as another large classification set)
  • Step 2: Fine-tune on expensive labeled examples
  • E.g., text and classes (if training a classifier)

To fine-tune a previously fine-tuned model, pass in the fine-tuned model name when creating a new fine-tuning job (e.g. -m curie:ft-<org>-<date>). Other training parameters do not have to be changed, however if your new training data is much smaller than your previous training data, you may find it useful to reduce learning_rate_multiplier by a factor of 2 to 4.

 

이전에 미세 조정된 모델을 미세 조정하려면 새 미세 조정 작업을 생성할 때 미세 조정된 모델 이름을 전달합니다(예: -m curie:ft-<org>-<date>). 다른 훈련 매개변수는 변경할 필요가 없지만 새 훈련 데이터가 이전 훈련 데이터보다 훨씬 작은 경우 learning_rate_multiplier를 2~4배 줄이는 것이 유용할 수 있습니다.

 

Common mistakes

The most common mistakes when fine-tuning text classifiers are usually related to training data.

 

텍스트 분류기를 미세 조정할 때 가장 흔한 실수는 일반적으로 훈련 데이터와 관련이 있습니다.

Common mistake #1: Insufficiently specified training data

One thing to keep in mind is that training data is more than just a mapping of inputs to correct answers. Crucially, the inputs need to contain the information needed to derive an answer.

 

한 가지 명심해야 할 점은 교육 데이터가 정답에 대한 입력의 매핑 이상이라는 것입니다. 결정적으로 입력에는 답을 도출하는 데 필요한 정보가 포함되어야 합니다.

 

For example, consider fine-tuning a model to predict someone’s grades using the following dataset:

 

예를 들어 다음 데이터 세트를 사용하여 누군가의 성적을 예측하도록 모델을 미세 조정하는 것을 고려하십시오.

 

Prompt Completion
“Alice >>>” “ A”
“Bob >>>” “ B+”
“Coco >>>” “ A-”
“Dominic >>>” “ B”

 

Prompt Completion
“Esmeralda >>>” ???

Without knowing why these students got the grades they did, there is insufficient information for the model to learn from and no hope of making a good personalized prediction for Esmeralda.

 

이 학생들이 자신이 받은 성적을 받은 이유를 모르면 모델이 배울 수 있는 정보가 충분하지 않으며 Esmeralda에 대해 좋은 개인화된 예측을 할 수 있는 희망이 없습니다.

 

This can happen more subtly when some information is given but some is still missing. For example, if fine-tuning a classifier on whether a business expense is allowed or disallowed, and the business expense policy varies by date or by location or by employee type, make sure the input contains information on dates, locations, and employee type.

 

이것은 일부 정보가 제공되었지만 일부가 여전히 누락된 경우 더 미묘하게 발생할 수 있습니다. 예를 들어 비즈니스 비용이 허용되는지 여부에 대한 분류자를 미세 조정하고 비즈니스 비용 정책이 날짜, 위치 또는 직원 유형에 따라 달라지는 경우 입력에 날짜, 위치 및 직원 유형에 대한 정보가 포함되어 있는지 확인하십시오.

 

Prompt Completion
“Amount: $50
Item: Steak dinner

###

“ allowed”
“Amount: $50
Item: Steak dinner

###

“ disallowed”

 

Prompt Completion
“Amount: $50
Item: Steak dinner

###

???

 

Common mistake #2: Input data format that doesn’t match the training data format

Make sure that when you use your fine-tuned model, your submitted prompts match the format of your training data.

 

미세 조정된 모델을 사용할 때 제출된 프롬프트가 훈련 데이터의 형식과 일치하는지 확인하십시오.

 

Training data format API call OK?
“dog toy -->” “dog toy” Missing separator
“Amount: $50
Item: Steak dinner

###

“Is a $50 steak dinner allowed?

###

Different format
“Esmeralda >>>” “Esmeralda >>> ” Extra space appended

 

More examples

Below, we share more examples of training data for possible classifiers.

 

아래에서 가능한 분류기에 대한 훈련 데이터의 더 많은 예를 공유합니다.

 

Truthful consistency classifier

Prompt Completion
"Company: BHFF insurance
Product: allround insurance
Ad: One stop shop for all your insurance needs!
Supported:"
“ yes”
"Company: Loft conversion specialists
Product: -
Ad: Straight teeth in weeks!
Supported:"

“ no”

 

Product review classifier (with multiple classes labeled in parallel)

Prompt Completion
"4/5 stars

Camera seems fine. Not amazing, but perfectly decent.

Biggest complaint is that the cable is only 5 feet long, which I didn't think to check. It's my fault, so I won't return it, but 5 feet is really short if you have multiple monitors and probably impossible if you have a desktop on the floor next to a standing desk.

###

Positives:"

“ fine, perfectly decent
Negatives: not amazing, cable is only 5 feet long
Overall sentiment: positive
Possible improvements: longer cable
Return risk: 1
Support priority: low
Customer type: N/A”
"4/5 stars

I bought this on sale for $70. I'm satisfied with it.

(1) The instructions weren't that bad. (There was really only one ambiguous step, and it was easy to make an educated guess at the right way to go. Surprised by the ordering of one of the steps because some bars were hanging there for a while, but whatever.)

(2) It definitely is labor intensive - the most painful step is screwing in 24 small wood screws to get the hooks attached. And it takes a bit of skill to get them all vertically parallel. Got a big blister from all the screwing. And the angles made it hard to use power tools - ended up screwing in by hand because it was easier to stay vertical next to the hook.

(3) I weight 170 pounds and honestly the bench seems fine for supporting my weight. I was worried from the other reviews. But my trick was to leave things a little loose until the end and then really tighten everything once it was all together. I think really tightening at the end prevents any squeaky rocking. But only used it one day so far, so we'll see.

Overall this is definitely cheap, but feels totally fine. It's cheap in a cheap way, not cheap in a junky knockoff way. Would buy again. Looks great.

###

Positives:"


“ instructions weren’t that bad, looks great
Negatives: ambiguous step, labor intensive, got a big blister, cheap
Overall sentiment: positive
Possible improvements: less ambiguous instructions
Return risk: 0
Support priority: low
Customer type: N/A”
"5/5 stars

I'm a fan. It's shiny and pure metal. Exactly what I wanted.

###

Positives:”
“ shiny, pure metal
Negatives: N/A
Overall sentiment: positive
Possible improvements: N/A
Return risk: 0
Support priority: low
Customer type: N/A

 

Sentiment analyzer

Prompt Completion
"Overjoyed with the new iPhone! ->"

“ positive”
"@lakers disappoint for a third straight night https://t.co/38EFe43 ->"


“ negative”

 

Email prioritizer

Prompt Completion
"Subject: Update my address
From: Joe Doe
To: support@ourcompany.com
Date: 2021-06-03
Content: Hi,
I would like to update my billing address to match my delivery address.

Please let me know once done.

Thanks,
Joe

###

"

“ 4”

 

Legal claim detector

Prompt Completion
"When the IPV (injection) is used, 90% or more of individuals develop protective antibodies to all three serotypes of polio virus after two doses of inactivated polio vaccine (IPV), and at least 99% are immune to polio virus following three doses. -->"

“ efficacy”
"Jonas Edward Salk (/sɔːlk/; born Jonas Salk; October 28, 1914 – June 23, 1995) was an American virologist and medical researcher who developed one of the first successful polio vaccines. He was born in New York City and attended the City College of New York and New York University School of Medicine. -->"


“ not”

 

News subject detector

Prompt Completion
"PC World - Upcoming chip set will include built-in security features for your PC. >>>"

“ 4”

(where 4 = Sci/Tech)
“Newspapers in Greece reflect a mixture of exhilaration that the Athens Olympics proved successful, and relief that they passed off without any major setback. >>>”

“ 2”

(where 2 = Sports)

 

Logical relationship detector

Prompt Completion
"A land rover is being driven across a river.
A vehicle is crossing a river.

###

"

“ implication”
"Violin soloists take the stage during the orchestra's opening show at the theater.
People are playing the harmonica while standing on a roof.

###

"


“ contradiction”

 

반응형


반응형

오늘 공부할 내용은 답변의 신뢰성을 높이기 위한 여러 방법들을 알아보는 겁니다.

실습보다는 이론적인 것들이 많은 것 같습니다.

내용이 좀 긴데 일단 한번 시작해 보겠습니다.

원본 페이지는 이곳입니다.

 

https://github.com/openai/openai-cookbook/blob/main/techniques_to_improve_reliability.md

 

GitHub - openai/openai-cookbook: Examples and guides for using the OpenAI API

Examples and guides for using the OpenAI API. Contribute to openai/openai-cookbook development by creating an account on GitHub.

github.com

 

Techniques to improve reliability

 

GPT-3가 작업에 실패하면 여러분은 어떻게 해야 할까요?

 

  • Search for a better prompt that elicits more reliable answers?
  • 좀더 신뢰할 수 있는 답변을 이끌어내기 위해 더 좋은 prompt를 찾으시겠습니까?
  • Invest in thousands of examples to fine-tune a custom model?
  • custom 모델로 fine-tune 하기 위해 수천개의 예제들을 마련하는 일을 하시겠습니까?
  • Assume the model is incapable of the task, and move on?
  • 해당 모델이 그 작업에 적당하지 않다고 가정하고 그냥 진행 하시겠습니까?

간단하게 답할 수 있는 문제가 아닙니다. 상황에 따라 다르니까요. 하여간 여러분의 작업에 논리적 추론이나 복잡성이 있다면 좀 더 신뢰성 있는 결과를 도출하기 위해 그리고 고성능 prompt를 만들기 위해 이 글에서 제시하는 기술들을 고려해 보세요.

 

Why GPT-3 fails on complex tasks

GPT-3는 왜 복잡한 작업에 대해 실패 할까요?

 

여러분은 13 곱하기 17이 무엇이냐고 물으면 즉시 답할 수 있습니까?

대부분의 사람들은 그렇지 못할 겁니다. 그렇다고 해서 인간이 두자릿수 곱셈을 못 하는 것은 아닙니다.

몇초의 시간과 종이와 연필만 있으면 13 x 17 = 130 + 70 + 21 = 221 이라는 계산을 하는 것은 그리 어렵지 않습니다.

 

마찬가지로 GPT-3도 다음 token을 계산하는데 너무 복잡한 임무를 부여하면  잘못된 추측을 만들 수 있습니다. 위의 인간의 예와 마찬가지로 이것이 GPT-3가 해당 작업을 수행하지 못하는 것을 의미하는 것은 아닙니다. 문제를 추론할 충분한 시간과 공간이 있으면 그 모델은 여전히 안정적으로 대답할 수 있습니다.

 

예를 들어 text-davinci-002에게 저글링 공에 대한 다음 수학 문제를 묻는 다면 아마 대답을 잘 못 할 겁니다.

Q: A juggler has 16 balls. Half of the balls are golf balls and half of the golf balls are blue. How many blue golf balls are there?
A:
There are 8 blue golf balls.

16개의 공 중에 반은 골프공이다. 그리고 골프공의 반은 파란색이다. 파란 골프 공은 몇개가 있을까?

8개의 파란 골프공이 있다.

==> 이 대답은 틀렸죠. 8개 골프공 중에 반이 파란색이니까 4개가 되겠죠.

 

Q: A juggler has 16 balls. Half of the balls are golf balls and half of the golf balls are blue. How many blue golf balls are there?
A: Let's think step by step.
There are 16 balls in total. 
Half of the balls are golf balls. 
That means that there are 8 golf balls. 
Half of the golf balls are blue. 
That means that there are 4 blue golf balls.

이렇게 스텝 바이 스텝으로 생각하면 제대로 된 대답을 내 놓습니다.

 

물론 이 단계별 트릭이 일반적으로 적용되는 경우인지 혹은 운 좋게 특정 경우에만 적용 된 것인지는 이 한가지 예만 가지고 판단하기 어렵습니다. 어쨌든 이 질문에 대해서는 효과가 있었습니다. 이런식의 단어로 된 수학문제에서 이렇게 스텝 바이 스텝으로 생각하도록 함으로서 GPT-3가 문제를 제대로 해결하는 비율이 무의미한 18%에서 유의미한 79%로 엄청나게 높아 졌습니다.

 

Model capabilities depend on context

GPT-3으로 작업하는 방법을 배울 때 흔히 발생하는 개념적 실수 중 하나는 GPT-3의 기능이 모든 컨텍스트에서 고정되어 있다고 믿는 것입니다. 예를 들어 GPT-3가 간단한 논리 질문을 틀린다면 GPT-3는 간단한 논리 질문에 적합하지 않은것이다 라고 생각하는 것.

 

Let's think step by step 예제에서 알 수 있듯이 GPT-3의 명백한 오류는 때때로 올바른 output을 내 오는데 대해 스스로 조종하는 것에 도움이 되는 좀 더 나은 prompt줄 제공함으로서 해결될 수 있습니다.

 

How to improve reliability on complex tasks

이 문서의 나머지 부분에서는 복잡한 작업에서 Large language 모델의 신뢰성(안정성)을 개선할 수 있는 기술들을 공유합니다.

일부 기술은 특정 유형의 문제에만 적용 되지만 대부분은 다음과 같이 광범위한 상황에 적용할 수 있는 일반 원칙을 기반으로 합니다.

  • Give clearer instructions
  • 명확하게 지시한다.
  • Split complex tasks into simpler subtasks
  • 복잡한 임무는 좀 더 간단한 작은 임무들로 나눈다.
  • Structure the instruction to keep the model on task
  • 모델이 작업을 계속 수행할 수 있도록 지시를 구조화 한다.
  • Prompt the model to explain before answering
  • 모델이 대답을 하기전에 설명을 하도록 요구하는 내용을 Prompt에 넣어 작성한다.
  • Ask for justifications of many possible answers, and then synthesize
  • 많은 가능한 응답들의 정당성을 묻고 그것들을 종합한다.
  • Generate many outputs, and then use the model to pick the best one
  • 많은 output들을 생성한다. 그리고 모델을 사용해서 그 중에 가장 좋은 것을 선택하도록 한다.
  • Fine-tune custom models to maximize performance
  • Fine-tune 커스텀 모델로 성능을 최대화 한다.

Split complex tasks into simpler tasks

모델에게 생각할 시간과 space를 좀 더 많이 주는 방법 중 하나는 더 간단한 조각들로 임무를 나누는 것입니다.

 

예를 들어 어떤 텍스트에 대해 여러 가지의 보기를 주고 모델에게 물어본다고 했을 때를 생각해 보세요. (아래 예제 참조) 그냥 주관식으로 물어 본다면 text-davinci-002는 그 중 3번과 5번을 고를 수가 없습니다. 이렇게 되면 잘못된 대답을 할 확률이 높아 집니다.

하지만 보기를 5개를 주고 그 중 3번과 5번이 답이라면 text-davinci-002는 그 3번과 5번을 선택하던가 그 둘을 종합해서 좀 더 정답에 가깝거나 완전한 정답을 output으로 내 놓을 수 있습니다.

Use the following clues to answer the following multiple-choice question.
 
Clues:
1. Miss Scarlett was the only person in the lounge.
2. The person with the pipe was in the kitchen.
3. Colonel Mustard was the only person in the observatory.
4. Professor Plum was not in the library nor the billiard room.
5. The person with the candlestick was in the observatory.
 
Question: Was Colonel Mustard in the observatory with the candlestick?
(a) Yes; Colonel Mustard was in the observatory with the candlestick
(b) No; Colonel Mustard was not in the observatory with the candlestick
(c) Unknown; there is not enough information to determine whether Colonel Mustard was in the observatory with the candlestick
 
Solution:
(c) Unknown; there is not enough information to determine whether Colonel Mustard was in the observatory with the candlestick

 

3번과 5번이 Mustard 대령이 천문대에 있는 유일한 사람이고 천문데애 있는 사람이 촛대를 가지고 있다는 것을 설명하고 있지만 모델은 그것을 (a) Yes; .. 라고 정답으로 결함하지 못합니다.

 

이렇게 직접 묻는 대신 작업을 세 부분으로 나눌 수 있습니다.

 

  • First, go through the clues one by one and consider whether the clue is potentially relevant
  • 먼저 단서를 하나씩 살펴보고 단서가 잠재적으로 관련이 있는지 고려 하세요.
  • Second, combine the relevant clues to reason out the answer to the question\
  • 두번째로 관련 단서를 결합하여 질문에 대한 답을 추론하세요.
  • Third, write the final answer: either (a), (b), or (c)
  • 셋째 (a),(b) 혹은 (c) 중 하나의 최종 답변을 작성합니다.
Use the following clues to answer the following multiple-choice question, using the following procedure:
(1) First, go through the clues one by one and consider whether the clue is potentially relevant
(2) Second, combine the relevant clues to reason out the answer to the question
(3) Third, map the answer to one of the multiple choice answers: either (a), (b), or (c)
 
Clues:
1. Miss Scarlett was the only person in the lounge.
2. The person with the pipe was in the kitchen.
3. Colonel Mustard was the only person in the observatory.
4. Professor Plum was not in the library nor the billiard room.
5. The person with the candlestick was in the observatory.
 
Question: Was Colonel Mustard in the observatory with the candlestick?
(a) Yes; Colonel Mustard was in the observatory with the candlestick
(b) No; Colonel Mustard was not in the observatory with the candlestick
(c) Unknown; there is not enough information to determine whether Colonel Mustard was in the observatory with the candlestick
 
Solution:
(1) First, go through the clues one by one and consider whether the clue is potentially relevant:
Clue 1: Miss Scarlett was the only person in the lounge. This clue is not relevant.
Clue 2: The person with the pipe was in the kitchen. This clue is not relevant.
Clue 3: Colonel Mustard was the only person in the observatory. This clue is relevant.
Clue 4: Professor Plum was not in the library nor the billiard room. This clue is not relevant.
Clue 5: The person with the candlestick was in the observatory. This clue is relevant.
 
(2) Second, combine the relevant clues to reason out the answer to the question:
Clue 3 and Clue 5 both say that the person with the candlestick was in the observatory. Colonel Mustard was the only person in the observatory, so Colonel Mustard was the person with the candlestick.
 
(3) Third, write the final answer:
(a) Yes; Colonel Mustard was in the observatory with the candlestick

모델에게 생각할 시간과 공간을 더 주고 reasoning plan (추론 계획)에 따르는 가이드를 제공함으로써 모델은 (a) 라는 정답을 알아낼 수 있습니다.

 

복잡한 명령을 더 작은 하위 작업으로 분할하는 또 다른 잇점은 모델이 각 하위 작업에 집중하도록 도울 수 있다는 것입니다.

 

예를 들어 우리가 text-davinci-002에게 원래의 언어로 텍스트를 요약해달라고 부탁하면 모델은 다시 영어로 전환 될 수 있습니다.

 

Summarize the text using the original language of the text. The summary should be one sentence long.

Text:
"""
La estadística (la forma femenina del término alemán Statistik, derivado a su vez del italiano statista, "hombre de Estado")​ es una ciencia que estudia la variabilidad, colección, organización, análisis, interpretación, y presentación de los datos, así como el proceso aleatorio que los genera siguiendo las leyes de la probabilidad.​ La estadística es una ciencia formal deductiva, con un conocimiento propio, dinámico y en continuo desarrollo obtenido a través del método científico formal. En ocasiones, las ciencias fácticas necesitan utilizar técnicas estadísticas durante su proceso de investigación factual, con el fin de obtener nuevos conocimientos basados en la experimentación y en la observación. En estos casos, la aplicación de la estadística permite el análisis de datos provenientes de una muestra representativa, que busca explicar las correlaciones y dependencias de un fenómeno físico o natural, de ocurrencia en forma aleatoria o condicional.
"""

Summary:
The text explains that statistics is a science that studies the variability, collection, organization, analysis, interpretation, and presentation of data, as well as the random process that generates them following the laws of probability.

 

여기서 일단 모델에게 해당 언어를 판별하라고 지시할 수 있습니다. 그리고 난 후 그 내용을 요약하라고 하면 좀 더 신뢰도가 높은 답변을 얻을 수 있습니다.

First, identify the language of the text. Second, summarize the text using the original language of the text. The summary should be one sentence long.

Text:
"""
La estadística (la forma femenina del término alemán Statistik, derivado a su vez del italiano statista, "hombre de Estado")​ es una ciencia que estudia la variabilidad, colección, organización, análisis, interpretación, y presentación de los datos, así como el proceso aleatorio que los genera siguiendo las leyes de la probabilidad.​ La estadística es una ciencia formal deductiva, con un conocimiento propio, dinámico y en continuo desarrollo obtenido a través del método científico formal. En ocasiones, las ciencias fácticas necesitan utilizar técnicas estadísticas durante su proceso de investigación factual, con el fin de obtener nuevos conocimientos basados en la experimentación y en la observación. En estos casos, la aplicación de la estadística permite el análisis de datos provenientes de una muestra representativa, que busca explicar las correlaciones y dependencias de un fenómeno físico o natural, de ocurrencia en forma aleatoria o condicional.
"""

Language:
Spanish

La estadística es una ciencia que estudia la variabilidad, colección, organización, análisis, interpretación, y presentación de los datos, así como el proceso aleatorio que los genera siguiendo las leyes de la probabilidad.

 

Prompt the model to explain before answering

답변의 신뢰도를 향상 시킬 수 있는 또 다른 강력한 기술은 모델이 최종 답변을 곧바로 하도록 하는 대신 점진적으로 답변을 추론하도록 유도하는 것입니다.

Thinking aloud를 통해서 모델은 더 맞는 답에 도달할 가능성이 훨씬 커집니다.

 

Zero-shot

Method

Takeshi Kojima 등이 2022년에 발표한 모델이 더 옳은 답을 추론하도록 유도하는 가장 쉬운 방법을 보면 답 앞에 Let's think step by step을 추가 하는 것입니다.

그림 2는 이 예를 보여 줍니다.

Source:&nbsp;Large Language Models are Zero-Shot Reasoners&nbsp;by Takeshi Kojima et al. (2022).

Source: Large Language Models are Zero-Shot Reasoners by Takeshi Kojima et al. (2022).

 

Large Language Models are Zero-Shot Reasoners

Pretrained large language models (LLMs) are widely used in many sub-fields of natural language processing (NLP) and generally known as excellent few-shot learners with task-specific exemplars. Notably, chain of thought (CoT) prompting, a recent technique f

arxiv.org

 

Results

저자는 이 간단한 트릭을 MultiArith 수학 데이터 세트에 적용하여 Let's think step by step으로 정확도를 18%에서 79%로 4배로 높였다는 사실을 발견했습니다.

Source:&nbsp;Large Language Models are Zero-Shot Reasoners&nbsp;by Takeshi Kojima et al. (2022).

 

Implications

이 Let's think step by step 트릭이 수학 문제 에서는 잘 작동한다고 모든 작업에 효과적으로 적용 될 수 있는 것은 아닙니다. 저자는 이 방법이 multi-step 산술 문제, 상징적 추론 문제, 전략 문제 그리고 다른 추론 문제들에 아주 유용하게 적용될 수 있다는 것을 발견했습니다. 아주 간단한 수학문제나 아주 상식적인 질문에는 도움이 되지 않았으며 아마도 다른 많은 비추론 작업에도 도움이 되지 않을 것입니다.

Source:&nbsp;Large Language Models are Zero-Shot Reasoners&nbsp;by Takeshi Kojima et al. (2022).

 

논문 전체를 보려면 여기를 참조하세요.

full paper.

 

Large Language Models are Zero-Shot Reasoners

Pretrained large language models (LLMs) are widely used in many sub-fields of natural language processing (NLP) and generally known as excellent few-shot learners with task-specific exemplars. Notably, chain of thought (CoT) prompting, a recent technique f

arxiv.org

 

이 테크닉을 자신의 작업에 적용하는 경우 instruction을 customizing 하는 실험을 두려워 하지 마세요. Let's think step by step은 오히려 일반적입니다. 사용사례에 맞게 맞춤화 된 보다 엄격한 형식을 따르는 instruction을 통해 더 나은 성능을 찾을 수 있습니다. 예를 들어 더 구조화된 변형을 시도할 수 있다면 첫번째 X가 참일 수 있는 이유에 대해 Step by Step으로 생각 해 보세요.  두번째로 왜 Y가 참일 수 있는지를 step by step 으로 생각합니다. 그리고 세번쨰로 X 나 Y 중 어느게 더 나은지에 대해 step by step으로 생각하는 겁니다. 그리고 이 과정을 계속 이어나가는 예제 형식의 모델을 제공할 수도 있습니다.

예:

Using the IRS guidance below, answer the following questions using this format:
(1) For each criterion, determine whether it is met by the vehicle purchase
- {Criterion} Let's think step by step. {explanation} {yes or no, or if the question does not apply then N/A}.
(2) After considering each criterion in turn, phrase the final answer as "Because of {reasons}, the answer is likely {yes or no}."

IRS guidance:
"""
You may be eligible for a federal tax credit under Section 30D if you purchased a car or truck that meets the following criteria:
- Does the vehicle have at least four wheels?
- Does the vehicle weigh less than 14,000 pounds?
- Does the vehicle draw energy from a battery with at least 4 kilowatt hours that may be recharged from an external source?
- Was the vehicle purchased in a year before 2022?
  - If so, has the manufacturer sold less than 200,000 qualifying vehicles? (Tesla and GM have sold more than 200,000 qualifying vehicles.)
- Was the vehicle purchased in a year after 2022?
  - If so, is the vehicle present in the following list of North American-assembled vehicles? (The only electric vehicles assembled in North America are the Audi Q5, BMW 330e, BMW X5, Chevrolet Bolt EUV, Chevrolet Bolt EV, Chrysler Pacifica PHEV, Ford Escape PHEV, Ford F Series, Ford Mustang MACH E, Ford Transit Van, GMC Hummer Pickup, GMC Hummer SUV, Jeep Grand Cherokee PHEV, Jeep Wrangler PHEV, Lincoln Aviator PHEV, Lincoln Corsair Plug-in, Lucid Air, Nissan Leaf, Rivian EDV, Rivian R1S, Rivian R1T, Tesla Model 3, Tesla Model S, Tesla Model X, Tesla Model Y, Volvo S60, BMW 330e, Bolt EV, Cadillac Lyriq, Mercedes EQS SUV, and Nissan Leaf.)
"""

Question: Can I claim a federal tax credit for my Toyota Prius Prime bought in 2021?

Solution:

(1) For each criterion, determine whether it is met by the vehicle purchase
- Does the vehicle have at least four wheels? Let's think step by step.
 The Toyota Prius Prime has four wheels, so the answer is yes.
- Does the vehicle weigh less than 14,000 pounds? Let's think step by step. The Toyota Prius Prime weighs less than 14,000 pounds, so the answer is yes.
- Does the vehicle draw energy from a battery with at least 4 kilowatt hours that may be recharged from an external source? Let's think step by step. The Toyota Prius Prime has a battery with at least 4 kilowatt hours that may be recharged from an external source, so the answer is yes.
- Was the vehicle purchased in a year before 2022? Let's think step by step. The Toyota Prius Prime was purchased in 2021, which is before 2022, so the answer is yes.
- Was the vehicle purchased in a year after 2022? N/A
- If so, is the vehicle present in the following list of North American-assembled vehicles? N/A

(2) After considering each criterion in turn, phrase the final answer as "Because of {reasons}, the answer is likely {yes or no}."

Because the Toyota Prius Prime meets all of the criteria for a federal tax credit, the answer is likely yes.

 

Few-shot examples

Method

모델이 답을 추론하도록 유도하는 방법은 여러가지가 있습니다. 그 중 하나는 Jason Wei와 Denny Zhou 등이 구글에서 연구한 몇가지 예 (few-shot) 로 시연하는 것입니다. 다음은 few-shot 의 chain-of-thought 프롬프트 입니다.

Source: Chain of Thought Prompting Elicits Reasoning in Large Language Models Jason Wei and Denny Zhou et al. (2022)

 

인간 labeler가 적성한 reasoning chain의 추가 시연

 

 

Source: Chain of Thought Prompting Elicits Reasoning in Large Language Models Jason Wei and Denny Zhou et al. (2022)

(Note that it has been called into question whether pears actually float)

 

Results

초등학교 수학 문제를 테스트 한 결과, 저자들은 chain of thought 프롬프트가 해결률을 18%에서 57%로 세배 높인다는 사실을 발견했습니다.

 

Source: Chain of Thought Prompting Elicits Reasoning in Large Language Models Jason Wei and Denny Zhou et al. (2022)

 

 

수학 문제 외에도  chain of thought 프롬프트는 스포츠에 대한 이해, 동전 던지기 tracking 및 마지막 문자 연결과 관련된 질문에 대한 성과를 높였습니다. 대부분의 경우 성능 향상을 충족 시키는 데 필요한 예제가 많지 않았습니다(8 미만 정도).

 

Source: Chain of Thought Prompting Elicits Reasoning in Large Language Models Jason Wei and Denny Zhou et al. (2022)

To learn more, read the full paper.

 

Implications

Let's thin step by step 테크닉과 비교해서 few-shot example-based 접근법에는 한가지 강점은 format, length 그리고 추론의 스타일을 좀 더 쉽게 특정할 수 있다는 것입니다. 이 작업은 최종 답변을 확정하기 전에 모델이 하는 사전 작업입니다. 이것은 모델이 초기 추론을 깊게 혹은 옳은 방향이 아닌 쪽으로 할 경우 특히 도움이 됩니다.

 

Fine-tuned

Method

일반적으로 최대 성능을 얻으려면 fine-tune a custom 모델을 사용할 필요가 있습니다. 그런데 모델을 fine-tuning 하는 것은 작성하는데 비용이 드는 예제 explanation들을 수천개 이상을 사용해야 합니다.

 

2022년 Eric Zelikman과 Yuhuai We et al 은 모델을 fine-tune 하는데 사용될 수 있는 explanation 데이터 세트를 생성하기 위한 few-shot 프롬프트를 사용하기 위한 아주 현명한 procedure를 발표했습니다. 그것은 후보 explanation들을 생성하기 위한 few-shot 프롬프트를 사용하자는 아이디어 입니다. 그 후보 explanation들 중 정답을 생산한 explanation들만 keep 한다는 아이디어죠.

그 다음 오답에 대한 추가적인 explanation들을 얻기 위해 few-shot 프롬프트를 retry 하는 겁니다. 정답은 질문의 일 부분으로서 제공되게 됩니다. 저자들은 그 절차를 STaR(Self-taught Reasoner) 절차라고 부릅니다.

 

Source: STaR: Bootstrapping Reasoning With Reasoning by Eric Zelikman and Yujuai Wu et al. (2022)

 

STaR: Bootstrapping Reasoning With Reasoning

Generating step-by-step "chain-of-thought" rationales improves language model performance on complex reasoning tasks like mathematics or commonsense question-answering. However, inducing language model rationale generation currently requires either constru

arxiv.org

이 기술을 사용하면 수천개의 example explanation들을 작성할 필요 없습니다. 그러기 위해서 fine-tune의 강점과 chain-of-thought 프롬프팅의 장점을 결합할 수 있습니다.

 

Results

저자들이 이 기술을 Common Sense Q&A 데이타 세트에 적용 했을 때 그들은 이 STaR이 chain-of-thought 프롬프트만 사용했을 때 와 fine-tuning 만을 사용했을 때 보다 성능이 더 뛰어나게 나타난 다는 것을 발견했습니다. (73% > 37% , 73% > 60%)

 

Source: STaR: Bootstrapping Reasoning With Reasoning by Eric Zelikman and Yujuai Wu et al. (2022)

To learn more, read the full paper

 

STaR: Bootstrapping Reasoning With Reasoning

Generating step-by-step "chain-of-thought" rationales improves language model performance on complex reasoning tasks like mathematics or commonsense question-answering. However, inducing language model rationale generation currently requires either constru

arxiv.org

 

Implications

fine-tuning 데이터세트를 확장하거나 수정하기 위해 few-shot 프롬프트를 사용하는 것은 explanation 작성을 뛰어 넘어 일반화할 수 있게 해 주는 아이디어 입니다. 예를 들어 여러분이 train 하기 위한 구조화 되지 않은 텍스트를 많이 가지고 있는 경우 프롬프트를 이용해서 구조화되지 않은 텍스트에서 구조화 된 데이터 세트를 추출한 다음 그 구조화 된 데이터 세트에서 custom 모델을 fine-tune 하는 것입니다.

 

Extensions to chain-of-thought prompting

이 외에 chain-of-thought 의 확장관련한 발표도 몇개 더 있습니다.

 

Selection-inference prompting

Method

Published by Antonia Creswell et al., one extension of the chain-of-thought technique is to split the single prompt for generating explanations and answers into smaller parts. First, a prompt selects a relevant subset of facts from the text ('selection prompt'). Then, a second prompt infers a conclusion from the selected facts ('inference prompt'). These prompts are then alternated in a loop to generate multiple steps of reasoning and eventually land on a final answer. The authors illustrate the idea in the following figure:

 

Antonia Creswell 등이 발표한 chain-of-thought 테크닉의 확장은 explanation들을 생성하기 위해 단일 프롬프트를 분할하는 것입니다. 그 답변들은 좀 더 작은 부분으로 분할 되는 것이죠. 우선 프롬프트는 텍스트 (selection prompt)로부터 연관된 fact의 subset를 선택합니다. 그런 다음 두번째 프롬프트가 선택된 사실(inference prompt) 에서 결론을 추론합니다. 그런 다음 이러한 프롬프트는 루프에서 번갈아 가며 여러단계의 추론을 생성하고 결국 최종 답변에 도달합니다. 저자는 아래 그림으로 그 아이디어를 설명합니다.

 

Source: Selection-Inference: Exploiting Large Language Models for Interpretable Logical Reasoning by Antonia Creswell et al. (2022)

 

Selection-Inference: Exploiting Large Language Models for Interpretable Logical Reasoning

Large language models (LLMs) have been shown to be capable of impressive few-shot generalisation to new tasks. However, they still tend to perform poorly on multi-step logical reasoning problems. Here we carry out a comprehensive evaluation of LLMs on 50 t

arxiv.org

 

Results

7B-parameter 모델을 적용 했을 때 저자들은 selection-interference 프롬프팅이 bAbi 와 Proof Writer benchmark task들에 대해 chain-of-thought 프롬프팅과 비교해서 대체적으로 성능이 향상된다는 것을 발견했습니다.

(bAbi와 Proof Writer benchmark task들은 둘 다 더 긴 일련의 추론 단계들이 더 필요합니다.)

그들이 달성한 최고의 성능은 fine-tuning과 함께 selection-interferne 프롬프팅을 결합했을 때 달성했습니다.

Source: Selection-Inference: Exploiting Large Language Models for Interpretable Logical Reasoning by Antonia Creswell et al. (2022)

 

Selection-Inference: Exploiting Large Language Models for Interpretable Logical Reasoning

Large language models (LLMs) have been shown to be capable of impressive few-shot generalisation to new tasks. However, they still tend to perform poorly on multi-step logical reasoning problems. Here we carry out a comprehensive evaluation of LLMs on 50 t

arxiv.org

 

Implications

이러한 benchmark들로부터 얻는 이득은 컸고, 특히 더 긴 추론 sequence들이 필요한 경우에 선택 됐습니다. 많은 단계의 추론을 요구하지 않는 문제들에 대해서는 그 이득이 더 적을 수 있습니다.

 

결과는 large language 모델들에 대한 몇가지 일반적인 lessons를 강조합니다.

첫번째, 복잡한 작업을 더 작은 작업으로 나누는 것은 안정성과 성능을 향상시키는 좋은 방법 입니다.

작업이 더 atomic 할 수록 모델이 에러를 낼만한 공간이 더 줄어들게 되는 겁니다. 

두번째 최대 성능을 얻는 것은 종종 fine-tuning을 당신 이 선택한 다른 접근법과 결합함으로서 얻어질 수 있다는 것을 의미합니다.

 

좀 더 자세한 사항은 아래 문서를 참조하세요.  full paper

 

Selection-Inference: Exploiting Large Language Models for Interpretable Logical Reasoning

Large language models (LLMs) have been shown to be capable of impressive few-shot generalisation to new tasks. However, they still tend to perform poorly on multi-step logical reasoning problems. Here we carry out a comprehensive evaluation of LLMs on 50 t

arxiv.org

 

Faithful reasoning architecture

selection-inference 프롬프팅 테크닉을 발표한 다음 몇달 후 저자는 다음 논문에서 테크닉을 확장할 수 있는 다음과 같은 아이디어를 발표 했습니다.

 

  • figuring out when the selection-inference cycle should stop or continue
  • selection-inference 사이클이 언제 중단되고 언제 계속 되어야 하는지 알아내기
  • adding a value function to help search over multiple reasoning paths
  • 여러 추론 경로들에 대해 검색하는 것을 돕기 위한 value function 추가하기
  • reducing hallucination of fake facts by fine-tuning a model to reason about sentence labels (e.g., sen1) rather than writing out the sentences themselves
  • 문장 자체를 작성하는 대신 문장 레이블에 대한 추론을 위한 모델을 fine-tuning 함으로서 fake fact들의 hallucination (환각) 를 감소시키기

Method

In the original selection-inference technique, specialized 'selection' and 'inference' prompts are alternated to select facts and make inferences from those facts, combining to generate a sequence of reasoning steps.

 

오리지널 selection-inference 테크닉에서는 특별한 'selection' 과 'inference' (추론) 프롬프트 들은 fact들을 선택하는 것과 그러한 fact들을 가지고 추론을 만드는 것을 번갈아 가면서 하고 이 추론 과정들의 sequence를 발생시키기 위해 결합합니다.

저자들은 이 테크닉을 2개의 추가 구성 요소들로 확장합니다.

 

첫째, 저자들은 각각의 추론 단계 이후 'halter' 모델을 추가합니다. 이것은 이 추론들이 그 질문에 대한 대답으로서 충분한 것인지를 질문하기 위함입니다.

 

이 halter 모델은 몇가지 장점들이 있습니다.

 

  • it can tell the selection-inference process to stop or keep going, as necessary.
  • 이것은 필요에 따라 중지 하거나 아니면 계속 진행하기 위한 selection-inference 프로세스인지 여부를 알려 줄 수 있습니다.
  • if the process never halts, you'll get no answer, which is often preferable to a hallucinated guess
  • 만약 그 프로세스가 중단되지 않는다면 답을 얻지 못할 것입니다. 이것이 hallucinated guess 보다 나은 경우가 있기는 합니다.

Source: Faithful Reasoning Using Large Language Models by Antonia Creswell et al. (2022)

 

Faithful Reasoning Using Large Language Models

Although contemporary large language models (LMs) demonstrate impressive question-answering capabilities, their answers are typically the product of a single call to the model. This entails an unwelcome degree of opacity and compromises performance, especi

arxiv.org

 

Source: Faithful Reasoning Using Large Language Models by Antonia Creswell et al. (2022)

 

Faithful Reasoning Using Large Language Models

Although contemporary large language models (LMs) demonstrate impressive question-answering capabilities, their answers are typically the product of a single call to the model. This entails an unwelcome degree of opacity and compromises performance, especi

arxiv.org

 

두번쨰로 저자는 reasoning step (추론 단계)의 품질을 평가하고 여러 reasoning trajectory들을 검색하는데 사용되는 value 함수를 추가합니다. 이는 신뢰성(안정성)을 증가시키기 위한 일반적인 주제에 대한 대답입니다.

모델에서 single answer를 발생시키는 대신 여러 답변들을 발생시키고 여러 종류의 value function/discriminator/verifier 모델을 사용하는 겁니다.

 

Source: Faithful Reasoning Using Large Language Models by Antonia Creswell et al. (2022)

 

Faithful Reasoning Using Large Language Models

Although contemporary large language models (LMs) demonstrate impressive question-answering capabilities, their answers are typically the product of a single call to the model. This entails an unwelcome degree of opacity and compromises performance, especi

arxiv.org

 

이 두가지 확장에다가 추가적으로 저자들은 또한 fake fact들의 hallucination을 감소시키기 위한 트릭을 사용합니다. 모델에게 factual sentence들을 작성하도록 요구하는 대신 sentence label (e.g. sen1)들로 작업을 하도록 모델을 fine-tune 합니다. 이렇게 하면 프롬프트 context에 언급되지 않은 fake fact들을 hallucinating 하는 것을 방지하는데 도움이 됩니다.

Source: Faithful Reasoning Using Large Language Models by Antonia Creswell et al. (2022)

 

Faithful Reasoning Using Large Language Models

Although contemporary large language models (LMs) demonstrate impressive question-answering capabilities, their answers are typically the product of a single call to the model. This entails an unwelcome degree of opacity and compromises performance, especi

arxiv.org

Results

저자들은 두가지 benchmark들에 대한 자신들의 테크닉을  평가했습니다. 이 두가지 benchmark들은 ProofWriter task (not shown) 와 EntailmentBankQA (shown) 가 그 두가지 benchmark 들인데요. 

이 기술은 특히 더 어려운 추론 문제들에 대한 정확도를 높였습니다.

 

Source: Faithful Reasoning Using Large Language Models by Antonia Creswell et al. (2022)](https://arxiv.org/abs/2208.14271)

 

Faithful Reasoning Using Large Language Models

Although contemporary large language models (LMs) demonstrate impressive question-answering capabilities, their answers are typically the product of a single call to the model. This entails an unwelcome degree of opacity and compromises performance, especi

arxiv.org

또한 그들의 sentence label manipulation 트릭은 hallucination을 본질적으로 제거했습니다.

Source: Faithful Reasoning Using Large Language Models by Antonia Creswell et al. (2022)](https://arxiv.org/abs/2208.14271)

 

Faithful Reasoning Using Large Language Models

Although contemporary large language models (LMs) demonstrate impressive question-answering capabilities, their answers are typically the product of a single call to the model. This entails an unwelcome degree of opacity and compromises performance, especi

arxiv.org

 

Implications

이 논문은 large language 모델의 신뢰도를 개선시키는데 도움이 되는 여러가지 배울점들을 설명합니다.

  • Split complex tasks into smaller, more reliable subtasks
  • 복잡한 작업을 더 작고 안정적인 하위 작업으로 분할한다.
  • Generate your answer in a step-by-step fashion, evaluating it along the way
  • 스텝 바이 스텝 방식으로 답을 생성하고 그 과정에서 답을 평가한다.
  • Generate many possible answers and use another model or function to pick the ones that look best
  • 많은 가능한 답을 생성하고 그 중 가정 좋은 답을 다른 모델이나 function을 사용해서 선택한다.
  • Reduce hallucination by constraining what the model can say (e.g., by using sentence labels instead of sentences)
  • sentence 가 아니라 sentence label을 사용함으로서 모델의 말에 제한을 가함으로서 hallucination을 줄입니다.
  • Maximize performance of models by fine-tuning them on specialized tasks
  • 특정 임무들에 대해 fine-tuning 함으로서 그 모델의 성능을 최대화 합니다.

To learn more, read the full paper.

 

Selection-Inference: Exploiting Large Language Models for Interpretable Logical Reasoning

Large language models (LLMs) have been shown to be capable of impressive few-shot generalisation to new tasks. However, they still tend to perform poorly on multi-step logical reasoning problems. Here we carry out a comprehensive evaluation of LLMs on 50 t

arxiv.org

 

Least-to-most prompting

selectio-inference 에서는 잘 작동 하지만 긴 reasoning chains 에서는 제대로 작동 안하는 것에 더해서 chain-of-thought 프롬프팅은 task는 긴데 examples 는 짧을 때 특히 어려움을 겪을 수도 있습니다.

 

Method

Least-to-most 프롬프팅은 reasoning 임무를 좀 더 작고 신뢰할 수 있는 subtasks들로 분할하는 또 다른 기술입니다. 

이 아이디어는 To solve {question}, we need to first solve:   같은 프롬프팅에 의해 모델로부터 subtask를 반복하는 그런 아이디어 입니다. 그런 다음 해당 subtask를 사용하여 모델은 해결책을 만들어낼 수 있게 되는 겁니다.

솔루션 (해결책)은 원래의 question (질문) 에 추가 되고 이 프로세스는 최후 답변이 만들어 질 때까지 반복 됩니다.

 

Source: Least-to-most Prompting Enables Complex Reasoning in Large Language Models by Denny Zhou et al. (2022)

 

Least-to-Most Prompting Enables Complex Reasoning in Large Language Models

Although chain-of-thought prompting has shown impressive results on many natural language reasoning tasks, it often performs poorly on tasks which need to solve problems harder than the demonstration examples. To tackle such easy-to-hard generalization iss

arxiv.org

Results

code-davinci-002(코드에 최적화되어 있지만 여전히 텍스트를 이해할 수 있음)를 사용하여 긴 inference chain을 포함하는 벤치마크에 적용했을 때 저자들은 16%에서 99.7%까지의 신뢰도를 얻을 수 있었다고 합니다.

Source: Least-to-most Prompting Enables Complex Reasoning in Large Language Models by Denny Zhou et al. (2022)

 

Least-to-Most Prompting Enables Complex Reasoning in Large Language Models

Although chain-of-thought prompting has shown impressive results on many natural language reasoning tasks, it often performs poorly on tasks which need to solve problems harder than the demonstration examples. To tackle such easy-to-hard generalization iss

arxiv.org

Implications

위의 least-to-most 프롬프팅 방법으로 얻은 신뢰도 상승은 인상적이지만 그 방법은 긴 reasoning chains가 요구되는 아주 좁은 임무들의 세트들 위에서 측정됩니다.

 

아직 그것은 다음과 같은 방법들에 의해 신뢰도를 제고하는 common theme을 illustrate 합니다.

(a) 복잡한 임무들을 작은 subtasks들로 나눈다. 그리고 (b) 답을 찾아내기 위해 좀 더 많은 시간과 공간을 모델에게 제공한다.

 

To learn more, read the full paper.

 

Least-to-Most Prompting Enables Complex Reasoning in Large Language Models

Although chain-of-thought prompting has shown impressive results on many natural language reasoning tasks, it often performs poorly on tasks which need to solve problems harder than the demonstration examples. To tackle such easy-to-hard generalization iss

arxiv.org

 

Related ideas

Maieutic prompting

Method

정답을 받을 확률을 최대화 하려는 이전의 테크닉들과는 달리 다른 접근법은 (정답이든 오답이든) 가능한 explanation들 의 tree를 발생시키도록 하기 위해 GPT-3를 사용합니다. 그리고 나서 어떤 세트가 correct한지 를 알아내기 위해 그들의 관계들을 분석합니다. 이 테크닉은 2022년 5월에 정재훈 등에 의해 만들어진 coined maieutic 프롬프팅입니다.  (maieutic은 아이디어를 이끌어내기 위해 질문하는 소크라테스 식 방법과 관련 돼 있습니다.)

이 방법은 복잡합니다. 아래와 같이 작동합니다.

  • First, build a maieutic tree, where each node is a statement that could be true or false:
  • 첫째로 maieutic tree를 만듭니다. 각 노드는 참이나 거짓이 될 수 있는 하나의 statement 입니다.  
    • Start with a multiple-choice question or true/false statement (e.g. War cannot have a tie)
    • 객관식 질문 또는 참/거짓을 답할 수 있는 질문으로 시작합니다. (예. 전쟁은 무승부일 수 없다)
    • For each possible answer to the question, use the model to generate a corresponding explanation (with a prompt like War cannot have a tie? True, because)
    • 질문에 대해 각각의 가능한 answer 들에 대해 각각 상응하는 explanation을 생성하도록 모델을 사용합니다. (전쟁은 무승부일 수 없다? 참, 왜냐하면... 같은 프롬프트가 될 것입니다.)
    • Then, prompt the model with the question and the generated explanation, and ask it to produce the answer. If reversing the explanation (with a prefix like It is wrong to say that {explanation}) reverses the answer, then the explanation is considered 'logically integral.'
    • 그런 다음 질문과 생성된 explanation으로 모델의 프롬프트를 만듭니다. 그리고 나서 답을 만들도록 요청합니다. 만약 설명을 뒤집으면 (예를 들어 {explanation} 이라고 얘기하면 틀립니다와 같은 prifix를 만드는 방법)답도 뒤집어 집니다.  그러면 explanation은 "logically integral" 로 간주되게 됩니다.
    • If an explanation is not logically integral, then repeat the above process recursively, with each explanation turned into a True or False question, and generate more explanations for each new question.
    • 만약 explanation이 logically integral 되지 않았다면 위의 과정을 재귀적으로 반복합니다. (이 때 각각의 explanation은 True 나 False question으로 바뀌게 되는 것이죠. 그리고 각각의 새로운 질문들에 대한 좀 더 많은 explanation들을 생성합니다.
    • After all of the recursive explaining is done, you end up with a tree of explanations, where each leaf on the tree has the property that reversing the explanation reverses the model's answer.
    • 이렇게 모든 재귀적인 explaining이 종류된 후에 explanation tree를 얻게 됩니다. 나무에 있는 각각의 leaf (잎)들은 explanation을 뒤집으면 모델의 답도 뒤집어지는 그런 프로퍼티를 갖게 됩니다.
  • Second, convert the tree into a graph of relations:
  • 두번째, 그 tree를 관계 그래프로 변환합니다. 
    • For each node in the tree, calculate the model's relative belief in each node (inferred from the probability of getting an answer of True to given an explanation)
    • 그 나무의 각각의 노드들은 각 노드에 대한 모델의 상대적 신뢰도를 계산하게 됩니다. (주어진 explanation에 True라는 답을 얻기 위한 추정치로 부터 추론 합니다.)
    • For each pair of nodes in the tree, use the model to identify whether they are entailed (implied) or contradicted
    • 그 나무에 있는 노드들의 각 쌍들에 대해 그 쌍들이 그것들이 entailed (implied) 인지 contradicted (모순)인지의 여부를 모델을 사용하여 판정합니다.
  • Third, find the most consistent set of beliefs and take those to be true:
  • 세번째, 가장 일관성 있는 belief들을 찾아내서 그것들을 true라고 작업합니다. 
    • Specifically, using the strength of belief in each node and the logical relationships between them, formulate the problem as a weighted maximum satisfiability problem (MAX-SAT)
    • 특히 각 노드의 신뢰도의 강도와 그들간의 논리적인 관계를 사용하여 weighted maximum satisfiability problem (MAX-SAT)로 그 문제를 공식화 합니다.
    • Use a solver to the find the most self-consistent set of beliefs, and take those as true
    • Solver를 사용하여 가장 self-consistent 한 belief들의 세트를 찾아 냅니다. 그리고 그것들을 true로 취합니다.

 

Source: Maieutic Prompting: Logically Consistent Reasoning with Recursive Explanations by Jaehun Jung et al. (2022)

 

Maieutic Prompting: Logically Consistent Reasoning with Recursive Explanations

Despite their impressive capabilities, large pre-trained language models (LMs) struggle with consistent reasoning; recently, prompting LMs to generate explanations that self-guide the inference has emerged as a promising direction to amend this. However, t

arxiv.org

Results

Source: Maieutic Prompting: Logically Consistent Reasoning with Recursive Explanations by Jaehun Jung et al. (2022)

 

Maieutic Prompting: Logically Consistent Reasoning with Recursive Explanations

Despite their impressive capabilities, large pre-trained language models (LMs) struggle with consistent reasoning; recently, prompting LMs to generate explanations that self-guide the inference has emerged as a promising direction to amend this. However, t

arxiv.org

Implications

복잡한 것 이외에도 이 방법은 한가지 한계가 있습니다. 그것은 객관식으로 제시할 수 있는 질문에만 적용되는 것으로 보인다는 겁니다.

To learn more, read the full paper.

 

Maieutic Prompting: Logically Consistent Reasoning with Recursive Explanations

Despite their impressive capabilities, large pre-trained language models (LMs) struggle with consistent reasoning; recently, prompting LMs to generate explanations that self-guide the inference has emerged as a promising direction to amend this. However, t

arxiv.org

 

Extensions

Method

descrete set의 답변이 있는 task에 대해 신뢰도를 제고시킬 수 있는 간단한 방법 중 하나는 모델에서 여러 explanation 및 답변을 샘플링 한 다음에 (positive temperature를 사용) 가장 자주 등장하는 답변을 최종 답변으로 선택하는 겁니다.

Source: Self-Consistency Improves Chain of Thought Reasoning in Language Models by Xuezhi Wang et al. (2022)

 

Self-Consistency Improves Chain of Thought Reasoning in Language Models

Chain-of-thought prompting combined with pre-trained large language models has achieved encouraging results on complex reasoning tasks. In this paper, we propose a new decoding strategy, self-consistency, to replace the naive greedy decoding used in chain-

arxiv.org

 

Results

이 테크닉은 여러 수학과 reasoning benchmark들에서 정확도를 1~24 퍼센트 향상 시켰습니다. (아래 도표는 구글의 LamDa 모델의 결과 입니다. 구글의 larger PaLM 모델을 사용했습니다. 기준선은 높지만 그로부터 얻는 것은 약간 좀 더 작았습니다.)

Source: Self-Consistency Improves Chain of Thought Reasoning in Language Models by Xuezhi Wang et al. (2022)

 

Self-Consistency Improves Chain of Thought Reasoning in Language Models

Chain-of-thought prompting combined with pre-trained large language models has achieved encouraging results on complex reasoning tasks. In this paper, we propose a new decoding strategy, self-consistency, to replace the naive greedy decoding used in chain-

arxiv.org

 

Implications

이 테크닉은 구현이 간단하지만 비용이 많이 들 수 있습니다. 10개의 답변 세트를 생성하면 비용이 10배 증가합니다.

 

또한 많은 이러한 기술들과 마찬가지로 제한된 답변 세트가 있는 작업에만 적용할 수 있습니다. 각 답변이 유니크한 (시를 쓰는 것 처럼) 각각의 답변이 있는 open-ended 작업에 대해 가장 일반적인 답변을 하나 선택한다는 것은 과연 유의미한 건가에 대해서는 확언할 수는 없습니다.

 

마지막으로, 이 테크닉은 답을 얻기 위해 여러 경로나 여러 구문들이 있는 경우에 가장 유용합니다. 답변에 이르는 경로가 오직 하나 뿐이면 이 테크닉은 전혀 도움이 되지 않을 수 있습니다. 극단적인 예로 이 작업이 single token answer를 생성하는 것이라면 100개의 생성된 토큰 중 가장 일반적인 것을 가져오는 것은 가장 높은 logprobs(temperature=0 으로 생성된) 로 생성된 토큰을 가져오는 것과 다른 것이 없습니다.

 

Verifiers

작업 성능을 개선하기 위한 또 다른 주요한 테크닉은 main generative 모델의 output들을 평가하기 위한 verifier(검증자) 혹은 discriminator(판별자) 모델을 훈련 시키는 겁니다. 이 판별자가 output을 reject 한다면 acceptable output을 얻을 때까지 generative 모델을 resample 할 수 있습니다. 많은 경우 답을 만드는 것 보다 답을 판단하는 것이 더 쉽기 때문에 이 방법의 power를 설명하는데 도움이 됩니다.

 

Method

2021년에 OpenAI 연구자들은 이 테크닉을 아래와 같은 절차들을 사용해서 초등학교 수학 문제에 적용했습니다.

 

  • First, they fine-tuned a model on questions and solutions
  • 우선 질문과 솔루션에 대한 모델을 fine-tune 합니다.
  • For each problem in the training set, they generated 100 solutions
  • 훈련 세트에 있는 각 문제들에 대해 100개의 솔루션들을 생성합니다.
  • Each of those 100 solutions was automatically labeled as either correct or incorrect, based on whether the final answer was correct
  • 그 100개의 솔루션 각각은 정답인지 오답인지 자동적으로 label 됩니다. (정답/오답 근거는 최종 대답이 올바른지의 여부에 근거합니다.)
  • Using those solutions, with some labeled correct and some labeled incorrect, they fine-tuned a verifier model to classify whether a question and candidate solution was correct or incorrect
  • 이러한 솔루션을 사용하여 만든 어떤 레이블들은 옳고 또 어떤 레이블들은 그렇지 않았습니다. 그들은 문제와 후보 솔루션이 옳은지 옳지 않은지를 구별하는 verifier 모델을 fine-tune 했습니다.
  • Finally, at test time, the generative model creates 100 solutions to each problem, and the one with the highest score according to the verifier model is picked as the final answer
  • 마지막으로 테스트 할 때 generative 모델은 각 문제당 100개의 솔루션들을 만들었습니다. 그리고 그 verifier 모델에 의해 가장 높은 점수를 얻은 솔루션을 최종 답변으로 선택합니다.

Source: Training Verifiers to Solve Math Word Problems by Karl Cobbe et al. (2021)

 

Training Verifiers to Solve Math Word Problems

State-of-the-art language models can match human performance on many tasks, but they still struggle to robustly perform multi-step mathematical reasoning. To diagnose the failures of current models and support research, we introduce GSM8K, a dataset of 8.5

arxiv.org

 

Results

175B GPT-3 모델과 8천개의 training example들을 사용하여 이 테크닉은 초등학교 수학 문제에 대한 답변 정확도를 33%에서 55%로 높였습니다.

 

Source: Training Verifiers to Solve Math Word Problems by Karl Cobbe et al. (2021)

 

Training Verifiers to Solve Math Word Problems

State-of-the-art language models can match human performance on many tasks, but they still struggle to robustly perform multi-step mathematical reasoning. To diagnose the failures of current models and support research, we introduce GSM8K, a dataset of 8.5

arxiv.org

 

Implications

self-consistency 테크닉과 비슷하게 이 방법은 작업당 100개의 솔루션들을 생성하기 위해 100배의 비용이 더 들 수 있습니다. 

 

Theories of reliability

위에서 다룬 테크닉들은 그 접근 방식들이 다르지만 목표는 모두 복잡한 작업에 대한 신뢰도(안정성)를 개선시키기 위한 것들입니다. 그 테크닉들은 대개 아래와 같은 방식으로 작업을 수행합니다.

 

  • decomposing unreliable operations into smaller, more reliable operations (e.g., selection-inference prompting)
  • 신뢰도가 적은 작업을 더 작고 신뢰도가 높은 작업으로 분할 합니다. (예. selection-inference 프롬프팅)
  • using multiple steps or multiple relationships to make the system's reliability greater than any individual component (e.g., maieutic prompting)
  • 개별적인 component보다 더 높은 시스템의 신뢰도를 만들기 위해 여러 단계 혹은 여러 관계들을 사용합니다. (예 maieutic 프롬프팅)

Probabilistic graphical models

덜 신뢰할 수 있는 component들로부터 신뢰할 수 있는 시스템을 만들기 위한 이 패러다임은 probabilistic (확률적) 프로그래밍을 연상시킵니다. 그리고 그 분야의 많은 분석 기술들 또한 여기에 적용될 수 있습니다.

 

David Dohan 등이 작성한 Language Model Cascades 라는 논문에서는 확률적 그래픽 모델의 패러다임으로 위의 기술들을 해석합니다.

 

Chain of thought prompting

Source: Language Model Cascades by David Dohan et al. (2022)

 

Language Model Cascades

Prompted models have demonstrated impressive few-shot learning abilities. Repeated interactions at test-time with a single model, or the composition of multiple models together, further expands capabilities. These compositions are probabilistic models, and

arxiv.org

Fine-tuned chain of thought prompting / Self-taught reasoner

 

Source: Language Model Cascades by David Dohan et al. (2022)

 

Language Model Cascades

Prompted models have demonstrated impressive few-shot learning abilities. Repeated interactions at test-time with a single model, or the composition of multiple models together, further expands capabilities. These compositions are probabilistic models, and

arxiv.org

Selection-inference prompting

 

Source: Language Model Cascades by David Dohan et al. (2022)

 

Language Model Cascades

Prompted models have demonstrated impressive few-shot learning abilities. Repeated interactions at test-time with a single model, or the composition of multiple models together, further expands capabilities. These compositions are probabilistic models, and

arxiv.org

Verifiers

Source: Language Model Cascades by David Dohan et al. (2022)

 

Language Model Cascades

Prompted models have demonstrated impressive few-shot learning abilities. Repeated interactions at test-time with a single model, or the composition of multiple models together, further expands capabilities. These compositions are probabilistic models, and

arxiv.org

 

Implications

이러한 테크닉들을 확률적 그래픽 모델로서 공식화 하는 것은 특정 문제를 해결하는데 곧바로 유용한 방법으로 사용할 수는 없을 수 있습니다. 하지만 이 프레임워크는 새로운 기술을 선택, 결합 그리고 발견하는데 도움이 될 수 있습니다.

 

Closing thoughts

Large language 모델을 연구하는 것은 매우 활발하고 빠르게 발전하고 있습니다. 연구자들은 계속해서 모델을 개선할 뿐만 아니라 모델을 가장 잘 활용하는 방법에 대한 이해도 지속적으로 향상 시키고 있습니다. 위에서 공유한 모든 논문은 지난 12개월 이내에 출판된 것이라는 것이 최근에 더욱 활발하고 빠르게 발전하고 있다는 것을 보여 줍니다. (이 글은 2022년 9월에 작성함)

 

앞으로 더 나은 모델과 더 나은 기술이 발표 될 것으로 기대합니다. 여기에서 다룬 특정 기술이 미래의 새로운 모범 사례에 의해 잊혀지더라도 그 모델들에서 제시한 일반 원칙은 다른 전문가들의 유용한 도구의 핵심 개념으로 남을 것입니다.

 

Bibliography

Lesson                                                                                         Paper                                                                       Date

Break complex tasks into simpler subtasks (and consider exposing the intermediate outputs to users) AI Chains: Transparent and Controllable Human-AI Interaction by Chaining Large Language Model Prompts 2021 Oct
You can improve output by generating many candidates, and then picking the one that looks best Training Verifiers to Solve Math Word Problems 2021 Oct
On reasoning tasks, models do better when they reason step-by-step before answering Chain of Thought Prompting Elicits Reasoning in Large Language Models 2022 Jan
You can improve step-by-step reasoning by generating many explanation-answer outputs, and picking the most popular answer Self-Consistency Improves Chain of Thought Reasoning in Language Models 2022 Mar
If you want to fine-tune a step-by-step reasoner, you can do it with multiple-choice question & answer data alone STaR: Bootstrapping Reasoning With Reasoning 2022 Mar
The step-by-step reasoning method works great even with zero examples Large Language Models are Zero-Shot Reasoners 2022 May
You can do better than step-by-step reasoning by alternating a ‘selection’ prompt and an ‘inference’ prompt Selection-Inference: Exploiting Large Language Models for Interpretable Logical Reasoning 2022 May
On long reasoning problems, you can improve step-by-step reasoning by splitting the problem into pieces to solve incrementally Least-to-most Prompting Enables Complex Reasoning in Large Language Models 2022 May
You can have the model analyze both good and bogus explanations to figure out which set of explanations are most consistent Maieutic Prompting: Logically Consistent Reasoning with Recursive Explanations 2022 May
You can think about these techniques in terms of probabilistic programming, where systems comprise unreliable components Language Model Cascades 2022 Jul
You can eliminate hallucination with sentence label manipulation, and you can reduce wrong answers with a 'halter' prompt Faithful Reasoning Using Large Language Models 2022 Aug

 

 

반응형
이전 1 다음