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

Question Answering

Jeopardy! 2011. Watson (IBM) играет против лучших игроков в истории - Кена Дженнингса и Брэда Раттера. IBM QA система побеждает с отрывом в 3 раза. Это был первый момент когда компьютер превзошёл людей в open-domain QA в прямом эфире. С тех пор прошло 13 лет и задача стала 'решённой' - но нюансы остаются.

  • **Google Search Featured Snippets**: extractive QA поверх web pages. При поиске 'когда основана Google' - answer extraction из Wikipedia. BERT лежит в основе с 2019 года.
  • **AWS Kendra**: enterprise search с QA. Корпоративные документы, политики, инструкции. Сотрудник спрашивает 'какой лимит командировочных расходов' - система находит из HR документа.
  • **Perplexity Pro**: deep research mode - multi-hop QA. Задаёшь сложный вопрос - система строит цепочку запросов, находит источники, синтезирует. Это open-domain QA с reasoning.

Предварительные знания

  • BERT и fine-tuning энкодера под downstream-задачу
  • Токенизация и span как пара (start, end) позиций в тексте
  • Идея retrieval: найти релевантные документы по запросу
  • BERT и маскированные LM
  • RAG: Retrieval-Augmented Generation

SQuAD и эра reading comprehension

2016 год. Pranav Rajpurkar с соавторами из Stanford публикуют SQuAD (Stanford Question Answering Dataset) - 100 000 пар вопрос-ответ по статьям Wikipedia, где ответ всегда является непрерывным фрагментом текста. Это дало полю чёткий, воспроизводимый benchmark, и гонка за человеческим уровнем началась. Годом ранее, в 2017, Danqi Chen с коллегами представили DrQA - систему, которая соединяла поиск по всей Wikipedia с reading comprehension моделью, заложив архитектуру retriever-reader для open-domain QA. К 2018 модели на основе BERT превзошли человека на SQuAD 1.1, после чего вышла SQuAD 2.0 с unanswerable questions - чтобы проверить, умеет ли модель сказать "ответа нет" вместо уверенной выдумки.

Extractive QA: span extraction

**Extractive QA**: ответ - это фрагмент (span) из данного текста. Модель предсказывает start и end позиции ответа. SQuAD (Stanford, 2016) - классический benchmark: 100K пар вопрос-контекст-ответ из Wikipedia. BERT на SQuAD достигает 93 F1 - уровень человека.

**SQuAD 2.0**: добавил unanswerable questions - вопросы на которые нет ответа в тексте. Модель должна предсказывать 'нет ответа' вместо hallucination. BERT на SQuAD 2.0: 81 F1 (человек: 86). Навык 'не знаю' - важен для production.

В extractive QA модель предсказывает start и end токены. Что происходит если ответ не содержится в тексте?

Generative QA: свободная форма

**Generative QA** не извлекает span, а генерирует ответ в свободной форме. Может синтезировать информацию из нескольких мест текста, перефразировать, добавлять контекст. Seq2Seq архитектуры (T5, BART) и decoder-only LLM (GPT). Преимущество: ответы естественнее. Недостаток: может галлюцинировать.

**Factual consistency**: generative модели могут отвечать убедительно, но неверно. Метрики: BLEURT, BERTScore для сравнения с reference ответами. **Faithfulness**: ответ должен быть поддержан контекстом. NLI (Natural Language Inference) классификатор проверяет: 'entails context -> faithful'.

Extractive QA отвечает точно но ограничена span'ами. Generative свободна но может галлюцинировать. Для медицинского QA что предпочтительнее?

Open-Domain QA: вопросы без контекста

**Open-Domain QA**: нет заданного контекста - только вопрос. Система должна сама найти документы (retrieval) и ответить (reader). **DPR (Dense Passage Retrieval, Facebook 2020)**: bi-encoder обученный специально для QA retrieval. **RAG**: DPR + seq2seq generator. Предшественник современных RAG пайплайнов.

**LLM как closed-book QA**: GPT-4 на TriviaQA без retrieval: 85%+. Вопрос: нужен ли retrieval если LLM знает ответ? Ответ: для актуальных фактов и domain-specific знаний - да. Для общих знаний в pre-training - нет. Hybrid: сначала проверить уверенность LLM, при низкой - retrieve.

DPR обучался специально для QA retrieval, а не как общий embedding model. В чём преимущество?

Reading Comprehension: понимание текста

**Reading Comprehension** - более широкая задача чем QA: проверяет глубокое понимание текста через вопросы разных типов. QuALITY (2022): длинные документы (5000+ токенов), вопросы требующие reasoning по всему тексту, не просто span lookup. RACE: вопросы из китайских экзаменов, требуют inference.

**LSAT и Bar Exam бенчмарки**: GPT-4 сдаёт LSAT в топ 10%. Reading comprehension вопросы требуют: логического вывода, понимания implikations, detection of assumptions. Это выходит за рамки simple span extraction - нужен reasoning.

Высокий F1 на SQuAD означает что QA система хорошо понимает тексты

SQuAD тестирует span extraction из релевантного пассажа. Реальное понимание требует multi-hop reasoning, inference, coreference - QuALITY, HotpotQA, MuSiQue тестируют это лучше

BERT достиг человеческого уровня на SQuAD 1.1 (2018), но это не означало AGI. Модели научились искать lexically близкие spans. HotpotQA требует объединить информацию из двух документов - здесь разрыв с человеком больше.

ConvQA (Conversational QA) сложнее стандартного QA. Основная дополнительная сложность:

Ключевые идеи

  • **Extractive QA**: предсказывает start/end span из контекста. Verifiable, no hallucination, но ограничена фрагментами текста. BERT на SQuAD: 93 F1.
  • **Generative QA**: T5, GPT генерируют свободный ответ. Естественнее, синтезируют информацию, но могут галлюцинировать. Faithfulness check обязателен.
  • **Open-Domain QA**: retrieval + reader. DPR для специализированного retrieval. RAG = modern open-domain QA. LLM как closed-book QA для общих знаний.
  • **Reading Comprehension**: deep understanding - coreference, multi-hop, inference. HotpotQA, QuALITY более реалистичны чем SQuAD.
  • **Production**: для critical domains (медицина, юридическое) - extractive + citations. Для general assistants - generative + faithfulness check.

Связанные темы

QA - применение нескольких NLP техник вместе:

  • RAG: Retrieval-Augmented Generation — RAG - современная реализация open-domain QA: DPR эволюционировал в dense retrieval, reader стал LLM
  • Summarization — Длинный контекст QA требует суммаризации - не всё влезает в context window читающей модели

Вопросы для размышления

  • SQuAD вопросы создавались людьми глядящими на параграф. Значит ответ всегда есть. Как изменится F1 если 30% вопросов не имеют ответа в тексте?
  • Extractive QA предсказывает span. Как обрабатывать вопросы требующие числовых вычислений ('сколько лет прошло между X и Y') где ответ не span?
  • Multi-hop QA требует объединить информацию из двух документов. Как retriever должен работать чтобы получить оба релевантных документа?

Связанные уроки

  • nlp-17 — RAG извлекает контекст для open-domain QA
  • nlp-12 — Извлекающий QA использует спан-голову BERT
  • nlp-19 — Оба сжимают исходный текст в сфокусированный ответ
  • aie-12-rag-fundamentals — Продакшен QA строится на конвейерах RAG
  • ir-04 — Open-domain QA переиспользует ранжированный поиск пассажей
  • ml-01-intro
Question Answering

0

1

Войти