CNN — это сверточная нейронная сеть, которая обычно используется в области изображений и достигла очень хороших результатов в классификации изображений. В 2014 году Юн Ким применил идею CNN к обработке текста в статье «Сверточные нейронные сети для классификации предложений», и многие последующие работы с использованием ConvNet в задачах НЛП основаны на этой статье.
1. Модель классификации текста CNN
Эта статья предназначена в основном для организации содержания оригинальной статьи "Сверточные нейронные сети для классификации предложений". Во-первых, понять общую структуру модели классификации текста CNN. На следующем рисунке представлена схема модели в статье.
Видно, что модель относительно проста и в основном делится на четыре части: входной слой, слой свертки, слой максимального объединения и полностью связанный слой.
1.1 Входной слой
Для данного предложения вход, полученный входным слоем, представляет собой векторную матрицу слов предложения.X,X— матрица (n×k), где n — количество слов в предложении, а k — размерность вектора слова. можно увидетьXКаждая строка соответствует словесному вектору слова, а словесные векторы слов располагаются в соответствии с их порядком в предложении.
1.2 Сверточный слой
После получения векторной матрицы входного словаXПосле этого необходимоXВыполните операцию свертки. Ядро свертки представляет собой матрицу (h × k).Обратите внимание, что количество столбцов ядра свертки фиксировано (k), что совпадает с размерностью вектора слова. Ядро свертки продолжает двигаться вниз, чтобы получить значение свертки.
Поскольку количество столбцов ядра свертки и матрицы векторов словXто же самое, поэтому карта объектов после свертки имеет только один столбец. Несколько ядер свертки будут генерировать векторы с несколькими столбцами, как показано на следующем рисунке, который является результатом свертки 4 ядер свертки.
1.3 Максимальный уровень объединения
В сверточном слое несколько различных ядер свертки будут генерировать многостолбцовый вектор (карту признаков), а максимальное объединение будет принимать максимальное значение в каждом столбце и, наконец, формировать одномерный вектор.
1.4 Полностью подключенный слой
Последний слой — это полносвязный слой, который использует Dropout для предотвращения переобучения, а затем использует Softmax для классификации.
2. Другие детали модели
2.1 Использование нескольких ядер свертки разного размера
Мы только что узнали, что количество столбцов ядра свертки этой модели должно быть k, но его высота (количество строк) может быть изменена.В процессе использования ядра свертки разной высоты могут использоваться для операций свертки, как показано на следующий рисунок.
2.2 Варианты модели
В работе авторы также предлагают 4 варианта модели.
- В CNN-rand векторы слов случайным образом инициализируются и постоянно обновляются в процессе обучения.
- CNN-статический, использующий уже обученные векторы слов, такие как Word2Vec, и сохраняющий векторы слов неизменными при последующем обучении.
- CNN-non-static, как и CNN-static, использует уже обученные векторы слов, но продолжит точную настройку векторов слов при последующем обучении.
- Многоканальный CNN использует два набора векторов слов, оба инициализированы с помощью Word2Vec, один набор векторов слов остается неизменным во время обучения, а другой набор настраивается во время обучения. Входное предложение может получить два разных вектора слов. Его можно понимать как канал RGB в аналогичном изображении, где два канала представляют два вектора слов соответственно.
На рисунке ниже показаны результаты моделей 4. Видно, что CNN-статический лучше, чем CNN-ранд, что указывает на то, что использование предварительно обученных векторов слов более эффективно; кроме того, CNN-нестатический лучше чем CNN-static, что указывает на то, что точная настройка сделает векторы Word более подходящими для текущей задачи. В экспериментах многоканальность CNN обычно лучше работает на небольших наборах данных.
3. Сводная классификация текстов CNN
CNN похож на N-Gram в задачах NLP.Мы определяем высоту ядра свертки как 3, что эквивалентно использованию ядра свертки для выполнения операции 3-Gram в предложении, и CNN имеет высокую эффективность., намного быстрее чем традиционный N-грамм.
Ширина ядра свертки в CNN должна быть равна размерности вектора слов, и ядро свертки перемещается в направлении слов в предложении.