Внимание в TensorFlow
При разборе последовательностей модель не всегда может опереться на один фиксированный вектор. Ей нужно выбирать, какие прошлые шаги важнее для текущего ответа. Такой приём называют вниманием: по запросу сравнивают ключи шагов и собирают взвешенную смесь их значений.
Внимание по головам делит расчёт на несколько независимых частей. Каждая часть смотрит на связи в данных под другим углом, а ответы снова складывают в один тензор. Так модель одновременно ловит и близкие, и дальние зависимости.
Сами векторы шагов не запоминают, на каком месте в цепочке они стоят. Позиционные числа - готовый ряд синусов и косинусов по номеру шага - прибавляют к векторам, чтобы сохранить порядок без отдельной рекуррентной ячейки.
Кроме многоголового блока встречаются и другие схемы внимания: прямой расчёт по запросу, ключам и значениям или оценка пары состояний через сложение перед весами. Они решают те же задачи сопоставления, но устроены проще или иначе по форме.
Со всем этим мы и будем разбираться в рамках данного раздела.