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