Post content
Наверное, каждый, кто использовал chatGPT для решения задач или просто общения приходил к мысли, что сформулированный запрос (промпт) довольно сильно влияет на результат. В этом направлении есть огромное кол-во работ, где люди пытались придумать текст, который повлияет на ответ модели в лучшую сторону. И вот несколько дней назад вышла любопытная статья о применении эволюционных алгоритмов совместно с LLM для поиска наилучшего промпта под конкретную задачу. Для тех, кто никак не может решить, использовать “Think step by step” или “Take a deep breath”. Алгоритм максимально простой: у нас есть популяция из N промптов, путем скрещиваний и мутаций мы можем получить набор их потомков. Далее считаем метрики для новых вариантов на отложенном датасете и из всего множества промптов оставляем top N. Эту операцию повторяем T эпох. Интересным здесь, на мой взгляд, является вопрос, как сделать операции скрещивания и мутации в дискретном пространстве текстов, при этом сохранив их читаемость и осмысленность. Тут и приходят на помощь LLMки, которые берут это на себя. Авторы рассмотрели два наиболее популярных алгоритма — Genetic Algorithm и Differential Evolution и адаптировали их для работы с промптами. На почти каждом из 9 датасетов из валидации удалось добиться лучших результатов по сравнению с другими методами, в том числе и ручной настройкой. Отличительная черта этого метода заключается в том, что мы взаимодействуем с моделью как с black box — нам не нужен доступ к ее параметрам, градиентам и прочему. Это позволяет нам подбирать промпты, например, для gpt-3.5/4. Никакого файнтюнинга! 💃 Примеры для разных задач можно посмотреть на картинке.