Program of Thoughts Prompting (BG)
Program of Thoughts Prompting (PoT, англ. «програма от мисли») — това е метод за инженерия на prompt-ове за големи езикови модели (LLM), при който моделът генерира програмен код като междинни стъпки за решаване на задача вместо текстово обяснение[1]. Този подход позволява да се отдели логическото разсъждение от математическите изчисления: езиковият модел изгражда план за решение под формата на програма (например на Python), а изчисленията се извършват от външен, детерминиран интерпретатор на код.
Методът е предложен през 2022 година от група изследователи начело с Уенху Чен (Wenhu Chen) и е насочен преди всичко към задачи от числов или логически характер (математически задачи, финансови изчисления), при които традиционните методи за разсъждение, като Chain-of-Thought, се сблъскват с трудности при точността на изчисленията[1].
Предпоставки и концепция
Ограничения на Chain-of-Thought
Методът PoT е развитие на идеята Chain-of-Thought (CoT) (верига от разсъждения), който преди това беше основният подход за подобряване на логическия извод при LLM[2]. При метода CoT моделът генерира последователност от междинни стъпки на естествен език. Въпреки значителното подобряване на качеството на разсъжденията, този подход има фундаментално ограничение: моделът изпълнява и логиката, и самите изчисления в текстова форма. Това често води до неточни аритметични операции, грешки при закръгляване и други неточности, тъй като езиковите модели по своята природа не са точни калкулатори.
Основна идея на Program of Thoughts
Основната идея на PoT се състои в това да се делегират изчисленията на външна система (интерпретатор на код), а от езиковия модел да се изисква само формализиране на плана за решение под формата на изпълнима програма[1]. Моделът играе ролята на „програмист", а не на „изчислител".
Процесът на работа изглежда по следния начин:
- Моделът получава на вход задача (например текстова математическа задача).
- Вместо текстови разсъждения той генерира скрипт на език за програмиране (например Python), който решава тази задача.
- Генерираният код се предава на външен интерпретатор, който го изпълнява.
- Резултатът от изпълнението на кода е окончателният отговор.
По този начин сложните и точни изчисления (операции с големи числа, извикване на специализирани библиотеки) се извършват не от самия модел, а от програмата, което осигурява детерминираност и висока точност[3].
Реализация и използване на библиотеки
При реализацията на PoT ключова е способността на LLM да генерира коректен и ефективен код. Авторите на подхода са използвали модела OpenAI Codex, специално обучен за задачи по програмиране. Подходът PoT позволява на модела да използва външни библиотеки, което съществено разширява класа на решаваните задачи. Например при решаването на задачи по символна математика моделът може да генерира код, използващ библиотеката SymPy за аналитично решаване на уравнения, което излиза извън рамките на възможностите на чисто езиковите методи[1].
Подсказката за PoT може да бъде предоставена в два режима:
- Few-shot: В prompt-а се съдържат няколко примера двойки „въпрос — програма-решение".
- Zero-shot: В prompt-а се дава само инструкция, описваща задачата, без примери.
Дори в режим zero-shot PoT показва висока ефективност благодарение на явната структура, която моделът трябва да генерира[4].
Резултати и ефективност
Методът PoT демонстрира значително повишаване на качеството на решенията при задачи, изискващи многостъпково числово разсъждение. В оригиналната работа той е тестван върху осем набора от математически и финансови задачи, включително GSM8K, AQUA, SVAMP, FinQA и др.
- Повишаване на точността: Във всички случаи PoT превъзхожда базовия подход CoT. Средно е постигнато относително предимство от ~12% по дял на правилните решения.
- На популярния математически набор GSM8K точността на модела с PoT достига 71,6%, докато с CoT тя е 63,1%.
- При финансовите задачи предимството е още по-съществено: на dataset-а FinQA точността се увеличава от 40,4% (CoT) до 64,5% (PoT)[1].
- Комбинация със Self-Consistency: Ефективността на PoT може да бъде допълнително подобрена при съчетаване с метода на самосъгласуваност (self-consistency). В този случай моделът генерира няколко независими програми-решения и крайният отговор се избира по „принципа на мнозинството" от резултатите от тяхното изпълнение. В съчетание със self-consistency PoT установява ново state-of-the-art към момента на публикуването за всички тествани математически и финансови benchmark-а[1].
Предимства и ограничения
Предимства
- Точност на изчисленията: Главното предимство. Изпълнението на аритметичните операции от външен интерпретатор отстранява грешките при закръгляване и неточностите, присъщи на LLM.
- Възможност за използване на библиотеки: Моделът може да привлича мощни външни библиотеки (например за символни изчисления, статистически анализ, работа с дати), решавайки задачи, които преди са били недостъпни.
- Интерпретируемост и отстраняване на грешки: Програмният код е формално и структурирано представяне на логиката на решението, което улеснява неговата проверка и отстраняване на грешки в сравнение с разсъжденията на естествен език.
- Универсалност: Подходът е ефективен както в few-shot, така и в zero-shot режим и е приложим в различни домейни (математика, финанси, наука).
Ограничения
- Сигурност: Изпълнението на генерирания код на външен интерпретатор създава рискове за сигурността. Моделът теоретично може да генерира злонамерен код (например за изтриване на файлове). Затова практическото приложение на PoT изисква изолиране на средата за изпълнение (sandbox) и внимателна филтрация на кода[4].
- Ограничена приложна област: Методът е най-ефективен за задачи, които могат ясно да бъдат формализирани като алгоритъм. За задачи, изискващи разбиране на езикови нюанси, здрав разум или творчески подход, прякото приложение на PoT е затруднено.
- Зависимост от качеството на кода: Ефективността на метода пряко зависи от способността на LLM да генерира синтактично коректен и логически правилен код.
Свързани подходи
Идеята за използване на код за подобряване на разсъжденията на LLM е получила развитие и в други сходни подходи.
- Program-Aided Language Models (PAL): Метод, предложен почти едновременно с PoT, който също използва генерация на Python-код за решаване на задачи[5]. Концептуално PAL и PoT са много близки и потвърждават ефективността на стратегията „разсъждение чрез код".
- Tree of Thoughts (ToT): По-сложен метод, който предлага генериране и изследване на „дърво" от възможни стъпки за решение, което представлява развитие на идеята за линейна „верига" от мисли. PoT може да бъде използван в рамките на възлите на това дърво за проверка на хипотези.
Препратки
- Оригинална научна статия за Program of Thoughts Prompting
- Ръководство за PoT на портала Learn Prompting
Литература
- Chen, W. et al. (2023). Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks. arXiv:2211.12588.
- Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
- Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
- Gao, L. et al. (2022). PAL: Program-Aided Language Models. arXiv:2211.10435.
- Cobbe, K. et al. (2021). Training Verifiers to Solve Math Word Problems. arXiv:2110.14168.
- Chen, Z. et al. (2021). FinQA: A Dataset of Numerical Reasoning over Financial Data. arXiv:2109.00122.
- Zhu, F. et al. (2021). TAT-QA: A Question Answering Benchmark on a Hybrid of Tabular and Textual Content in Finance. arXiv:2105.07624.
- Patel, A. et al. (2021). Are NLP Models Really Able to Solve Simple Math Word Problems? (Introducing SVAMP). arXiv:2103.07191.
- Xu, F. et al. (2023). RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation. arXiv:2310.04408.
- Mu, J. et al. (2023). Learning to Compress Prompts with Gist Tokens. arXiv:2304.08467.
Бележки
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Chen, W. et al. «Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks». arXiv:2211.12588, 2023. [1]
- ↑ Wei, J. et al. «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models». arXiv:2201.11903, 2022. [2]
- ↑ «Program of Thoughts: Everything You Need to Know». The Ministry of AI. [3]
- ↑ 4.0 4.1 «Program of Thoughts Prompting: Enhancing Accuracy in Reasoning and Computation». Learn Prompting. [4]
- ↑ «PAL (Program-Aided Language Models)». Prompt Engineering Guide. [5]