Teaching Large Language Models to Self-Debug

์ €์ž: Xinyun Chen, Maxwell Lin, Nathanael Schรคrli, Denny Zhou | ๋‚ ์งœ: 2023 | DOI: 10.48550/arXiv.2304.05128 📄 PDF


Essence

Figure 1

SELF-DEBUGGING์˜ ๋ฐ˜๋ณต์  ๋””๋ฒ„๊น… ํ”„๋กœ์„ธ์Šค: ์ฝ”๋“œ ์ƒ์„ฑ(Step 1) โ†’ ์ฝ”๋“œ ์‹คํ–‰(Step 2) โ†’ ์ฝ”๋“œ ์„ค๋ช…(Step 3) โ†’ ํ”ผ๋“œ๋ฐฑ ์ƒ์„ฑ ๋‹จ๊ณ„

๋ณธ ๋…ผ๋ฌธ์€ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)์ด ๋ช‡ ๊ฐ€์ง€ ์‹œ์—ฐ(few-shot demonstration)์„ ํ†ตํ•ด ์ž์‹ ์ด ์ƒ์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋””๋ฒ„๊น…ํ•˜๋„๋ก ๊ฐ€๋ฅด์น˜๋Š” SELF-DEBUGGING ๊ธฐ๋ฒ•์„ ์ œ์‹œํ•œ๋‹ค. ์™ธ๋ถ€ ํ”ผ๋“œ๋ฐฑ ์—†์ด ์ฝ”๋“œ ์„ค๋ช…๊ณผ ์‹คํ–‰ ๊ฒฐ๊ณผ ๋ถ„์„์„ ํ†ตํ•ด ์˜ค๋ฅ˜๋ฅผ ์‹๋ณ„ํ•˜๋Š” "๋Ÿฌ๋ฒ„๋• ๋””๋ฒ„๊น…(rubber duck debugging)" ๋ฐฉ์‹์˜ ์ž์ฒด ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•จ์„ ๋ณด์ธ๋‹ค.

Motivation

Achievement

Figure 3

ํ…์ŠคํŠธ-SQL ์ƒ์„ฑ์„ ์œ„ํ•œ SELF-DEBUGGING ํ”„๋กฌํ”„ํŠธ ์˜ˆ์‹œ

  1. ๋‹ค์ค‘ ๋„๋ฉ”์ธ ์ตœ๊ณ  ์„ฑ๋Šฅ ๋‹ฌ์„ฑ:
    • Spider(ํ…์ŠคํŠธ-SQL): ๊ธฐ์ค€์„  ๋Œ€๋น„ 2-3% ์ผ๊ด€์  ๊ฐœ์„ , ๋‚œ์ด๋„ ๋†’์€ ์ฟผ๋ฆฌ์—์„œ 9% ๊ฐœ์„ 
    • TransCoder(์ฝ”๋“œ ๋ฒˆ์—ญ): ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ™œ์šฉ ์‹œ ์ตœ๋Œ€ 12% ์ •ํ™•๋„ ํ–ฅ์ƒ
    • MBPP(ํ…์ŠคํŠธ-Python): ์ตœ๋Œ€ 12% ์„ฑ๋Šฅ ๊ฐœ์„ 
  2. ์ƒ˜ํ”Œ ํšจ์œจ์„ฑ ๊ฐœ์„ : 10๋ฐฐ ์ด์ƒ ๋งŽ์€ ํ›„๋ณด ํ”„๋กœ๊ทธ๋žจ์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ์ค€์„  ๋ชจ๋ธ๊ณผ ๋™๋“ฑํ•˜๊ฑฐ๋‚˜ ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ ๋‹ฌ์„ฑ
  3. ํ”ผ๋“œ๋ฐฑ ํƒ€์ž…๋ณ„ ํšจ๊ณผ ๊ฒ€์ฆ: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”ผ๋“œ๋ฐฑ(UT) > ์ฝ”๋“œ ์„ค๋ช… ํ”ผ๋“œ๋ฐฑ(Expl) > ๋‹จ์ˆœ ํ”ผ๋“œ๋ฐฑ ์ˆœ์„œ๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ
  4. ๋ชจ๋ธ ์ผ๋ฐ˜์„ฑ: GPT ๊ณ„์—ด(code-davinci-002, gpt-3.5-turbo, gpt-4)๊ณผ ์˜คํ”ˆ์†Œ์Šค ๋ชจ๋ธ(StarCoder) ๋ชจ๋‘์—์„œ ํšจ๊ณผ ์ž…์ฆ

How

Figure 5

์ฝ”๋“œ ๋ฒˆ์—ญ์„ ์œ„ํ•œ SELF-DEBUGGING ํ”„๋กฌํ”„ํŠธ ์˜ˆ์‹œ์™€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”ผ๋“œ๋ฐฑ

Originality

Limitation & Further Study

Evaluation

Novelty: 4/5 Technical Soundness: 4/5 Significance: 5/5 Clarity: 4/5 Overall: 4/5

์ดํ‰: ๋ณธ ๋…ผ๋ฌธ์€ ์™ธ๋ถ€ ํ”ผ๋“œ๋ฐฑ ์—†์ด LLM์˜ ์ž๊ฐ€ ์„ค๋ช…์„ ํ†ตํ•œ ์ฝ”๋“œ ์ž์ฒด ์ˆ˜์ •์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ž…์ฆํ•˜๊ณ , ๋‹ค์ค‘ ๋„๋ฉ”์ธ์—์„œ ์ตœ๊ณ  ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•œ ์˜๋ฏธ ์žˆ๋Š” ์—ฐ๊ตฌ์ด๋‹ค. ์ถ”๊ฐ€ ํ•™์Šต์ด ๋ถˆํ•„์š”ํ•˜๋ฉด์„œ๋„ ์ƒ˜ํ”Œ ํšจ์œจ์„ฑ์„ ๊ฐœ์„ ํ•œ๋‹ค๋Š” ์ ์—์„œ ์‹ค๋ฌด ์ ์šฉ ๊ฐ€์น˜๊ฐ€ ๋†’์œผ๋‚˜, ๋””๋ฒ„๊น… ๊ธฐ๋ฒ•์˜ ์ผ๋ฐ˜ํ™” ํ•œ๊ณ„์™€ ๋ชจ๋ธ ๋Šฅ๋ ฅ ์˜์กด์„ฑ์— ๋Œ€ํ•œ ๋” ์‹ฌ์ธต์ ์ธ ๋ถ„์„์ด ํ•„์š”ํ•˜๋‹ค.

๊ฐ™์ด ๋ณด๋ฉด ์ข‹์€ ๋…ผ๋ฌธ

๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
์ฝ”๋“œ LLM์˜ ๋Œ€๊ทœ๋ชจ ์ž์ฒด ์ฝ”๋“œ ํ‰๊ฐ€ ๋ฐ ๋””๋ฒ„๊น… ํ›ˆ๋ จ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ฒค์น˜๋งˆํ‚น ์—ฐ๊ตฌ(3380)๊ฐ€ self-debugging ๊ธฐ๋ฒ•์˜ ํ‰๊ฐ€ํ† ๋Œ€๋ฅผ ์ด๋ฃน๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
320 ๋…ผ๋ฌธ์€ ์ฝ”๋“œ ๊ธฐ๋ฐ˜ LLM์˜ ํ•™์Šต ๋ฐ ํ‰๊ฐ€๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ LLM self-debugging์˜ ํšจ๊ณผ์™€ ํ•œ๊ณ„๋ฅผ ๋น„๊ตํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
LLM์˜ ์ฝ”๋“œ ๋””๋ฒ„๊น… ๋Šฅ๋ ฅ์„ ๋‹ค์–‘ํ•œ ํ”„๋กฌํ”„ํŠธ ๋ฐ ์–ธ์–ด ํ™˜๊ฒฝ์—์„œ ๋ฒค์น˜๋งˆํ‚นํ•˜์—ฌ SELF-DEBUGGING๊ณผ์˜ ์‹คํ—˜์  ์ฐจ์ด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
790 'Teaching Large Language Models to Self-Debug' ๋…ผ๋ฌธ์€ LLM ์ž๊ธฐ ๊ฐœ์„  ํ•™์Šต์ด ์–ด๋–ป๊ฒŒ ์ž๋™ ์ƒ์„ฑ ์‹ ํ˜ธ(ํ”ผ๋“œ๋ฐฑ, self-debug)๋กœ ํšจ๊ณผ์ ์œผ๋กœ ์ด๋ค„์ง€๋Š”์ง€๋ฅผ ๋‹ค๋ฃฌ ํ›„์†์  ๊ด€์ ์ด๋ผ ๊ฐ™์ด ์ฝ์œผ๋ฉด ํ•™์Šต์ „๋žต ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
790๋ฒˆ ๋…ผ๋ฌธ์€ LLM์˜ ์ž๊ธฐ-๋””๋ฒ„๊น… ๋Šฅ๋ ฅ์„ ์‹œ์Šคํ…œ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•˜์—ฌ, 747๋ฒˆ์˜ ๋‹จ๊ณ„๋ณ„ ์ž๊ธฐ ์ ๊ฒ€ ๋ฐฉ์‹์„ ๋ฐœ์ „์‹œํ‚ค๋Š” ์—ฐ์žฅ์„ ์ƒ์— ์žˆ์Šต๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
๋ชจ๋ธ ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต์  ์ž๊ธฐ ๋””๋ฒ„๊น…(self-debug) ์ „๋žต์— ๊ด€ํ•œ ์ด๋ก ์ /์‹คํ—˜์  ๋ถ„์„์ด self-feedback ๋ฐฉ์‹์˜ ์ค‘์š”์„ฑ๊ณผ ํ•œ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•ด์ค๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
์‹คํ–‰๊ฐ€๋Šฅ ์ฝ”๋“œ(Action)๋ฅผ ํ†ตํ•œ LLM ์—์ด์ „ํŠธ ์„ฑ๋Šฅ ํ–ฅ์ƒ ์—ฐ๊ตฌ๋กœ, ์ž๊ธฐ ๋””๋ฒ„๊น…์˜ ์‹ค์šฉ์  ํ™•์žฅ ์‚ฌ๋ก€๊ฐ€ ์ œ์‹œ๋ฉ๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
790์€ LLM์˜ ์ž๊ธฐ ๋””๋ฒ„๊น… ํ•™์Šต์„ ๋‹ค๋ฃจ์–ด, 887์˜ ๋‹ค์ค‘ ๊ด€์  ๊ฒ€์ฆ ํ”„๋ ˆ์ž„์›Œํฌ์— ์‹ค์งˆ์  ๊ฐ•ํ™”๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
741 ๋…ผ๋ฌธ์€ LLM์ด ์ž์‹ ์ด ์‚ฌ์šฉํ•  ์ฝ”๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์œจ์ ์œผ๋กœ ๊ฒ€์ฆยทํ•„ํ„ฐ๋งํ•˜๋Š” Seed-Coder ์‹œ์Šคํ…œ์œผ๋กœ self-debug ๊ฐœ๋…์„ ์‹ค์šฉ์ ์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
ShinkaEvolve๋Š” ์ฝ”๋“œ LLM์˜ ์ž๊ธฐ๊ฐœ์„  ๋ฐ ์ž์ฒด์ ์ธ ์ฝ”๋“œ ์ˆ˜์ • ๋Šฅ๋ ฅ์„ ํ™•์žฅํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํƒ๊ตฌํ•œ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
LLM์˜ ์ž๋™ ์ž๊ธฐ ๋””๋ฒ„๊น…/์˜ค๋ฅ˜ ์ˆ˜์ • ํ›ˆ๋ จ์„ ํ†ตํ•ด 538์—์„œ ์ œ์‹œ๋œ ์ž๊ธฐ๊ฒ€์ฆ ํ•œ๊ณ„์˜ ์‹ค์ œ ๊ฐœ์„ ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
LLM ๊ธฐ๋ฐ˜ ์ž๊ธฐ ๋””๋ฒ„๊น… ๋ฐ ๊ฒ€์ฆ ์ „๋žต์„ ์ •๋ณด ์ถ”์ถœ ํŒŒ์ดํ”„๋ผ์ธ์— ์ ‘๋ชฉํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ ๋ฐ ์‹ ๋ขฐ๋„ ๋ฌธ์ œ ํ•ด์†Œ ๋ฐฉ์•ˆ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
Teaching Large Language Models to Self-Debug ๋…ผ๋ฌธ์€ ๋น„์„ ํ˜• ์‹œ์Šคํ…œ์˜ ์˜ค์ž‘๋™ยท์žก์Œ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ LLM ์ž๊ธฐ์ˆ˜์ •๋Šฅ๋ ฅ ์—ฐ๊ตฌ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ, ์–‘์ž/๋น„์„ ํ˜• ํšจ๊ณผ ํ•ด์„์˜ data-driven ํ™•์žฅ์—์„œ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
← ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

๐ŸŽง Audio Overview

์ด ๋…ผ๋ฌธ ๋ฆฌ๋ทฐ๋ฅผ ํŒŸ์บ์ŠคํŠธํ˜• ์˜ค๋””์˜ค๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (Gemini ยท ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์—๋งŒ ์ €์žฅ ยท ์™„์„ฑ๋ณธ์€ ์ด๋ฉ”์ผ๋กœ๋„ ์ „์†ก)
โ–ธ ๊ณ ๊ธ‰: ๊ตฌ์„ฑ ๋ฐฉํ–ฅ(๋Œ€๋ณธ ์ž‘์„ฑ ์ง€์นจ) ์ง์ ‘ ์ˆ˜์ •