3,583 papers
arXiv:2607.26317 80 28 июля 2026 г. FREE

CDP (Cognitive Diagnostic Profiling): детальный список умений вместо расплывчатого "средний человек" делает симуляцию личности точной

КЛЮЧЕВАЯ СУТЬ
Просишь модель сыграть 'слабого ученика' — а получаешь отличника в маске: она всё равно решает правильно, просто с извинениями. Метод CDP позволяет заставить LLM правдоподобно ошибаться именно там, где ошибся бы реальный человек — со своими конкретными пробелами, а не выдуманным средним уровнем. Фишка: вместо метки "новичок" даёшь список конкретных навыков — что человек умеет уверенно, чего не умеет совсем, что путает. Модель перестаёт играть роль вообще и начинает следовать конкретным ограничениям — отсюда честный разброс ответов вместо усреднённой правильности.
Адаптировать под запрос

TL;DR

CDP — техника, которая заменяет расплывчатую персону («средний ученик», «новичок») на конкретный список того, что человек умеет и не умеет, разбитый на отдельные пункты. Модель получает не общий уровень, а детальную карту навыков — и играет роль намного точнее.

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

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


🔬

Схема метода

ШАГ 1: Разбей нужный навык на K конкретных под-навыков → список из K пунктов
ШАГ 2: Реши, какие пункты "виртуальный человек" освоил (да/нет) → бинарный профиль
ШАГ 3: Переведи каждый пункт в текст: что человек умеет уверенно, чего не умеет совсем → готовое описание-профиль
ШАГ 4 (для набора людей): Задай как часто встречается каждый профиль — поровну или по реальной статистике аудитории → пул виртуальных людей
ШАГ 5: Дай LLM профиль + задачу, попроси отвечать как человек с этим профилем → ответ, соответствующий пробелам в знаниях
ШАГ 6 (для теста в целом): Собери ответы по всем профилям, посмотри где вопросы оказались слишком лёгкими/сложными

Шаги 1–3 и 5 делаются в одном чате за один запрос. Шаги 4 и 6 нужны только если вы хотите прогнать много персон для статистики — тогда лучше через скрипт, но в чате можно вручную сделать 3–5 профилей.


🚀

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

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

Промпт:

Вот функция в приложении: экран сравнения тарифов. Пользователь может выбрать до 3 тарифов 
и увидеть их характеристики рядом: цена, гигабайты, минуты, условия роуминга.

Симулируй, как пройдёт эту функцию пользователь со следующим профилем навыков:
- Умеет уверенно: находить нужный раздел в главном меню, читать цену и объём интернета
- Не умеет совсем: пользоваться фильтрами, понимать термины "безлимит с оговорками", "льготный период"
- Умеет частично: сравнивать два пункта визуально, но путается при третьем варианте

Ответь от первого лица. Пройди через функцию шаг за шагом: что делаешь, на чём застреваешь, 
что говоришь вслух в этот момент.

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


🧠

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

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

Зато модель отлично умеет следовать явным, детализированным инструкциям о том, что персонаж знает и не знает. Если сказать не «слабый ученик», а «умеет вычитать простые дроби, но не умеет занимать у целого числа» — модель получает конкретное правило поведения и держится его гораздо строже.

CDP использует эту сильную сторону: вместо одной размытой метки даёт список конкретных фактов о персонаже. Модель перестаёт «играть роль в целом» и начинает соблюдать конкретные ограничения — отсюда и более реалистичный разброс ответов.

Рычаги управления: - Количество под-навыков (K) → больше пунктов — точнее профиль, но длиннее промпт. Для простых задач хватит 3-4 пунктов. - Три уровня освоенности (умеет уверенно / не умеет совсем / умеет частично) вместо простого да/нет → более гибкое и живое поведение персонажа. - Реальная статистика аудитории (если есть данные о своих пользователях) → добавьте её в промпт как ориентир: «70% пользователей путаются в фильтрах» — это резко повышает точность симуляции у моделей, которые и без того неплохо держат профиль.


📋

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

Вот {контекст: тест/функция/сценарий}: {краткое описание}.

Симулируй, как {отреагирует/пройдёт это} человек со следующим профилем:
- Умеет уверенно: {навык 1, навык 2}
- Не умеет совсем: {навык 3, навык 4}
- Умеет частично: {навык 5}

Ответь от первого лица, шаг за шагом показывая действия и мысли такого человека.

Подставьте: контекст (что тестируете), и 3-5 конкретных навыков, разбитых по трём категориям владения.

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

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

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

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


⚠️

Ограничения

⚠️ Требует экспертной разбивки: Если навык разбит грубо или неправильно (например, слишком общие пункты), профиль не даст реального выигрыша — качество метода зависит от того, насколько конкретны формулировки.

⚠️ Слабее работает без "режима размышления": Модели с включённым рассуждением (thinking mode) держат профиль намного точнее моделей без него — на моделях без рассуждения эффект слабее.

⚠️ Для статистической калибровки нужен инструмент для массового прогона: Один-два профиля можно проверить в чате вручную. Но если нужно прогнать десятки профилей для статистически надёжного результата (как в тестировании образовательных материалов) — потребуется скрипт или API.


🔍

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

Исследователи взяли реальные данные 536 школьников, которые проходили тест из 15 заданий на вычитание дробей — с известной разбивкой на 5 конкретных навыков. Они сравнили, как 8 разных LLM (от Google, DeepSeek, Qwen, Mistral) отвечают на эти же задания в трёх режимах: без всякого профиля, с равномерно случайным детальным профилем, и с профилем, взвешенным по реальной статистике распределения навыков среди школьников.

Без профиля модели вели себя как отличники — почти все отвечали правильно на всё, независимо от сложности вопроса, и совпадение с распределением реальных учеников было слабым. Стоило дать детальный профиль — совпадение резко выросло: например, у одной из моделей точность предсказания сложности заданий подскочила с корреляции 0.24 до 0.86–0.90 с реальными данными.

Самое интересное — модели с включённым «размышлением» показывали намного лучший результат, чем обычные версии тех же моделей. А добавление реальной статистики о распределении навыков среди учеников помогало сильнее всего там, где базовый детальный профиль уже работал неплохо — то есть подсказка о реальном мире усиливает хороший сигнал, но не спасает слабый.


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

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

Просишь модель сыграть 'слабого ученика' — а получаешь отличника в маске: она всё равно решает правильно, просто с извинениями. Метод CDP позволяет заставить LLM правдоподобно ошибаться именно там, где ошибся бы реальный человек — со своими конкретными пробелами, а не выдуманным средним уровнем. Фишка: вместо метки "новичок" даёшь список конкретных навыков — что человек умеет уверенно, чего не умеет совсем, что путает. Модель перестаёт играть роль вообще и начинает следовать конкретным ограничениям — отсюда честный разброс ответов вместо усреднённой правильности.

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

Не пиши 'слабый ученик' — пиши что конкретно он не умеет. Общая метка не даёт модели зацепки для ошибки, а детальный профиль навыков — даёт. Три уровня освоенности вместо простого да/нет — уверенно, не умеет совсем, частично — делают поведение персонажа живым, а не механически бинарным.

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

Модель обучена быть полезным помощником и по умолчанию тянется к правильному ответу. Расплывчатая метка 'средний ученик' не говорит ей где именно спотыкаться. Детальный список навыков — это чёткое правило поведения, и модель держится его строго. Модели с включённым режимом рассуждений держат профиль заметно точнее, чем без него — значит правило лучше работает там, где модель проговаривает логику шаг за шагом, а не выдаёт готовый ответ.

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

Тестирование интерфейсов и учебных материалов → конкретно для проверки где застрянут пользователи с разным уровнем подготовки или ученики с конкретными пробелами в знаниях, особенно когда нужен контраст между профилями до реального пользовательского теста. НЕ подходит, если нет времени разбить навык на конкретные под-пункты — грубый профиль не даст выигрыша.

Мини-рецепт

1. Разбей навык на кусочки: 3-5 конкретных под-навыков вместо общей метки — не 'слабый ученик', а 'умеет складывать дроби с одинаковым знаменателем, не умеет занимать у целого'
2. Раздай роли: для каждого пункта реши — освоено, не освоено, или частично
3. Собери профиль в текст: три списка — умеет уверенно / не умеет совсем / путается
4. Дай модели профиль и задачу: попроси ответить от первого лица, шаг за шагом показывая ход мысли
5. Сравни профили: прогони 2-3 разных профиля на одной задаче — контраст сразу покажет реальные проблемные места

Примеры

[ПЛОХО] : Ответь как слабый ученик, который плохо разбирается в дробях
[ХОРОШО] : Профиль: умеет уверенно складывать дроби с одинаковым знаменателем; не умеет совсем занимать у целого числа при вычитании; путается при разных знаменателях. Реши пример 5 минус 2/3 от первого лица, показывая ход мысли
Источник: Aligning LLM-Simulated and Human Examinees for Psychometric Calibration: A Cognitive Diagnostic Profiling Approach
ArXiv ID: 2607.26317 | Сгенерировано: 2026-07-30 04:27

Проблемы LLM

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

Методы

МетодСуть
Детальный профиль навыков вместо общей метки персонажаРазбей нужную область на 3-5 конкретных под-навыков. Для каждого укажи: освоен уверенно / не освоен совсем / освоен частично. Вставь этот профиль в запрос перед задачей и попроси модель ответить от лица человека с таким профилем. Умеет уверенно: X, Y. Не умеет совсем: Z. Умеет частично: W. Работает потому что модель хорошо следует явным конкретным ограничениям, но плохо додумывает детали за размытой ролью. Применяй: тестирование UX, симуляция пользователей разного уровня, проверка сложности учебных материалов, любая ролевая имитация человека с пробелами в знаниях. Не работает: если под-навыки сформулированы слишком общо — тогда профиль ничем не лучше исходной размытой метки

Тезисы

ТезисКомментарий
Три градации владения навыком дают живее поведение, чем простое да/нетБинарная метка "умеет / не умеет" заставляет модель отвечать слишком предсказуемо и однородно. Добавление промежуточного состояния ("умеет частично", "путается иногда") создаёт больше вариативности в ответах — ближе к поведению реального человека. Механизм: модель получает больше конкретных точек опоры для того, где именно и как сильно ошибаться. Применяй: в любой симуляции персонажа или пользователя добавляй хотя бы один промежуточный уровень между "умеет" и "не умеет" — так поведение получится более естественным
📖 Простыми словами

AligningLLM-Simulated and Human Examinees for Psychometric Calibration: A Cognitive Diagnostic Profiling Approach

arXiv: 2607.26317

Суть в том, что когда ты просишь нейронку притвориться «средним учеником» или «новичком», она все равно лажает, потому что внутри она — сверхразумный отличник, который изо всех сил старается быть полезным. Модель просто не понимает, где именно ей нужно «тупить», и в итоге выдает либо слишком умные ответы, либо какой-то невнятный шум. Метод CDP (Cognitive Diagnostic Profiling) решает эту проблему: вместо того чтобы вешать на модель размытый ярлык, ей скармливают четкую карту навыков — что конкретно этот «человек» знает, а на чем он гарантированно споткнется.

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

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

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

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

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

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

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