author:yudake
1/17/2018 3:23:04 PM
Английский оригинал:Understanding Convolutional Neural Networks for NLP(с удалениями)
Я применил модель в статье к проекту обнаружения порнографических статей и добился точности более 98%.
гитхаб:Обнаружение порно статей
Как применять CNN в НЛП
В отличие от CV, входными данными в НЛП являются не пиксели изображения, а предложения или документы, представленные матрицами. Каждая строка матрицы соответствует токену, обычно слову или символу.
也就是说,每一行都是代表一个单词的行向量。
Этот векторвложение слов(низкоразмерное матричное представление), напримерword2vecилиGloVe. или вы можете использоватьгорячий векторУкажите слова в словаре.
Например, предложение с 10 словами, мы представляем каждое слово как 100-мерный вектор, и у нас есть матрица 10 * 100 в качестве входных данных. Это наша «картинка».
В области CV фильтры используются для пролистывания частей изображения (пикселей, обычно 3*3), но в НЛП мы используем фильтры для пролистывания целых строк матрицы и нескольких строк. То есть признаки, извлеченные фильтром, являются признаками нескольких слов. Следовательно, ширина нашего фильтра равна ширине матрицы. Высота фильтра, или размер области, представляет собой диапазон, обычно 2-5 слов.
Подводя итог, CNN для НЛП может выглядеть следующим образом:
Рисунок 1: Здесь представлены три типа фильтров: 2, 3 и 4. Каждая модель имеет два фильтра. Карта признаков создается после каждой свертки фильтра. Затем выполните максимальное объединение на каждой карте объектов, а затем объедините объединенные объекты каждой карты объектов, чтобы сгенерировать вектор-столбец 6 * 1. Наконец, вектор признаков отправляется на слой softmax, где предполагается, что выходные данные имеют два возможных состояния. Источник: Чжан Ю. и Уоллес Б. (2015 г.) Анализ чувствительности (и практическое руководство) сверточных нейронных сетей для классификации предложений.
В CV инвариантность положения и локальный синтез легко понять для изображений, но не для НЛП. Нам важно, где слово появляется в предложении. В изображении соседние пиксели могут быть семантически связаны, но это не всегда так для слов. В некоторых языках некоторые фразы могут быть разделены другими словами. И состав не очевиден. Очевидно, что есть способ объединения слов, скажем, прилагательные изменяют существительные, но то, как работает это высокоуровневое представление, не так очевидно, как CV.
Принимая во внимание вышеизложенное, CNN не подходит для задач НЛП. RNN более интуитивны, они читаются слева направо, точно так же, как люди обрабатывают язык.
К счастью, некоторые модели CNN полезны. Оказывается, CNN, примененные к задачам НЛП, работают достаточно хорошо. простоBag of Words(Мешок слов) — это очевидное упрощение, которое является неточным, но уже много лет является стандартным методом с хорошими результатами.
Одним из основных преимуществ CNN является их скорость. Свертка CNN может работать на графическом процессоре. даже сN-gramsНапротив, CNN также эффективен в представлении слов. При большом словарном запасе вычисление более 3-х граммов занимает очень много времени, и даже Google не рекомендует больше 5-ти граммов. Сверточные ядра могут автоматически обучаться хорошим представлениям, не требуя всего словаря. Вполне возможно установить размер фильтра более 5.
第一层的filter功能非常类似(但不限于)n-gram,但是以更简洁的方式表示
Гиперпараметры CNN
Широкая и узкая свертка
窄卷积不使用零填充(如下左图)
宽卷积指的是在卷积时,使用零填充(如下右图)
Рисунок 2: Узкие и широкие извилины. Размер фильтра = 5, размер ввода = 7.
Среди них узкая свертка дает (7-5)+1=3 выхода. Широкая свертка дает (7+2*4-5)+1=11 выходов.
n_out = (n_in+2*n_padding-n_filter)+1
размер шага
Шаг определяет количество движений фильтра за шаг. Все вышеперечисленные шаги 1. Размер шага для одномерного ввода обычно равен 1 или 2.
объединяющий слой
Обычно слой пула используется для подвыборки входных данных. Обычно используется максимальный пул. Ниже показано максимальное объединение с окном 2*2 (в НЛП обычно объединяются все выходные данные фильтра, и каждый фильтр выдает только одно число).
Рисунок 4: Объединение в CNN
Почему бассейн?
-
Может предоставить матрицу фиксированного размера вывода
- То есть, независимо от размера фильтра или размера ввода, вы можете получить вывод фиксированного размера. Для классификации всегда можно получить входные данные одинакового размера.
-
Получите самую важную информацию
- Каждый фильтр эквивалентен обнаружению определенной функции. Если эта функция обнаружена, она будет выводить относительно большое значение, а если она не обнаружена, она выдаст относительно небольшое значение. Информация о том, имеет ли это предложение эту функцию, может быть получена путем выполнения максимального объединения. Но информация о местонахождении теряется.
ряд
При распознавании изображений есть три канала RGB. В НЛП могут быть разныевложения слов, например word2vec или GloVe. Или одно и то же предложение выражено на разных языках.
Применение CNN в НЛП
Наиболее подходящим приложением для CNN являются задачи классификации. Например, анализ настроений, обнаружение спама или классификация тем. Операции свертки и слияния теряют информацию о локальном порядке слов, поэтому такие вещи, как тегирование PoS или извлечение сущностей, плохо подходят для CNN.
[1] проверили архитектуру CNN, используя в основном наборы данных анализа настроений и классификации тем. Эта архитектура CNN обеспечивает очень хорошую производительность набора данных, и есть некоторыеультрасовременный.
输 入 层 :由word2vec词嵌入拼接组成的句子
隐 藏 层 :带有多个filter的卷积层
Max\_pool:一个池化层
输 出 层 :送入softmax分类器
В этой статье также используются два канала, которые являются статическими.вложение слови динамичныйвложение словПроведите эксперимент, в котором один канал настраивается во время обучения, а другой нет. Ссылка [2] предлагает аналогичную, но более сложную архитектуру. [6] добавил дополнительный уровень для выполнения «семантической кластеризации».
Рисунок 5: Модель CNN в НЛП
[4] обучает векторы с нуля, не требует предварительно обученных векторов слов, таких как word2vec или GloVe, но напрямую применяет свертки к горячим векторам. Авторы также предлагают компактную модель, подобную мешку работ, для входных данных, сокращая количество параметров, которые должна изучить нейронная сеть. [5] добавлено дополнительное неконтролируемое «встраивание областей», изученное CNN для предсказания контекста текстовых областей. Эта модель хорошо работает с длинными текстами (такими как обзоры фильмов), но ее эффективность с короткими текстами (такими как твиты) неясна.
预先训练的词嵌入,对于短文本效果更好。
Создание структуры CNN требует выбора множества гиперпараметров. К ним относятся:
- Входное представление (word2vec, GloVe, one-hot)
- Количество и тип фильтров
- Стратегии объединения (максимальное объединение, среднее объединение)
- Функция активации (ReLU, tanh)
[7] оценили влияние различных гиперпараметров на архитектуру CNN. оказаться:
- Максимальный пул всегда лучше, чем средний пул
- Идеальный размер фильтра важен, но зависит от задачи
- В задачах НЛП эффект регуляризации не очевиден.
Длина данных, используемых в приведенных выше выводах, невелика, поэтому, если длина данных сильно различается, это может быть неприменимо.
Не все статьи посвящены обучению или изучению последствий внедрения обучения. Большинство сред CNN включают встраивание слов или предложений (низкоразмерные представления) как часть процесса обучения. [13] предложили структуру CNN для прогнозирования хэштегов постов в Facebook при создании осмысленных вложений слов и предложений. Это обученное встраивание затем успешно используется для других задач — рекомендации интересующих документов.
Уровень персонажа CNN
Все модели до сих пор основаны на словах. Однако есть также некоторые исследования, в которых CNN применяется к персонажам. [14] изучали вложения символов для маркировки частей речи с помощью CNN вместе с предварительно обученными вложениями слов. [15-16] попытались позволить CNN учиться непосредственно на символах без предварительно обученных вложений. Авторы использовали 9-слойную сеть, которая использовалась для анализа настроений и анализа текста. Результаты показывают, что он очень хорошо работает с большими наборами данных и плохо работает с небольшими наборами данных.
Reference
- [1] Ким Ю. (2014).Сверточные нейронные сети для классификации предложений.Труды конференции 2014 г. по эмпирическим методам обработки естественного языка (EMNLP 2014), 1746–1751.
- [2] Kalchbrenner, N., Grefenstette, E., & Blunsom, P. (2014) Сверточная нейронная сеть для моделирования предложений, Acl, 655–665.
- [3] Сантос, К. Н. Дос, и Гатти, М. (2014).Глубокие сверточные нейронные сети для анализа тональности коротких текстов.В COLING-2014 (стр. 69–78).
- [4] Johnson, R., & Zhang, T. (2015). Effective Use of Word Order for Text Categorization with Convolutional Neural Networks. To Appear: NAACL-2015, (2011).
- [5] Johnson, R., & Zhang, T. (2015). Semi-supervised Convolutional Neural Networks for Text Categorization via Region Embedding.
- [6] Ван, П., Сюй, Дж., Сюй, Б., Лю, К., Чжан, Х., Ван, Ф., и Хао, Х. (2015) Семантическая кластеризация и сверточная нейронная сеть для краткости Категоризация текста, Proceedings ACL 2015, 352–357.
- [7] Чжан Ю. и Уоллес Б. (2015 г.) Анализ чувствительности (и практическое руководство) сверточных нейронных сетей для классификации предложений.
- [8] Нгуен, Т. Х., и Гришман, Р. (2015) Извлечение отношений: перспектива сверточных нейронных сетей, Семинар по векторному моделированию для НЛП, 39–48.
- [9] Сунь Ю., Лин Л., Тан Д., Ян Н., Цзи З. и Ван Х. (2015 г.) Моделирование упоминания, контекста и объекта с помощью нейронных сетей для устранения неоднозначности объекта, (Иджай), 1333–1339 гг.
- [10] Цзэн Д., Лю К., Лай С., Чжоу Г. и Чжао Дж. (2014) Классификация отношений с помощью сверточной глубокой нейронной сети, Колинг, (2011), 2335–2344.
- [11] Gao, J., Pantel, P., Gamon, M., He, X., & Deng, L. (2014). Modeling Interestingness with Deep Neural Networks.
- [12] Шен Ю., Хе Х., Гао Дж., Дэн Л. и Менил Г. (2014) Латентная семантическая модель со структурой свертки для поиска информации, Материалы 23-й сессии ACM. Международная конференция по управлению информацией и знаниями — CIKM '14, 101–110.
- [13] Уэстон, Дж., и Адамс, К. (2014) # TAG S PACE: семантические вложения из хэштегов, 1822–1827.
- [14] Сантос, К., и Задрозны, Б. (2014).Обучение представлений на уровне символов для маркировки частей речи.Продолжения 31-й Международной конференции по машинному обучению, ICML-14 (2011), 1818–1826. .
- [15] Чжан X., Чжао Дж. и Лекун Ю. (2015) Сверточные сети на уровне символов для классификации текстов, 1–9.
- [16] Zhang, X., & LeCun, Y. (2015). Text Understanding from Scratch. arXiv E-Prints, 3, 011102.