Sobes.tech
Middle — Senior
23

Что такое self-attention?

Companies where asked
SoftInterMob

Answer from AI

sobes.tech AI

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

Принцип работы:

  • Для каждого элемента последовательности вычисляются три вектора: Query (запрос), Key (ключ) и Value (значение).
  • Веса внимания вычисляются как скалярное произведение Query и Key, нормализуются через softmax.
  • Итоговое представление элемента получается как взвешенная сумма Value с этими весами.

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

Пример упрощённого кода на Python (используя numpy):

import numpy as np

def softmax(x):
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum(axis=-1, keepdims=True)

# Пример входных данных: последовательность из 3 элементов, каждый размером 4
X = np.random.rand(3, 4)

# Проекции в Query, Key, Value
W_q = np.random.rand(4, 4)
W_k = np.random.rand(4, 4)
W_v = np.random.rand(4, 4)

Q = X.dot(W_q)
K = X.dot(W_k)
V = X.dot(W_v)

# Вычисление матрицы внимания
scores = Q.dot(K.T) / np.sqrt(K.shape[1])
weights = softmax(scores)

# Итоговое представление
output = weights.dot(V)
print(output)