04 / 37 · Основы работы с текстом
Корпусы и оценка качества
Как разбивают корпус, что просачивается между частями, когда доля правильных ответов обманывает, семейство точность–полнота–F1 на разобранной матрице ошибок и чем внутренняя оценка отличается от прикладной.
На этой странице 11
Две предыдущие заметки превратили текст в идентификаторы токенов. Прежде чем что-то на них обучать, нужен протокол, по которому мы говорим, работает ли модель: каждая следующая заметка сравнивает методы по числу, а число что-то значит, только если верны данные, на которых оно посчитано, и способ подсчёта. Эта заметка фиксирует протокол: как разбивать корпус, какие ошибки разбиения незаметно завышают результаты, какая метрика подходит какой задаче и какие выводы оценка позволяет и не позволяет сделать.
Обозначения. Размеченный корпус — множество пар . Классификатор выдаёт . Для класса величина считает примеры с и , — примеры с и , а — примеры с и .
Три части и назначение каждой#
Модель обучается на обучающей выборке. Каждый выбор, который не делается градиентным спуском (шаг обучения, число эпох, размер словаря, формулировка промпта, решение остановиться), делается по валидационной выборке. Тестовая выборка используется один раз, в конце, чтобы получить число для отчёта.
Частей три, а не две, потому что отбор по выборке смещает оценку на этой выборке. Если перебрать двадцать значений шага обучения и оставить то, у которого лучшая доля правильных ответов на валидации, то эта доля у победителя — оптимистичная оценка его качества на новых данных: часть его преимущества — везение на этих конкретных примерах. Тестовая выборка, ни разу не использованная для решений, — единственная оставшаяся несмещённая оценка.
Протокол оценки и пути утечки
Наборы данных этого курса следуют этому соглашению, насколько позволяют их авторы:
| Корпус | Обучение | Валидация | Тест | Где используется |
|---|---|---|---|---|
| AG News (4 темы) | 120 000 | — | 7600 | классификация |
| Multi30k (De→En) | 29 000 | 1014 | 1000 | перевод |
| SST-2 (тональность) | 67 349 | 872 | 1821 (метки скрыты) | дообучение |
| CoNLL-2003 (NER) | 14 041 предложение | 3250 | 3453 | NER |
| SQuAD 1.1 (QA) | 87 599 | 10 570 | — | ответы на вопросы |
У двух из них тестовых меток нет или они скрыты, поэтому их результаты приводятся на валидационной выборке; это честно, пока на ней ничего не настраивается. AG News поставляется без валидационной части. Большинство экспериментов с классификацией в этом курсе приводят долю правильных ответов на тесте после фиксированного числа эпох без всякого отбора; это честно только потому, что на тесте ничего не настраивалось. Дообучение BERT в заметке о переносе обучения, напротив, отрезает 10% обучающей выборки под валидационную и приводит результат на ней.
Утечка: когда разбиение не разделяет#
Утечка (leakage) — любой путь, по которому информация об оценочных примерах попадает к модели или к человеку, который её настраивает. В текстах часто встречаются четыре формы:
- Дубликаты в разных частях. Веб-корпусы и коллекции вопросов содержат почти-дубликаты. Если один и тот же вопрос есть и в обучающей, и в тестовой выборке, модель получает награду за запоминание. Удалять дубликаты нужно до разбиения и по нечёткому критерию, а не по точному совпадению строк.
- Предобработка, обученная на всём. Токенизатор, словарь TF-IDF или модель векторов слов, обученные на обучающей и тестовой выборках вместе, уже видели тестовые слова. Заметка о TF-IDF обучает векторизатор только на обучающих текстах, а затем преобразует обе выборки. То же правило действует для модели Word2Vec в заметке о CNN: она обучена на обучающих текстах.
- Временна́я утечка. Если задача — предсказывать что-то о будущих текстах, случайное разбиение позволяет модели учиться на документах более поздних, чем те, на которых её проверяют. Разбивать нужно по времени.
- Настройка по тесту. Запускать тест после каждого изменения и оставлять лучший результат — утечка через исследователя. Именно для того, чтобы её избежать, существует валидационная выборка.
Пятая форма свойственна предобученным моделям, и её труднее обнаружить: корпус для предобучения может содержать сам бенчмарк. Модель, прочитавшая тестовую часть бенчмарка во время предобучения, показывает результат, который измеряет память, а не способность. К этому возвращается заметка об оценке LLM.
Доля правильных ответов и когда она обманывает#
Для классификатора очевидное число — доля правильных ответов (accuracy):
Это правильное число, когда классы сбалансированы и все ошибки стоят одинаково. В AG News по 30 000 обучающих примеров на класс, поэтому во всех экспериментах на нём используется доля правильных ответов. SST-2 — 44% отрицательных и 56% положительных примеров, достаточно близко к балансу.
Доля правильных ответов не работает, когда один класс доминирует. В корпусе NER большинство токенов помечены O (не сущность), поэтому модель, которая везде предсказывает O, в большинстве случаев права и бесполезна. Кроме того, это число скрывает, какой класс проваливается. Zero-shot-классификатор в заметке о переносе обучения показывает 45.6% правильных ответов на четырёх темах AG News — похоже на слабую, но работающую модель, пока не разбить долю правильных ответов по классам: 96% для Business, 51% для Sports, 32% для Sci/Tech и 3% для World. Класс World модель не выучила вовсе: почти все его примеры она относит к другим меткам. Одно число скрыло полный провал на четверти данных.
Точность, полнота и F1#
Исправление — считать ошибки по каждому классу и в двух направлениях. Сколько из примеров, которым модель приписала , действительно относятся к (точность, precision), и сколько из примеров, действительно относящихся к , модель нашла (полнота, recall)?
Каждую из них тривиально сделать идеальной за счёт другой: если предсказывать для всего, полнота равна 1, если предсказывать только при полной уверенности, точность равна 1. F1-мера (F1 score) — их среднее гармоническое,
которое близко к меньшей из двух величин: у модели с и получается , а не . Именно этого свойства мы и ждём от одного числа; среднее арифметическое вознаграждало бы тривиальные стратегии.
Когда классов несколько, объединить их можно двумя способами. Макроусреднение (macro averaging) считает для каждого класса и усредняет, так что каждый класс весит одинаково независимо от размера. Микроусреднение (micro averaging) сначала суммирует счётчики TP, FP и FN по классам, что даёт каждому примеру одинаковый вес и для классификации с одной меткой совпадает с долей правильных ответов.
Разобранный пример#
Игрушечный классификатор на 100 документах с тремя темами; строки — истинные классы, столбцы — предсказания (матрица ошибок, confusion matrix):
| истина \ предсказание | A | B | C | всего |
|---|---|---|---|---|
| A | 50 | 5 | 5 | 60 |
| B | 5 | 20 | 5 | 30 |
| C | 5 | 3 | 2 | 10 |
| всего | 60 | 28 | 12 | 100 |
Доля правильных ответов равна . По классам:
| Класс | TP | FP | FN | |||
|---|---|---|---|---|---|---|
| A | 50 | 10 | 10 | 0.833 | 0.833 | 0.833 |
| B | 20 | 8 | 10 | 0.714 | 0.667 | 0.690 |
| C | 2 | 10 | 8 | 0.167 | 0.200 | 0.182 |
Макро-; микро- доля правильных ответов. Маленький класс C почти пропущен, доля правильных ответов этого почти не замечает, а макро- замечает. Какое число приводить, зависит от того, так же ли важен класс C, как класс A; это решение о задаче, а не о статистике.
Фрагменты, а не токены#
В разметке последовательностей единицей оценки должно быть то, что мы хотим извлечь. Системы NER предсказывают метку для каждого токена, но наполовину распознанная сущность (New помечен, York пропущен) не наполовину верна. Поэтому соглашение seqeval, которое используется в заметке о NER, считает точность, полноту и по целым фрагментам-сущностям: фрагмент засчитывается как верно найденный, только если совпадают и его границы, и тип.
Внутренняя и прикладная оценка#
Некоторые модели не являются классификаторами, и доли правильных ответов у них нет. Языковая модель приписывает тексту вероятности, модель эмбеддингов размещает слова в векторном пространстве, поисковая система возвращает ранжированный список. У каждой есть внутренняя (intrinsic) метрика, которая измеряет собственную цель модели:
| Модель | Внутренняя метрика | Заметка |
|---|---|---|
| Языковая модель | Перплексия | n-граммы |
| Векторы слов | Доля решённых аналогий, корреляция сходства | векторы слов |
| Поисковая модель | Precision@k, средний обратный ранг (MRR) | семантический поиск |
| Перевод / суммаризация | BLEU / ROUGE относительно эталонов | перевод, суммаризация |
Внутренняя метрика дёшева и сравнима между моделями, но измеряет не то. Меньшая перплексия не гарантирует лучший сгенерированный текст; лучший результат на аналогиях не гарантирует лучший классификатор поверх этих векторов. Прикладная (downstream) оценка обучает или запускает модель внутри той задачи, которая нас действительно интересует, и измеряет метрику этой задачи. Это и есть важное число, но оно дорогое, привязано к задаче и шумное. Обычная практика — итерировать по внутренним метрикам, а решать по прикладным.
Ловушки, которые переживают правильное разбиение#
- Различия реализаций. У BLEU несколько реализаций, которые по-разному токенизируют и сглаживают и дают разные числа на одних и тех же выходах. Сравнения корректны только в пределах одной реализации; заметка о переводе фиксирует одну и использует её везде.
- Усреднение по батчам. Если усреднять долю правильных ответов, посчитанную на батчах разного размера (последний неполный батч или разное число токенов без паддинга), примеры получают разный вес. Нужно суммировать счётчики и делить один раз.
- Лучшая эпоха по тесту. Это валидация, а не тест.
- Уверенность без доверительного интервала. На валидационной выборке SST-2 из 872 примеров один пример — это 0.11%; разница в 0.5% между двумя запусками лежит в пределах шума от инициализации и порядка данных. Прежде чем называть разницу реальной, нужно повторить запуски с разными начальными значениями генератора (seed).
- Насыщение метрики. Когда все модели набирают около 100%, бенчмарк перестаёт их ранжировать.
Ограничения#
Правильная оценка говорит, как модель ведёт себя на данных, полученных так же, как тестовые. Она не говорит, как модель ведёт себя на других данных, на входах, подобранных противником, или на длинном хвосте, которого нет в тестовой выборке из 7600 примеров. Результат на бенчмарке — необходимое условие, а не достаточное; заметка об оценке LLM разбирает, что остаётся, когда модель — система, а не классификатор.
Что нужно запомнить#
- Обучающая выборка — чтобы обучить, валидационная — чтобы выбрать, тестовая — один раз, чтобы отчитаться. Отбор по выборке смещает оценку на этой выборке.
- Утечка приходит через дубликаты, предобработку, обученную на тестовых данных, время и человека, который настраивает модель.
- Доля правильных ответов годится для сбалансированных классов с одинаковой ценой ошибок. Иначе нужно приводить точность, полноту и по классам и осознанно выбирать макро- или микроусреднение.
- — среднее гармоническое, поэтому оно следует за худшей из точности и полноты.
- Внутренние метрики — для итераций, прикладные — для решений. Нужно пользоваться одной реализацией метрики, суммировать счётчики до деления и повторять запуски, прежде чем доверять малым разницам.
Ноутбук#
Нужные ячейки разбросаны по ноутбукам, где вводится каждый набор данных. Номера ячеек считают все ячейки, включая текстовые, начиная с 1. Приведённые числа взяты из прогона, сохранённого в курсе; у ячеек, изменённых с тех пор под текущие версии библиотек, сохранённого выхода нет.
week01_word_embeddings.ipynb, ячейки 33–38: размеры обучающей и тестовой частей AG News и гистограмма классов; ячейки 44–48: векторизатор TF-IDF обучается только на обучающих текстах, а доля правильных ответов приводится для обеих частей (0.94 на обучающей, 0.918 на тестовой).week06_BERT.ipynb, ячейки 36–39: общая доля правильных ответов zero-shot 0.456 и разбивка по классам, приведённая выше; ячейка 60 отделяет 10% обучающей выборки под валидационную перед дообучением.week07_nlp_tasks.ipynb, ячейки 28–30: точность, полнота и на уровне сущностей сseqevalпосле удаления меток-100, которыми помечены специальные токены и продолжения слов.week04_lstm_attention_transformer.ipynb, ячейка 36: выбор одной реализации BLEU; ячейка 42 содержит то самое усреднение доли правильных ответов по батчам, о котором говорит ловушка выше, вместе с комментарием, признающим это.
Дальше#
Единицы и протокол измерения готовы, и курс переходит к моделям. Первая модель намеренно игнорирует порядок слов: она считает, какие токены содержит документ, и подаёт счётчики линейному классификатору. Следующая заметка строит её, измеряет на AG News и задаёт базовый уровень, который нейросетевым моделям из следующих заметок предстоит превзойти.
Литература#
- D. Jurafsky, J. H. Martin. Speech and Language Processing, 3rd ed. draft. Глава 4 (§4.7, оценка: точность, полнота, F-мера; §4.8, тестовые выборки и статистическая значимость).
- C. D. Manning, P. Raghavan, H. Schütze. Introduction to Information Retrieval. Cambridge University Press, 2008. §8.3 (точность, полнота, F) и §13.6 (оценка классификации текстов, микро- и макроусреднение).
- N. Nakayama. seqeval: A Python framework for sequence labeling evaluation. Метрики на уровне сущностей для последовательностей с разметкой IOB.
- M. Post. A Call for Clarity in Reporting BLEU Scores. WMT, 2018. Почему реализации BLEU расходятся.
- X. Zhang, J. Zhao, Y. LeCun. Character-level Convolutional Networks for Text Classification. NeurIPS, 2015. Разбиение AG News, используемое во всём курсе.