Почему трансформерам нужны позиционные кодировки?

Вопрос или проблема

По крайней мере, в первом слое самовнимания в кодировщике входные данные имеют соответствие с выходными, у меня есть следующие вопросы.

  • Неужели порядок уже неявно захватывается векторами запросов, которые сами по себе являются просто преобразованиями входных данных?
  • Что захватывают синусоидальные позиционные кодировки, чего не делают уже векторы запросов?
  • Может быть, я ошибаюсь, полагая, что трансформеры обрабатывают весь ввод сразу?
  • Как слова вводятся?
  • Если мы передаем целое предложение сразу, не должен ли порядок сохраняться?

source: https://web.eecs.umich.edu/~justincj/slides/eecs498/FA2020/598_FA2020_lecture13.pdf

Рассмотрим входное предложение – “Я хороший”.

В RNN мы передаем предложение в сеть слово за словом. То есть сначала передается слово “Я”, затем слово “хороший” и так далее. Мы вводим предложение слово за словом, чтобы наша сеть полностью поняла предложение.

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

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

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

Это, надеюсь, поможет создать некоторое понимание этого механизма:

Позиционное кодирование добавляет информацию, которую механизм внимания может использовать для обработки токенов на основе их абсолютной и относительной позиции.

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

И поскольку вектор запроса не просто “статический”, а основан на матричном умножении с вектором токена и матрицей запроса, можно создать запрос, который ищет токены, относительные к фиксированному смещению от позиции токена запроса.

Без эмбеддинга токены не будут содержать никакой позиционной информации, поэтому внимание не сможет выбирать токены на основе позиции.

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

Ответ или решение

Почему трансформерам нужны позиционные кодировки?

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

1. Основания для использования позиционных кодировок

Отсутствие внутренней структуры последовательности: В отличие от RNN, которые обрабатывают входные данные поэтапно и могут сохранять информацию о порядке слов в состоянии скрытого слоя, трансформеры обрабатывают все слова одновременно. Без дополнительной информации о позиции слов в предложении, трансформер не сможет понять, как слова располагаются относительно друг друга. Это означает, что информация о последовательности теряется, если не вводится позиционная кодировка.

2. Роль запросов в механизме внимания

Запросы и контексты: Хотя запросы (query vectors), создаваемые на основе входных данных, могут иметь различную структуру, они не учитывают абсолютные или относительные позиции слов в тексте. Позиционные кодировки добавляют важные сведения о положении каждого слова, которые используются в механизме внимания для определения того, как одно слово должно взаимодействовать с другим. Даже если кодировка запроса преобразует входные данные, она не несет информации о порядке слов.

3. Значение синусоидальных позиционных кодировок

Синусоидальные позиционные кодировки обеспечивают множество преимуществ, включая:

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

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

4. Параллельная обработка и порядок слов

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

5. Взаимодействие механизмов внимания и позиционных кодировок

Механизм внимания в трансформерах использует эти позиционные кодировки для:

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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...