Обратное распространение в модели внимания - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь выяснить, как сделать обратное распространение с помощью модели внимания с масштабированным точечным продуктом.Масштабированное производство точек принимает Q (Запросы), K (Ключи), V (Значения) в качестве входных данных и выполняет следующую операцию:

Внимание (Q, K, V) = softmax ((Q.transpose (K)) / √dk) V

Здесь √dk - коэффициент масштабирования и постоянная.

Здесь Q, K и V - тензоры.Сейчас я предполагаю, что Q = K = V.Поэтому я дифференцирую формулу (softmax ((Q.transpose (Q))) Q) относительно Q. Я думаю, что ответ будет:

softmax ((Q.transpose (Q))) + Q.derivativeOfSoftmax ((Q.transpose (Q))). (2 * transpose (Q))

Поскольку я думаю, что производная от Q.transpose (Q) относительно Q равна 2 *Q.transpose (Q).

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

В данной статье можно сослаться на понятие масштабированного точечного продукта: https://arxiv.org/pdf/1706.03762.pdf

1 Ответ

0 голосов
/ 20 апреля 2019

Я не уверен, что тензорное исчисление - правильный термин.

Выберите определенный индекс вашего вектора, скажем, индекс j.Затем дифференцируйте по этой переменной.Сделайте это для индексов 1, 2, 3 и т. Д., И вы увидите шаблон.Позвольте мне привести пример с умножением.Существует два типа умножения с матрицами: умножение матриц и произведение Адамара.Продукт hadamard - это интуитивно понятный метод, при котором вы умножаете две одинаковые размерные матрицы поэлементноАналогичным образом, вы должны дифференцировать свою функцию softmax «поэлементно».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...