предисловие: Сверточная нейронная сеть (Convolutional Neural Network) впервые использовалась в компьютерном зрении, а теперь CNN уже давно используется в различных задачах обработки естественного языка (Natural Language Processing). Эта статья в основном основана на CMU CS 11-747 (Neural Networks for NLP) Содержание главы «Сверточные сети для текста» в курсе объясняется как основная тема. Эта статья в основном включает в себя объяснение следующих частей: первая часть посвящена проблемам, с которыми сталкиваются общеязыковые модели при представлении текста, и важности введения сверточных нейронных сетей, вторая часть — введение модулей сверточной нейронной сети, третья часть в основном представляет некоторые статьи о применении сверточных нейронных сетей в обработке естественного языка, а четвертая часть в основном подводит итоги этого обзора.
автор этой статьи:Бьян Шуцин, аспирант 2017 года, в настоящее время исследующий извлечение информации и глубокое обучение, из Пекинской ключевой лаборатории методов управления и анализа больших данных Китайского университета Жэньминь.
1. Примеры
Давайте сначала рассмотрим такую задачу, предположим, нам нужно провести классификацию предложений по тональности.
Традиционная модель «мешка слов» или непрерывная модель «мешка слов» может классифицировать предложения путем построения полностью связанной нейронной сети, но здесь есть проблема: «не», «ненависть» и другие сильные характерные слова), но поскольку в этой сетевой конструкции игнорируется порядок слов в предложении, возможно, нет и ненависть появляется в тех же двух предложениях, но одно предложение (я не ненавижу этот фильм) выражает эмоцию добра, другое предложение (я ненавижу этот фильм и буду нет выберите его) представляет плохую эмоцию. На самом деле, очень важным моментом является то, что в приведенной выше модели мы не можем уловить значение слов, которые являются ключевыми характеристиками, состоящими из двух следующих друг за другом слов, таких как «ненавидеть».
В языковой модели для решения проблемы можно использовать модель n-грамм. Идея состоит в том, чтобы включить два последовательных слова в модель в целом, что действительно может решить проблему, которую мы только что подняли. грамм может поймаем, например, "не люблю", "не самое лучшее". Но проблема возникает снова.Если мы используем многомерную модель, фактические параметры обучения представляют собой очень большую проблему, потому что, если у вас есть 20 000 слов, вы фактически получите 400 000 000 слов, добавив биграммы, поэтому обучение параметрам, очевидно, является взрывоопасным. . Кроме того, подобные слова не могут иметь общих параметров, таких как веса в такой модели, что приведет к тому, что подобные слова не смогут получить интерактивную информацию.
Во-вторых, понимание структуры сверточной нейронной сети.
Использование сверточных нейронных сетей может фактически решить две вышеупомянутые проблемы. Прежде чем говорить о сверточных нейронных сетях, давайте рассмотрим два простых примера.
Допустим я идентифицирую кота в коробке слева.На самом деле положение кота на картинке не важно.Слева он,справа или внизу.На самом деле для котов его характеристики Неизменно, функции, которые мне нужно изучить в этой части локации, также могут быть использованы в другой части локации, поэтому для всех локаций на этом изображении мы можем использовать одни и те же изученные функции. В примере справа, если предположить, что в предложении речь идет о кошках, будет ли меняться значение слова «кошка» в зависимости от того, находится ли оно в первом предложении или во втором, большая часть ситуации остается неизменной, поэтому мы, когда мы используем текстовой сети сеть может узнать, что такое кошка, и может повторно использовать ее вместо того, чтобы заново изучать ее каждый раз, когда она ее видит.
Далее давайте сначала представим важные ссылки в сверточной нейронной сети.
2.1 Свертка
Итак, здесь мы сначала понимаем операцию свертки в сверточных нейронных сетях. Здесь мы берем изображение в качестве входных данных. Более простой способ понять свертку — представить ее как функцию скользящего окна, действующую на матрицу. Как показано на рисунке ниже.
Скользящие окна также известны как ядра свертки, фильтры или детекторы признаков. На рисунке используется ядро свертки 3x3, а ядро свертки и соответствующая часть матрицы умножаются поэлементно, а затем суммируются. Чтобы узнать об операции свертки, см. пояснение к следующему рисунку.
Без изменения веса ядра свертки операция свертки выполняется для всего изображения, скользящего по горизонтали и вертикали, как кисть, так что на выходе получается выходной слой после операции свертки. Вот анимированная демонстрация операции свертки для углубления понимания (CS231n Convolutional Neural Networks for Visual Recognition)
2.2 Что такое сверточная нейронная сеть
Сверточная нейронная сеть на самом деле представляет собой многоуровневую операцию свертки, а затем преобразует результат свертки каждого слоя с помощью нелинейной функции активации (описанной ниже). В процессе свертки каждая локальная входная область соединяется с нейроном вывода. Применяйте различные ядра свертки к каждому слою. Каждое ядро свертки фактически можно понимать как извлечение функции изображения, а затем суммирование различных функций.В качестве примера возьмите следующее изображение, исходный ввод находится на изображении после первого слоя свертки, выходной слой становится 6@28*28, поэтому ядро свертки здесь фактически использует 6, а 6 ядер свертки представляют шесть различных типов исходного изображения.Извлечение угловых признаков (например, извлечение верхнего левого края изображения , нижний правый край и т. д.). особенность Фактическое значение карты - это канал признаков (или понимаемый как различные признаки изображения), который также можно назвать глубиной выходного слоя, который здесь равен 6, а затем каждая последующая операция свертки должна выполнять все каналы функций на всех каналах функций Операции свертки для извлечения функций более высокого уровня. Здесь также задействован слой пула, который объясняется в следующем подразделе. На этапе обучения сверточная нейронная сеть автоматически изучает веса ядер свертки в зависимости от задачи, которую вы хотите выполнить.
Например, на изображении выше модель CNN первого уровня может научиться обнаруживать некоторые краевые линии исходных пикселей, а затем обнаруживать некоторые простые формы во втором слое (например, горизонтальные линии, изогнутые влево линии, вертикальные линии и т. д.). ), а затем обнаруживать функции более высокого уровня на основе этих форм, например верхнюю половину буквы А и т. д. Последний слой использует эти комбинированные высокоуровневые признаки для классификации.
Фактически отражены сверточные вычисления в сверточных нейронных сетях: позиционная инвариантность и комбинационная. Инвариантность местоположения заключается в том, что сверточное ядро переводится в пределах полной карты, поэтому не важно, что за кошка на картинке. Комбинация означает, что каждая свертка объединяется для формирования более высокого уровня характеристики низкоуровневых признаков небольшой части локальной области. Конечно, эти два момента также были полезны для моделирования предложений, и мы упомянем их в примерах.
2.3 Как свертка применяется к обработке естественного языка
В изображении ядро свертки обычно вычисляется на небольшой области изображения, а в тексте в качестве входных данных используется вектор слова, образованный предложением. Каждая строка представляет вектор слова слова, поэтому при обработке текста ядро свертки обычно покрывает слова в верхней и нижней строках, поэтому ширина ядра свертки совпадает с шириной входных данных. Таким образом, мы можем фиксировать функции между несколькими последовательными словами и можем разделять веса при расчете одного и того же класса функций. Картинка ниже является хорошей иллюстрацией того, что я только что объяснил.
2.4 Слой объединения
Важной концепцией сверточных нейронных сетей является слой пула, который обычно располагается после слоя свертки. Слой пула уменьшает входные данные. Процесс объединения на самом деле заключается в поиске максимального значения для подобласти сверточного слоя или в нахождении максимального значения для каждого сверточного слоя. Например, на рисунке ниже показано максимальное объединение с окном 2x2 (при обработке естественного языка мы обычно объединяем все выходные данные только с одним выходным значением на сверточный слой).
Зачем нам нужен пул?
Во-первых, объединение может выводить матрицу фиксированного размера, что очень сильно влияет на длину входных предложений при обработке естественного языка. Например, если вы используете 200 ядер и используете максимальный пул для каждого вывода, вы получите 200-мерный вывод. Это позволяет вам иметь дело с предложениями разной длины и разного размера сверточных ядер, но всегда получать на выходе одну и ту же размерность для окончательной классификации.
Кроме того, объединяющий слой может сохранять существенные признаки при уменьшении размерности данных. Каждое ядро свертки используется для обнаружения определенной функции. При классификации предложений каждое ядро свертки можно использовать для обнаружения фразы с определенным значением. Если появляется слово такого типа значения, выходное значение ядра свертки будет очень большим. Через процесс объединения эта информация может максимально сохраниться.
Несколько методов объединения для слоя объединения будут объяснены в следующем содержании.
2.5 Функция активации
Много подробностей о функции активации будет упомянуто в финальном резюме.
3. Применение структуры сверточной нейронной сети в обработке естественного языка.
Во-первых, давайте представим первую статью«Обработка естественного языка (почти) с нуля», эта статья в основном нацелена на оригинальные искусственные входные функции и искусственные функции и использует метод нейронной сети для автоматического извлечения более продвинутых функций текстовых предложений для решения различных задач обработки естественного языка.Например, ввод в эта статья представляет собой последовательность предложений, выводом является предсказание части речи каждого слова в предложении. В этой статье предлагаются два метода: один — метод скользящего окна (оконный подход), другой — ввод всего предложения (предложенный подход). подход), два метода соответствуют локальным и глобальным особенностям соответственно. Структура модели показана на следующем рисунке:
Оконный подход состоит в том, чтобы предсказать этикетки для слов на основе словных векторов, соответствующих слову и его близлежащим словам в диапазоне фиксированного длины. Следует отметить, что при обработке слова в начале или в конце предложения его передние и задние окна могут не содержать слова. В это время нам нужна методика наполнения для заполнения передней или обратно с символами, символизирующими начало или конец.
На самом деле оконный метод уже может решать многие распространенные задачи, но если слово очень сильно зависит от контекста слова, а слово в этот момент не находится в окне, то требуется подход предложений. операция, используемая здесь, такая же, как и объем. Операция свертки в нейронной сети продукта в основном такая же. Здесь необходимо выполнить операцию свертки над каждым словом в предложении.Здесь процесс объединения выбирает максимальное объединение.Здесь считается, что большинство слов в предложении не повлияют на значение слова.
Бумага только что фактически выбрала максимальное объединение непосредственно в слое объединения, и следующая статья«Сверточная нейронная сеть для моделирования предложений»Улучшен процесс объединения функций на уровне предложений и предложена динамическая сверточная нейронная сеть DCNN Прежде чем представить эту статью, давайте сначала представим несколько распространенных методов объединения.
Максимальное объединение является наиболее распространенным. Максимальное объединение заключается в том, чтобы взять максимальное значение всей области в качестве признака. Он часто используется в задачах классификации при обработке естественного языка. Есть надежда, что наблюдаемые признаки являются сильными признаками, так что какую категорию можно выделить. Усреднение обычно используется для тематических моделей, часто предложение имеет более одного тега темы.Если используется максимальное объединение, информации слишком мало, поэтому использование усреднения может широко отражать характеристики этой области. Последние два объединения K-max предназначены для выбора k самых больших объектов региона. Динамический пул динамически регулирует количество функций в соответствии со структурой сети. Сочетание последних двух является изюминкой этой статьи.
Изюминкой этой статьи является сначала моделирование семантики предложений.На нижнем уровне, путем объединения информации о соседних словах, она постепенно передается вверх, а верхний слой объединяет новую семантическую информацию, так что более дальние слова в предложении также имеют интерактивное поведение (или какая-то смысловая связь). Интуитивно эта модель может извлекать важную семантическую информацию из предложений посредством комбинации слов, а затем через слой объединения.
Еще одним важным моментом является то, что в процессе объединения модель использует динамическое объединение k-Max, где результат объединения не возвращает максимальное значение, а возвращает k групп максимальных значений, которые являются подпоследовательностью исходных входных данных. Параметр k в пуле может быть динамической функцией, а конкретное значение зависит от входных или других параметров сети. Сетевая структура модели показана на следующем рисунке:
Здесь мы сосредоточимся на объединении k-max и динамическом объединении k-max. Преимущество K-max в том, что он извлекает более одной важной информации в предложении, сохраняя при этом их порядок. В то же время количество k динамически изменяется, и конкретная динамическая функция выглядит следующим образом.
Здесь следует отметить, чтопредставляет длину предложения,представляет общее количество сверточных слоев,Представляет, что в настоящее время он находится в нескольких сверточных слоях, поэтому видно, чтоОн меняется в зависимости от длины предложения и глубины сети.Наше интуитивное чувство также может видеть, что начальный слой предложения извлекает больше функций, а функции, извлеченные позже, будут постепенно уменьшаться.Представляет количество извлечений для самого верхнего сверточного слоя.
Структура сети здесь в основном такая же, как и у обычных слоев сверточной сети, но следует отметить, что естьFoldingслой (слой операции складывания). Здесь рассматривается некоторая связь между двумя соседними строками и складываются векторы слов двух строк.
В этой модели есть много особенностей, которые можно резюмировать следующим образом: во-первых, она сохраняет порядок слов и взаимное расположение слов в предложении, в то же время она учитывает семантическую информацию между более удаленными друг от друга словами в предложении. предложение и лучше сохраняет предложение благодаря динамическому объединению k-max.Количество важной информации в предложении и количество признаков, извлеченных в соответствии с динамическим изменением длины предложения.
Только что опубликованная статья улучшила процесс объединения, а следующие две статьи улучшили сверточный слой. Третья бумага«Нейронный машинный перевод в линейном времени», в статье предлагается расширенная свертка для машинного перевода. Проблема, которую на самом деле решает расширенная свертка, заключается в том, что при объединении слоя объединения теряется много информации (независимо от того, полезна эта информация или нет). Основной вклад расширенной свертки заключается в том, как удалить операцию объединения без уменьшения восприимчивого поля сети. Следующий рисунок легче понять.Шаг входных пикселей свертки составляет 1-2-4-8.Хотя нет слоя объединения, исходная входная информация, покрытая более глубокими слоями, все еще увеличивается. То есть мы обычно сохраняем размер ядра свертки и входную область постоянными, но после удаления слоя объединения по мере увеличения глубины входная область, которую может покрыть ядро свертки, удваивается.
В этой модели вход моделирования предложения начинается на уровне символов предложения, а затем по мере расширения диапазона, охватываемого ядром свертки, происходит непрерывный обмен информацией, и исходная входная информация не теряется.
В предыдущих статьях слой свертки и слой пула были в основном преобразованы из их собственной структуры.В следующей статье в основном рассматривается существующая зависимая информация синтаксического дерева самого предложения и интегрируется в моделирование предложения. бумага«Сверточные нейронные сети на основе зависимостей для встраивания предложений»Эта идея предлагается Идея модели заключается в том, чтобы не только использовать информацию о соседних словах в предложении в качестве информации о признаках, но иТематическое разбирающееся деревоНа самом деле семантическая информационная связь предложения действительно извлекается.Из-за всего процесса свертки связь порядка слов в предложении все равно будет потеряна.Информация о порядке слов родительских и дочерних узловиИнформация о порядке слов BrotherВместе в качестве входных данных характеристики предложений могут быть извлечены более эффективно.
Последней статьей, которую нужно представить, является проблема сопоставления предложений, основной проблемой по-прежнему остается моделирование предложений. Во-первых, в этой статье предлагается сеть моделирования предложений на основе CNN.Функция свертки заключается в извлечении информации о локальной семантической комбинации из предложений, а несколько карт признаков извлекаются под разными углами, то есть для обеспечения извлечения.Разнообразие семантики комбинации. Смоделируйте два предложения отдельно (используя приведенную выше модель предложения), в результате чего будут получены два идентичных вектора фиксированной длины, которые затем используются в качестве входных данных для многослойного персептрона (MLP), и, наконец, вычислите оценку совпадения.
Эта модель относительно проста, но имеет большой недостаток. Два предложения полностью независимы в процессе моделирования, и интерактивное поведение отсутствует. Интерактивное поведение отсутствует до тех пор, пока не будет окончательно сгенерировано абстрактное векторное представление. Это делает предложение в Многие семантические детали теряются в процессе абстрактного моделирования, поэтому вводится вторая структура модели.
Эта структура продвигает взаимодействие между двумя предложениями.В первом слое сначала берется фиксированное окно свертки., затем повторяетсяиВсе объединенные двумерные матрицы свернуты, и каждая двумерная матрица выводит значение для формирования слоя 2, а затем выполняет максимальное объединение 2 × 2. Последующие слои свертки представляют собой традиционные операции двумерной свертки.
4. Резюме/Вопросы и ответы
В этом обзоре конкретно представлена структура сверточных нейронных сетей и сценарии, используемые при обработке естественного языка, и, наконец, делается краткий обзор.
Есть также несколько вопросов и ответов о деталях сверточных нейронных сетей, которыми я хочу поделиться с вами.
1. В чем разница между сверточными слоями и объединяющими слоями?
Во-первых, по структуре видно, что размерность выходного слоя уменьшается, а глубина становится больше после свертки. Однако глубина слоя объединения остается неизменной. В то же время объединение может заменить множество данных максимальным значением или средним значением. Цель состоит в том, чтобы уменьшить количество данных. Уменьшите параметры тренировки. Для входного слоя выходные данные слоя объединения инвариантны, когда пиксели в нем слегка смещены по соседству, что может повысить надежность. Свертка заключается в преобразовании данных в признаки через ядро свертки, что удобно для последующего разделения.
2. Каковы преимущества использования широких сверток?
Вычисление выполняется путем включения значений входных углов в центр скользящего окна, чтобы меньше информации было потеряно.
3. Глубина вывода свертки такая же, как и количество частей?
Глубина вывода (каналов) равна количеству ядер свертки (фильтров).
4. Функция активации обычно ставится после этой операции сверточной нейронной сети?
Обычно размещается после сверточного слоя.
5. Почему функция активации обычно является нелинейной функцией?
Если в сети используется комбинация линейных функций, то линейная комбинация по-прежнему является линейной, тогда использование нескольких линейных комбинаций эквивалентно использованию линейной функции. Поэтому нелинейную функцию можно использовать для аппроксимации любой функции.
6. Каковы недостатки сигмод-функции в нелинейных функциях активации?
Функция sigmod имеет насыщенное состояние, особенно когда значение слишком велико.При входе в насыщенное состояние, когда выполняется расчет градиентного спуска, градиент легко исчезает, и точное значение вывода не может быть гарантировано.
7. Каковы преимущества функций активации ReLU и SoftPlus?
По сравнению с sigmod нет экспоненциального расчета, количество вычислений деривации становится меньше, и в то же время смягчается ситуация переобучения, а часть вывода равна 0, что уменьшает взаимозависимость параметров.
использованная литература:
1,Ежедневная рутина перемещения кирпичей в Xitucheng«Нейронный машинный перевод в линейном времени» заметки для чтения
2,Применение сверточной нейронной сети (CNN) в моделировании предложений
3.Применение сверточных нейронных сетей в обработке естественного языка
Ссылки на соответствующие ссылки:
1. Хорошая анимация операции свертки
http://cs231n.github.io/convolutional-networks/
2. Анимированная демонстрация широкой/узкой свертки
http://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html
3. Курс глубокого обучения Udacity (объяснение содержания больше подходит для входа, с китайскими и английскими субтитрами и бесплатно)
https://cn.udacity.com/course/deep-learning--ud730
4. Учебник/код для начала работы с глубоким обучением на Github.
https://github.com/CreatCodeBuild/TensorFlow-and-DeepLearning-Tutorial