LLM ã«ããã³ãããã¥ãŒãã³ã°ãããŠããã ãææ³ãŸãšã
å®ãããã¯ãã«ãããããã³ãããã¥ãŒãã³ã°ã¯ãšãŠãç²åŒããä»äºã§ãã
åºåãæ±ããåè³ªã«æºããªãæã«ããã³ããã倿ŽããŠããèš³ã§ãããããã«ãã£ãŠä»ã®åè³ªãæºãããªããªããªã°ã¬ãã·ã§ã³ãèµ·ãããããŸãããã課é¡ãïŒïŒïŒïŒ
ã®ç¢ºçã§èµ·ãããšããããšã¯ã»ãŒãªããäœåãç¹°ãè¿ãå®è¡ããŠãã®èª²é¡ãèµ·ããªãã確èªããå¿
èŠããã£ããããŸãã
ãã®ç²åŒããã¡ãªã¿ã¹ã¯ãå¹çåããããã«å®éšç®¡çã®ç°å¢ãæŽããã®ã倧äºãªã®ã§ãããããã«ã¢ããªã³ãšããŠå¯èœãªéãLLMããã«èªåã§ãã¥ãŒãã³ã°ããŠããã ããªãããªããšæããæå§ãã«å è¡ç ç©¶ãè²ã 調ã¹ãŠã¿ãã®ã§ãã®ãªãµãŒãå 容ããŸãšããŠã¿ãŸãã
NeuroPrompts
å°ãåã«ãã¡ãã®èšäºã§è©±é¡ã«ãªã£ãæ¹æ³ã§ãã
ãã£ãããŸãšãããšãtext-to-imageã®ããã³ãããã¥ãŒãã³ã°ã«ç¹åãã fine-tuning ãããã¢ãã«ãäœã£ãããšããå 容ã§ãã
2ç« ãèªãã«ä»¥äžã®æ¹æ³ã§å®çŸããŠããŸãã
- GPT-2 ã«å¯Ÿã㊠text-to-image ã®ããã³ããããŒã¿ã»ããã§ fine-tuning ãè¡ã
- 䜿ã£ãããŒã¿ã»ãã: https://github.com/poloclub/diffusiondb
- ããšãã¹ããŒãã§ãªã人ãäœã£ãããã³ãããããã®äººãæ±ãããããªã¢ãŠããããã«ãªããããã®åŒ·ååŠç¿ãè¡ã
- NeuroLogic ãšããã¢ã«ãŽãªãºã ã§ãdecoding æã®åºåã«å¶çŽãæããã
- ãã¥ã¬ãŒã·ã§ã³ããŠãã£ãããã³ããã®ã«äœ¿ãããããŒã¯ãŒãã®ã»ãããããããã®äžããåºåã«äœ¿ãããããŒã¯ãŒããéžã°ããããã«ããŠãã
ããããèãæ¹ãªã©ã¯text-to-textã§ãåèã«ã§ããéšåããããšæããŸãããåèªã䞊ã¹ãããã³ããã£ã³ã°ã¯ t2i åºæã§ãdecoding æã«å¶çŽãå
¥ãããšãã¯äœ¿ããªããïŒ
ãã€ãã¯ããããããã³ãããã¥ãŒãã³ã°ã¢ãã«ãäœã£ãŠã¿ããããããŸãããçæçã«ä»äºã§äœ¿ããã¬ãã«ã®ãã®ã¯ããããã§ããªãã®ã§ããã«å¿çšã¯ã§ããªãããªãšããææã§ããã
Automatic Prompt Engineer
APE ãšãç¥ããŠåŒã°ããã¿ããã§ãã
æ¥æ¬èªã§ã詳ãã解説èšäºããã£ãã®ã§åŒçšããŸããš
å ¥åãšåºåã®ãã¢ãšïŒããã³ããã®ãã³ãã¬ãŒããå ¥åãšããŠäžããããšã§ïŒå ¥åãäžããããæã«æ£ç¢ºã«åºåãåŸãããããã«ããã³ãããã³ãã¬ãŒããæé©åãã
ææ³ã§ãã
- input ã®äŸãšããã®ã€ã³ãããã®æã«æåŸ ããã¢ãŠããããã®äŸã®ãã¢ã®ãªã¹ããäœã
- æ±ããã¢ãŠãããããåºã確çãé«ãããã³ãããçæããŠããã
ãæ±ããã¢ãŠãããããåºã確çãé«ãããã³ãããçæãã®éšåã«é¢ããŠãªã®ã§ãããã¢ã³ãã«ã«ãæ³ã®ã·ãã¥ã¬ãŒã·ã§ã³ãšããŠLLMãæŽ»çšããLLMã«ååã®ã€ãã¬ãŒã·ã§ã³ã§ã¹ã³ã¢ãé«ãã£ãããã³ããã®ããªãšãŒã·ã§ã³ãããããäœã£ãŠããã£ãŠããããå ã«å床ã¹ã³ã¢ãåºãããŠãã®äžããã¹ã³ã¢ãé«ããã®ããããªãšãŒã·ã§ã³çæ...ãç¹°ãè¿ããŠããããã§ãã
⌠ããªãšãŒã·ã§ã³çæã®ããã³ãã

ããã¯çµæ§çãè¯ããããªã¢ãããŒãã«æããŠãããåŸè¿°ããã®ã§ããåºæ¬çã«LLMã«ããèªåããã³ããã£ã³ã°ç ç©¶ã¯äœããã®äžè¬çãªè©äŸ¡ã¡ããªã¯ã¹ãæ±ã£ãŠããããããã¯ãéçºã§æ±ããããªããã³ããæ¯ã«çްãããããã¯ãèŠæ±ãããå Žåã«ããŸãåæãšããŠãè©äŸ¡èгç¹ãäœã£ãŠãããããã»ã¹ãå¿ èŠã«ãªããŸãã
ãã ãäºåã«è©äŸ¡èгç¹ãæŽãåºãã®ã¯é£ããããªããªãããããã¯ãèŠæ±ã®ãããªãã®ã¯ãã¡ããèšèªåãã¹ãã§ããããã以å€ã®äœåããã£ãŠããäžã§ãå€ã«åºåãã©ãŒãããã厩ããããšããäŒè©±ã®è¿ä¿¡æã ããæ±ããŠãã®ã«å
šéšã®äŒè©±ã·ãã¥ã¬ãŒã·ã§ã³ããŠããããšãäºåã«äºæãããããªã課é¡ãå±±ã»ã©åºãŠããããã§ãã
ãã®ããããã®ããã»ã¹ã¯æ¢çŽ¢çã«ãªããããåŸãããããå©ãã®ããã«ãªã£ãŠããã®ãç²åŒãã倧ããªèŠå ãªã®ããªãšæããŠããŸãã
ã§ãããAPEã§ã¯æåŸ
ããã¢ãŠããããã®äŸãåæãããšãããã«åãã£ãŠæé©åããŠãããã®ã§ããã®ã課é¡ã®æŽãåºã -> 察åŠãã®æéãçãããã®ã§ã¯ãªãããšæåŸ
ãã§ããŸãã
ãã¡ãã«é¢ããŠã¯è€éãªããã³ããäºäŸã§è©Šãããã¬ããŒããªã©å¥éæžããããªãšæããŸã(å€å)
OPRO
Optimization by PROmpting ã®ç¥ã§ãã
ORPOã¯æšå¹Žç§é ã«LLMãã¢ã«ãŽãªãºã ã®æé©åã«äœ¿ãææ³ãšããŠè©±é¡ã«ãªããŸãããããã®è«æäžã§ã¯ãã® ORPO ã®é©çšäºäŸãšããŠããã³ãããã¥ãŒãã³ã°ããããŠããŸãã
å ·äœçã«ã¯ã¡ã¿ããã³ãããšåä»ãããã LLM ã«ããã³ãããçæãããããã®ããã³ããããããããã«éæãããã¿ã¹ã¯ã®èª¬æãšååã®ã€ãã¬ãŒã·ã§ã³ã§ã®ã¢ãŠãããããšã¹ã³ã¢ã®ãã¢ãã€ã³ãããããŸãã

å ·äœçãªããã³ããäŸã Appendix ã«æžããŠãã£ãã®ã§åŒçšãããšä»¥äžã®éãã§ãã
- Orange ã®éšåã
meta-instructionãã€ãŸãã¯ã¡ã¿ããã³ããã®ãã³ãã¬ãŒãã®ãããªãã® - éã®éšåãä»ãŸã§ã®çæçµæãšã¹ã³ã¢
- 玫ã®éšåãæé©åããã察象ã®ã¿ã¹ã¯ãšã¢ãŠããããã®ãã©ãŒãããã®èª¬æ

æŠå¿µãšããŠã¯å²ãšã·ã³ãã«ã ãªãšããææã§ãã
ãŸãããã®è«æå
ã§ã®åèäºäŸã«ã¯ GSM8K ãšãããã³ãããŒã¯ããŒã¿ã»ããã䜿ãããŠããŠãå®éã®ãããã¯ãéçºã«ãããŠã¯ãã®éšåãã©ãçšæãããïŒãäŸç¶ãšããŠèª²é¡ãšããŠè¡šåºããŠããã®ããªãšæããŠããŸãã
EvoPrompt
ååããå¯ããããéãé²åçã¢ã«ãŽãªãºã ãããã³ãããã¥ãŒãã³ã°ã«ãé©ããå 容ã§ãã
äžå³ã®ããã«ããã³ããã®äº€é
ãçªç¶å€ç°ãLLMã«ã·ãã¥ã¬ãŒããããŠè©äŸ¡ãå®è¡ããã¹ã³ã¢ã®é«ããã®ã次ã®äžä»£ã§åãããã«å€ç°ãããããšãäžå®åæ°ç¹°ãè¿ããŠç²ŸåºŠãé«ããŠãããŸãã

åæã®ããã³ããã«çžãããåºãå¯èœæ§ãæ¢çŽ¢ã§ããŠãããªãšæãã€ã€ããã¡ãã ORPO ã®æã«æ±ããè©äŸ¡ã¡ããªã¯ã¹ãã©ãè²ãŠããïŒã®èгç¹ã¯æ°ã«ãªã£ãŠããã®ããªãšæããŸããã
ProTeGi
Prompt Optimization with TextualãGradientsã®ç¥ã§ãã
ããã³ããã®åé¡ç¹ãèªç¶èšèªã§èšè¿°ãããåŸé ããçæãããã®åŸé ãšã¯ "éæ¹å" ã®ç©ºéããããã³ããåè£ãæ¢çŽ¢ããããšã«ãã£ãŠå¹ççã«ããè¯ãããã³ãããæ±ããããããã«ããææ³ã§ãã
è«æäžã§ã¯äžèšã®ããã³ããã§æ°ããåè£ãçæããŠããŸãã
I'm trying to write a zero-shot classifier.
My current prompt is:
"{prompt}"
But it gets the following examples wrong:
{error_str}
Based on these examples the problem with this prompt is that {gradient}
Based on the above information, I wrote {steps_per_gradient} different improved prompts.
Each prompt is wrapped with <START> and <END>.
ãŸããåŸé ã®çæã人éã§ã¯ãªã LLM ããã£ãŠããŠãwrong ãšå€å®ããã®ã¯äººéããã£ãŠããŸãã
I'm trying to write a zero-shot classifier prompt.
My current prompt is:
"{prompt}"
But this prompt gets the following examples wrong:
{error_string}
give {num_feedbacks} reasons why the prompt could have gotten these examples wrong.
Wrap each reason with <START> and <END>
è«æäžã®äŸã¯åé¡ã¿ã¹ã¯ã§æ£è§£ãäžæã«å®ãŸããããä»ã®äŒè©±ãªã©ããå®åã§ãªãã¿ã¹ã¯ãžã®å¿çšã¯èª²é¡ããããããªäºæãããŸãããèªåæ¹åã®ãã¬ãŒã ãšããŠã¯ã¢ãªãªã®ããªãšæããŸããã
DSPy Optimizers
å€åæè¿äžçªäººæ°ããããããªææ³ã§ãAPEãšäŒŒãŠããã®ã§ãããããã³ããã«å¯ŸããŠããããã®Input/Output Exampleéãšèªåè©äŸ¡é¢æ°ãäœããè©äŸ¡ãæãé«ããªããããªFew showã®çµã¿åãããæ¢ããŠãããŸãã(Few shotããã以å€ããã£ãŠãã®ããª)
以äžã Optimizer ã䜿ãæã®ãµã³ãã«ã³ãŒãã§ãã(teleprompt ãšããã®ã¯æã®ååã§ãããã©ã€ãã©ãªã®æ¹ã®å€æŽã远ãã€ããŠãªãã®ãããããªã)
from dspy.teleprompt import BootstrapFewShotWithRandomSearch
# Set up the optimizer: we want to "bootstrap" (i.e., self-generate) 8-shot examples of your program's steps.
# The optimizer will repeat this 10 times (plus some initial attempts) before selecting its best attempt on the devset.
config = dict(max_bootstrapped_demos=3, max_labeled_demos=3, num_candidate_programs=10, num_threads=4)
teleprompter = BootstrapFewShotWithRandomSearch(metric=YOUR_METRIC_HERE, **config)
optimized_program = teleprompter.compile(YOUR_PROGRAM_HERE, trainset=YOUR_TRAINSET_HERE)
ã©ã€ãã©ãªã®äœè ã¯ããã"PyTorchã«ã€ã³ã¹ãã€ã¢ãåããŠãã"ãšèšã£ãŠãããç§ã¯æåã¯ãã©ã®ããããPyTorchã€ã³ã¹ãã€ã¢ïŒããšæã£ãŠããã®ã§ãããããªãããã¥ãŒã©ã«ãããã¯ãŒã¯ã® backpropagation ã®ããã«è©äŸ¡(=æå€±é¢æ°)ãå ã«ããã³ããã®å 容ãå€ããŠããããšããããåŒãã§ããã®ã§ã¯ãªãããšèããŠããŸãã(å€ååã£ãŠã)
ãã¡ãã§ããŒãã«ã«ãªãããã ãªããšæãã®ã¯ãããã¯ããå
šãŠã®ææ³ã«å¯ŸããŠæã£ãŠãŸãããèªåã§è©äŸ¡ãç®åºããããžãã¯ãäœããšããã§ãã
æå€ãšããã®ç²ŸåºŠã¯ããããŒã§ãå質äžããã®ãããããªãã§ãããHumans-in-the-loop ã§è©äŸ¡ã®éšåã¯äººéãããããããã ãã¿ãããªããšãã§ããããã¥ãŒãã³ã°ã«é ã䜿ããªããªã£ãŠãããããããªããªãããªã©ãšåŠæ³ããŠããŸãã
ããã¥ã¢ã«ãã£ãŒãããã¯ã«ãŒã
人éã¯æ¹åç¹ã ããäŒããŠLLMã«æé©åãããã«ãŒããåãææ³ã§ãã("ããã¥ã¢ã«ãã£ãŒãããã¯ã«ãŒã"ã¯åæã«ç§ãããåŒãã§ãã)
ãã ããã¡ãç§ã以å軜ã詊ããŠã¿ãããšãããã®ã§ããããããã¯ãã®äžã§æã«å ¥ãããã®ãªãããŒã¿ãåæã«äœã£ãããã³ãããäœæããŠå©çšã§ããªãããªã©èª²é¡ãããããèŠããŠããã®ã§ããããªã·ã¥ããšåãæãã§ã¯ãªãããªãšæããŸããã
ãŸãšã
以äžããã³ãããã¥ãŒãã³ã°ãèªååããææ³ããŸãšããŠã¿ãŸããã
倧ããã¯2ãã¿ãŒã³ã«åãããã®ããªãšæã
- ã€ã³ããããšæåŸ
ããã¢ãŠããããã®äŸãããããçšæããŠãããããããæãã«çæãã
- NeuroPrompt ã®ããã«ããã³ãããã¥ãŒãã³ã°ãã§ããã¢ãã«ã« fine-tuning
- APE
- è©äŸ¡ã¡ããªã¯ã¹ãçšæãã«ãŒããåããŠæé©åãããŠãã
- ORPO
- EvoPrompt
- ProTeGi
- ããã¥ã¢ã«ãã£ãŒãããã¯ã«ãŒã
ä»åŸã¯ APE ã詊ãã€ã€ãå®éšç®¡çç°å¢ãæŽããŠè©äŸ¡ã¡ããªã¯ã¹ãè²ãŠãŠãããªããäžèšã®ãããªæé©åã¢ã«ãŽãªãºã ãé©çšãããã¿ãããªããã»ã¹ãäœã£ãŠããã®ã«ãã©ã€ããŠã¿ããããªãšèããŠããŸãã
ä»ã«ããåç¥ã®æé©åææ³ããã£ãããã²æããŠãã ãããåå®ã«æ±ããŠãŸãã
ããã§ã¯ãèªã¿ããã ãããããšãããããŸããïŒð
Discussion