Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of... · 5 апр 2022
Языковая модель — это функция или алгоритм для изучения такой функции, которая фиксирует существенные статистические характеристики распределения последовательностей слов в естественном языке, обычно позволяя делать вероятностные прогнозы следующего слова на основании предыдущих.
Языковая модель нейронной сети — это языковая модель, основанная на нейронных сетях, использующая их способность изучать распределенные представления, чтобы уменьшить влияние проклятия размерности.
=======================
В контексте алгоритмов обучения проклятие размерности относится к необходимости огромного количества обучающих примеров при изучении очень сложных функций. Когда количество входных переменных увеличивается, количество необходимых примеров может расти экспоненциально. Проклятие размерности возникает, когда необходимо отличить друг от друга огромное количество различных комбинаций значений входных переменных, а алгоритму обучения требуется хотя бы один пример на соответствующую комбинацию значений. В контексте языковых моделей проблема возникает из-за огромного количества возможных последовательностей слов, например, для последовательности из 10 слов, взятых из словаря в 100 000 слов, имеется 1050 возможных последовательностей…
Распределенное представление символа представляет собой набор (или вектор) признаков, характеризующих значение символа и не исключающих друг друга. Если бы человеку нужно было выбрать характеристики слова, он мог бы выбрать грамматические характеристики, такие как род или множественность, а также семантические характеристики, такие как одушевленный или невидимый. В языковой модели нейронной сети для обнаружения этих функций полагается на алгоритм обучения, а функции имеют непрерывные значения (что значительно упрощает задачу оптимизации, связанную с обучением).
=========================
Основная идея состоит в том, чтобы научиться связывать каждое слово в словаре с непрерывным векторным представлением. Каждое слово соответствует точке в пространстве признаков. Можно представить, что каждому измерению этого пространства соответствует семантическая или грамматическая характеристика слов. Есть надежда, что функционально схожие слова станут ближе друг к другу в этом пространстве, по крайней мере, в некоторых направлениях. Таким образом, последовательность слов может быть преобразована в последовательность этих выученных векторов признаков. Нейронная сеть учится сопоставлять эту последовательность векторов признаков с интересующим предсказанием, таким как распределение вероятностей для следующего слова в последовательности. Что подталкивает выученные слова к соответствию форме семантического и грамматического сходства, так это то, что, когда два слова функционально похожи, они могут быть заменены друг другом в одном и том же контексте, помогая нейронной сети компактно представлять функцию, которая делает хорошие прогнозы. в обучающем наборе набор последовательностей слов, используемых для обучения модели.
========================
Преимущество этого подхода с распределенным представлением состоит в том, что он позволяет модели хорошо обобщаться на последовательности, не входящие в набор обучающих последовательностей слов, но сходные по своим признакам, т. е. их распределенному представлению. Поскольку нейронные сети, как правило, сопоставляют близлежащие входные данные с близлежащими выходными данными, прогнозы, соответствующие последовательностям слов с похожими характеристиками, сопоставляются с аналогичными прогнозами. Поскольку возможно множество различных комбинаций значений признаков, очень большой набор возможных значений может быть представлен компактно, что позволяет модели со сравнительно небольшим количеством параметров соответствовать большому обучающему набору.
RNN идеально подходят для решения задач, где последовательность важнее самих элементов.
RNN — это, по сути, полностью связанная нейронная сеть, которая содержит рефакторинг некоторых своих слоев в цикл. Этот цикл обычно представляет собой итерацию по добавлению или конкатенации двух входных данных, матричного умножения и нелинейной функции.
Среди текстовых обычаев следующие задачи хорошо справляются с RNN:
Маркировка последовательности
Классификация текстов обработки естественного языка (NLP)
Генерация текста обработки естественного языка (NLP)
Другими задачами, которые RNN эффективно решают, являются предсказания временных рядов или другие предсказания последовательностей, которые не основаны на изображениях или таблицах.
В средствах массовой информации было несколько ярких и противоречивых сообщений о достижениях в генерации текста, в частности об алгоритме OpenAI GPT-2. Во многих случаях сгенерированный текст часто неотличим от текста, написанного людьми.
RNN фактически имеют внутреннюю память, которая позволяет предыдущим входным данным влиять на последующие прогнозы. Намного легче предсказать следующее слово в предложении с большей точностью, если вы знаете, какими были предыдущие слова.
Часто с задачами, хорошо подходящими для RNN, последовательность элементов не менее или даже важнее, чем предыдущий элемент в последовательности.
Когда я набираю черновик для этого на своем смартфоне, следующее слово, предложенное клавиатурой моего телефона, будет предсказано RNN. Например, программное обеспечение быстрой клавиатуры использует RNN для предсказания того, что вы печатаете.
=================
Обработка естественного языка
Обработка естественного языка (NLP) — это раздел информатики и искусственного интеллекта, занимающийся обработкой и генерацией данных на естественном языке. Хотя все еще существуют исследования, не связанные с машинным обучением, большая часть НЛП в настоящее время основана на языковых моделях, созданных машинным обучением.
NLP — хороший пример использования RNN, и он используется в статье для объяснения того, как можно построить RNN.
Языковые модели
Цель языковой модели состоит в том, чтобы свести к минимуму степень запутанности модели при просмотре заданной последовательности текста.
Необходимо обучить только одну языковую модель для каждого домена, поскольку кодировщик языковой модели может использоваться для различных целей, таких как генерация текста и несколько различных классификаторов в этом домене.
Поскольку самой продолжительной частью обучения обычно является создание кодировщика языковой модели, повторное использование кодировщика может значительно сэкономить время обучения.
Сравнение RNN с полносвязной нейронной сетью
Если мы возьмем последовательность из трех слов текста и сеть, которая предсказывает четвертое слово.
Сеть имеет три скрытых слоя, каждый из которых представляет собой аффинную функцию (например, умножение матричного скалярного произведения), за которой следует нелинейная функция, затем за последним скрытым слоем следует вывод функции активации последнего слоя.
Входные векторы, представляющие каждое слово в последовательности, представляют собой поисковые запросы в матрице встраивания слов на основе одного горячего закодированного вектора, представляющего слово в словаре. Обратите внимание, что все введенные слова используют одно и то же встраивание слов. В этом контексте слово на самом деле является токеном, который может представлять слово или знак препинания.
На выходе будет один вектор горячего кодирования, представляющий предсказанное четвертое слово в последовательности.
Первый скрытый слой принимает вектор, представляющий первое слово в последовательности, в качестве входных данных, а выходные активации служат одним из входных данных для второго скрытого слоя.
Второй скрытый слой принимает входные данные от активаций первого скрытого слоя, а также ввод второго слова, представленного в виде вектора. Эти два входа могут быть либо добавлены, либо объединены вместе.
Третий скрытый слой следует той же структуре, что и второй скрытый слой, получая активацию от второго скрытого слоя в сочетании с вектором, представляющим третье слово в последовательности. Опять же, эти входные данные добавляются или объединяются вместе.
Выходные данные последнего скрытого слоя проходят через функцию активации, которая создает выходные данные, представляющие слово из словаря в виде одного горячего закодированного вектора.
Этот второй и третий скрытый слой могут использовать одну и ту же матрицу весов, открывая возможность реорганизации этого в цикл, чтобы он стал повторяющимся.
Словарь
Словарь представляет собой вектор чисел, называемых токенами, где каждый токен представляет собой одно из уникальных слов или знаков препинания в нашем корпусе.
Обычно слова, которые не встречаются хотя бы дважды в текстах, составляющих корпус, обычно не включаются, иначе словарный запас был бы слишком большим. Интересно, можно ли это использовать в качестве фактора для обнаружения генерации текста, поиска наличия слов, не распространенных в данном домене.
Встраивание слов
Вложение слов представляет собой матрицу весов со строкой для каждого слова/токена в словаре.
Умножение матричного скалярного произведения на один вектор горячего кодирования выводит строку матрицы, представляющую активации этого слова. По сути, это поиск строки в матрице, и для этого он более эффективен с вычислительной точки зрения, это называется поиском встраивания.
Использование вектора из слова встраивание помогает предотвратить очень разреженные результирующие активации. Как если бы вход был одним горячим закодированным вектором, состоящим из нулей, кроме одного элемента, большинство активаций также были бы нулевыми. Тогда это будет трудно тренировать