Многоголовое внимание
В предыдущем разделе мы познакомились с механизмом Self-Attention, который был представлен в июне 2017 года в статье Attention Is All You Need. Особенностью данного механизма является способность выявлять зависимости между отдельными элементами последовательности. Мы даже реализовали его и успели протестировать на реальных данных. Модель показала свою работоспособность.
Напомню, что в алгоритме Self-Attention используется три обучаемых матрицы весовых коэффициентов (WQ, WK и WV). Данные матрицы используются для получения 3трех сущностей: Query (Запрос), Key (Ключ) и Value (Значение). Первые две определяют попарную взаимосвязь между элементами последовательности, а последняя — контекст анализируемого элемента.
Не секрет, что далеко не всегда ситуации бывают однозначны. Наверное, даже чаще одну и ту же ситуацию можно трактовать с различных точек зрения. При разных точках зрения выводы могут быть абсолютно противоположными. В таких ситуациях важно рассмотреть все возможные варианты, и только после тщательного анализа сделать вывод. Поэтому в той же статье авторы метода для решения таких задач предложили использовать многоголовое внимание Multi-Head Attention. Это запуск нескольких параллельных потоков Self-Attention с различными весовыми коэффициентами. Здесь каждая «голова» имеет свое мнение, а решение принимается взвешенным голосованием. Подобное решение должно лучше выявлять связи между различными элементами последовательности.
Схема архитектуры многоголового внимания
В архитектуре Multi-Head Attention параллельно используется несколько потоков Self-Attention с различными весовыми коэффициентами, что имитирует разносторонний разбор ситуации. Результаты работы потоков конкатенируются в единый тензор. Итоговый результат алгоритма определяется умножением тензора на матрицу W0, параметры которой подбираются в процессе обучения нейронной сети. Вся эта архитектура подменяет блок Self-Attention в энкодере и декодере архитектуры «Трансформер».
Именно архитектура Multi-Head Attention наиболее часто используется для решения практических задач.