# Исследование по классификации

[Clavié и др., 2023](https://arxiv.org/abs/2303.07142) представляют исследование по инженерии промптов, примененное к среднемасштабному случаю классификации текста в системе производства. Используя задачу классификации работы на настоящую "рабочую позицию для выпускников", подходящую для недавно выпустившихся выпускников, они оценили ряд техник инженерии промптов и сообщают о своих результатах с использованием GPT-3.5 (`gpt-3.5-turbo`).

Работа показывает, что LLM превосходит все другие протестированные модели, включая крайне сильный базовый уровень в DeBERTa-V3. `gpt-3.5-turbo` также заметно превосходит более старые варианты GPT3 по всем основным метрикам, но требует дополнительного анализа вывода, так как его способность следовать шаблону кажется хуже, чем у других вариантов.

Основные результаты их подхода к инженерии промптов:

- Для задач, в которых не требуется специалистические знания, метод CoT с малым количеством примеров показывал худшие результаты по сравнению с методом Zero-shot во всех экспериментах.
- Влияние промпта на правильное рассуждение огромно. Простое задание модели классифицировать данную работу дает значение F1-меры 65,6, тогда как модель с инженерией промпта достигает значения F1-меры 91,7.
- Попытка заставить модель следовать шаблону снижает производительность во всех случаях (это поведение исчезает в ранних тестах с GPT-4, которые являются последующими по отношению к статье).
- Множество небольших модификаций имеют значительное влияние на производительность.
  - Таблицы ниже показывают все протестированные модификации.
  - Правильное формулирование инструкций и повторение ключевых моментов, кажется, являются наиболее важными факторами успеха.
  - Даже такая простая вещь, как дать модели (человеческое) имя и обращаться к ней таким образом, повысила значение F1-меры на 0,6 пункта.

### Протестированные модификации промпта

| Краткое название | Описание                                                                 |
|-----------------|--------------------------------------------------------------------------|
| Базовый         | Предоставить объявление о работе и спросить, подходит ли оно выпускнику. |
| CoT             | Дать несколько примеров точной классификации перед запросом.             |
| Zero-CoT        | Попросить модель рассуждать пошагово перед предоставлением ответа.        |
| rawinst         | Дать инструкции о роли и задаче, добавив их к пользовательскому сообщению.|
| sysinst         | Дать инструкции о роли и задаче в системном сообщении.                    |
| bothinst        | Разделить инструкции с указанием роли в системном сообщении и задачи в пользовательском сообщении.|
| mock            | Дать задание с помощью имитации дискуссии, где оно их учитывает.          |
| reit            | Укрепить ключевые элементы в инструкциях путем их повторения.              |
| strict          | Попросить модель ответить, строго следуя заданному шаблону.               |
| loose           | Попросить только предоставить окончательный ответ, следуя заданному шаблону.|
| right           | Попросить модель прийти к правильному выводу.                             |
| info            | Предоставить дополнительную информацию, чтобы устранить типичные ошибки рассуждения.|
| name            | Дать модели имя, которым мы обращаемся к ней в разговоре.                  |
| pos             | Предоставить модели положительную обратную связь перед запросом.          |


### Влияние всех модификаций промпта на производительность

|                                        | Точность      | Полнота       | F1            | Соответствие шаблону     |
|----------------------------------------|---------------|---------------|---------------|------------------------|
| _Базовый_                              | _61.2_        | _70.6_        | _65.6_        | _79%_                  |
| _CoT_                                  | _72.6_        | _85.1_        | _78.4_        | _87%_                  |
| _Zero-CoT_                             | _75.5_        | _88.3_        | _81.4_        | _65%_                  |
| _+rawinst_                             | _80_          | _92.4_        | _85.8_        | _68%_                  |
| _+sysinst_                             | _77.7_        | _90.9_        | _83.8_        | _69%_                  |
| _+bothinst_                            | _81.9_        | _

93.9_        | _87.5_        | _71%_                  |
| +bothinst+mock                         | 83.3          | 95.1          | 88.8          | 74%                    |
| +bothinst+mock+reit                    | 83.8          | 95.5          | 89.3          | 75%                    |
| _+bothinst+mock+reit+strict_           | _79.9_        | _93.7_        | _86.3_        | _**98%**_              |
| _+bothinst+mock+reit+loose_            | _80.5_        | _94.8_        | _87.1_        | _95%_                  |
| +bothinst+mock+reit+right              | 84            | 95.9          | 89.6          | 77%                    |
| +bothinst+mock+reit+right+info         | 84.9          | 96.5          | 90.3          | 77%                    |
| +bothinst+mock+reit+right+info+name    | 85.7          | 96.8          | 90.9          | 79%                    |
| +bothinst+mock+reit+right+info+name+pos| **86.9**      | **97**        | **91.7**      | 81%                    |

Соответствие шаблону относится к тому, насколько часто модель отвечает в желаемом формате.