TL;DR
Исследование сравнило нейросети и LLM на задаче предсказания национальности по имени и нашло, что LLM работают точнее благодаря культурному и географическому знанию, а не только паттернам букв. Тестировали на трёх уровнях: точная национальность (99 классов), регион (14), континент (6). LLM превзошли нейросети на всех уровнях, причём разрыв больше на точных предсказаниях и меньше на грубых.
Главная находка: LLM ошибаются "ближе к правде" — если перепутали страну, то обычно угадывают регион (Корея вместо Японии, обе в Восточной Азии). Нейросети делают грубые ошибки между регионами (Корея → Бразилия) и тянут к популярным классам. Простые методы (SVM) устойчивее на редких национальностях, чем сложные. Разница в том, что LLM опираются на знание ("суффикс -ович типичен для славянских языков"), а нейросети — на статистику букв.
Метод Least-to-Most показал лучший результат: сначала предсказать широкую категорию (регион), потом уточнить внутри неё (страну). Это работает не только для национальностей — принцип применим к любой многоуровневой классификации где много классов и есть иерархия.
Схема метода (Least-to-Most)
ШАГ 1: Определи верхний уровень → "Азия / Европа / Африка..."
ШАГ 2: Внутри найденной категории определи конкретный класс → "В Азии: Япония / Корея / Китай..."
(Оба шага в одном промпте, но с явным разделением)
Пример применения
Задача: Классифицируешь обращения в поддержку маркетплейса. У тебя 80+ типов проблем, сгруппированных в 8 категорий (доставка, оплата, возвраты...). Модель часто путает похожие проблемы внутри категории и между категориями.
Промпт:
Обращение клиента: "Заказал товар неделю назад, деньги списались, но трек-номер не приходит."
Шаг 1: К какой основной категории относится проблема?
- Доставка
- Оплата
- Возврат и отмена
- Товар и качество
- Аккаунт
- Бонусы и промокоды
- Мобильное приложение
- Другое
Шаг 2: Определи конкретный тип проблемы внутри категории из шага 1:
[Если Доставка:]
- Не пришёл трек-номер
- Долгая доставка
- Посылка потерялась
- Неверный адрес
...
[Если Оплата:]
- Деньги списались дважды
- Не проходит оплата
- Хочу изменить способ оплаты
...
Выведи результат:
Категория: [...]
Тип проблемы: [...]
Результат:
Модель сначала определит "Доставка" (широко), затем уточнит "Не пришёл трек-номер" внутри этой категории. Если ошибётся на втором шаге, всё равно попадёт в правильную категорию для маршрутизации — тикет уйдёт в отдел доставки, а не в финансы.
Почему это работает
LLM генерирует текст на основе вероятностей, обученных на паттернах из миллиардов документов. Когда классов много и они похожи (99 национальностей, 80 типов проблем), модель размазывает вероятность между близкими вариантами. Прямой вопрос "что это из 99 вариантов?" даёт шум.
Иерархия сужает пространство выбора. Сначала модель выбирает из 6-8 категорий верхнего уровня — здесь различия крупные и чёткие. Внутри выбранной категории она работает уже с 10-15 вариантами, где признаки конкретнее. Это как найти книгу в библиотеке: сначала отдел, потом полка, потом конкретный корешок — быстрее чем сразу среди 10 тысяч томов.
World knowledge vs паттерны: LLM видит не только "последовательность букв -ович", но и знает что это славянский суффикс, используется в России, Украине, Сербии. Нейросеть видит только "эти буквы часто в классе Russian" без понимания почему. Поэтому LLM реже выдаёт абсурд (имя славянское → Бразилия), чаще ошибается внутри культурно близких зон.
Рычаги управления:
- Глубина иерархии — добавь промежуточный уровень (категория → подкатегория → конкретный класс) если классов 100+, убери если всего 20-30
- Примеры на каждом уровне — дай few-shot для редких категорий верхнего уровня, модель перестанет их игнорировать
- Уверенность порога — попроси модель указать если неуверена на шаге 1, чтобы эскалировать сложные случаи
Шаблон промпта
Задача: {описание задачи классификации}
Вход: {данные для классификации}
Шаг 1: К какой основной категории это относится?
{список категорий верхнего уровня}
Шаг 2: Определи конкретный класс внутри категории из шага 1.
[Если {категория_1}:]
{список классов внутри категории_1}
[Если {категория_2}:]
{список классов внутри категории_2}
...
Выведи:
Категория: [...]
Класс: [...]
Что подставлять:
- {описание задачи} — что нужно определить
- {данные для классификации} — текст, изображение описание, характеристики
- {список категорий} — 5-10 групп верхнего уровня
- {список классов внутри} — конкретные варианты для каждой группы
Почему это работает (продолжение)
Исследование показало три типа ошибок и как они различаются между моделями:
Near-miss errors (близкие промахи) — неправильная страна, правильный регион. LLM делают 60-70% таких ошибок. Пример: угадали Восточную Азию, перепутали Корею с Японией. Это происходит потому что модель правильно использует культурное знание ("имя азиатское"), но недостаточно специфичное для точного различения.
Cross-regional errors (грубые ошибки) — перепутали регионы. Нейросети делают 40-50% таких. Пример: предсказали Латинскую Америку вместо Азии. Это значит модель вообще не поняла откуда имя, просто нашла похожие буквы в популярном классе.
Frequency bias (перекос к популярному) — модель тянет к частым классам из обучающих данных. Простые методы (SVM) устойчивее чем глубокие сети. Это важно когда в твоих данных одни категории встречаются в 10 раз чаще других — few-shot примеры редких классов компенсируют перекос.
Ограничения
⚠️ Не для простых задач: Если классов мало (5-10) и они чётко различаются, иерархия избыточна — обычный промпт сработает так же быстрее.
⚠️ Нужна чёткая иерархия: Метод требует чтобы классы логично группировались. Если классификация плоская (список не связанных вариантов), иерархию придётся придумывать искусственно — может не помочь.
⚠️ Два запроса = двойная цена: Если делать шаги отдельными запросами (а не в одном промпте), это удваивает токены. В одном промпте работает, но модель может схалтурить и пропустить шаг 1.
Как исследовали
Команда собрала датасет из 218 тысяч имён из 99 национальностей и протестировала 6 нейросетей (от простого SVM до XLM-RoBERTa) против 6 промптинг-стратегий для LLM (Zero-shot, Few-shot, Chain-of-Thought, Self-Consistency, Least-to-Most, Self-Reflection). Для каждого метода измеряли точность на трёх уровнях: национальность, регион, континент.
Самое интересное: разрыв между LLM и нейросетями оказался 12% на точной национальности, но только 4% на континенте. Почему? Потому что для грубой классификации ("это азиатское имя или европейское?") достаточно паттернов букв — тут нейросети справляются. Но для тонкой ("это корейское или японское?") нужно культурное знание — тут LLM выигрывают.
Провели частотный анализ: разделили национальности на частые, средние, редкие по числу примеров в данных. Простой SVM деградировал на 8% от частых к редким, глубокие сети на 15%, LLM на 12%. Парадокс: чем сложнее модель, тем больше она переобучается на популярные классы. Few-shot примеры сгладили этот эффект для LLM.
Error analysis показал природу ошибок: взяли 500 случайных неправильных предсказаний, проверили попали ли они хотя бы в правильный регион. LLM попали в 68% случаев, лучшая нейросеть в 52%. Это значит LLM "понимают" общий контекст даже когда ошибаются в деталях.
Адаптации
🔧 Техника: добавить "объясни выбор" → видишь логику классификации
После шага 2 добавь:
Объясни почему выбрал именно этот класс.
Какие признаки указывают на него?
Это полезно для отладки — увидишь на что модель обратила внимание. Если объяснение странное ("выбрал доставку потому что упомянуты деньги"), значит классификация ненадёжна.
🔧 Техника: самокоррекция для пограничных случаев
Шаг 3: Проверь уверенность.
Если сомневаешься между {класс из шага 2} и другими вариантами,
перечисли альтернативы и вероятность каждой.
Если уверенность < 70%, выведи: "Требуется уточнение: [варианты]"
Это снижает число уверенных неправильных ответов — модель признаётся когда не знает.
🔧 Комбинация с Multi-perspective
Для критичных классификаций используй несколько точек зрения:
Оцени проблему клиента с трёх позиций:
Позиция 1 — Специалист поддержки первой линии:
[Шаги 1-2 иерархической классификации]
Позиция 2 — Менеджер по качеству:
[Шаги 1-2, но с фокусом на последствия ошибки]
Позиция 3 — Клиент (какую помощь он ожидает):
[Упрощённая классификация по намерению]
Финальное решение: если все три позиции согласны — используй его.
Если расходятся — выведи все три и пометь "неоднозначный случай".
Это даёт 3 независимых взгляда на ту же задачу через иерархию. Если сходятся — высокая уверенность. Если расходятся — нужен человек.
Ресурсы
Nationality and Region Prediction from Names: A Comparative Study of Neural Models and Large Language Models
Keito Inoshita (Kansai University, Shiga University)
Статья сравнивает методы промптинга: Zero-shot, Few-shot, Chain-of-Thought [Wei et al., 2022], Self-Consistency [Wang et al., 2023], Least-to-Most [Zhou et al., 2022], Self-Reflection [Shinn et al., 2023]
