3,583 papers
arXiv:2608.08869 74 9 авг. 2026 г. FREE

Позиционное смещение в порядковой классификации: почему LLM меняют оценку от перестановки меток

КЛЮЧЕВАЯ СУТЬ
Обнаружено: LLM не понимает шкалу оценки как ось смысла — она угадывает число по паттерну позиции в тексте. Переверни шкалу с 1=плохо/5=хорошо на 1=хорошо/5=плохо — и ответ на тот же вопрос может стать другим числом. Метод позволяет обнаружить и снизить этот сбой в любой задаче с оценкой по шкале — от тональности отзывов до качества кода. Фишка: точность и стабильность живут отдельно друг от друга — модель может отвечать точнее, но сильнее скакать от перестановок. Единственный рычаг, который чинит оба параметра сразу — сократить шкалу с 5 градаций до 2-3.
Адаптировать под запрос

TL;DR

Если попросить LLM оценить отзыв по шкале от 1 до 5, результат может измениться просто от того, в каком порядке вы описали шкалу — даже если смысл шкалы остался тем же. Исследователи проверили это на десяти топовых моделях и обнаружили: абсолютно все они «плывут» от трёх видов перестановок — порядка меток (1=плохо/5=хорошо или наоборот), порядка примеров-подсказок и того, где эти примеры стоят относительно вопроса.

Самое неприятное: точность и стабильность живут отдельно друг от друга. Модель может отвечать точнее, но при этом сильнее скакать от перестановок — например, натуральные названия меток («плохо», «отлично») вместо цифр почти не меняют точность, но резко увеличивают шанс, что ответ перевернётся при смене порядка. Единственное, что улучшает и точность, и стабильность одновременно — уменьшение числа градаций шкалы (не 5 баллов, а 3 или 2).

Готового лекарства нет: калибровочные методы не спасают от смещения меток, а попарное/списочное сравнение вариантов часто просаживает точность. Единственный рабочий компромисс — listwise-compare: попросить модель сравнивать варианты между собой, а не оценивать по отдельности. Это снижает нестабильность почти на пятую часть при минимальной потере точности.


🔬

Схема метода (три проверки на смещение)

ПРОВЕРКА 1 (порядок меток): Прогони задачу дважды →
  Раз 1: 1=плохо ... 5=отлично
  Раз 2: 1=отлично ... 5=плохо (проекция меток перевёрнута)
  → Сравни, изменился ли смысловой ответ

ПРОВЕРКА 2 (порядок примеров): Прогони задачу с разным порядком примеров-подсказок →
  По возрастанию класса / по убыванию / вперемешку
  → Сравни ответы

ПРОВЕРКА 3 (место примеров): Прогони задачу, меняя место блока примеров →
  Примеры перед вопросом / после вопроса / часть до, часть после
  → Сравни ответы

Все три проверки выполняются отдельными запросами с одним и тем же заданием, меняется только формат.


🚀

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

Задача: Вы настраиваете промпт для регулярной оценки тональности отзывов клиентов на Wildberries или Яндекс.Маркете через ChatGPT — хотите доверять шкале от 1 до 5.

Промпт (проверка устойчивости):

Ниже отзыв. Оцени тональность по шкале:
1 — очень негативный
2 — негативный
3 — нейтральный
4 — позитивный
5 — очень позитивный

Отзыв: «Доставили быстро, но упаковка была порвана, товар цел.»

Ответь только числом.

Затем повторите тот же запрос, но с перевёрнутой шкалой:

1 — очень позитивный
2 — позитивный
3 — нейтральный
4 — негативный
5 — очень негативный

Отзыв: «Доставили быстро, но упаковка была порвана, товар цел.»

Ответь только числом.

Результат: Если модель честно понимает шкалу, при переводе цифры 4 (позитивный) в новой нумерации она должна выдать 2. На практике часто получится другое число — это и есть смещение от перестановки. Вы увидите несовпадение смыслового результата при формально одинаковой задаче.


🧠

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

LLM не «понимает» шкалу как абстрактную ось значений — она предсказывает следующий токен, опираясь на паттерны позиции и формата в тексте, который видела при обучении. Цифра «5» в конце шкалы статистически ассоциируется с одними паттернами независимо от того, что вы к ней приписали словами.

Модель хорошо умеет сравнивать варианты друг с другом (это ближе к тому, как она обучалась ранжировать), но хуже — присваивать абсолютное число изолированному объекту. Поэтому просьба «сравни отзыв А и отзыв Б, какой позитивнее» даёт более стабильный результат, чем «поставь отзыву А число от 1 до 5».

Рычаги управления промптом: - Число градаций шкалы ↓ (5→3 или 5→2) → одновременно точнее и стабильнее. Если задача позволяет — дробите шкалу грубее. - Числовые метки вместо словесных («1,2,3» вместо «плохо, нейтрально, отлично») → меньше смещения от перестановки меток, хотя точность может чуть просесть. - Меньше примеров-подсказок (few-shot) → меньше нестабильности от порядка примеров, если задача не требует много контекста. - Формулировка через сравнение, а не через изолированную оценку → просите «сравни А и Б» вместо «оцени А от 1 до 5» для более надёжного результата.


📋

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

Тебе нужно оценить {объект} по шкале от 1 до {N}, где:
{шкала_с_описанием}

{объект_для_оценки}

Перед тем как дать финальный ответ, дважды прогони эту задачу:
1) с текущей шкалой
2) с перевёрнутой шкалой (1 становится {N}, {N} становится 1)

Сравни, совпадает ли смысловой результат (не число, а смысл — например «позитивный»).
Если результат разный — сократи шкалу до 2-3 градаций и повтори.

Что подставлять: - {объект} — что оцениваете (отзыв, тональность текста, качество кода) - {N} — число градаций шкалы - {шкала_с_описанием} — сама шкала с пояснениями - {объект_для_оценки} — конкретный текст/данные

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

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

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

LLM спросит, какая у вас шкала и что вы оцениваете — это нужно, чтобы правильно сформулировать перевёрнутую версию шкалы для проверки на устойчивость.


⚠️

Ограничения

⚠️ Нет надёжного универсального лекарства: протестированные методы калибровки (контекстная калибровка, PriDe) не уменьшают смещение от порядка меток — некоторые даже увеличивают его.

⚠️ Метод сравнения (listwise-compare) не переносится одинаково между моделями: конфигурация, подобранная для одной модели, может улучшать стабильность в одном аспекте и ухудшать в другом при переносе на другую модель.

⚠️ Прямое попарное сравнение вариантов сильно теряет точность — если просто просить модель сравнивать пары объектов без продуманной агрегации результатов, итоговая точность падает заметно.

⚠️ Метод не решает проблему полностью, только смягчает — даже лучший найденный вариант (listwise-compare) снижает смещение примерно на пятую часть, а не убирает его.


🔍

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

Исследователи взяли десять топовых моделей (Claude, GPT, Gemini, DeepSeek, Llama, Qwen, Grok) от семи разных провайдеров и прогнали их через задачу классификации отзывов по тональности (шкала SST-5, 5 градаций). Три «зонда» — перестановка меток, порядка примеров и места примеров — применялись при детерминированной генерации (модель выдаёт одинаковый ответ на одинаковый вход), чтобы точно измерить эффект перестановки без шума случайности.

Результат ошарашил: абсолютно все 30 комбинаций модель×тест показали значимую нестабильность — от 8,5% до 61,5% ответов «переворачивались» просто от смены порядка. Даже при случайной генерации (температура 0.7) у шести из десяти моделей смещение оставалось заметным сверх обычного шума повторных запросов.

Дальше команда перебрала восемь факторов промпта (формат меток, число градаций, число примеров, пунктуация, формулировка инструкции) на пяти датасетах и обнаружила ключевую закономерность: точность и устойчивость почти всегда конфликтуют — улучшение одного часто портит другое. Единственное исключение — уменьшение числа градаций шкалы улучшало и то, и другое сразу. Это логично: чем меньше вариантов, тем меньше пространство для «путаницы» позиций.

Наконец, протестировали разные способы построения самого пайплайна оценки (попарное сравнение, списочное сравнение, калибровка) и выяснили, что listwise-compare — просить модель сравнивать варианты, а не оценивать изолированно — даёт лучший баланс, хотя и не идеальный, и плохо переносится между моделями без повторной настройки.


🔗

Ресурсы

Yu Wang, Jeffrey Zhou, Menglin Liu, Ge Shi. Position Bias in Ordinal Classification: A Systematic Evaluation. Cornell University, University of Washington, The Chinese University of Hong Kong (Shenzhen), UC Davis. Preprint.


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

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

Обнаружено: LLM не понимает шкалу оценки как ось смысла — она угадывает число по паттерну позиции в тексте. Переверни шкалу с 1=плохо/5=хорошо на 1=хорошо/5=плохо — и ответ на тот же вопрос может стать другим числом. Метод позволяет обнаружить и снизить этот сбой в любой задаче с оценкой по шкале — от тональности отзывов до качества кода. Фишка: точность и стабильность живут отдельно друг от друга — модель может отвечать точнее, но сильнее скакать от перестановок. Единственный рычаг, который чинит оба параметра сразу — сократить шкалу с 5 градаций до 2-3.

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

Правило которое ломает интуицию: точнее не значит стабильнее. Словесные метки типа «отлично»/«плохо» почти не портят точность, но резко увеличивают шанс что ответ перевернётся при смене порядка меток. Модель хорошо сравнивает варианты между собой, но плохо ставит абсолютное число одному объекту — вот в чём корень проблемы.

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

Причина в том, как модель учится генерировать текст. LLM не держит в голове шкалу как линейку значений. Она предсказывает следующий токен по паттернам позиции и формата, которые видела при обучении. Цифра «5» в конце шкалы тянет за собой одни ассоциации — независимо от того что вы к ней приписали словами. Вот почему сравнение «какой отзыв позитивнее» работает стабильнее чем оценка «поставь число от 1 до 5» — сравнение ближе к тому, как модель обучалась ранжировать тексты. Лучший найденный метод (сравнение списком) режет нестабильность почти на пятую часть.

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

Классификация текста по шкале → конкретно для оценки тональности отзывов, приоритета тикетов поддержки, качества кода, особенно когда шкала на 4+ градаций и вы доверяете абсолютным числам без проверки. Не подходит если задача требует точную точечную оценку без возможности сократить шкалу или переформулировать как сравнение.

Мини-рецепт

1. Прогони дважды: с обычной шкалой и с перевёрнутой (1 стало 5, 5 стало 1). Смысл ответа должен совпасть.
2. Сократи градации: если шкала на 5 баллов — попробуй свести до 3 или 2. Это единственный рычаг который чинит и точность, и стабильность сразу.
3. Замени слова на числа: вместо «плохо/нейтрально/отлично» используй просто 1/2/3 — меньше шансов на смещение от перестановки.
4. Переформулируй как сравнение: вместо «оцени отзыв А от 1 до 5» спроси «какой отзыв позитивнее — А или Б» — модели это ближе.
5. Проверь на своих данных: методы калибровки (типа PriDe) не гарантия — тестируй именно listwise-сравнение, но помни: оно тоже режет проблему лишь на треть, не убирает целиком.

Примеры

[ПЛОХО] : Оцени тональность отзыва по шкале 1-5, где 1=очень негативный, 5=очень позитивный. Отзыв: "Доставили быстро, но упаковка порвана"
[ХОРОШО] : Сравни два отзыва по позитивности и скажи какой более позитивный: Отзыв А: "Доставили быстро, но упаковка порвана". Отзыв Б: "Всё отлично, доставка вовремя". Если нужна оценка одного отзыва — сократи шкалу до 3 градаций (негативно/нейтрально/позитивно) и прогони с обычным и перевёрнутым порядком меток, чтобы проверить — совпадает ли смысловой результат.
Источник: Position Bias in Ordinal Classification: A Systematic Evaluation
ArXiv ID: 2608.08869 | Сгенерировано: 2026-08-11 05:36

Проблемы LLM

ПроблемаСутьКак обойти
Оценка по шкале меняется от перестановки меток или примеровПросишь оценить что-то по шкале 1-5. Меняешь порядок цифр в описании шкалы, порядок примеров-подсказок или их место в тексте — смысл задачи тот же, но ответ модели меняется. Модель путается из-за формата, а не из-за содержания. Это ломает любую задачу ранжирования: оценку тональности, качества кода, релевантности документаСократи шкалу до 2-3 градаций вместо 5+. Используй цифры вместо слов в описании меток. Проси модель сравнивать варианты между собой, а не оценивать по отдельности: "Что позитивнее — А или Б?" вместо "Оцени А от 1 до 5"

Методы

МетодСуть
Сокращение градаций шкалы — точнее и стабильнее одновременноВместо шкалы 1-5 используй 1-3 или даже 1-2 (да/нет). Дай модели меньше вариантов для выбора. Почему работает: чем больше градаций, тем больше позиционных паттернов может перепутать модель — у неё больше вариантов "сбиться". С грубой шкалой путать почти нечего. Работает для любой задачи ранжирования или оценки. Не работает, если задаче реально нужна тонкая градация (например, точная оценка 1-100)
Сравнение вместо изолированной оценкиПроси модель сравнить два и более варианта между собой, а не присваивать число одному объекту. "Какой из отзывов более позитивный — А или Б?" вместо "Оцени отзыв А от 1 до 5". Почему работает: модель обучена сравнивать и ранжировать тексты друг с другом, это ближе к её натуральным задачам во время обучения. Присвоить абсолютное число изолированному объекту — задача менее естественная для неё. Работает: нужно ранжировать несколько вариантов, важна стабильность. Не работает: нужна абсолютная оценка одного объекта без альтернатив, или если сравнивать пары "в лоб" без агрегации — точность может упасть

Тезисы

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

Position Bias in Ordinal Classification: A Systematic Evaluation

arXiv: 2608.08869

Суть в том, что современные нейронки — это не беспристрастные судьи, а заложники позиционного смещения. Когда ты просишь модель оценить что-то по шкале, она не вникает в суть цифр так, как это делает человек. Для неё важно не только значение, но и то, где эта цифра стоит в тексте. Если ты поменяешь порядок в инструкции — например, напишешь сначала «5», а потом «1», — результат изменится, хотя смысл задачи остался прежним. Модели просто цепляются за структуру текста, а не за логику оценки.

Это как если бы ты пришел на дегустацию вина, и тебе выставили бокалы в ряд. Ты подсознательно ставишь высший балл первому или последнему просто потому, что они стоят с краю, а не из-за вкуса самого напитка. Формально ты эксперт, но на деле — жертва расстановки мебели. Нейронки ведут себя точно так же: они «плывут» от того, в каком углу ринга находится нужная цифра.

Исследователи прогнали десять топовых моделей и выяснили, что все 10 лажают из-за трех вещей. Во-первых, порядок меток: если шкала идет от 1 до 5, ответ будет одним, а если от 5 до 1 — другим. Во-вторых, порядок примеров: то, какой пример ты показал первым в промпте, сбивает прицел. В-третьих, расположение подсказок: если примеры стоят слишком далеко от вопроса или, наоборот, слишком близко, модель начинает выдавать рандом. Это не баг конкретной версии, это системный облом всей технологии предсказания токенов.

Тестировали это на классификации отзывов, но принцип универсален. Если ты используешь AI для скоринга резюме, оценки качества кода или фильтрации заявок в техподдержку — ты в зоне риска. Позиционное смещение превращает твою точную аналитику в лотерею. Любая задача, где нужно выбрать вариант из списка или поставить оценку, может выдать мусор просто потому, что ты неудачно составил список вариантов в промпте.

Короче: нельзя просто вывалить шкалу оценок и ждать объективности. 10 из 10 моделей предвзяты к позиции, и это надо учитывать при настройке промптов. Если хочешь адекватных данных, придется либо перемешивать варианты в каждом запросе, либо жестко фиксировать формат, понимая, что модель всегда будет немного «подсуживать» тем цифрам, что стоят с краю. Иначе ты будешь строить бизнес-стратегию на основе того, какой токен нейронке было удобнее выплюнуть первым.

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

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

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