Свёрточные сети для последовательностей
Рассмотрим использование свёрток на примере обработки текста как последовательности слов. Вначале каждое слово текста кодируется некоторым эмбеддингом, т.е. вектором вещественных чисел фиксированного размера.
Эмбеддинги слов можно настраивать вместе с остальными весами сети либо обучать на отдельной задаче, в качестве которой обычно выступает языковое моделирование.
Рассмотрим предложение
Основной достопримечательностью города является собор на центральной площади и красивый парк.
Если кодировать каждое слово четырёхмерным эмбеддингом и применять три свёртки с размером ядра 3, то получим следующую визуализацию процесса:
Обратим внимание, что символ точки кодируется отдельным эмбеддингом. Это позволяет обрабатывать тексты из нескольких предложений, а модели при этом понимать, когда заканчивается одно предложение и начинается новое. После каждой свёртки, как обычно, действует функция нелинейности.
Чтобы сократить размер промежуточного представления, можно применить пулинг, например, с ядром длины 2:
Применяя слои свёрток и пулингов несколько раз, получим окончательные эмбеддинги различных фрагментов предложения. Например, они могут быть 5-мерными:
Длина такого представления текста будет пропорциональна длине текста - чем он длиннее, тем длиннее будет представление. Но пусть нам нужно решить задачу -классовой классификации, то есть выдать вероятностей принадлежности текста каждому из классов.
Чтобы отобразить последовательность переменной длины в вектор фиксированной размерности воспользуемся глобальным пулингом - агрегацией каждого признака по всем элементам входной последовательности. В примере у нас 5 признаков и 4 элемента последовательности. Применяя глобальный максимизирующий пулинг, получим представление всего текста в виде вектора длины 5:
Полученный пятимерный вектор представляет собой окончательный эмбеддинг для всего текста и не зависит от его длины. Для окончательной классификации текста к этому эмбеддингу достаточно применить SoftMax-преобразование (использовавшееся в многоклассовой логистической регрессии) или многослойный персептрон с соответствующими выходами.
Вместо глобального пулинга можно использовать пирамидальный, если важно частично сохранить информацию о расположении определённых признаков в тексте.
Полученная модель (предобработка свёртками и пулингами+SoftMax/многослойный персептрон) настраивается как целое по обучающей выборке и называется свёрточной нейросетью для текстов. Детальнее об архитектуре можно прочитать на сайте [1].
Указанная свёрточная нейросеть способна обрабатывать не только тексты, но и любые последовательности дискретных элементов. Например, это может быть последовательность нуклеотидов в цепочках ДНК.
Также архитектура может использоваться для прогноза вектора из временных рядов. Но необходимо использовать свертки и пулинги, которые обрабатывают только прошлую, но не будущую информацию, которую мы ещё не знаем.
Глобальный максимизирующий пулинг в подобных сетях можно настроить возвращать не одно максимальное значение, а два или несколько самых больших значений в порядке их следования.
Свёрточные слои, оперируя свёртками и пулингами, извлекают лишь локальные признаки из текста, т.е. признаки отдельных фраз из подряд идущих слов ограниченной длины. Глобальный анализ текста выполняется лишь при применении глобального пулинга и многослойного персептрона к его результату.
Более эффективная обработка текстов реализуется моделью трансформера, который ещё на этапе построения промежуточных представлений анализирует весь текст, используя механизм внимания.