Каждый coefficient умножает весь value-вектор
После получения A вычисляем O=AV. Shapes: [n,n]×[n,d_v]=[n,d_v]. Для координатыr выходной строкиi:
Один и тот же coefficient Aᵢⱼ участвует во всех координатах value_j. Это не выбор отдельного максимального элемента каждой координаты.
В default третья строка A имеет вид[a,a,b], где a=1/(2+exp(1/√2)),b=1−2a. Values[1,0],[0,1],[1,1], поэтому output[a+b,a+b]. Каждый вклад можно проверить отдельно: по первой координате a×1+a×0+b×1.
Эксперимент. Выберите query и измените только W_V. Таблица coefficients должна сохраниться, а outputs — измениться. При равных values все их нормированные смеси совпадают независимо от scores.
Граница. До выходной проекции смесь лежит в выпуклой оболочке values при этих неотрицательных нормированных коэффициентах. После W_O и residual это геометрическое ограничение к итоговому hidden state уже напрямую не относится.