3,583 papers
arXiv:2610.16839 72 12 окт. 2026 г. FREE

Label Collapse: почему few-shot классификатор может отвечать одним и тем же ярлыком, а точность 50% этого не показывает

КЛЮЧЕВАЯ СУТЬ
Классификатор с точностью 50% может вообще не читать ваш текст: он отвечает одним и тем же словом на любой вход. Метод проверки позволяет поймать эту поломку одним подсчётом: смотришь на долю каждого ярлыка в ответах, а не на точность. Фишка: точность 50% не отличает «всегда отвечает positive» от «честно ошибается в половине случаев». Поэтому считай распределение ответов. Если один ярлык занимает 80–100% ответов на сбалансированной выборке, это коллапс ярлыков.
Адаптировать под запрос
⚡

TL;DR

Label collapse (коллапс ярлыков) — состояние, когда модель в промпте с примерами выдаёт один и тот же ярлык на любой вход. Запрос она при этом игнорирует. На сбалансированной выборке такой классификатор получает около 50% точности. Это выглядит как «слабоватая, но рабочая модель». На деле модель вообще не читает входной текст.

Главная находка: точность не ловит эту поломку. Модель, которая всегда отвечает «positive», и модель, которая честно ошибается в половине случаев, дают одинаковые 50%. Коллапс не лечится ни чередованием примеров (позитивный, негативный, позитивный…), ни добавлением примеров. Сильнее всего на него влияет выбор самих слов-ярлыков. Пара circle/square сломалась у всех пяти моделей. Пара strong/weak работала у всех. Направление коллапса в основном задаётся предпочтением модели к слову ещё до всяких примеров.

Что из этого взять без доступа к внутренностям моделей: смотри на распределение ответов, а не только на точность. Прогони классификатор на выборке и посчитай, как часто выпадает каждый ярлык. Если одна метка занимает 80–100% ответов при сбалансированных данных, это коллапс. Дальше меняй слова-ярлыки и проверяй, а не надейся на порядок примеров.

📌

Схема проверки (по логике статьи)

ШАГ 1: Собрать сбалансированную выборку запросов (поровну классов) → 50–200 штук
ШАГ 2: Прогнать через промпт с примерами → список ответов
ШАГ 3: Посчитать долю каждого ярлыка → норма ~50/50 при сбалансированных данных
ШАГ 4: Если доля одного ярлыка ≥80% И точность ~50% → коллапс
ШАГ 5: Поменять слова-ярлыки (не порядок примеров!) → повторить шаги 2–4

Каждый шаг — отдельный прогон или таблица. В один промпт это не сводится: нужна выборка и подсчёт.

🚀

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

Задача: Владелец магазина на Wildberries разбирает отзывы. Нужно автоматически помечать «срочно» (брак, возврат, угроза жалобы) и «не срочно» (всё остальное). Он собрал промпт с 8 примерами, чередуя ярлыки. На проверке точность вышла 52%. Он решает, что «модель просто не тянет». На деле она может отвечать «срочно» на всё.

Промпт (рабочий классификатор, формат как в статье):

Классифицируй отзыв. Отвечай одним словом.

Отзыв: Пришла коробка вся мятая, внутри разбитая кружка, хочу вернуть деньги
Ответ: срочно

Отзыв: Кофта приятная, села хорошо, спасибо
Ответ: не срочно

Отзыв: Третий раз заказываю, снова брак, напишу в Роспотребнадзор
Ответ: срочно

Отзыв: Цвет как на фото, доставили быстро
Ответ: не срочно

[... ещё 4 примера, ярлыки чередуются ...]

Отзыв: {новый отзыв}
Ответ:

Промпт для проверки (отдельный шаг в чате):

Вот 100 отзывов, из них 50 срочных и 50 нет (я знаю правильные ответы). 
Я прогнал их через классификатор. Вот ответы модели: {список ответов}. 
Вот правильные ответы: {эталон}.
Посчитай: 1) долю каждого ярлыка в ответах модели; 2) точность; 
3) точность отдельно по срочным и по несрочным. 
Если один ярлык занимает более 80% ответов — скажи прямо: «коллапс».

Результат: Модель выдаст три числа: распределение ярлыков, общую точность и точность по каждому классу. Если классификатор «сломан», будет видно перекос. Например, почти все ответы одного класса и почти ноль правильных в другом. Тогда следующий шаг — подставить другие слова-ярлыки («A/B», «горит/терпит» и т. д.) и повторить подсчёт.

🧠

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

Слабость. Модель выбирает ярлык не только по смыслу запроса. У неё есть предпочтение к конкретным словам ещё до того, как она увидела примеры. Слово «circle» для неё «весомее», чем «square», и этот перекос может перебить смысл запроса. Точность, усреднённая по классам, этот перекос маскирует.

Сильная сторона. Распределение ответов видно в обычном списке. Если запросы сбалансированы, а ответы нет, значит, модель на запрос не смотрит. Для этого не нужны логиты, GPU или код, достаточно таблицы.

Как это обходит слабость. Проверка «доля каждого ярлыка» ловит коллапс прямо. А поскольку направление коллапса почти полностью определяется словами, смена слов-ярлыков — самый действенный рычаг. Порядок и число примеров сильного перекоса не лечат.

Рычаги: - Слова-ярлыки → главный рычаг. Пробуй 2–3 разные пары и сравнивай. - Число примеров → не гарантирует улучшения. Иногда перекос закрепляется, иногда медленно уходит. - Порядок примеров → у слабо перекошенных пар может развернуть направление коллапса, сильный перекос не лечит. - Размер проверочной выборки → 50–200 запросов достаточно, чтобы увидеть перекос.

📋

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

Формат классификатора из статьи: каждый пример — текст, затем «Answer:» и ярлык. Промпт заканчивается «Answer:» после запроса.

{инструкция_классификации}

{текст_1}
Ответ: {ярлык_А}

{текст_2}
Ответ: {ярлык_Б}

{текст_3}
Ответ: {ярлык_А}

{текст_4}
Ответ: {ярлык_Б}

[... чередуй ярлыки, поровну каждого ...]

{новый_текст}
Ответ:

Что подставлять: - {инструкция_классификации} — одна фраза: что за задача и «отвечай одним словом». - {текст_N} — реальные примеры из твоих данных. - {ярлык_А}, {ярлык_Б} — слова-ярлыки. Попробуй несколько пар и сравни доли ответов.

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

Вот шаблон few-shot классификатора и порядок проверки на коллапс ярлыков. 
Адаптируй под мою задачу: {моя задача}. 
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, какие у тебя классы, примеры текстов и как выглядят правильные ответы. Эти данные нужны, чтобы собрать сбалансированный набор примеров и проверочную выборку. Затем она предложит 2–3 варианта слов-ярлыков для сравнения.

⚠️

Ограничения

⚠️ Малые и «сырые» модели: Проверяли модели на 8–9 млрд параметров, в основном базовые, без чат-настройки. На ChatGPT, Claude и Gemini такого не проверяли. Не факт, что у них коллапс так же силён.

⚠️ Нет готового рецепта: Статья показывает проблему и диагностику, но не даёт проверенного способа лечения. Совет «меняй слова-ярлыки» вытекает из данных, но конкретные слова надо подбирать на своей задаче.

⚠️ Русские слова не проверялись: Все пары были английскими. Какие русские слова безопасны, неизвестно. Проверяй сам.

⚠️ Главный диагностический метод требует внутренностей: Основной способ авторов (логарифм отношения вероятностей двух ярлыков за один проход) требует доступа к вероятностям. В обычном чате его нет. Остаётся подсчёт долей ответов, он грубее.

⚠️ Только два бинарных набора: Тональность и безопасность запросов. Многоклассовые задачи и длинные тексты не исследовались.

⚠️ Диффузионные модели — нишевая часть: Половина статьи про диффузионные языковые модели (LLaDA), которые читатель вряд ли использует.

🔍

Как исследовали

Команда взяла пять моделей: три диффузионных (LLaDA, iLLaDA, LLaDA-Instruct) и две обычных (Llama-3-8B-Instruct, Qwen3.5-9B-Base). Проверяли на 20 парах слов-ярлыков: sentiment, safety, а также «нейтральные» пары вроде circle/square, hot/cold, yes/no. Примеры показывали в четырёх порядках: чередуя, группами, блоками и вперемешку. Число примеров меняли от 4 до 30. На каждое условие брали 200 запросов.

Логика была в том, чтобы отделить «модель не умеет задачу» от «модель не смотрит на запрос». Для этого мерили не только точность, но и долю положительного ярлыка в ответах. Дополнительно считали разрыв вероятностей двух слов в момент ответа. Если ответ почти не зависит от запроса, это коллапс.

Удивило несколько вещей. Circle/square сломалась у всех пяти моделей почти в каждом условии, хотя пара не связана с задачей. Strong/weak оказалась здоровой у всех. У диффузионной iLLaDA на классической паре positive/negative коллапса не было, у остальных четырёх был. Причина, по выводу авторов, в обучающих данных, а не в чат-настройке. Примерно в трёх четвертях случаев направление коллапса можно предсказать по предпочтению модели к слову без единого примера. Само это предпочтение не объясняется частотой слов в языке. Чередование примеров слабый перекос иногда разворачивало, сильный не спасало вообще. Число примеров тоже не гарантировало улучшения: в одних условиях перекос закреплялся, в других сглаживался. Для практики это значит: не доверяй точности, смотри распределение ответов и подбирай слова-ярлыки.

💡

Адаптации и экстраполяции

🔧 Техника: добавить «нулевой» тест слов → увидеть врождённый перекос

Перед тем как собирать примеры, прогони классификатор вообще без них — только инструкция и запрос:

Классифицируй отзыв одним словом: «срочно» или «не срочно».
Отзыв: {текст}
Ответ:

Если уже без примеров модель на 90% выбирает одно слово, это врождённый перекос, и примеры с ним, скорее всего, не справятся. Авторы нашли, что направление коллапса в основном предсказывается именно таким нулевым тестом.

🔧 Техника: считать точность по классам отдельно → поймать коллапс по-другому

Общая точность скрывает перекос. Попроси модель вывести матрицу «правильный класс × ответ модели». Коллапс виден сразу: один столбец заполнен, другой пуст.

Экстраполяция: сравнение двух наборов ярлыков

Это моя идея, статья её не проверяла. Если нужен надёжный классификатор, прогони один и тот же промпт с двумя наборами ярлыков на одной выборке:

Вот ответы классификатора с ярлыками «срочно/не срочно»: {список_1}.
Вот ответы с ярлыками «A/B»: {список_2}. Эталон: {эталон}.
Сравни доли ответов и точность по классам у обоих вариантов. 
Какой набор ярлыков ближе к эталонному распределению?
🔗

Ресурсы

  • Label Collapse in Diffusion Language Model In-Context Learning — Ziye Guo (University of Connecticut), Ye Yuan (McGill University). NeurIPS 2026, Workshop DiffuLM.
  • Связанные работы: contextual calibration (Zhao et al.), PMI scoring (Holtzman et al.), batch calibration, LLaDA (Nie et al.), iLLaDA.

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

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

Классификатор с точностью 50% может вообще не читать ваш текст: он отвечает одним и тем же словом на любой вход. Метод проверки позволяет поймать эту поломку одним подсчётом: смотришь на долю каждого ярлыка в ответах, а не на точность. Фишка: точность 50% не отличает «всегда отвечает positive» от «честно ошибается в половине случаев». Поэтому считай распределение ответов. Если один ярлык занимает 80–100% ответов на сбалансированной выборке, это коллапс ярлыков.

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

Процесс простой: прогнал выборку, посчитал доли ярлыков, поменял слова-ярлыки, прогнал снова. Лечит не порядок примеров, а выбор слов-ярлыков. Чередование «позитивный, негативный, позитивный» коллапс не убирает. Добавление примеров тоже не гарантирует ничего. Это как сломанные часы: дважды в сутки они показывают верное время. Точность 50% и есть те самые два раза. Узнать, что часы стоят, можно только если посмотреть на стрелки, то есть на распределение ответов.

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

У модели есть вкусы ещё до первого примера. Слово «circle» для неё весит больше, чем «square». Этот перекос перебивает смысл запроса, а средняя точность его прячет. Результат из статьи: пара circle/square сломалась у всех пяти моделей. Пара strong/weak работала у всех. Направление коллапса в основном задают слова-ярлыки, а не примеры в промпте. Поэтому смена слов бьёт точнее, чем возня с порядком. Проверка при этом бесплатная: хватит таблицы ответов, без доступа к вероятностям и без кода.

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

Классификация с примерами в промпте → разметка тональности, фильтр опасных запросов, срочное/несрочное в отзывах и обращениях, особенно когда точность застряла около 50% и ты думаешь, что модель просто слабая. Статью проверяли на двух бинарных задачах и моделях на 8–9 млрд параметров, в основном без чат-настройки. НЕ подходит как готовое лекарство: рецепта лечения в статье нет, есть только диагностика и направление «меняй слова». Для многоклассовых задач, длинных текстов и русских слов-ярлыков эффект не проверяли.

Мини-рецепт

1. Собери выборку: 50–200 запросов, классов поровну, правильные ответы известны.
2. Прогони через свой промпт: сохрани все ответы модели списком.
3. Посчитай доли: сколько раз выпал каждый ярлык. При сбалансированных данных ждём примерно 50/50.
4. Ищи перекос: один ярлык занимает 80% и выше, а точность около 50%? Это коллапс, а не слабая модель.
5. Поменяй слова-ярлыки: возьми 2–3 новые пары. Порядок примеров не трогай, он не главный рычаг.
6. Повтори подсчёт: оставь ту пару, у которой доли ближе к честным, а точность по каждому классу выше.
7. Не доверяй чужим выводам: проверка на ChatGPT, Claude и Gemini в статье не делалась. Гони свой тест.

Примеры

[ПЛОХО] : Точность 52%, модель слабая, добавлю ещё 8 примеров и поменяю их порядок
[ХОРОШО] : Вот 100 отзывов, из них 50 срочных и 50 несрочных. Вот ответы классификатора: {список ответов}. Вот правильные ответы: {эталон}. Посчитай: 1) долю каждого ярлыка в ответах модели; 2) общую точность; 3) точность отдельно по срочным и несрочным. Если один ярлык занимает более 80% ответов, скажи прямо: коллапс. [ХОРОШО, следующий шаг]: в исходном промпте с примерами замени Ответ: срочно и Ответ: не срочно на Ответ: горит и Ответ: терпит. Прогони те же 100 отзывов и сравни доли ярлыков.
Источник: Label Collapse in Diffusion Language Model In-Context Learning
ArXiv ID: 2610.16839 | Сгенерировано: 2026-10-15 00:10

Проблемы LLM

ПроблемаСутьКак обойти
Классификатор с примерами отвечает одним ярлыком на всё, а точность этого не показываетДаёшь в промпте примеры с ярлыками. Модель начинает выдавать один и тот же ярлык на любой вход. Текст запроса она не читает. На сбалансированных данных точность выходит около 50%. Это выглядит как «слабая, но рабочая модель». Модель, которая всегда говорит «да», и модель, которая честно ошибается в половине случаев, дают одинаковые 50%. Чередование примеров и их добавление это обычно не лечатНе доверяй одной точности. Посчитай, как часто выпадает каждый ярлык. Если один занимает 80–100% ответов, это коллапс. Дальше меняй слова-ярлыки и считай заново. Порядок примеров не трогай, это слабый рычаг

Методы

МетодСуть
Проверка по доле ярлыков — ловит скрытую поломку классификатораВозьми выборку, где классов поровну, 50–200 запросов. Ответы известны. Прогони через промпт с примерами. Посчитай долю каждого ярлыка и точность отдельно по каждому классу. Можно попросить саму модель посчитать по таблице ответов: Посчитай долю каждого ярлыка, общую точность и точность по классам. Если один ярлык больше 80% — напиши «коллапс». Почему работает: при равных классах во входе ответы тоже должны быть примерно равны. Если перекос сильный, ответ не зависит от запроса. Среднюю точность перекос маскирует, а доли ярлыков его показывают. Когда применять: любая классификация да/нет или с двумя классами, любой промпт с примерами. Когда не хватает: многоклассовые задачи и длинные тексты. Там метод не проверяли, а подсчёт долей грубее, чем анализ вероятностей внутри модели
📖 Простыми словами

Label Collapse in DiffusionLanguageModelIn-Context Learning

arXiv: 2610.16839

Нейросети в режиме обучения на примерах иногда внезапно тупеют до уровня тостера. Вместо того чтобы анализировать входные данные, модель впадает в label collapse — намертво клинит на одном конкретном ответе и лепит его на всё подряд. Корень проблемы в её обучении: у модели есть врождённый перекос к токенам, когда одно слово кажется ей базово весомее и привлекательнее, чем другое. Этот перекос намертво глушит логику, и на реальный текст запроса модели становится абсолютно плевать.

Это как нанять охранника на фейсконтроль, дать ему четкие правила, а он тупо пускает вообще каждого подряд. Ты открываешь отчёт в конце смены, а там ровно 50% угаданных решений — просто потому, что половина толпы случайно соответствовала дресс-коду. Формально система работает, но по факту охранник даже не открывал глаза, а просто стоял и монотонно кивал головой.

Главная засада кроется в том, что метрика средней точности маскирует эту дичь. Ты скармливаешь промпт с 8 примерами, запускаешь сортировку отзывов на «срочно» и «не срочно», получаешь на тесте точность 52% и думаешь: «ну, модель слабовата, но задачу поняла». Ни черта она не поняла: модель словила коллапс ярлыков и ставит ярлык «срочно» на абсолютно каждый отзыв, включая признания в любви бренду.

Исследовали явление на диффузионных языковых моделях, но грабли универсальны для любого in-context learning и всей работы с промптами. Модерация контента, скоринг лидов, сортировка тикетов техподдержки — везде, где есть выбор из пары вариантов, ты рискуешь получить иллюзию работающего классификатора. Если веса модели смещены в сторону одного слова, вся твоя дорогая цепочка рассуждений схлопывается в ноль.

Короче: хватит слепо верить «приемлемой точности около пятидесяти процентов» и оценивать промпты по одной общей цифре. Всегда проверяй распределение классов и строй матрицу ошибок, чтобы убедиться, что сеть реально читает запросы. Иначе ты внедришь в прод абсолютно слепой генератор одного ответа, наивно полагая, что «AI просто пока учится».

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

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

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