self refine
1.0.0
Self-Refine을 통해 LLM은 작업에 대한 피드백을 생성하고 이를 사용하여 결과를 개선하고 이 프로세스를 반복할 수 있습니다.
목차
스톡스의 정리 예
유니콘의 예
prompt-lib
설치할 수 있습니다. git clone https://github.com/reasoning-machines/prompt-lib
pip install prompt-lib/
기본 설정에 따라 다음을 사용하여 PYTHONPATH를 설정할 수 있습니다.
export PYTHONPATH= " .:../:.:src:../:../../:.:prompt-lib "
python -u src/acronym/run.py " Using language models of code for few-shot commonsense "
0 INIT > Using language models of code for few - shot commonsense
0 GEN > CLoCK
0 SCORES > * Ease of pronunciation : CLoCK is pronounced " clah-k " . This is easy acronym to pronounce . 4 / 5
* Ease of spelling : CLoCK is easy to spell . 5 / 5
* Relation to title : CLoCK stands for " Code Language Models of Commonsense Knowledge " which is related to the title . 5 / 5
* Positive connotation : CLoCK is a positive acronym . It implies accuracy and efficiency . 5 / 5
* Well - known : CLoCK is not a well - known acronym . 2 / 5
* Total score : 21 / 25
1 GEN > CMNSC
1 SCORES > * Ease of pronunciation : CMNSC is pronounced " see-min-es-see " . This is a difficult acronym to pronounce . 1 / 5
* Ease of spelling : CMNSC is difficult to spell . 1 / 5
* Relation to title : CMNSC stands for " Commonsense " which is related to the title . 4 / 5
* Positive connotation : CMNSC is a neutral acronym . 3 / 5
* Well - known : CMNSC is not a well - known acronym . 1 / 5
* Total score : 10 / 25
2 GEN > COMMIT
2 SCORES > * Ease of pronunciation : COMMIT is pronounced " com-mit " . This is an easy acronym to pronounce . 4 / 5
* Ease of spelling : COMMIT is easy to spell . 5 / 5
* Relation to title : COMMIT stands for " Commonsense Model of Code for Intuitive Training " which is related to the title . 5 / 5
* Positive connotation : COMMIT is a positive acronym . It implies commitment and dedication . 5 / 5
* Well - known : COMMIT is not a well - known acronym . 2 / 5
* Total score : 21 / 25
PYTHONPATH= " . " python -u src/responsegen/run.py --output < OUTPUT FILE > --size < DATA SIZE >
PYTHONPATH= " . " python -u src/readability/readability.py --output < OUTPUT FILE >
PYTHONPATH= " . " python -u src/readability/{count_comment | count_function | count_meaningful_var}.py --file < INPUT FILE >
data/prompt/commongen
에 있습니다. 다음 명령을 실행하여 데이터를 다운로드할 수 있습니다. python -u src/commongen/run.py cmd stair bubble team dryer puppy aliens cat
python -u src/gsm/run.py
출력은 data/tasks/gsm/gsm_outputs.jsonl
에 저장됩니다.
출력을 평가하려면 다음을 수행하십시오.
python src/gsm/gsm_selfref_eval.py --path data/tasks/gsm/gsm_outputs.jsonl
data/tasks/gsm/gsm_outputs.jsonl.reports.txt
)를 생성합니다. python -u src/sentiment_transfer_sr/run.py data/tasks/yelp/yelp-extreme.jso
nl 4 none
data/tasks/yelp/
에 저장됩니다. python -u src/pie/run.py --slow_programs_file data/tasks/pie/codenet-python-test-1k.jsonl --max_attempts 4 --outfile data/tasks/pie/output --feedback_type rich
Init
: 작업을 초기화하는 데 사용됩니다. 이것이 초기 출력이 생성되는 방식입니다.
Feedback
: 중간 결과에 대해 모델로부터 피드백을 받는 데 사용됩니다.
Iterate
: 피드백을 기반으로 모델에서 다음 반복을 가져오는 데 사용됩니다.
모든 작업에는 프롬프트를 초기화하고 작업을 실행하는 run.py
가 있습니다.
예를 들어 commongen에 대한 프롬프트는 다음과 같습니다.
python src/commongen/task_init.py
python src/commongen/feedback.py
python src/commongen/task_iterate.py
당사 웹사이트에서도 이러한 메시지를 볼 수 있습니다.
@misc{madaan2023selfrefine,
title = {Self - Refine: Iterative Refinement with Self - Feedback},
author = {Aman Madaan and Niket Tandon and Prakhar Gupta and Skyler Hallinan and Luyu Gao and Sarah Wiegreffe and Uri Alon and Nouha Dziri and Shrimai Prabhumoye and Yiming Yang and Sean Welleck and Bodhisattwa Prasad Majumder and Shashank Gupta and Amir Yazdanbakhsh and Peter Clark},
year = { 2023 },
eprint = { 2303 . 17651 },
archivePrefix = {arXiv},
primaryClass = { cs . CL }
}
흐름도 LR
생성기 -->|초기화| 정제되지 않은
Critic_1 --> Critique_fb
... --> Critique_fb
Critic_k --> Critique_fb
Critique_fb --> 정제되지 않음{수정할 출력}
정제되지 않은 것 --> 정제된 것
구체화 --> |R: y_t, x, fb| Refined_Output{정제된 출력}
Refined_Output --> |중지 기준이 충족되지 않음| 정제되지 않은