Как моделировать задачи обучения последовательности?

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

Давайте рассмотрим задачу прогнозирования символов (в которой вывод прогнозируется на каждом временном шаге).

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

Назовем «выход на шаге 1» как «y₁», «вывод на шаге 2» как «y₂» и т. д. Как правило, «выход на t-м временном шаге» представляется как «yₜ»

Истинное отношение имеет такую ​​форму, что «yₜ зависит от всех предыдущих входных данных».

Он может не зависеть от всех предыдущих входных данных (или сильно зависеть от всех предыдущих входных данных), но, по крайней мере, он зависит от некоторых из предыдущих входных данных в дополнение к текущему входному шагу времени.

Функция/модель должна аппроксимировать соотношение между входными и выходными данными (y_hat) и гарантировать, что функция каким-то образом также зависит от предыдущих входных данных.

На каждом временном шаге «функция должна выполнять одну и ту же обработку»:

  • Возьмите текущий вход и историю входов, а затем предскажите результат
  • Вывод также из того же набора (в данном случае из 26 алфавитов) )

Итак, «задача не меняется от одного временного шага к другому (должна выполняться одна и та же функция)», « меняется только ввод в функцию».

«Функция должна уметь работать с переменным количеством входных данных»: допустим, для этого слова 4 символа, для какого-то другого слова может быть 10 символов, поэтому одна и та же функция должна иметь возможность принимать переменное количество входных данных

В целом, нужна «функция», которая может действовать как «хорошее приближение отношения между входом и выходом», обслуживая эти 3 вещи:

Для случаев, когда идея состоит в том, чтобы предсказать только один выход (метку видео) с учетом всех входных данных, должны выполняться одни и те же условия, т.е.

  • функция должна иметь возможность обрабатывать переменное количество входных данных
  • вывод должен зависеть от всех предыдущих входов

В этом случае другая точка (одна и та же функция, выполняемая на каждом временном шаге, не выполняется), потому что мы не делаем прогноз на каждом временном шаге.

Начнем со свойства «функция, выполняемая на каждом временном шаге, одна и та же». Обоснование этого в том, что на каждом временном шаге функция выполняет одну и ту же работу, он принимает ввод (и историю вводов) и предсказывает вывод (скажем, часть речевого тега)

Пусть ввод на i-м временном шаге: «xᵢ»

«входные данные умножаются на матрицу весов» и «к ним добавляется член смещения», а затем «нелинейность применяется поверх матричное пост-суммирование», которое дает hᵢ для «i-го ввода»

Затем повторяется «тот же набор арифметических операций», то есть «hᵢ умножается на весовую матрицу» и «смещение к нему добавляется член», за которым следует «нелинейное преобразование поверх матрицы после этого суммирования», чтобы получить результат (размеры берутся таким образом, что вывод имеет распределение вероятностей по всем возможным классам согласно постановке задачи)

Параметры сети, то есть W₁, W₂, b₁, b₂, остаются неизменными (на каждом временном шаге), и, следовательно, выполняемая функция также остается неизменной. Это достигается с помощью концепции «совместного использования параметров» (одинаковые параметры на всех временных шагах).

В рекуррентной нейронной сети (RNN) номенклатура немного отличается от полносвязной нейронной сети (FCNN).

  • W₁, W₂ представлены U, V
  • b₁, b₂ представлены b, c
  • hᵢ представлен sᵢ
  • s называется состоянием

Теперь «это представление функции/сети по своей сути» также заботится о другом свойстве, т. е. определенная выше «функция может обрабатывать переменное количество входных данных».

Чтобы вычислить, скажем, y₉₉, уравнение будет выглядеть так:

«определенная функция такова, что она не зависит от временного шага». «недостаток» в том, что первое наиболее «свойство не гарантировано»: «yₜ также зависит от предыдущих входных данных”:

В текущем представлении выход на любом временном шаге зависит от входных данных для этого временного шага в дополнение к весам/параметрам и предвзятые термины

Чтобы удовлетворить первому свойству, «функция должна быть чем-то вроде»:

На первом временном шаге выход зависит только от первого входа:

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

Здесь x₁, x₂ объединяются, чтобы сформировать «x», который, в свою очередь, умножается на матрицу весов/параметров U >для вычисления«sᵢ», которая, в свою очередь, передается через нелинейную функцию, которая дает значение «yᵢ

Сейчас ситуация такая:

  • y₁ является функцией x₁
  • y₂ является функцией x₁и x₂

Для y₃, x₁, x₂ и x₃ объединяются для формирования x, которые, в свою очередь, передаются по сети для вычисления sᵢ, а с помощью sᵢ может быть вычислено значение yᵢ (путем пропустив его через нелинейную функцию)

Так вот:

  • y₃ будет функцией x₁, x₂, x₃

Если будет выбран этот подход, то функция, выполняемая на каждом временном шаге, не будет одинаковой (размер матрицы весов будет продолжать изменяться с другим набором объединенных входных данных) и в результате этого совместного использования параметров не будет:

На первом временном шаге входными данными являются x₁, которые будут вектором размерности (nX1), скрытое представление (скажем, размерность d) должно быть вычислено с использованием x₁, и ожидание будет матрица весов «U» может преобразовывать размерные входные данные «n» в размерные выходные данные «d» и т.д. размер «U» будет (d X n)

Теперь на втором временном шаге x₁ и x₂ объединяются, чтобы сформировать x размер x здесь будет (2n X 1), а ожидаемый размер «U» будет (d X 2n) для преобразования « Размерный вход 2n” в размерный выход “d

Матрица весов «U на втором временном шаге» будет «отличаться», чем «U используется на первом временном шаге», и это «индикатор», что «параметры не используются совместно», что, в свою очередь, « подразумевает», что «функция, выполняемая на каждом шаге, будет отличаться»

Если «выполняется добавление входных данных вместо конкатенации», в этом случае размерность останется прежней, но здесь есть одна загвоздка, заключающаяся в том, что на каждом временном шаге «семантика входных данных меняется”:

На первом временном шаге вводится просто «x₁»; на втором временном шаге это «x₁ + x₂», поэтому семантика меняется; затем на следующем временном шаге это «x₁ + x₂ + x₃», так что снова значение ввода фактически меняется, это не то же самое, что просто передать 1 слово, это больше этого искусственного добавления, что не правильно делать. Если мы напишем это как функцию, она по-прежнему будет функцией всех входных данных, но это опять же не будет служить полной цели:

  • На каждом временном шаге количество параметров будет увеличиваться
  • Функция, выполняемая на каждом временном шаге в сама отличается
  • И это функциональное представление не может иметь дело с произвольным размером входных данных, потому что, скажем, во время обучения все наши данные имели длину только до 20, но во время тестирования, если модель получает предложение длиной 21, теперь это требуется новый параметр размера «U» («d X 21n»), и этот параметр не учитывался при обучении, поэтому потом приведут к не очень хорошему результату

На данный момент были обсуждены два представления, но ни одно из них не удовлетворяет 3 требованиям модели/сети, которые необходимы для решения проблемы, основанной на последовательности, это устанавливает контекст для рекуррентной нейронной сети, которая по своей сути удовлетворяет всем требуемым свойствам. решать проблемы, основанные на последовательности

Рекуррентная нейронная сеть (RNN)

В функциональном представлении (ях), обсуждаемом выше, каждый временной шаг более или менее действовал как независимая единица, и одна и та же функция выполнялась на каждом временном шаге, теперь, чтобы убедиться, что все идеальные свойства удовлетворены, уравнение модели переопределено, как показано ниже:

Существуют повторяющиеся связи между промежуточными выходными/скрытыми состояниями (связанные с параметром «W»)

Теперь «s₂»(промежуточный результат во времяшага 2) будет зависетьот «x₂ и “s₁(промежуточный вывод на временном шаге 1),иs₁», в свою очередь, зависит от «x₁», так что в конечном итоге результат на втором временном шаге по своей сути зависит от ввод для первого временного шага:

Давайте обсудим размерности различных параметров, используемых в этом уравнении:

  • Вход «xi» считается n-мерным вектором («nX1»).
  • Весовая матрица «U» будет иметь размерность «d X n» для преобразования входных данных «n» в размерные выходные данные «d» (промежуточные выходные данные).
  • «si», «s(i-1)» будет размерным вектором «d» в соответствии с планом задачи (промежуточный результат предполагается « d" размерный вектор) ("dX1")
  • А поскольку «s(i-1)» — это размерный вектор «d», «W» должна быть матрицей «d X d», чтобы результаты это умножение снова представляет собой размерный вектор «d» («dX1»)
  • И термин смещения «b» также должен быть вектором измерения «d».

  • Затем весовая матрица на втором шаге «V» должна иметь размерность «k X d» (при условии наличия «k» выходных классов), чтобы умножение «V» и «si» дает размерный вектор «k»

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

Второе свойство, т. е. текущий выход, должен зависеть от текущего входа, а также от предыдущих входов:

Выход на временном шаге 2 зависит от промежуточного выхода на временном шаге 2, который, в свою очередь, зависит от двух входов:

  • ввод на временном шаге 2 и промежуточный вывод на шаге 1
  • Теперь промежуточный вывод на шаге 1, в свою очередь, зависит от ввода на шаге 1 по времени.
  • Таким образом, вывод на любом временном шаге будет зависеть от всех предыдущих входных данных, как показано на рисунке ниже:

И эта функция также может работать с переменным количеством входных данных.

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

Референции: ПадхАй