29 / 37 · Задачи NLP
Классификация текстов
Задача, которая прошла через весь курс, в одном месте: постановка, метрики, все результаты на AG News и SST-2 от TF-IDF до дообученных трансформеров вместе с протоколом каждого, современные варианты (энкодер с выходным слоем или языковая модель с ограниченным выходом), что на самом деле дало предобучение и ошибки оценки, характерные именно для классификации.
Перенос обучения в NLP · Параметрически эффективное дообучение · Корпусы и оценка качества
На этой странице 11
Классификация — задача, на которой проверялось каждое представление этого курса, поэтому бо́льшая часть её содержания уже написана. Эта заметка — итог, который курс ей должен: чистая постановка, метрики, полная таблица результатов на двух использованных наборах данных, два способа решать задачу сегодня и ловушки, характерные именно для классификации, а не для оценки вообще.
Обозначения. Входной текст , метка ; модель выдаёт и предсказывает .
Постановка задачи#
Отобразить текст в одну из заданных меток. Варианты различаются структурой выхода:
| Вариант | Выход | Функция потерь | Примеры |
|---|---|---|---|
| Бинарная | одна из двух | бинарная кросс-энтропия | тональность (SST-2), спам |
| Многоклассовая | одна из | кросс-энтропия с softmax | тема (AG News, ), намерение |
| Многометочная | любое подмножество | бинарных кросс-энтропий | теги, виды токсичности |
| Порядковая | одна из упорядоченных | кросс-энтропия или регрессия | звёздные оценки |
Вход — документ произвольной длины; любой модели сначала нужно его представление фиксированного размера (счётчики, агрегированный вектор, состояние специального токена), и различия между подходами — в основном различия в том, как это представление строится.
Метрики#
Из заметки об оценке: доля правильных ответов — для сбалансированных классов с одинаковой ценой ошибок; иначе — точность, полнота и по классам, с макроусреднением, когда каждый класс одинаково важен. AG News сбалансирован (по 30 000 на класс), а SST-2 почти сбалансирован (44/56), поэтому для обоих наборов приводится доля правильных ответов; промышленный классификатор с важным редким классом так оценивать нельзя.
Результаты по всему курсу#
Числа ниже взяты из заметок по ссылкам в первом столбце, по одному прогону. Общего протокола у них нет: размер обучающей выборки, разбиение, на котором измерено число, и то, выбиралось ли что-то с оглядкой на это разбиение, различаются от строки к строке, поэтому таблица указывает всё это. Два числа можно сравнивать напрямую, только если у них общий оценочный набор и ни одно не подбиралось по нему.
AG News, четыре темы, 120 000 обучающих и 7600 тестовых статей, доля правильных ответов:
| Модель | Обучаемые параметры | Размер обучения | На чём оценено | Что выбрано по оценочному набору | Доля верных |
|---|---|---|---|---|---|
| TF-IDF + логистическая регрессия, счётчики слов | 120 000 | тест | ничего (фиксированные настройки) | 0.918 | |
| TF-IDF, счётчики 1–3-грамм | 120 000 | тест | ничего (фиксированные настройки) | 0.920 | |
| Многослойная CNN, замороженный Word2Vec, | 61 тыс. | 120 000 | тест | ничего (последняя из 5 эпох) | 0.899 |
| TextCNN, замороженный Word2Vec | 122 тыс. | 120 000 | тест | ничего (последняя из 5 эпох) | 0.901 |
| TextCNN, обучаемые эмбеддинги | 2.9 млн | 120 000 | тест | ничего (последняя из 10 эпох) | 0.911 |
| Энкодер трансформера из 4 блоков с нуля, WordPiece 4 тыс., | 158 тыс. | 120 000 | тест | лучшая из 20 эпох | 0.906 |
| BERT, zero-shot с пропуском, выходной слой MLM | 0 | нет | тест | ничего / слово-метка | 0.456 / 0.613 |
BERT [CLS] + логистическая регрессия, заморожен | 120 000 | тест | ничего | 0.902 | |
| BERT, дообученный, все слои | 110 млн | 108 000 | 12 000, отложенные из обучения | ничего (3 эпохи) | 0.949 |
SST-2, бинарная тональность, GPT-2 small, 50 000 обучающих фраз. Каждый режим оценён на валидационной части из 872 фраз, которая служит тестом, после фиксированного числа шагов, по одному прогону. У этих строк общий протокол, и их можно сравнивать напрямую в пределах шума 872 примеров: около 0.9 одна стандартная ошибка — примерно 0.010.
| Режим | Обучаемые параметры | Доля верных |
|---|---|---|
| Линейное зондирование | 1.5 тыс. | 0.737 |
| Настройка промпта | 10.8 тыс. | 0.663 |
| LoRA, | 296 тыс. | 0.899 |
| Полное дообучение | 124 млн | 0.890 |
| LP-FT | 124 млн | 0.900 |
Три вывода, каждый настолько сильный, насколько позволяет его протокол. Во-первых, настроенный базовый уровень на счётчиках — сильный классификатор тем: ни одна модель, обученная с нуля на 120 000 статей, не превзошла его на тесте, даже трансформер, чьё число — лучшая из 20 оценок на тесте и потому оптимистично. Во-вторых, единственное число выше 0.92 — 0.949 у дообученного BERT, измеренное на отложенной десятой части обучающей выборки, а не на тесте. Оно указывает в ту же сторону, что и опубликованные результаты о предобучении, но это не сопоставленное сравнение: чтобы говорить о выигрыше в три пункта, дообученный BERT нужно оценить на тех же 7600 тестовых статьях. В-третьих, на SST-2, где у строк общий протокол, режим обучения одной и той же сети на 124 млн параметров даёт разброс в 24 пункта; три лучших режима различаются примерно на пункт, то есть в пределах шума.
Подходы эпохи трансформеров#
Энкодер с выходным слоем классификации. Предобученный энкодер, линейный слой на векторе [CLS] (или на среднем векторов токенов), дообученный с маленьким шагом обучения или с LoRA. Это выбор по умолчанию для задачи с размеченными данными: один прямой проход на документ, без декодирования, наибольшая точность на параметр и модель, которую дёшево обслуживать и оценивать. LoRA часто подходит близко к полному дообучению. В этом курсе так вышло для GPT-2 на SST-2 (0.899 против 0.890), а не для энкодера, поэтому выбор — сначала вопрос цены, а затем то, что нужно проверить на конкретной задаче и модели.
Языковая модель с ограниченным выходом. Описать классы в промпте и попросить модель-декодер, обученную на инструкциях, назвать метку. Это работает совсем без размеченных данных и конкурирует с дообученными энкодерами только у больших моделей; это стоит порождения на каждый документ; а сырой выход — текст, который нужно разбирать. У задачи разбора есть чистое решение: ограниченное декодирование (constrained decoding) на каждом шаге оставляет только токены, которые ещё могут завершить допустимый выход. Со схемой Literal["Positive", "Negative", "Neutral"] модель не может выдать ничего другого, а со схемой JSON выдаёт разбираемый объект с типизированными полями; заметка о RAG использует тот же механизм для извлечения структурированных данных. Без ограничений модель «классифицирует» с пояснениями, оговорками и форматированием, которые на какой-то доле входов ломают разбор.
Ограниченное декодирование для классификации
| Дообученный энкодер | Декодер с промптом | |
|---|---|---|
| Размеченные данные | Нужны (от сотен до тысяч) | Не нужны или несколько примеров в промпте |
| Цена на документ | Один проход энкодера | Одно порождение |
| Точность | Наибольшая при наличии данных | Зависит от размера модели и промпта |
| Выход | Логиты | Текст; его нужно ограничить |
| Смена набора меток | Переобучить выходной слой | Поправить промпт |
| Объяснения | Нет | Можно попросить (не обязательно правдивые) |
Что улучшилось, а что нет#
При тех же метках дообученный BERT получил 0.95 на отложенной части обучающей выборки AG News против 0.92 у TF-IDF на тесте; чтобы назвать величину выигрыша, нужно сравнение на одних и тех же тестовых статьях. Выигрыш больше, когда меток мало: с несколькими сотнями примеров модели на счётчиках и сети, обученные с нуля, разваливаются, а дообученные энкодеры остаются пригодными (Howard and Ruder, 2018). Что не изменилось: задаче по-прежнему нужен набор меток, соответствующий данным (эксперимент zero-shot потерял класс из-за названия метки), метрики по-прежнему скрывают провалы на уровне классов, если о них не спросить, а модель с 95% по-прежнему ошибается на одном документе из 20, что для одних приложений слишком много, а для других неважно.
Ловушки оценки, характерные для классификации#
- Слепота к классам. Общие 0.456 скрывали 0.03 на одном классе. Всегда печатать матрицу ошибок.
- Обрезка. Энкодеры обрезают вход до 128–512 токенов; метка, зависящая от конца длинного документа, недостижима. Прежде чем выбирать предел, проверить, где находится сигнал.
- Утечка метки через артефакты. Метка источника, URL или дата в тексте могут предсказывать метку без чтения текста; проба с удалением одного токена из заметки о CNN находит такие короткие пути.
- Выбор порога. Для бинарных и многометочных задач доля правильных ответов при пороге 0.5 — одна точка на кривой точность–полнота; приводить кривую или порог, выбранный на валидации.
- Чувствительность к промпту. Доля правильных ответов классификатора с промптом меняется от формулировки, названий меток и порядка примеров; оценивать нужно тот промпт, который будет использоваться, с тем сэмплером, с каким он будет работать.
- Загрязнение теста. Предобученная модель могла видеть бенчмарк; модель с промптом могла видеть его вместе с метками.
Ограничения#
Классификатор отвечает на один фиксированный вопрос. Сменить вопрос — значит новые метки и новый выходной слой или новый промпт и новая оценка. Задачам, ответ в которых — фрагмент, набор сущностей или предложение, нужны модели из следующих заметок, а задачам, ответ в которых зависит от информации вне текста, нужен поиск, который строит раздел о системах на LLM.
Что нужно запомнить#
- Классификация отображает текст в одну из меток; бинарный, многоклассовый и многометочный варианты различаются выходным слоем и функцией потерь.
- AG News: TF-IDF 0.918 на тесте, дообученный BERT 0.949 на отложенной десятой части обучающей выборки — это не сопоставленное сравнение; ничто, обученное с нуля, не превзошло базовый уровень на счётчиках на тесте. Рядом с каждым числом указывать оценочное разбиение и то, что по нему выбиралось. SST-2: режим обучения одной модели даёт от 0.663 до 0.900.
- С метками — дообучать энкодер (полностью или через LoRA). Без меток — декодер с промптом и ограниченным выходом.
- Приводить метрики по классам, проверять обрезку и артефакты и оценивать именно тот промпт и сэмплер, которые будут использоваться.
Ноутбук#
Результаты в таблицах взяты из ноутбуков заметок, ссылки на которые там стоят, каждое число — из прогона, сохранённого в курсе; число дообученного BERT сохранено более ранней версией его ячейки, как объясняет заметка о переносе обучения. Пример ограниченного выхода: week09_RAG.ipynb, ячейки 94–99 (номера ячеек считают все ячейки, включая текстовые, начиная с 1): модель на 3 млрд параметров, обученную на инструкциях, сначала просят оценить отзыв по шкале 1–5 свободным текстом, а затем ограничивают через outlines до Literal из трёх тональностей и до pydantic-схемы Rating с целым полем в пределах . Сохранённые выходы этих ячеек пусты; механизм описан в примерах самой библиотеки.
Дальше#
Метка на документ — самый простой выход. Многие задачи вместо этого сравнивают два текста: повторяющиеся вопросы, следование, насколько близки по смыслу два предложения. Следующая заметка разбирает эти задачи на парах и два способа, которыми трансформер может прочитать пару: вместе или по одному тексту.
Литература#
- J. Howard, S. Ruder. Universal Language Model Fine-tuning for Text Classification. ACL, 2018. Выигрыш от предобучения в зависимости от размера размеченной выборки.
- X. Zhang, J. Zhao, Y. LeCun. Character-level Convolutional Networks for Text Classification. NeurIPS, 2015. AG News и классические базовые уровни.
- R. Socher et al. Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank. EMNLP, 2013. SST.
- B. T. Willard, R. Louf. Efficient Guided Generation for Large Language Models. arXiv, 2023. Ограниченное декодирование, как его использует
outlines. - S. Gururangan et al. Annotation Artifacts in Natural Language Inference Data. NAACL, 2018. Утечка метки через артефакты набора данных.
- D. Jurafsky, J. H. Martin. Speech and Language Processing, 3rd ed. draft. Главы 4–5 (классификация) и 11 (дообучение для классификации).