Автор | Рену Ханделвал Компилировать|ВКонтакте Источник | К науке о данных
Что такое нейронный машинный перевод?
Нейронный машинный перевод — это метод перевода с одного языка на другой. Примером является преобразование английского языка в хинди. Давайте представим, что вы находитесь в индийской деревне, где большинство людей не понимают по-английски. Вы намерены легко общаться с жителями деревни. В этом случае можно использовать нейронный машинный перевод.
Задача нейронного машинного перевода состоит в том, чтобы использовать глубокие нейронные сети для преобразования последовательности слов исходного языка (например, английского) в последовательность слов целевого языка (например, испанского).
Каковы характеристики нейронного машинного перевода?
- Возможность сохранять последовательные данные на нескольких временных шагах
NMT использует непрерывные данные, которые необходимо сохранять в течение нескольких временных шагов. Искусственные нейронные сети (ИНС) не сохраняют данные в течение нескольких временных шагов. Рекуррентные нейронные сети (RNN), такие как LSTM (долгосрочная кратковременная память) или GRU (Gated Recurrent Units), способные сохранять данные в течение нескольких временных шагов.
- Возможность обработки входных и выходных векторов переменной длины
ANN и CNN требуют фиксированного входного вектора, к которому применяется функция для получения выходных данных фиксированного размера. NMT переводит один язык на другой с переменной длиной последовательностей слов в исходном и целевом языках.
Как RNN, такие как LSTM или GRU, помогают в последовательной обработке данных?
RNN — это тип нейронной сети с петлями в структуре для хранения информации. Они выполняют одну и ту же задачу для каждого элемента в последовательности, а выходной элемент зависит от предыдущего элемента или состояния. Это именно то, что нам нужно при работе с последовательными данными.
RNN могут иметь один или несколько входов и один или несколько выходов. Это еще одно требование для работы с последовательными данными (т. е. с переменным вводом и переменным выводом).
Почему мы не можем выполнять нейронный машинный перевод с помощью RNN?
В искусственной нейронной сети нам не нужно делить веса между разными слоями сети, следовательно, нам не нужно суммировать градиенты. Общие веса RNN, нам нужно получить градиент W на каждом временном шаге, как показано ниже.
Вычисление градиента h на временном шаге t = 0 включает множество факторов W, потому что нам нужно выполнить обратное распространение через каждую ячейку RNN. Даже если нам не нужна весовая матрица и мы многократно умножаем одно и то же скалярное значение, это будет проблемой, если временные шаги особенно велики, скажем, 100 временных шагов.
Если наибольшее сингулярное значение больше 1, градиент взорвется, известный как взрывной градиент.
Если наибольшее сингулярное значение меньше 1, градиент исчезнет, что называется исчезающим градиентом.
Веса распределяются между всеми слоями, что приводит к взрыву или исчезновению градиентов.
Для проблемы взрывающегося градиента мы можем использовать отсечение градиента, где мы можем предварительно установить пороговое значение и мы можем обрезать значение градиента, если оно больше порогового значения.
Чтобы решить проблему исчезающего градиента, обычно используют долговременную кратковременную память (LSTM) или вентилируемую рекуррентную единицу (GRU).
Что такое LSTM и ГРУ?
LSTM — это долговременная кратковременная память, а GRU — закрытая рекуррентная единица. Они способны быстро изучать долгосрочные зависимости. LSTM могут изучать временные интервалы, охватывающие 1000 шагов. Это достигается с помощью эффективного алгоритма на основе градиента.
LSTM и GRU запоминают информацию в течение длительного периода времени. Они делают это, решая, что помнить, а что забыть.
LSTM использует 4 вентиля, вы можете думать о них так, как будто вам нужно запомнить предыдущее состояние. Состояние ячейки играет ключевую роль в LSTM. LSTM может использовать 4 регулирующих элемента, чтобы решить, добавлять или удалять информацию из состояния ячейки. Эти ворота действуют как краны, определяя, сколько информации должно пройти.
GRU — это простой вариант LSTM для решения проблемы исчезающего градиента.
Он использует два шлюза: шлюз сброса и шлюз обновления, что отличается от трех шагов в LSTM. ГРУ не имеет внутренней памяти
Ворота сброса решают, как объединить новый ввод с памятью из предыдущего временного шага. Ворота обновления определяют, сколько предыдущей памяти следует сохранить.
У GRU меньше параметров, поэтому они более эффективны в вычислительном отношении и требуют меньше данных, чем LSTM.
Как использовать LSTM или GRU для нейронного машинного перевода?
Мы создаем модель Seq2Seq, используя структуру кодировщика-декодера с LSTM или GRU в качестве базовых блоков.
Модели «последовательность к последовательности» (seq2seq) сопоставляют исходные последовательности с целевыми последовательностями. Исходная последовательность — это язык ввода системы машинного перевода, а целевая последовательность — язык вывода.
Кодер: считывает входную последовательность слов из исходного языка и кодирует эту информацию в вектор с действительным знаком, также известный как вектор скрытого состояния или вектор контекста. Этот вектор кодирует «смысл» входной последовательности в один вектор. Выход кодировщика отбрасывается, и в декодер передается только скрытое состояние или внутреннее состояние в качестве начального ввода.
Декодер: принимает вектор контекста от кодировщика в качестве входных данных и преобразует начало токена строки.<start>
В качестве начального ввода для генерации выходной последовательности.
Кодер дословно считывает входную последовательность, и аналогичным образом декодер генерирует дословно выходную последовательность.
Декодер работает по-разному во время обучения и логического вывода, а кодировщик работает одинаково во время обучения и логического вывода.
Фаза обучения декодера
Мы используем форсирование учителей для быстрого и эффективного обучения декодера.
Принуждение учителя похоже на то, как учитель исправляет учеников, пока их обучают новым концепциям. Студенты будут изучать новые концепции быстрее и эффективнее, потому что преподаватели дают студентам правильный вклад в процессе обучения.
Алгоритм форсирования Учителя обучает декодер, предоставляя фактические выходные данные предыдущей метки времени вместо прогнозируемых выходных данных предыдущего времени в качестве входных данных в процессе обучения.
мы добавляем маркер<START>
для обозначения начала целевой последовательности и добавления маркера<END>
как последнее слово целевой последовательности.<END>
Маркер используется позже в фазе вывода в качестве условия остановки, чтобы сигнализировать об окончании выходной последовательности.
Фаза вывода декодера
На этапе вывода или предсказания у нас нет фактических выходных последовательностей или слов. На этапе вывода мы передаем предсказанный результат предыдущего временного шага в качестве входных данных для декодера вместе со скрытым состоянием.
Первый временной шаг этапа предсказания декодера будет иметь данные от кодера и<START>
Заключительное состояние флага в качестве ввода.
Для последующих временных шагов входом в декодер будет скрытое состояние предыдущего декодера и выход предыдущего декодера.
Когда максимальная длина целевой последовательности достигнута или<END>
Когда отмечено, фаза предсказания останавливается.
ПРИМЕЧАНИЕ. Это всего лишь интуитивная интерпретация Seq2Seq. Мы создаем вложения слов для слов входного языка и слов целевого языка. Вложения обеспечивают векторное представление слов и связанных с ними значений.
Как улучшить производительность модели seq2seq?
- Большой набор обучающих данных
- Настройка гиперпараметров
- механизм внимания
Каков механизм внимания?
Кодер передает вектор контекста декодеру. Вектор контекста — это единственный вектор, который суммирует всю входную последовательность.
Основная идея механизма внимания состоит в том, чтобы не пытаться выучить одно векторное представление для каждого предложения. Механизм внимания обращает внимание на определенные входные векторы входной последовательности в соответствии с весами внимания. Это позволяет сети декодера «сосредоточиться» на разных частях выходных данных кодера. Он делает это для каждого временного шага собственного вывода декодера, используя набор весов внимания.
Оригинальная ссылка:к data science.com/intuitive - о...
Добро пожаловать на сайт блога Panchuang AI:panchuang.net/
sklearn машинное обучение китайские официальные документы:sklearn123.com/
Добро пожаловать на станцию сводки ресурсов блога Panchuang:docs.panchuang.net/