Модель seq2seq в машинном обучении

Опубликовано: 25 Июля, 2021

Seq2seq был впервые представлен Google для машинного перевода. До этого перевод работал очень наивно. Каждое слово, которое вы использовали для ввода, было преобразовано на целевой язык без учета его грамматики и структуры предложения. Seq2seq произвел революцию в процессе перевода, используя глубокое обучение. При переводе учитывается не только текущее слово / ввод, но и его окрестности.

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

Seq2seq Работает:
Как следует из названия, seq2seq принимает в качестве входных данных последовательность слов (предложение или предложения) и генерирует выходную последовательность слов. Это достигается за счет использования рекуррентной нейронной сети (RNN). Хотя обычная версия RNN используется редко, используются ее более продвинутые версии, то есть LSTM или GRU. Это потому, что RNN страдает от проблемы исчезающего градиента. LSTM используется в версии, предложенной Google. Он развивает контекст слова, принимая 2 входа в каждый момент времени. Один от пользователя, а другой от его предыдущего вывода, отсюда и название повторяющееся (вывод идет как ввод).

В основном он состоит из двух компонентов, то есть кодировщика и декодера , и поэтому иногда его называют сетью кодировщика-декодера .

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

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

Помимо этих двух, многие оптимизации привели к другим компонентам seq2seq:

  • Внимание: вход в декодер - это единственный вектор, который должен хранить всю информацию о контексте. Это становится проблемой для больших последовательностей. Следовательно, применяется механизм внимания, который позволяет декодеру выборочно просматривать входную последовательность.
  • Поиск луча: слово с наивысшей вероятностью выбирается на выходе декодером. Но это не всегда дает наилучшие результаты из-за основной проблемы жадных алгоритмов. Следовательно, применяется поиск луча, который предлагает возможные переводы на каждом этапе. Это сделано для построения дерева лучших k-результатов.
  • Группирование: последовательности переменной длины возможны в модели seq2seq из-за заполнения нулями, которое выполняется как для ввода, так и для вывода. Однако, если максимальная длина, установленная нами, равна 100, а предложение состоит всего из 3 слов, это приводит к огромной потере места. Итак, мы используем концепцию сегментирования. Мы делаем ведра разных размеров, например (4, 8) (8, 15) и т. Д., Где 4 - максимальная длина ввода, определенная нами, а 8 - максимальная определенная длина вывода.