3,583 papers
arXiv:2511.22584 75 27 нояб. 2025 г. FREE

Hard Negatives: обучение LLM через контрастные примеры

КЛЮЧЕВАЯ СУТЬ
Парадокс: добавление НЕПРАВИЛЬНЫХ примеров в промпт улучшает точность модели. LLM плохо различает нюансы, когда видит только положительные примеры — не понимает где границы правильного. Hard Negatives позволяет модели различать тонкие нюансы между похожими вариантами — где граница между "вежливо" и "заискивающе", между "твёрдо" и "грубо". Фишка: строишь контекст из тройки. Задача → правильное решение → ПОХОЖЕЕ неправильное решение с объяснением почему не то. Модель видит границы — что слишком мягко, что слишком сухо, где баланс. Компактная модель с контрастными примерами обошла большие общие модели по точности.
Адаптировать под запрос

TL;DR

Hard Negatives — техника, которая улучшает точность LLM через добавление похожих, но неправильных примеров в контекст. Вместо "вот правильный пример, делай так" даёшь "вот правильный, вот похожий неправильный, различай". Исследование HIL-GPT (система для автомобильного тестирования) показало: компактные специализированные модели с контрастными примерами работают лучше больших общих моделей.

LLM плохо различает тонкие нюансы между похожими вариантами. Когда все примеры положительные, модель не видит границ — что правильно, что почти правильно, но не то. В автотестировании это критично: две команды могут выглядеть похоже, но делать разное. Без контраста модель путает. Hard negatives — это не любые неправильные примеры, а максимально похожие на правильные, но функционально другие. Модель учится ловить различия.

Исследователи создали датасет из triplets (тройки): anchor (задача) + positive (правильное решение) + negative (похожее неправильное). Негативы генерировали двумя путями: эвристикой (похожие по ключевым словам) и LLM-синтезом (попросили модель создать правдоподобные, но неверные варианты). Результат: компактная модель bge-base-en-v1.5 с hard negatives обошла большие модели по точности и скорости.

🔬

Схема метода

ШАГ 1: Собери примеры
→ Реальные правильные примеры твоей задачи

ШАГ 2: Создай hard negatives
→ Попроси LLM сгенерировать похожие, но неправильные варианты
→ Или найди реальные примеры, которые выглядят похоже, но решают другую задачу

ШАГ 3: Структурируй контекст (triplet)
→ Задача (anchor)
→ Правильное решение (positive)  
→ Неправильное решение (negative) с объяснением почему не подходит

ШАГ 4: Запроси выполнение
→ На основе контраста правильного и неправильного — реши мою задачу

Всё в одном промпте.

🚀

Пример применения

⚠️ Сильная зона метода: Задачи, где нужно различать тонкие нюансы между похожими вариантами. Не работает для простых однозначных задач.

Задача: Ты пишешь письмо клиенту с отказом в возврате товара. Нужен твёрдый, но вежливый тон — не агрессивный и не заискивающий. LLM часто скатывается в один из крайностей.

Промпт:

Напиши письмо клиенту с отказом в возврате товара.

ПРАВИЛЬНЫЙ ТОН (positive):
"Благодарим за обращение. Мы внимательно изучили ситуацию. 
Согласно условиям возврата, товар с признаками использования 
не подлежит возврату. Мы готовы предложить скидку 15% на следующую 
покупку как компенсацию."

НЕПРАВИЛЬНЫЙ ТОН #1 — слишком мягко, заискивающе (negative):
"Нам очень жаль, что так получилось! Мы понимаем ваше разочарование. 
К сожалению, по правилам мы не можем вернуть деньги, но, пожалуйста, 
не обижайтесь на нас!"

НЕПРАВИЛЬНЫЙ ТОН #2 — слишком сухо, формально (negative):
"Заявка отклонена. Товар не соответствует условиям возврата. 
Претензии не принимаются. Обращение закрыто."

Ситуация: клиент купил кроссовки, носил 2 недели, потом пришёл 
с "браком" (стёрлась подошва от активного использования).

Напиши письмо в ПРАВИЛЬНОМ ТОНЕ — твёрдо, фактологично, вежливо. 
Избегай крайностей из негативных примеров.

Результат: Модель видит границы — что слишком мягко, что слишком сухо. Письмо получится в балансе: факты без агрессии, отказ без извинений за правила, конструктивное предложение вместо пустых "нам жаль".

🧠

Почему это работает

LLM обучены на массиве текста, где похожие паттерны могут означать разное. Без явного контраста модель не понимает границ. Ты просишь "вежливо, но твёрдо" — она выдаст что-то среднее, но может промахнуться в любую сторону. Нет калибровки.

Hard negatives создают якоря восприятия. Модель видит: вот ТАК не надо (слишком мягко), вот ТАК тоже не надо (слишком сухо), вот МЕЖДУ ними — правильно. Это как показать на линейке: 3 — мало, 7 — много, нужно 5. Без 3 и 7 модель не поймёт, где 5.

Почему похожие негативы эффективнее случайных? Потому что модель учится различать нюансы. Если дашь совсем неправильный пример ("Иди в жопу, клиент") — модель и так понимает, что это плохо. Но пример "Нам очень жаль..." — выглядит вежливо, может показаться подходящим. Hard negative говорит: "Стоп, это ТОЖЕ неправильно, вот почему".

Рычаги управления: - Количество негативов (1-3) — один для простых задач, несколько для многомерных (тон + структура + длина) - Тип контраста — противоположные крайности (слишком мягко / слишком сухо) или близкие вариации (два похожих стиля с тонкой разницей) - Объяснение почему негатив плох — добавь или убери. С объяснением — модель понимает причину, без — сама делает вывод из контекста

📋

Шаблон промпта

Выполни задачу: {описание_задачи}

ПРАВИЛЬНЫЙ ПОДХОД (positive):
{пример_правильного_решения}
[Опционально: почему это правильно]

НЕПРАВИЛЬНЫЙ ПОДХОД #1 (negative):
{похожий_неправильный_вариант_1}
[Почему не подходит: {причина}]

НЕПРАВИЛЬНЫЙ ПОДХОД #2 (negative):
{похожий_неправильный_вариант_2}
[Почему не подходит: {причина}]

Контекст задачи:
{твои_данные}

Результат должен следовать ПРАВИЛЬНОМУ ПОДХОДУ 
и избегать ошибок из НЕПРАВИЛЬНЫХ.

Что подставлять: - {описание_задачи} — что нужно сделать (написать текст, выбрать решение, найти ошибку) - {пример_правильного_решения} — один конкретный пример правильного выполнения - {похожий_неправильный_вариант} — примеры, которые ВЫГЛЯДЯТ правильно, но не подходят по тонким критериям (тон, стиль, формат, логика) - {причина} — краткое объяснение почему negative не подходит (1-2 предложения) - {твои_данные} — конкретная ситуация, которую нужно решить

Как создать hard negatives, если у тебя нет готовых:

🚀 Быстрый старт — вставь в чат:

У меня есть задача: {твоя_задача}

Вот пример ПРАВИЛЬНОГО решения:
{твой_пример}

Создай 2-3 ПОХОЖИХ, но НЕПРАВИЛЬНЫХ варианта (hard negatives). 
Они должны выглядеть правдоподобно, но нарушать важные критерии 
(тон, структуру, логику). Для каждого объясни, почему он не подходит.

Потом собери всё в структуру: anchor (задача) → positive (правильно) 
→ negatives (похоже, но неправильно). Я использую это как контекст 
для будущих запросов.

LLM сгенерирует варианты, которые выглядят близко к правильному, но содержат типичные ошибки. Она понимает паттерн "правдоподобно, но неверно" и создаст контрастные примеры под твою задачу.

⚠️

Ограничения

⚠️ Требует примеров: Если у тебя нет ни одного правильного примера — техника не работает. Нужна база для создания контраста.

⚠️ Не для простых задач: Если задача однозначная ("столица России") — hard negatives бесполезны. Работает там, где есть нюансы и субъективность.

⚠️ Hard negatives должны быть похожи: Случайные неправильные примеры не дают эффекта. Негатив должен быть почти правильным, чтобы модель училась различать детали.

⚠️ Токены: Каждый пример жрёт контекст. Для простых задач 1-2 негатива достаточно. Больше — если критериев много (тон + структура + длина).

🔗

Ресурсы

Smarter, not Bigger: Fine-Tuned RAG-Enhanced LLMs for Automotive HIL Testing — исследование про систему HIL-GPT для автомобильного тестирования, где компактные модели с hard negatives показали лучший результат, чем большие общие модели. Chao Feng, Zihan Liu, Siddhant Gupta, Gongpei Cui, Jan von der Assen, Burkhard Stiller (University of Zurich, Volvo Car Corporation).


📋 Дайджест исследования

Ключевая суть

Парадокс: добавление НЕПРАВИЛЬНЫХ примеров в промпт улучшает точность модели. LLM плохо различает нюансы, когда видит только положительные примеры — не понимает где границы правильного. Hard Negatives позволяет модели различать тонкие нюансы между похожими вариантами — где граница между "вежливо" и "заискивающе", между "твёрдо" и "грубо". Фишка: строишь контекст из тройки. Задача → правильное решение → ПОХОЖЕЕ неправильное решение с объяснением почему не то. Модель видит границы — что слишком мягко, что слишком сухо, где баланс. Компактная модель с контрастными примерами обошла большие общие модели по точности.

Принцип работы

Только положительные примеры не показывают границ. Ты говоришь "вежливо, но твёрдо" — модель выдаст что-то среднее, может промахнуться в любую сторону. Нет калибровки. Контрастные пары создают якоря восприятия. Покажи "вот ТАК слишком мягко, вот ТАК слишком сухо" — модель поймёт где между. Как линейка: без 3 и 7 не поймёшь где 5. Hard negatives — не любые неправильные примеры, а максимально похожие на правильные. Дашь совсем плохой пример ("Иди в жопу, клиент") — модель и так понимает что плохо. Но "Нам очень жаль, пожалуйста не обижайтесь" — выглядит вежливо, может показаться подходящим. Контрастный пример говорит: "Стоп, это ТОЖЕ неправильно, вот почему".

Почему работает

LLM обучена на массиве текста, где похожие паттерны означают разное. Без явного контраста модель не понимает границ. Контрастные примеры учат различать нюансы. Модель видит: вот правильно, вот почти правильно но не то. Разница в тонкостях — тон, формулировки, структура. Модель ловит эту разницу и применяет к твоей задаче. Почему ПОХОЖИЕ неправильные работают лучше случайных? Модель учится на границе различения. Близкие варианты показывают: вот здесь пролегает граница между правильным и неправильным. Случайный плохой пример слишком очевиден, не учит нюансам.

Когда применять

Задачи где нужно различать тонкие нюансы между похожими вариантами → тон текста (вежливо vs заискивающе, твёрдо vs грубо), выбор формулировок, стилистика, особенно когда критерии размыты или субъективны. НЕ подходит для простых однозначных задач ("столица России", "посчитай сумму") — там hard negatives бесполезны, нет нюансов для различения.

Мини-рецепт

1. Собери правильный пример: Возьми реальный случай правильного выполнения твоей задачи. Конкретный, не абстрактный.

2. Создай похожие неправильные: Попроси LLM сгенерировать 1-3 варианта, которые ВЫГЛЯДЯТ правильно, но нарушают тонкие критерии. Промпт: У меня задача: {твоя_задача}. Вот правильное решение: {пример}. Создай 2-3 ПОХОЖИХ неправильных варианта — правдоподобные, но с ошибками в тон/структура/логика. Объясни почему каждый не подходит.

3. Построй структуру тройки: Задача (что делать) → Правильное решение (positive) → Неправильное решение (negative) с кратким объяснением почему не то.

4. Запроси выполнение: На основе контраста правильного и неправильных — реши мою задачу: {твои_данные}. Следуй ПРАВИЛЬНОМУ подходу, избегай ошибок из НЕПРАВИЛЬНЫХ. Всё в одном промпте.

Примеры

[ПЛОХО] : Напиши письмо клиенту с отказом в возврате. Будь вежлив, но твёрд. Ситуация: клиент носил кроссовки 2 недели, потом пришёл с "браком" (стёрлась подошва от использования). Модель не видит границ — что слишком мягко, что слишком сухо. Результат размытый.
[ХОРОШО] : `` Напиши письмо клиенту с отказом в возврате. ПРАВИЛЬНЫЙ ТОН: "Благодарим за обращение. Мы изучили ситуацию. Согласно условиям возврата, товар с признаками использования не подлежит возврату. Готовы предложить скидку 15% на следующую покупку." НЕПРАВИЛЬНЫЙ #1 — слишком мягко: "Нам очень жаль! Понимаем разочарование. По правилам не можем вернуть, но пожалуйста не обижайтесь!" НЕПРАВИЛЬНЫЙ #2 — слишком сухо: "Заявка отклонена. Товар не соответствует условиям. Претензии не принимаются." Ситуация: клиент носил кроссовки 2 недели, потом пришёл с "браком" (стёрлась подошва). Напиши в ПРАВИЛЬНОМ ТОНЕ — твёрдо, фактологично, вежливо. Избегай крайностей. `` Модель видит якоря — между "извиняющимся" и "грубым" находит баланс: факты без агрессии, отказ без извинений за правила, конструктивное предложение.
Источник: Smarter, not Bigger: Fine-Tuned RAG-Enhanced LLMs for Automotive HIL Testing
ArXiv ID: 2511.22584 | Сгенерировано: 2026-01-12 19:04

Тезисы

ТезисКомментарий
Похожие неправильные примеры учат различать нюансы эффективнее случайныхКогда добавляешь в контекст примеры "как не надо", модель понимает границы. Но случайный плохой пример ("иди в жопу, клиент") не учит — модель и так знает, что это плохо. Похожий неправильный пример ("нам очень жаль, пожалуйста не обижайтесь") — выглядит правдоподобно, но нарушает критерий (заискивающий тон). Модель учится ловить тонкую разницу. Механика: Контраст создаёт якоря — вот граница "слишком мягко", вот "слишком сухо", между ними правильная зона. Без якорей модель стреляет вслепую. Применяй: Для задач с нюансами (тон текста, стиль, выбор между похожими вариантами) добавляй в few-shot не просто "делай так", а "делай так, НЕ делай вот так (похоже, но не то)". Генерируй похожие негативы через LLM: "создай вариант, который выглядит правильно, но нарушает критерий X"
📖 Простыми словами

Суть тут в том, что в узких технических темах огромные нейронки начинают «умничать» там, где нужно просто следовать инструкции. Когда инженер Volvo ищет конкретный сигнал в горе документации, обычная GPT-4 выдает общие советы вместо точных данных. Исследование доказывает: чтобы выжать максимум из AI в сложной нише, не нужно раздувать модель. Нужно заточить «зрение» системы — модель эмбеддингов — под конкретные термины и использовать компактную LLM, которая не будет галлюцинировать лишнего.

Это как пытаться найти редкую деталь на огромном складе. Можно нанять профессора-эрудита (GPT-4o), который знает всё обо всём, но на складе он будет рассуждать об истории машиностроения вместо того, чтобы рыться в коробках. А можно взять толкового стажёра (GPT-4o-mini), дать ему идеальные очки, которые подсвечивают нужные артикулы (файнтюнинг эмбеддингов), и четкую команду: «говори только то, что видишь на полке». Стажёр в очках сработает быстрее и точнее профессора, потому что он сфокусирован на задаче, а не на своих глубоких познаниях.

Что реально дает результат: файнтюнинг компактных эмбеддингов (модель на 110M параметров после дообучения рвет гигантов), использование hard negatives (когда модель специально учат отличать похожие, но разные штуки, типа «фонарь на машине» и «фонарь на прицепе») и выбор GPT-4o-mini для финального ответа. Оказалось, что маленькая модель лучше «заземляется» на факты и выдает точность 88.6%, в то время как большая модель часто улетает в фантазии.

Исследование проводили на автомобильных тестах, но принцип универсален. Это сработает в юриспруденции, медицине, тяжелой промышленности — везде, где данные фрагментированы, а цена ошибки высока. Главный месседж: SEO для документов внутри компании важнее, чем размер мозгов нейронки. Если ты правильно проиндексировал свои специфические данные, даже дешевая модель разложит всё по полочкам.

Короче: хватит гнаться за количеством параметров, пора заняться качеством связей. Если хочешь внедрить AI в серьезный бизнес, забудь про простые промпты — это полноценный ML-пайплайн. Нужно обучать свои эмбеддинги на «трудных примерах» и заставлять маленькие модели работать с узким контекстом. Кто продолжит кормить сырую GPT-4 горой документов без настройки, тот так и будет получать красивую, но бесполезную херню вместо ответов.

Сгенерировано: 21.12.2025 17:03 | ArXiv Data Collector

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с