Sobes.tech
Middle+
17

Что такое позиционные эмбеддинги?

Компании, где спрашивали
Сбер лабс

Ответ от нейросети

sobes.tech AI

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

Существует несколько видов позиционных эмбеддингов:

  • Синусоидальные: фиксированные функции синуса и косинуса с разными частотами, которые позволяют модели обобщать на последовательности большей длины.
  • Обучаемые (learnable): параметры, которые обучаются вместе с моделью.

Пример синусоидальных позиционных эмбеддингов из статьи Vaswani et al. (Attention is All You Need):

import numpy as np

def get_positional_encoding(seq_len, d_model):
    pos = np.arange(seq_len)[:, np.newaxis]
    i = np.arange(d_model)[np.newaxis, :]
    angle_rates = 1 / np.power(10000, (2 * (i//2)) / np.float32(d_model))
    angle_rads = pos * angle_rates

    # применяем sin к четным индексам, cos к нечетным
    angle_rads[:, 0::2] = np.sin(angle_rads[:, 0::2])
    angle_rads[:, 1::2] = np.cos(angle_rads[:, 1::2])

    return angle_rads

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