3,583 papers
arXiv:2601.09953 74 15 янв. 2026 г. FREE

Симуляция учеников: оценка сложности задач через ролевую игру с LLM

КЛЮЧЕВАЯ СУТЬ
Парадокс: LLM не может оценить сложность задачи напрямую — спросишь «сколько процентов школьников это решат?», получишь случайные цифры (корреляция с реальностью около нуля). Но если попросить модель сыграть роль конкретного ученика — слабого, среднего, сильного — и дать задачу, агрегированные ответы виртуального класса показывают корреляцию 0.75-0.82 с реальными результатами национальных тестов. Метод позволяет предсказать реальную сложность задач для аудитории без дорогого пилотного тестирования на живых людях. Механика: создаёшь виртуальный класс из 50-300 «учеников» с заданным распределением уровней (25% слабых, 35% средних, 25% хороших, 15% отличников), каждому даёшь роль с именем, задаёшь задачу — процент правильных ответов показывает сложность задачи.
Адаптировать под запрос

TL;DR

Вместо прямого вопроса "насколько сложна эта задача?", исследователи создали виртуальный "класс" — попросили LLM сыграть учеников разных уровней (слабый, средний, сильный, продвинутый) и решить задачи. Агрегированные ответы "класса" показали корреляцию 0.75-0.82 с реальными результатами школьников на национальных тестах США.

Прямая оценка провалилась: корреляции около нуля или отрицательные. LLM не может "со стороны" оценить сложность — она не знает чужих трудностей. Но когда модель играет роль конкретного ученика с конкретным уровнем, она генерирует реалистичные паттерны ошибок. Парадокс: модели слабее в математике (Gemma-2-9B, 72% точности) дали более точную симуляцию, чем сильные (Llama-3.3-70B, 92% точности). Сильная модель "не помнит" как ошибаться — она решает всё правильно и не может сыграть слабого ученика.

Метод: создай виртуальный класс из 50-300 "учеников", каждому задай уровень (25% слабых, 35% средних, 25% хороших, 15% отличников), дай задачу, посчитай процент правильных ответов. Добавление имён ("Артём, ученик 4 класса, средний уровень") вместо безликих ролей улучшило результат на 5-7 процентных пунктов корреляции.


🔬

Схема метода

ШАГ 1: Создай виртуальный класс
├─ Определи уровни: 25% слабых, 35% средних, 25% хороших, 15% отличников
├─ Дай каждому "ученику" имя (опционально, но улучшает результат)
└─ Размер класса: минимум 50, лучше 100-300 для стабильности

ШАГ 2: Симуляция ответов (отдельный запрос на каждого ученика)
Промпт каждому: "Ты [имя], ученик [класс], уровень [слабый/средний/хороший/отличный]. Реши задачу: [текст]"
→ Ответ ученика (A/B/C/D)

ШАГ 3: Агрегация
Посчитай процент правильных ответов → оценка сложности задачи
Если 80%+ ответили верно → лёгкая задача
Если 30%- ответили верно → сложная задача

Важно: Каждый "ученик" требует отдельного запроса. Для класса из 100 — это 100 запросов на одну задачу.


🚀

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

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

Промпт:

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

Ответь на вопрос, выбери один вариант (A, B, C или D). Отвечай как человек твоего уровня — не пытайся угадать или рассуждать сложно.

**Вопрос:**
Иван положил 100 000 рублей на вклад под 10% годовых. Сколько он получит через год?

A) 100 000 рублей  
B) 10 000 рублей  
C) 110 000 рублей  
D) 120 000 рублей

Твой ответ (только буква):

Результат:

Ты повторишь этот запрос 50-100 раз, меняя имя и уровень ученика согласно пропорции: 25% совсем новичков (не понимают процент), 35% базовый уровень (как Максим), 25% уверенных (понимают базовые расчёты), 15% продвинутых (считают сложные проценты).

После сбора ответов посчитаешь: если 85% "учеников" ответили правильно — вопрос слишком лёгкий, если 20% — слишком сложный для твоей аудитории, если 50-60% — оптимальная сложность для обучающего теста.


🧠

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

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

Ролевая игра активирует паттерны ошибок из обучающих данных. Когда модель играет "слабого ученика", она генерирует текст по паттерну "как отвечают слабые ученики" из текстов, которые видела. Это не идеальная симуляция, но достаточно близкая к реальности: корреляция 0.75-0.82 означает, что в 75-82% случаев симуляция правильно предсказывает относительную сложность.

Слабая модель лучше, чем сильная — парадокс исследования. Gemma-2-9B (точность 72% на задачах) дала корреляцию 0.69-0.74, а Llama-3.3-70B (точность 92%) — только 0.42-0.48. Причина: сильная модель решает почти все задачи правильно независимо от роли. Она "не помнит" как ошибаться. Слабая модель естественно делает ошибки — и эти ошибки похожи на ошибки реальных учеников.

Рычаги управления: - Размер класса (50/100/300) → больше класс = стабильнее результат, но больше запросов. 50 учеников даёт корреляцию 0.62, 300 — 0.69-0.74. Прирост после 100 небольшой. - Пропорция уровней (25%-35%-25%-15%) → можешь изменить под свою аудиторию. Если тестируешь для продвинутых, сделай 50% продвинутых, 30% хороших, 20% средних. - Имена vs безликие роли → имена дают +5-7 п.п. корреляции. "Максим, базовый уровень" работает лучше "Ученик №42, базовый уровень". - Выбор модели → для симуляции учеников бери модель послабее (Gemma-2-9B, Qwen3-4B), не самую сильную.


📋

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

Ты {имя}, {описание_уровня_ученика} в теме "{тема}".

{конкретизация_уровня}

Ответь на вопрос, выбери один вариант ({варианты_ответов}). Отвечай как человек твоего уровня — не пытайся угадать сложнее, чем понимаешь.

**Вопрос:**
{текст_вопроса}

{варианты_ответов_с_текстом}

Твой ответ (только буква):

Что подставлять: - {имя} — русское имя (Максим, Анна, Артём) - {описание_уровня_ученика} — "новичок", "изучаешь базу", "уверенный пользователь", "эксперт" - {тема} — предмет/область знания - {конкретизация_уровня} — 1-2 предложения что ученик знает и НЕ знает на этом уровне - {текст_вопроса} и {варианты_ответов} — твоя задача

Пропорция уровней для сбалансированной аудитории: - 25% слабых (совсем не понимают концепцию) - 35% средних (понимают базу, путаются в деталях) - 25% хороших (уверенно решают стандартные задачи) - 15% отличников (решают всё включая сложное)

Для стабильного результата: минимум 50 "учеников", лучше 100-150.


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

Вот метод оценки сложности задач через симуляцию учеников. Адаптируй под мою задачу: мне нужно оценить сложность [опиши свои вопросы/тест]. Задавай вопросы чтобы настроить промпт.

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

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


⚠️

Ограничения

⚠️ Объём работы: Метод требует много запросов — 50-300 на одну задачу. Для оценки теста из 20 вопросов с классом из 100 "учеников" = 2000 запросов. Это время и токены.

⚠️ Не для субъективных критериев: Метод работает для задач с правильным ответом (математика, факты, логика). Для креатива, стиля, мнений — не применимо. Исследование тестировало математику NAEP, не эссе.

⚠️ Слабее на алгебре: Корреляция по темам: Измерения 0.78-0.87, Геометрия 0.65-0.75, Алгебра 0.45-0.64. Чем абстрактнее тема, тем хуже работает.

⚠️ Выбор модели критичен: Сильная модель (GPT-4, Claude Opus, Llama-3.3-70B) будет плохо играть слабых учеников — она решит всё правильно независимо от роли. Нужна модель среднего уровня для твоей темы. Если тестируешь простые вопросы — подойдёт Gemma-2-9B. Для более сложных — что-то чуть сильнее.

⚠️ Не заменяет реальное тестирование: Корреляция 0.75-0.82 — это хорошо, но не идеально. Метод подходит для предварительного скрининга, не для финальной валидации. Результаты помогают отсеять явно плохие вопросы, но реальное пилотное тестирование остаётся золотым стандартом.


🔍

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

Команда из Университета Мэриленда взяла 631 математическую задачу из национальных тестов США (NAEP) для 4-го, 8-го и 12-го классов — это задачи с известной статистикой: сколько процентов реальных школьников решили каждую задачу правильно. Это реальные данные десятков тысяч учеников по всей стране.

Сначала проверили базовые подходы: прямое предсказание ("модель, скажи сколько процентов учеников решат эту задачу?") дало корреляции около нуля или отрицательные. Текстовые эмбеддинги (Word2Vec, BERT) тоже провалились: корреляции 0.01-0.36 — случайный уровень.

Затем создали виртуальные классы: промптировали 10 open-source моделей (Gemma, Llama, Qwen разных размеров) играть учеников четырёх уровней по классификации NAEP (Below Basic, Basic, Proficient, Advanced). Для каждой задачи генерировали 50-300 ответов от "учеников" разных уровней, считали процент правильных, сравнивали с реальной статистикой.

Неожиданный результат: модели с худшей математикой (Gemma-2-9B, 72% точности) показали лучшую симуляцию (корреляция 0.69-0.74), чем супер-точные модели (Llama-3.3-70B, 92% точности, корреляция 0.42-0.48). Почему? Сильная модель решает почти всё правильно независимо от роли слабого ученика — она "забыла" как ошибаться. Слабая модель делает ошибки естественно, и эти ошибки похожи на ошибки реальных детей.

Проверили влияние идентичности: безликие "Студент №142" дали корреляцию 0.64, студенты с именами ("Максим, средний уровень") — 0.69-0.74, студенты с разнообразными именами по гендеру и этничности — 0.75-0.82. Имена помогают модели "войти в роль" — не потому что модель понимает человека, а потому что в обучающих данных имена коррелируют с паттернами речи и ошибок.

Исследовали размер класса: 50 учеников → корреляция 0.62, 100 → 0.67, 300 → 0.69-0.74. Прирост замедляется после 100 — дополнительные 200 учеников дают всего +0.02-0.07 корреляции. Это баланс точности и затрат.

Финальный трюк — ансамбль лучших моделей: усреднение трёх лучших Gemma (2-9B, 2-27B, 3-27B) дало корреляцию 0.82 для 12-го класса. Это попадает в диапазон "хорошая надёжность" по стандартам психометрики (Cicchetti, 1994 — коэффициент выше 0.75 считается приемлемым для диагностических инструментов).

Item Response Theory (IRT): финальная проверка. IRT — это математическая модель, которая разделяет "сложность задачи" и "способность ученика". Исследователи "скормили" IRT индивидуальные ответы всех симулированных учеников, извлекли оценки сложности каждой задачи, сравнили с категориями сложности NAEP (лёгкая/средняя/сложная). AUC (насколько хорошо модель отличает лёгкие задачи от сложных) = 0.78-0.90 — отличный результат.

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


💡

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

📌

🔧 Техника: Обратная задача — оценка уровня реального пользователя

Исследование оценивало задачи через симуляцию учеников. Принцип работает в обратную сторону: оцени человека через задачи.

Сценарий: У тебя есть результаты теста реального человека (какие задачи решил, какие нет). Хочешь понять его уровень точнее, чем просто "60% правильных".

Промпт:

Передо мной результаты теста человека по [тема]. Вот задачи которые он решил ПРАВИЛЬНО:
[список задач]

Вот задачи которые он решил НЕПРАВИЛЬНО:
[список задач]

Симулируй 4 ученика разных уровней (слабый, средний, хороший, эксперт). Для каждого предскажи какие задачи из списка он решил бы правильно.

Затем сравни паттерн ошибок каждого симулированного ученика с паттерном реального человека. Какой уровень ближе всего?

Модель симулирует "ожидаемые ответы" каждого уровня, сравнивает с реальными, выдаёт: "Паттерн ошибок ближе всего к 'среднему' уровню, потому что человек справился с базовыми концепциями но ошибся в X и Y — типичные ошибки среднего уровня".


📌

🔧 Техника: Калибровка сложности через одного "тестового ученика"

Полная симуляция 100 учеников = много токенов. Для быстрой прикидки используй одного эталонного ученика твоего целевого уровня.

Логика: Если задачу решает "средний ученик" (твоя целевая аудитория) — она подходящей сложности. Если не решает — слишком сложна. Если решает моментально без колебаний — слишком проста.

Промпт:

Ты Дмитрий, средний уровень в [тема]. [1-2 предложения что знаешь, что не знаешь].

Реши 5 задач. Для каждой покажи:
1. Твой ответ
2. Уверенность (уверен / сомневаюсь / гадаю)
3. Время раздумий (моментально / нужно подумать / долго не могу решить)

[5 задач]

Интерпретация: - "Моментально + уверен" → задача слишком лёгкая - "Подумал + сомневаюсь" → оптимальная сложность - "Долго + гадаю" → слишком сложная

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


🔗

Ресурсы

Take Out Your Calculators: Estimating the Real Difficulty of Question Items with LLM Student Simulations

Christabel Acquaye, Yi Ting Huang, Marine Carpuat, Rachel Rudinger

University of Maryland, College Park

GitHub репозиторий

Данные: National Assessment of Educational Progress (NAEP) — национальные тесты США по математике для 4, 8 и 12 классов, 631 задача с реальной статистикой ответов

Модели: Gemma-2 (9b, 27b), Gemma-3 (4b, 12b, 27b), Llama 3.1-8B, Llama-3.3-70B, Qwen2.5 (14B, 32B), Qwen3-4B


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

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

Парадокс: LLM не может оценить сложность задачи напрямую — спросишь «сколько процентов школьников это решат?», получишь случайные цифры (корреляция с реальностью около нуля). Но если попросить модель сыграть роль конкретного ученика — слабого, среднего, сильного — и дать задачу, агрегированные ответы виртуального класса показывают корреляцию 0.75-0.82 с реальными результатами национальных тестов. Метод позволяет предсказать реальную сложность задач для аудитории без дорогого пилотного тестирования на живых людях. Механика: создаёшь виртуальный класс из 50-300 «учеников» с заданным распределением уровней (25% слабых, 35% средних, 25% хороших, 15% отличников), каждому даёшь роль с именем, задаёшь задачу — процент правильных ответов показывает сложность задачи.

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

LLM как актёр — не может оценить «со стороны» насколько роль сложная, но может сыграть роль и показать реалистичное поведение. Прямой вопрос «оцени сложность этой задачи по математике для 8 класса» проваливается — модель экстраполирует из своего опыта (корпус текстов), а не из опыта восьмиклассника. Ролевая игра активирует паттерны ошибок из обучающих данных — когда модель играет слабого ученика, она генерирует текст по паттерну «как отвечают слабые ученики», который видела в текстах. Это не идеальная симуляция человеческого мышления, но статистически достаточно близкая: если виртуальный класс решил задачу на 30% — скорее всего реальный класс решит на 25-35%.

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

Модель не понимает «чужую сложность», но запомнила типичные ошибки из текстов. Когда играешь роль, активируются эти паттерны. Второй парадокс — слабая модель лучше сильной. Gemma-2-9B (точность 72% на задачах) дала корреляцию 0.69-0.74 с реальностью, а Llama-3.3-70B (точность 92%) — только 0.42-0.48. Причина: сильная модель решает почти всё правильно независимо от роли — она физически не может сыграть слабого ученика, потому что не помнит как ошибаться. Слабая модель естественно делает ошибки, похожие на ошибки реальных людей. Добавление имён («Артём, средний уровень») вместо безликих номеров улучшило результат на +5-7 процентных пунктов корреляции — персонализация усиливает ролевую игру.

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

Разработка образовательного контента и тестов → когда нужно предварительно оценить сложность задач до запуска реального тестирования. Особенно полезно для отсева явно плохих вопросов (слишком лёгких или слишком сложных) на этапе черновика теста. Работает для задач с правильным ответом — математика, факты, логика, программирование. НЕ подходит для субъективных критериев — креатив, стиль письма, оценка качества эссе. Лучше работает на конкретных темах (геометрия, измерения), хуже на абстрактных (алгебра: корреляция падает до 0.45-0.64).

Мини-рецепт

1. Определи распределение уровней под свою аудиторию: для школьников 25% слабых, 35% средних, 25% хороших, 15% отличников. Для профессионалов — сдвинь вверх.

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

3. Запусти симуляцию класса: минимум 50 учеников (50 запросов), лучше 100-150 для стабильности. Каждый запрос = один ученик отвечает на задачу.

4. Посчитай процент правильных ответов: 80%+ правильных = задача лёгкая, 50-60% = оптимальная сложность для обучающего теста, 20-30% = слишком сложная.

5. Выбери модель послабее — не GPT-4 или Claude Opus, а Gemma-2-9B, Qwen-7B, Llama-3-8B. Сильная модель не сможет сыграть слабого ученика.

Примеры

[ПЛОХО] : Оцени сложность этой задачи по математике для 8 класса по шкале от 1 до 10. Задача: Найди площадь треугольника со сторонами 3, 4, 5. (Модель выдаст случайную оценку — корреляция с реальностью нулевая)
[ХОРОШО] : Создаёшь 100 промптов с разными ролями: Ты Анна, ученица 8 класса, слабый уровень по математике. Формулы путаешь, часто не понимаешь с чего начать. Реши: Найди площадь треугольника со сторонами 3, 4, 5. Варианты: A) 6 B) 12 C) 7.5 D) 10. Твой ответ (только буква): Запускаешь 100 таких запросов (25 слабых как Анна, 35 средних, 25 хороших, 15 отличников), собираешь ответы. Если 65% ответили правильно — задача средней сложности для 8 класса. Если 90%+ — слишком лёгкая, если 20% — слишком сложная.
Источник: Take Out Your Calculators: Estimating the Real Difficulty of Question Items with LLM Student Simulations
ArXiv ID: 2601.09953 | Сгенерировано: 2026-01-16 05:33

Проблемы LLM

ПроблемаСутьКак обойти
Модель не может оценить чужую сложностьСпрашиваешь: "Какой процент людей решит эту задачу?" Модель отвечает наугад. Корреляция с реальностью около нуля или отрицательная. Модель экстраполирует из своего опыта (корпус текстов), но у неё нет опыта "не знать" или "учиться". Она не помнит как это — быть новичкомНе спрашивай напрямую. Попроси модель СЫГРАТЬ роль человека нужного уровня и решить задачу. Собери ответы от разных "ролей" (новичок, средний, эксперт) — процент правильных покажет сложность
Сильная модель не умеет играть слабую рольДаёшь роль: "Ты новичок, слабо знаешь тему". Просишь решить задачу. Сильная модель (GPT-4, Claude Opus) решает правильно независимо от роли — она слишком умная, не может "забыть" как ошибаться. В исследовании: модель с точностью 92% дала корреляцию 0.42, модель с точностью 72% — корреляцию 0.74. Слабая модель естественно делает ошибки похожие на человеческиеДля симуляции слабой роли выбирай более слабую модель. Не GPT-4, а GPT-3.5 или аналог. Модель должна быть на уровне или чуть выше той роли, которую играет

Тезисы

ТезисКомментарий
Ролевая игра активирует паттерны из обучающих данныхКогда модель играет роль ("ты новичок в математике"), она генерирует текст по паттерну "как отвечают новички" из текстов которые видела при обучении. Это не идеальная симуляция реального человека, но достаточно близкая. Работает потому что в обучающих данных есть примеры ответов людей разных уровней. Применяй: для получения реалистичного поведения конкретного типа людей используй ролевую игру вместо прямых вопросов "как бы ответил X"
Слабая модель лучше симулирует слабую рольПарадокс: для игры роли новичка модель среднего уровня работает лучше чем топовая. Топовая модель решает задачи правильно даже когда играет слабую роль — она не может "притвориться глупее". Средняя модель делает естественные ошибки, они похожи на ошибки реальных людей. Применяй: если нужна симуляция не-эксперта (тестирование понятности для новичков, поиск типичных ошибок), используй более слабую модель. Для роли новичка — GPT-3.5 уровня, не GPT-4
📖 Простыми словами

Take Out Your Calculators: Estimating the Real Difficulty of Question Items withLLMStudent Simulations

arXiv: 2601.09953

Нейросети на самом деле понятия не имеют, что для человека сложно, а что — элементарщина. Если ты спросишь ChatGPT: «Насколько трудна эта задача по физике для восьмиклассника?», он выдаст тебе случайное число с потолка. Проблема в том, что у LLM нет человеческого опыта обучения, она просто предсказывает следующее слово. Для модели нет разницы между квантовой механикой и рецептом яичницы, если оба текста есть в её базе. Поэтому прямая оценка сложности — это полная фигня, которая не работает.

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

Исследователи придумали гениальный костыль: метод симуляции учеников. Вместо того чтобы мучить модель вопросами о сложности, они создали виртуальный класс. Одной копии нейросети говорят: «Ты — двоечник», другой — «Ты — крепкий середняк», третьей — «Ты — гений». Затем им всем скармливают задачи и смотрят на результат. Если «двоечник» и «середняк» завалили тест, а «гений» справился — значит, задача реально сложная. Эта агрегированная статистика дает корреляцию 0.82 с реальными школьными тестами, что чертовски близко к истине.

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

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

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

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

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