Русская Википедия:Языковая модель

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Языковая модель — это распределение вероятностей по последовательностям слов[1]. Для любой последовательности слов длины Шаблон:Mvar языковая модель присваивает вероятность <math>P(w_1,\ldots,w_m)</math> всей последовательности. Языковые модели генерируют вероятности путём обучения на корпусе текстов на одном или нескольких языках. Учитывая, что языки могут использоваться для выражения огромного множества верных предложений (так называемая цифровая бесконечность), языковое моделирование сталкивается с проблемой задания ненулевых вероятностей лингвистически верным последовательностям, которые могут никогда не встретиться в обучающих данных. Для преодоления этой проблемы было разработано несколько подходов к моделированию, таких как применение марковских цепей или использование нейронных архитектур, таких как рекуррентные нейронные сети или трансформеры.

Языковые модели полезны для решения множества задач вычислительной лингвистики; от первоначальных применений в распознавании речи[2] для того, чтобы избежать генерации бессмысленных (то есть маловероятные) последовательностей слов, до более широкого использования в машинном переводе[3] (например, оценка переводов-кандидатов), генерации естественного языка (генерация текста, более похожего на человеческий), разметки частей речи, синтаксического анализа[3], оптического распознавания символов, распознавания рукописного ввода[4], грамматических выводов[5], поиска информации[6][7] и других приложений.

Языковые модели используются при поиске информации в Шаблон:Iw, где каждому документу в коллекции привязана отдельная языковая модель. Документы ранжируются на основе вероятности запроса Q в языковой модели документа <math>M_d</math> : <math>P(Q\mid M_d)</math>. Обычно для этой цели используется языковая модель униграмм.

Типы моделей

Униграмма

Модель униграммы можно рассматривать как комбинацию нескольких конечных автоматов с одним состоянием[8]. Предполагается, что вероятности маркеров в последовательности независимы, например:

<math>P_\text{uni}(t_1t_2t_3)=P(t_1)P(t_2)P(t_3)\,.</math>

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

Условия Вероятность в документе
а 0,1
мир 0,2
нравится 0,05
мы 0,05
делиться 0,3
. . . . . .
<math>\sum_{\text{term in doc}} P(\text{term}) = 1\,.</math>

Вероятность, сгенерированная для конкретного запроса, рассчитывается как

<math>P(\text{query}) = \prod_{\text{term in query}} P(\text{term})\,.</math>

В разных документах есть модели униграмм с разной вероятностью слов в ней. Распределения вероятностей из разных документов используются для генерации вероятностей попаданий для каждого запроса. Документы можно ранжировать для запроса в соответствии с вероятностями. Пример моделей униграмм двух документов:

Условия Вероятность в Doc1 Вероятность в Doc2
а 0,1 0,3
мир 0,2 0,1
нравится 0,05 0,03
мы 0,05 0,02
делиться 0,3 0,2
. . . . . . . . .

В контексте информационного поиска языковые модели униграмм часто сглаживаются, чтобы избежать случаев, когда P(term) = 0. Обычный подход заключается в создании модели максимального правдоподобия для всей коллекции и линейной интерполяции модели коллекции с моделью максимального правдоподобия для каждого документа для сглаживания[9].

n-грамм

В n-граммной модели вероятность <math>P(w_1,\ldots,w_m)</math> наблюдения за предложением <math>w_1,\ldots,w_m</math> аппроксимируется как

<math>P(w_1,\ldots,w_m) = \prod^m_{i=1} P(w_i\mid w_1,\ldots,w_{i-1})\approx \prod^m_{i=2} P(w_i\mid w_{i-(n-1)},\ldots,w_{i-1})\,.</math>

Предполагается, что вероятность встретить i-е слово wi в контестной истории предшествующего i − 1 слов можно аппроксимировать вероятностью найти его в укороченной контекстной истории предыдущего n − 1 слова (марковское свойство n-го порядка). Чтобы уточнить, для n = 3 и i = 2 получится <math>P(w_i\mid w_{i-(n-1)},\ldots,w_{i-1})=P(w_2\mid w_1)</math>.

Условная вероятность рассчитывается на основе частот n-граммовой модели:

<math>P(w_i\mid w_{i-(n-1)},\ldots,w_{i-1}) = \frac{\mathrm{count}(w_{i-(n-1)},\ldots,w_{i-1},w_i)}{\mathrm{count}(w_{i-(n-1)},\ldots,w_{i-1})}\,.</math>

Термины биграммные и триграммные языковые модели обозначают n-граммовые модели с n = 2 и n = 3 соответственно[10].

Как правило, вероятности n-граммной модели не выводятся непосредственно из подсчёта частот, потому что модели, полученные таким образом, имеют серьёзные проблемы при столкновении с любыми n-граммами, которые ранее явно не наблюдались. Вместо этого необходима некоторая форма сглаживания, приписывающая часть общей вероятностной массы невидимым словам или n-граммам. Используются различные методы, от простого сглаживания «добавь один» (присваивание числа 1 невидимым n-граммам в качестве неинформативного априорного) до более сложных моделей, таких как модели Шаблон:Iw или Шаблон:Iw.

Двунаправленная

Двунаправленные представления зависят как от пре-, так и от постконтекста (например, слов) на всех уровнях[11].

Пример

В биграммной языковый модели, вероятность предложения I saw the red house аппроксимируется как

<math>P(\text{I, saw, the, red, house}) \approx P(\text{I}\mid\langle s\rangle) P(\text{saw}\mid \text{I}) P(\text{the}\mid\text{saw}) P(\text{red}\mid\text{the}) P(\text{house}\mid\text{red}) P(\langle /s\rangle\mid \text{house})\,,</math>

тогда как в триграммной языковой модели, аппроксимация

<math>P(\text{I, saw, the, red, house}) \approx P(\text{I}\mid \langle s\rangle,\langle s\rangle) P(\text{saw}\mid\langle s\rangle,I) P(\text{the}\mid\text{I, saw}) P(\text{red}\mid\text{saw, the}) P(\text{house}\mid\text{the, red}) P(\langle /s\rangle\mid\text{red, house})\,.</math>

Контекст первого n — 1 n-грамм заполняется маркерами начала предложения, обычно обозначаемыми символом <s>.

Кроме того, без маркера конца предложения вероятность неграмматической последовательности *I saw the всегда будет выше, чем вероятность более длинного предложения I saw the red house.

Экспоненциальная

Языковые модели с максимальной энтропией кодируют отношения между словом и историей n-грамм, используя функции признаков. Уравнение

<math> P(w_m \mid w_1,\ldots,w_{m-1}) = \frac{1}{Z(w_1,\ldots,w_{m-1})} \exp (a^T f(w_1,\ldots,w_m))\,,</math>

где <math>Z(w_1,\ldots,w_{m-1})</math> — Шаблон:Iw, <math>a</math> — вектор параметров, а <math>f(w_1,\ldots,w_m)</math> — функцией признаков. В простейшем случае функция признаков — это просто индикатор наличия некой n-граммы. Полезно использовать априорную <math>a</math> или некоторую форму регуляризации.

Логбилинейная модель — ещё один пример экспоненциальной языковой модели.

Нейросетевая

Нейронные языковые модели (или языковые модели с непрерывным пространством) используют непрерывные представления или вложения слов для своих прогнозов[12]. Эти модели используют нейронные сети.

Встраивание в непрерывное пространство помогает уменьшить проклятие размерности в языковом моделировании: по мере того, как языковые модели обучаются на всё больших и больших текстах, количество уникальных слов (словарный запас) увеличиваетсяШаблон:Efn. Количество возможных последовательностей слов экспоненциально увеличивается с размером словаря, вызывая проблему разреженности данных из-за экспоненциально большого количества последовательностей. Таким образом, статистика необходима для правильной оценки вероятностей. Нейронные сети избегают этой проблемы, представляя слова распределённым образом, как нелинейные комбинации весов в нейронной сети[13]. Альтернативное описание состоит в том, что нейронная сеть аппроксимирует языковую функцию. Архитектура нейронной сети может быть прямой или рекуррентной, и хотя первая проще, вторая встречается чаще.

Как правило, нейронносетевые языковые модели строятся и обучаются как вероятностные классификаторы, которые учатся предсказывать распределение вероятностей.

<math>P(w_t \mid \mathrm{context}) \, \forall t \in V\,.</math>

То есть сеть обучена прогнозировать распределение вероятностей по словарю с учётом некоторого лингвистического контекста. Это делается с помощью стандартных алгоритмов обучения нейронных сетей, таких как стохастический градиентный спуск с обратным распространением ошибкиШаблон:R. Контекст может быть окном фиксированного размера предыдущих слов, чтобы сеть предсказывала следующее

<math>P(w_t \mid w_{t-k}, \dots, w_{t-1})</math>

из вектора признаков, представляющего предыдущие Шаблон:Mvar словШаблон:R. Другим вариантом является использование «будущих» слов, а также «прошедших» слов в качестве признаков, так что предполагаемая вероятность

<math>P(w_t \mid w_{t-k}, \dots, w_{t-1}, w_{t+1}, \dots, w_{t+k})\,.</math>

Это называется моделью мешка слов. Когда векторы признаков для слов в контексте объединяются непрерывной операцией, эта модель называется непрерывной архитектурой набора слов (Шаблон:Lang-en, CBOW)[14].

Третий вариант, который обучается медленнее, чем CBOW, но работает немного лучше, заключается в том, чтобы инвертировать предыдущую задачу и заставить нейронную сеть изучать контекст по заданному словуШаблон:R. Более формально, учитывая последовательность обучающих слов <math>w_1, w_2, w_3, \dots, w_T</math>, максимизируется средняя логарифмическая вероятность

<math>\frac{1}{T}\sum_{t=1}^T \sum_{-k \leq j \leq k, j \neq 0} \log P(w_{t+j} \mid w_t)\,,</math>

где Шаблон:Mvar — размер обучающего контекста, который может быть функцией центрального слова <math>w_t</math>. Это называется скип-граммовой моделью языка[15]. Модели «мешок слов» и «скип-грамм» лежат в основе программы word2vec[16].

Вместо использования языковых моделей нейронных сетей для получения фактических вероятностей обычно вместо этого используется распределённое представление, закодированное в «скрытых» слоях сети, как представления слов; затем каждое слово отображается в Шаблон:Mvar-мерный вещественный вектор, называемый встраиванием слов, где Шаблон:Mvar — размер слоя непосредственно перед выходным слоем. Представления в скип-граммных моделях имеют отличительную характеристику, заключающуюся в том, что они моделируют семантические отношения между словами как линейные комбинации, фиксируя форму Шаблон:Iw. Например, в некоторых таких моделях, если Шаблон:Mvar — это функция, которая отображает слово Шаблон:Mvar в его Шаблон:Mvar-d векторное представление, то

<math>v(\mathrm{king}) - v(\mathrm{male}) + v(\mathrm{female}) \approx v(\mathrm{queen})\,,</math>

где ≈ уточнено условием, что его правая часть должна быть ближайшим соседом значения левой частиШаблон:RШаблон:R

Другие

Позиционная языковая модель[17] оценивает вероятность того, что данные слова встречаются в тексте близко друг к другу, не обязательно непосредственно рядом. Точно так же модели мешка понятий[18] используют семантику, связанную с многословными выражениями, такими как buy_christmas_present, даже когда они используются в информативных предложениях, таких как «сегодня я купил много очень хороших рождественских подарков».

Несмотря на ограниченные успехи в использовании нейронных сетей[19], авторы признают необходимость других методов при моделировании жестовых языков.

Языковые модели

Примеры языковых моделей:

  • Шаблон:Iw: генеративный предварительно обученный трансформер 2 с 1,5 миллиардами параметров.
  • GPT-3: генеративный предварительно обученный трансформер 3 с беспрецедентным размером контекста длиной 2048 токенов и 175 миллиардов параметров (требуется 800 ГБ памяти).
  • GPT-3.5/ChatGPT/InstructGPT от OpenAI[27]
  • GPT-NeoX-20B: модель авторегрессионного языка с открытым исходным кодом с 20 миллиардами параметров.
  • Шаблон:Iw: представления двунаправленного кодировщика от трансформаторов (BERT)
  • OPT-175B от Meta AI: ещё одна языковая модель со 175 миллиардами параметров. Она доступна более широкому сообществу исследователей ИИ.
  • Point-E от OpenAI: генератор 3D-моделей[28].
  • RT-1 от Google: модель для работающих роботов[29].
  • ERNIE-Code от Baidu: модель многоязычного кодирования с 560 млн параметрами[29].
  • Синтез текста в речь VALL-E на основе 3-секундного образца речи[30]. Она была предварительно обучена на 60 000 часов английской речи от 7 000 уникальных носителей (набор данных: LibriLight)[31].

Hugging Face размещает общедоступные языковые модели, с помощью которых разработчики могут создавать приложения с использованием машинного обучения.

Оценка и ориентиры

Оценка качества языковых моделей в основном проводится путём сравнения с эталонными тестами, созданными людьми на основе типичных языковых задач. Другие, менее известные, тесты качества исследуют внутренний характер языковой модели или сравнивают две такие модели. Поскольку языковые модели обычно предназначены для того, чтобы быть динамичными и учиться на основе данных, которые они видит, некоторые предлагаемые модели исследуют скорость обучения, например, путём проверки кривых обучения[32].

Для оценки систем языковой обработки были разработаны различные наборы данных[11]. К ним относятся:

  • Корпус лингвистической приемлемости[33];
  • Тест GLUE[34];
  • Microsoft Research Paraphrase Corpus[35];
  • Многожанровый вывод на естественном языке;
  • Вопрос через интерфейс естественного языка;
  • Пары вопросов-ответов Quora[36];
  • Распознавание логического следствия из текста[37];
  • Эталон семантического текстового сходства;
  • Тест вопрос-ответ SQuAD[38];
  • Стэнфордское дерево отношений[39];
  • Winograd NLI.

Критика

Хотя можно показать, что современные языковые модели, такие как GPT-3, соответствуют способностям человека в некоторых задачах, неясно, являются ли они правдоподобными когнитивными моделями. Например, было показано, что рекуррентные нейронные сети изучают шаблоны, которые люди не изучают, и не могут изучать шаблоны, которые люди изучают[40].

См. также

Примечания

Комментарии

Шаблон:Комментарии

Источники

Шаблон:Примечания

Литература

Шаблон:ВС Шаблон:Обработка естественного языка

  1. Шаблон:Cite book
  2. Kuhn, Roland, and Renato De Mori. «A cache-based natural language model for speech recognition.» IEEE transactions on pattern analysis and machine intelligence 12.6 (1990): 570—583.
  3. 3,0 3,1 Andreas, Jacob, Andreas Vlachos, and Stephen Clark. «Semantic parsing as machine translation.» Proceedings of the 51st Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers). 2013.
  4. Pham, Vu, et al. «Dropout improves recurrent neural networks for handwriting recognition.» 2014 14th International Conference on Frontiers in Handwriting Recognition. IEEE, 2014.
  5. Htut, Phu Mon, Kyunghyun Cho, and Samuel R. Bowman. «Grammar induction with neural language models: An unusual replication.» arXiv preprint arXiv:1808.10000 (2018).
  6. Шаблон:Cite conference
  7. Шаблон:Cite conference
  8. Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze: An Introduction to Information Retrieval, pages 237—240. Cambridge University Press, 2009
  9. Buttcher, Clarke, and Cormack. Information Retrieval: Implementing and Evaluating Search Engines. pg. 289—291. MIT Press.
  10. Craig Trim, What is Language Modeling?, April 26th, 2013.
  11. 11,0 11,1 Шаблон:Cite arXiv
  12. Шаблон:Cite web
  13. Шаблон:Cite journal
  14. Шаблон:Cite journal
  15. Шаблон:Cite journal
  16. Шаблон:Cite web
  17. Шаблон:Cite conference
  18. Шаблон:Cite book
  19. Шаблон:Cite journal
  20. Шаблон:Cite web
  21. Шаблон:Cite web
  22. Шаблон:Cite web
  23. Шаблон:Cite journal
  24. Шаблон:Cite web
  25. Шаблон:Cite web
  26. Шаблон:Cite journal
  27. Шаблон:Cite web
  28. Шаблон:Cite web
  29. 29,0 29,1 Шаблон:Cite web
  30. Шаблон:Cite web
  31. Шаблон:Cite web
  32. Шаблон:Citation
  33. Шаблон:Cite web
  34. Шаблон:Cite web
  35. Шаблон:Cite web
  36. Шаблон:Citation
  37. Шаблон:Cite web
  38. Шаблон:Cite web
  39. Шаблон:Cite web
  40. Шаблон:Cite book