Содержание курса 01 / 37

01 / 37 · Основы работы с текстом

Что такое обработка естественного языка

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

На этой странице 9

Спам-фильтр, строка поиска, переводчик и чат-ассистент читают текст и что-то с ним делают. Обработка естественного языка (natural language processing, NLP) — это набор методов, которые позволяют программе так поступать: превращать текст в решение или в другой текст. В этой заметке — в чём состоит задача, почему она трудна, зачем проходить курс о методах, когда чат-модель доступна одним вызовом API, и как курс устроен.

Задача: от текста к решениям и обратно#

Текст — это последовательность символов x=(w1,…,wT)x = (w_1, \dots, w_T), где каждый wtw_t берётся из словаря VV. Что считать символом (слово, часть слова, байт), решают следующая заметка и заметка о токенизации; здесь важно лишь то, что текст приходит последовательностью дискретных токенов разной длины.

Любая задача курса имеет одну из четырёх форм:

  1. Текст → метка, p(y∣x)p(y \mid x): один ответ на весь текст. Спам или нет, тональность отзыва, тема новости. Сквозной пример курса — AG News: 120 000 новостных текстов четырёх тем.
  2. Метка на каждый токен, p(y1,…,yT∣x)p(y_1, \dots, y_T \mid x): ответ для каждой позиции. Именованные сущности, части речи, начало и конец ответа во фрагменте текста.
  3. Текст → текст, p(y1,…,ym∣x)p(y_1, \dots, y_m \mid x): новая последовательность при условии входной. Перевод, суммаризация, перефразирование.
  4. Продолжение текста, p(w1,…,wT)p(w_1, \dots, w_T): отдельного входа нет, есть только вероятность самого текста, который порождается токен за токеном. Это языковая модель (language model).
Рисунок

Четыре формы задач NLP

Четыре формы задач NLP с примерамиЧетыре строки. Первая: слова новостного заголовка в синих прямоугольниках, стрелка к одной зелёной метке «Бизнес». Вторая: слова «Обама посетил Париж», под каждым словом зелёная метка B-PER, O, B-LOC, O. Третья: немецкое предложение и стрелка к его переводу. Четвёртая: начало фразы и стрелка к следующему токену. Рядом с каждой строкой — формула вероятности, которую моделирует задача.1. Текст → меткаp(y | x)акциирастутпослесниженияставкиБизнес2. Метка на каждый токенp(y1 … yT | x)ОбамапосетилПариж.B-PEROB-LOCO3. Текст → текстp(y1 … ym | x)EinMannliest.Мужчиначитает.4. Продолжение текстаp(wt | w<t)котселнаковрикследующий токенЧетыре формы задач NLP с примерамиЧетыре строки. Первая: слова новостного заголовка в синих прямоугольниках, стрелка к одной зелёной метке «Бизнес». Вторая: слова «Обама посетил Париж», под каждым словом зелёная метка B-PER, O, B-LOC, O. Третья: немецкое предложение и стрелка к его переводу. Четвёртая: начало фразы и стрелка к следующему токену. Рядом с каждой строкой — формула вероятности, которую моделирует задача.1. Текст → меткаp(y | x)акциирастутпослесниженияставкиБизнес2. Метка на каждый токенp(y1 … yT | x)ОбамапосетилПариж.B-PEROB-LOCO3. Текст → текстp(y1 … ym | x)EinMannliest.Мужчиначитает.4. Продолжение текстаp(wt | w<t)котселнаковрикследующий токен
Каждая задача курса принимает одну из четырёх форм. Классификация даёт одну метку на весь текст (тема новости из AG News). Разметка даёт метку каждому токену: B-PER и B-LOC открывают имя человека и название места. Перевод и суммаризация порождают новую последовательность по входной. Языковая модель предсказывает следующий токен по предыдущим, и через неё можно записать три остальные формы, если задачу оформить как продолжение подсказки. Справа — вероятность, которую моделирует каждая форма; синим — вход, зелёным — то, что предсказывает модель.

Четвёртая форма самая общая. Метку, последовательность тегов или перевод можно записать как текст, продолжающий подсказку (Topic of this article: ), поэтому модель, которая хорошо продолжает текст, в принципе умеет и остальные три. Именно поэтому одна предобученная языковая модель теперь обслуживает много задач; эту линию продолжают заметка о GPT и заметка о семействах моделей. Но это не повод решать так всё подряд: дообученный классификатор дешевле на каждый документ, его проще оценить, и часто он точнее, как показывает заметка о классификации текстов.

Для чего нужен NLP#

  • Поиск. Найти фрагменты, которые отвечают на запрос, по совпадению слов или смыслов: заметка о семантическом поиске.
  • Классификация в масштабе. Распределять обращения в поддержку, фильтровать спам и оскорбления, размечать новости по темам, измерять тональность: миллионы документов, по одному дешёвому решению на каждый.
  • Извлечение. Вытащить из свободного текста в таблицу имена, даты, суммы и связи между ними или, наоборот, удалить их, как при обезличивании медицинских записей: заметки о NER и ответах на вопросы.
  • Генерация по источнику. Перевести, сократить, ответить по документу: заметки о переводе и суммаризации.
  • Ассистенты и агенты. Языковая модель, которая следует инструкциям, ищет сведения и вызывает инструменты: заметки об обучении на инструкциях, RAG и агентах.

Бо́льшая часть записанного человеческого знания — это текст, и бо́льшая часть работы выше — чтение или письмо в масштабе, недоступном человеку.

Одна цель обучения почти под всем#

Цепное правило теории вероятностей превращает языковую модель в последовательность задач классификации, по одной на позицию:

p(w1,…,wT)=∏t=1Tp(wt∣w1,…,wt−1).p(w_1, \dots, w_T) = \prod_{t=1}^{T} p(w_t \mid w_1, \dots, w_{t-1}).

Обучение максимизирует логарифм вероятности настоящего текста, что то же самое, что минимизировать среднюю кросс-энтропию на токен:

H=−1T∑t=1Tlog⁡p(wt∣w<t),PPL=eH.H = -\frac{1}{T} \sum_{t=1}^{T} \log p(w_t \mid w_{<t}), \qquad \mathrm{PPL} = e^{H}.

Перплексия (perplexity) PPL\mathrm{PPL} читается как эффективное число вариантов: у модели, которая равномерно распределяет вероятность по 10 000 слов, перплексия 10 000, а у модели, которая на каждом шаге даёт наблюдаемому следующему токену вероятность 0.1, — 10. Заметка об n-граммах выводит её и измеряет.

Методы курса различаются тем, как они вычисляют p(wt∣w<t)p(w_t \mid w_{<t}). N-граммная модель считает, как часто wtw_t следовал за последними n−1n - 1 токенами. Рекуррентная сеть сжимает весь префикс w<tw_{<t} в один вектор состояния. Трансформер смотрит на каждый предыдущий токен напрямую через внимание (attention). GPT — это трансформер, обученный так на очень большом корпусе. Классификатор использует ту же кросс-энтропию, только с KK метками вместо ∣V∣|V| токенов.

Почему язык труден для компьютера#

Текст выглядит просто: короткая строка знакомых слов. Его делают трудным пять свойств.

  • У символов нет геометрии. В виде one-hot-векторов cat и dog ровно так же далеки друг от друга, как cat и carburetor. Ничто в самих символах не говорит, какие слова похожи; это приходится выучить, и этим заняты векторные представления слов.
  • Словарь открыт и имеет тяжёлый хвост. Немногие слова составляют бо́льшую часть любого текста, а бо́льшая часть различных слов редка. Модель целых слов тратит параметры на слова, которые почти не видела, и не имеет записи для новых; это исправляет токенизация подсловами.
  • Смысл зависит от контекста. bank в river bank и в bank account — одна строка с двумя смыслами; у I saw her duck два прочтения. Один фиксированный вектор на слово их не различит, и отсюда контекстные векторы BERT.
  • Порядок важен, иногда на больших расстояниях. В not good и good, not одни и те же слова. В The keys to the old cabinet are on the table глагол согласуется с keys, стоящим на пять слов раньше. Мешок слов порядок игнорирует, n-граммы видят лишь несколько токенов, а ответами становятся рекуррентные сети и затем внимание.
  • Правильных ответов много. У предложения много верных переводов, у статьи много хороших пересказов, поэтому оценка системы — отдельная задача: BLEU, ROUGE и модели-судьи в заметках об оценке и оценке LLM.

Разобранный пример: словарь AG News#

Приведём 120 000 обучающих текстов AG News к нижнему регистру и разрежем на последовательности букв и цифр. Получится 4 759 159 токенов и 65 043 различных слова.

Самые частые словаДоля всех токенов
1019.3 %
10038.1 %
100066.6 %
10 00093.9 %

На другом конце 20 925 слов, треть словаря, встречаются ровно один раз. Частота падает примерно обратно пропорционально рангу — закон Ципфа (Zipf, 1949): 10-е, 100-е и 1000-е слова встречаются 44 506, 4714 и 665 раз, так что произведение ранга на частоту остаётся между 0.45 и 0.67 миллиона. Словарь из 10 000 слов покрывает 94 % токенов; остальные 55 000 слов делят последние 6 %, а каждый новый текст приносит слова, которых нет ни среди одних, ни среди других.

Список показывает и то, каков сырой текст. Десятое по частоте «слово» — 39. Источник хранил апостроф в Web's как HTML-сущность &#39;, амперсанд потерялся, и #39; остался в 29 696 текстах из 120 000; 44 316 из 44 506 вхождений 39 взялись отсюда. Догадаться об этом по выборке нельзя, а любая модель, обученная на этих данных, это выучивает.

Зачем знать методы, если есть чат-модель#

Сильная языковая модель отвечает на вопросы о тексте сразу, без настройки. Методы этого курса всё равно стоит знать, по четырём причинам.

  1. LLM-система собрана из этих деталей. Токенизатор решает, сколько стоит запрос и какие слова модель обрабатывает плохо. Эмбеддинги решают, что найдёт поиск. Внимание и позиционное кодирование задают, сколько контекста помещается. Стратегия декодирования меняет ответ той же модели. Квантизация и параметрически эффективное дообучение решают, что запустится на данной видеокарте. Каждой из этих деталей посвящена заметка курса.
  2. Простые бейзлайны сильны. На AG News TF-IDF с логистической регрессией даёт 0.918 точности на тесте при фиксированных настройках. Три других результата на тех же данных измерены по разным протоколам, поэтому это отдельные демонстрации, а не рейтинг. Небольшой трансформер, обученный с нуля, даёт 0.906 на эпохе, выбранной по тестовой выборке, так что это число оптимистично. BERT в режиме zero-shot через голову маскированного языкового моделирования даёт 0.456 с естественными словами-метками и 0.613 со словами-метками, подобранными на тестовых статьях, — снова оптимистично. BERT, дообученный на задаче, даёт 0.949 на отложенной десятой части обучающей выборки, а не на тесте. Но и с этими оговорками картина поучительна: подсчёт слов проходит бо́льшую часть пути, большая модель без обучения может сильно отстать, а последние пункты, по-видимому, требуют предобученной модели, дообученной на задаче. Результаты заметки о классификации указывают протокол каждого числа. Знание этого и позволяет выбирать.
  3. Стоимость и контроль. Дообученный энкодер классифицирует документ за один проход с известной точностью; модель с промптом порождает текст, который нужно разобрать и проверить. Для узкой задачи в масштабе маленькая модель часто выигрывает по стоимости, задержке и возможности её измерить.
  4. У сбоев есть механизмы. Невиданные слова взрывают перплексию языковой модели (у несглаженной униграммной модели, обученной на небольшом корпусе анекдотов, перплексия на отложенном тексте порядка 104610^{46} в заметке об n-граммах); написанное вручную отображение меток молча меняет местами два типа сущностей; согласие небольшой модели-судьи с людьми, 0.19 на 28 примерах, неотличимо от нуля (заметка об оценке LLM). Каждый такой сбой легко найти, если знать механизм, и трудно заметить иначе.

План курса#

Курс следует одной основной линии: большинство методов вводится конкретным провалом предыдущего. Несколько шагов — ответвления, а не исправления: другой способ сделать ту же работу, а не починка предыдущего.

Рисунок

Линия курса: большинство методов отвечает на провал предыдущего

Цепочка методов курса NLPОдиннадцать блоков сверху вниз: мешок слов, n-граммные модели, Word2Vec, рекуррентные сети, sequence-to-sequence, внимание поверх RNN, трансформер, предобученные модели, дообучение и квантизация, RAG и агенты, текстовая диффузия. Рядом с каждым блоком, кроме последнего, красным написано, в чём метод проваливается; стрелка ведёт к следующему методу.Мешок слов, TF-IDFтеряется порядок словN-граммные моделипохожие слова не делят статистикуЭмбеддинги Word2Vecодин вектор на слово при любом контекстеRNN, LSTM, GRUпо одному токену; далёкое забываетсяSequence-to-sequenceвесь вход сжат в один векторВнимание поверх RNNэнкодер всё ещё читает по одному токенуТрансформеробучается с нуля под каждую задачуПредобучение: BERT, GPTслишком дороги для обучения под задачуДообучение, PEFT, квантизациязнает только данные обучения, не действуетRAG, инструменты, агентымодель внутри всё ещё пишет слева направоТекстовая диффузияЦепочка методов курса NLPОдиннадцать блоков сверху вниз: мешок слов, n-граммные модели, Word2Vec, рекуррентные сети, sequence-to-sequence, внимание поверх RNN, трансформер, предобученные модели, дообучение и квантизация, RAG и агенты, текстовая диффузия. Рядом с каждым блоком, кроме последнего, красным написано, в чём метод проваливается; стрелка ведёт к следующему методу.Мешок слов, TF-IDFтеряется порядок словN-граммные моделипохожие слова не делят статистикуЭмбеддинги Word2Vecодин вектор на слово при любом контекстеRNN, LSTM, GRUпо одному токену; далёкое забываетсяSequence-to-sequenceвесь вход сжат в один векторВнимание поверх RNNэнкодер всё ещё читает по одному токенуТрансформеробучается с нуля под каждую задачуПредобучение: BERT, GPTслишком дороги для обучения под задачуДообучение, PEFT, квантизациязнает только данные обучения, не действуетRAG, инструменты, агентымодель внутри всё ещё пишет слева направоТекстовая диффузия
Курс идёт сверху вниз. Синим — метод, красным — то, в чём он проваливается; эта проблема и вводит следующий метод. Подсчёт слов теряет порядок, n-граммы видят порядок, но не сходство слов, векторы слов дают сходство, но не контекст, и так далее до систем вокруг языковой модели. Последняя стрелка — ответвление, а не исправление: текстовая диффузия меняет порядок порождения самой модели и не связана с тем, что делают поиск или инструменты. Каждый блок ведёт на свою заметку.
  1. Основы работы с текстом. Что такое строка и как её чистят, токенизация подсловами, корпусы и оценка качества.
  2. Классический NLP. Мешок слов и TF-IDF; n-граммные языковые модели, перплексия и сглаживание.
  3. Распределённые представления. Плотные векторы слов, Word2Vec, GloVe и FastText.
  4. Нейросетевые модели последовательностей. Свёрточные сети для текста, рекуррентные сети, LSTM и GRU, модели sequence-to-sequence и внимание, которое сняло их узкое место.
  5. Трансформеры. Self-attention, блок трансформера, позиционные представления, модель перевода.
  6. Предобученные языковые модели. BERT, GPT и декодирование, семейства моделей, перенос обучения.
  7. Адаптация и эффективные модели. Дообучение, параметрически эффективное дообучение (LoRA, настройка промпта), обучение на инструкциях и выравнивание, квантизация.
  8. Задачи NLP. Классификация текстов, пары предложений и их близость, распознавание именованных сущностей, ответы на вопросы, суммаризация.
  9. Современные LLM-системы. Эмбеддинги и семантический поиск, генерация с извлечением, инструменты и агенты, оценка LLM.
  10. Продвинутая генерация. Генерация текста без порядка слева направо.

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

Что нужно запомнить#

  • NLP превращает текст в метку, в метку на каждый токен, в другой текст или в продолжение; эти четыре формы покрывают задачи курса.
  • Языковая модель раскладывает вероятность текста в произведение вероятностей следующего токена; обучение минимизирует кросс-энтропию, а перплексия eHe^{H} — её удобочитаемая форма.
  • Язык труден, потому что у символов нет геометрии, словарь открыт и распределён по Ципфу, смысл зависит от контекста, порядок важен на больших расстояниях и правильных ответов много.
  • На AG News подсчёт слов даёт 0.918 на тесте, а дообученный BERT — 0.949 на отложенной части обучающей выборки; протоколы разные, так что это не прямой рейтинг. Сначала измерьте сильный бейзлайн — по тому же протоколу, что и модель, которая должна его обойти.
  • Курс идёт от подсчётов к LLM-системам, и большинство методов отвечает на провал предыдущего; текстовая диффузия в конце — ответвление, другой порядок порождения.

Дальше#

Прежде любой модели текст нужно превратить в единицы, которые программа может посчитать. Об этом Текст как данные: байты, Unicode, сегментация и очистка.

Литература#