Перейти к основному содержимому

Свёрточные сети для последовательностей

Рассмотрим использование свёрток на примере обработки теста. Вначале каждое слово текста кодируется некоторым эмбеддингом, т.е. векторов вещественных чисел фиксированного размера. Пока можно считать, что эмбеддинг для каждого слова генерируется случайно, хотя потом изучим более продвинутые методы их генерации.

Рассмотрим предложение

Основной достопримечательностью города является собор на центральной площади и красивый парк.

Если кодировать каждое слово 4-х мерным эмбеддингом и применять 3 свёртки с размером ядра 3, то получим следующую визуализацию процесса:

Обратим внимание, что символ точки кодируется отдельным эмбеддингом. Это позволяет обрабатывать тексты из нескольких предложений, а модели при этом понимать, когда заканчивается одно предложение и начинается новое. После каждой свёртки действует функция нелинейности.

Чтобы сократить размер промежуточного представления можно применить пулинг, например, с ядром длины 2:

Применяя слои свёрток и пулингов несколько раз, получим окончательное представление предложения:

Проблема окончательного представления заключается в том, что его длина зависит от длины входного текста - чем текст длиннее, тем длиннее будет окончательное представление. А результат нейросеть должна выдать фиксированной размерности. Например, для C-классовой классификации, это вектор из С вероятностей принадлежности текста каждому из классов.

Чтобы отобразить последовательность переменной длины в вектор фиксированной размерности используется глобальный пулинг (global pooling) - агрегация каждого признака по всем элементам входной последовательности. В примере у нас 5 признаков и 4 элемента последовательности. Применяя, например, глобальный максимизирующий пулинг, получим представление всего текста в виде вектора длины 5:

Полученный 5-мерный вектор представляет собой эмбеддинг для всего текста и не зависит от его длины. Для окончательной классификации текста к этому эмбеддингу достаточно применить многослойный перспетрон.

Полученная модель (предобработка свёртками и пулингами+многослойный персептрон) настраивается как целое по обучающей выборке и называется свёрточной нейросетью для текстов. Детальнее об архитектуре можно прочитать на сайте [1].

Обрабатывает не только тексты

Указанная свёрточная нейросеть способна обрабатывать не только тексты, но и любые последовательности дискретных элементов. Например, это может быть последовательность нуклеотидов в цепочках ДНК.

Также архитектура может использоваться для прогноза вектора из временных рядов. Необходимо только использовать только те свертки и пулинги, которые умеют смотреть только назад, но не вперёд.

Глобальный максимизирующий пулинг в подобных сетях часто заменяется на глобальный максимизирующий пулинг, возвращающий не одно максимальное значение, а два или несколько самых больших значений в порядке их следования.

Ограничение свёрточных слоёв

Свёрточные слои, оперируя свёртками и пулингами извлекают лишь локальные признаки из текста, т.е. признаки отдельных фраз из подряд идущих слов ограниченной длины. Глобальный анализ текста выполняется лишь многослоным персептронов, применённым к выходу глобального пулинга.

Литература

  1. lena-voita.github.io/nlp_course/models/convolutional.html