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
Таким образом, позиционные эмбеддинги позволяют модели учитывать порядок слов или токенов, что критично для понимания смысла в последовательных данных.