Недавно прочитал несколько статей, связанных с применением глубокого обучения в классификации текстов (заметки к диссертации), а также участвовал в задаче классификации текста в CCF Big Data and Computational Intelligence Competition (BDCI) 2017: пусть AI будет судьей, и занял четвертое место в итоговой оценке (за конкретные идеи и коды конкурса, видетьрепозиторий проекта на гитхабе). Поэтому в этой статье обобщаются модели глубокого обучения, идеи оптимизации и будущая работа, связанная с классификацией текста. Добро пожаловать на перепечатку, пожалуйста, сохраните ссылку на эту статью:Блог woohoo.cn на.com/tramp thinker/…
1. Введение в задачи классификации текста
Классификация текста — это фундаментальная задача обработки естественного языка, когда нужно определить метку или набор меток для данного текста (предложения, документа и т. д.).
Область применения классификации текстов очень широка. как:
- Классификация спама: задача двух классов для определения того, является ли электронное письмо спамом.
- анализ эмоций
- Задача с двумя категориями, определяющая, является ли настроение текста положительным или отрицательным.
- Проблема множественной классификации, чтобы определить, к какой категории относится текстовое настроение в {Очень отрицательное, Отрицательное, Нейтральное, Положительное, Очень положительное}
- Тематическая классификация новостей: определите, к какой категории относится новость, например, финансы, спорт, развлечения и т. д.
- Классификация вопросов в системе автоматического ответа на вопросы
- Классификация вопросов в системах ответов на вопросы сообщества: многоуровневая классификация, напримерЗнай горную чашу
- Больше приложений:
- Пусть ИИ будет судьей: Классификация размеров штрафов (мультиклассификация) и классификация законов (многоуровневая классификация) на основе текстов описания фактов дела.
- Определение того, была ли новость написана ботом: две категории
- ......
Различные типы классификации текстов часто имеют разные показатели оценки, а именно:
- Две категории: точность,точность, отзыв, f1-счет,...
- Несколько классификаций: микро-усреднение-F1, макро-усреднение-F1, ...
- Классификация по нескольким меткам: коэффициент сходства Жаккара, ...
2. Традиционные методы машинного обучения
Традиционные методы машинного обучения в основном используют концепцию n-грамм в обработке естественного языка для извлечения функций из текста и используют TFIDF для настройки веса функций n-грамм, а затем вводят извлеченные текстовые функции в классификаторы, такие как логистическая регрессия и SVM. в обучении. Однако существуют вышеуказанные методы извлечения признаков.мало данныхипространственный взрывд., что катастрофично для классификатора и делает обученную модель ограниченной в способности к обобщению. Поэтому часто необходимо принять некоторые стратегии для уменьшения размерности:
- Искусственное уменьшение размерности: фильтрация стоп-слов, низкочастотная фильтрация n-грамм и др.
- Автоматическое уменьшение размерности: LDA и др.
Стоит отметить, что word2vec в глубоком обучении,doc2vecПоскольку текстовые функции объединяются с извлеченными выше функциями, точность модели часто может быть улучшена.
3. CNN для классификации текста
бумагаConvolutional Neural Networks for Sentence ClassificationПредлагается метод классификации предложений с использованием CNN.
3.1 Вывод модели CNN
- Предложение состоит из нескольких слов, если в предложении n
n слов, а i-е слово представляется как x i
х я , слово х я
x i представляется как k-мерный вектор после вложения, то есть x i ∈ℜ k
x i ∈R k , то предложение x 1:n
x 1 : n равно n∗k
Матрица n∗k может быть формализована следующим образом:
X 1:n =x 1 ⊕x 2 ⊕⋯⊕ xn Икс 1 : п = х 1 ⊕ х 2 ⊕ ⋯⊕ х п - а содержит ч Окно слов из h слов выражается как: X i:i+ h−1 ∈ℜ hk X i : i+ h−1 ∈R h k
- Фильтр имеет размер h∗k Матрица h∗k, выраженная как: W ∈ℜh k W ∈ Rh k
- Функция c i может быть извлечена фильтром, действующим на извлечение окна слова.
c i , следующим образом:
c i =f(W⋅Xi :i+h−1+b) c i =f (W ⋅X i :i+ h−1 +b ), где b ∈ℜ b ∈ R — значение смещения, f f — функция активации, такая как Relu и так далее. - Операция свертки: сканирование всего предложения от начала предложения до конца предложения через фильтр, извлечение признаков каждого окна слов и получение карты признаков c ∈ℜn −h+1
c ∈R n −h+ 1 , который представлен следующим образом (по умолчанию заполнение предложений не выполняется):
c = [c 1 ,c 2 ,… ,cn− h+1 ] c = [c 1 ,c 2 ,… ,c n −h+1 ] - Операция объединения: выполнить максимальное объединение на карте объектов, извлеченной фильтром, чтобы получить ˆ c ∈ℜ
c ^ ∈ R:
ˆ с =max(с) с ^ = т ах ( с ) - если есть м
m фильтров, то после одного слоя свертки и одного слоя объединения можно получить слой длины m.
Вектор z∈ℜ m числа m
z∈Rm :
z = [ˆ c 1, ˆ c 2, …,ˆ c m] г = [с ^ 1, с ^ 2,…, с ^ м] - Наконец, вектор z
z вводится в полностью связанный слой, чтобы получить окончательный вектор извлечения признаков y
у (здесь W
W — вес полносвязного слоя, обратите внимание, чтобы отличить его от фильтра):
у =W⋅z+b у = Вт ⋅ г + б
3.2 Оптимизация модели CNN
3.2.1 Вектор слова
- Случайная инициализация (CNN-rand)
- Предварительно обученные векторы слов инициализируются и фиксируются во время обучения (CNN-static)
- Предварительно обученные векторы слов инициализируются и настраиваются во время обучения (CNN-нестатический)
- Многоканальный (CNN-многоканальный): фиксированный предварительно обученный вектор слов и точно настроенный вектор слов рассматриваются как канал соответственно, и операция свертки выполняется на этих двух каналах одновременно, что может быть аналогично трехканальное изображение RGB.
- На рисунке выше приведен пример архитектуры модели, в примере длина предложения n = 9
n = 9, размерность вектора слова k = 6
k = 6, фильтр имеет два размера окна (или размера ядра), каждый из которых равен 2, поэтому общее количество фильтров m = 4.
т =4 , где:
- Размер окна h = 2 h =2 (красный прямоугольник), размерность вектора после свертки равна n −h+ 1=8 п -h+1 =8
-
Другой размер окна h = 3 h =3 (желтая рамка), размерность вектора после свертки равна n −h+ 1=7 п -h+1 =7
(На исходном изображении бумаги нарисовано на одно измерение меньше,Спасибо @shoufengwei за исправление)3.2.2 Регуляризация
- Dropout: вход z в полносвязный слой
вектор z для отсева
у =W⋅(z∘r)+b y = W ⋅(z ∘r) + b, где r ∈ℜm r ∈R m равноmaskingвектор (каждое значение измерения равно 0 или 1, что может быть сгенерировано случайным образом распределением Бернулли), и вектор z z выполняет поэлементное умножение, пусть r Z, соответствующий позиции, где значение вектора r равно 0 Значения элементов в векторе z недействительны (градиент не может быть обновлен). - L2-нормы: добавить ограничения на член регуляризации L2: когда член регуляризации ‖W‖2>s Когда ∥ W∥ 2 > s, пусть ‖W‖2=s, где s — гиперпараметр.
3.3 Некоторые выводы
- Многоканальные и одноканальные модели. Хотя авторы изначально думали, что многоканальные модели могут предотвратить переобучение и, следовательно, должны работать лучше, особенно на небольших наборах данных. Но правда в том, что на некоторых корпусах одноканальность лучше, чем многоканальность;
- Статические и нестатические представления: в большинстве корпусов CNN-нестатические лучше, чем CNN-статические, объяснение: предварительно обученные векторы слов могут думать, что «хороший» и «плохой» похожи (возможно, у них много общего контекста). ), но для задач анализа настроений должно быть четкое разграничение между хорошим и плохим, которое нельзя скорректировать, если используется CNN-static;
- Dropout может повысить производительность на 2–4 %;
- Для слов, которые не входят в предварительно обученный word2vec, используйте равномерное распределение U [−a, a] для случайной инициализации и отрегулируйте a так, чтобы случайно инициализированный вектор слов и предварительно обученный вектор слов сохраняли одинаковую дисперсию, которая можно немного улучшить;
- Вы можете попробовать другие корпуса векторных слов для предварительного обучения, такие как Википедия [Коллоберт и др. (2011)].
- Adadelta (Zeiler, 2012) и Adagrad (Duchi et al., 2011) могут достичь аналогичных результатов, но требуют меньшего количества эпох.
3.4 Дальнейшие мысли о CNN
3.4.1 Почему CNN можно использовать для классификации текстов (NLP)?
- Почему CNN можно использовать для классификации текстов (NLP)?
- filter эквивалентен N-грамму?
- фильтр извлекает только локальные функции? А глобальные особенности? Можно ли его объединить?
- RNN может извлекать глобальные функции
- RCNN (поясняется ниже): комбинация RNN и CNN.
3.4.2 Как настроить гиперпараметры?
бумагаA Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sentence ClassificationПредусмотрены некоторые стратегии.
- какой вектор слова использовать
- Использование предварительно обученных векторов слов работает лучше, чем случайная инициализация
- Эффект тонкой настройки стратегии (нестатической) лучше, чем у фиксированного вектора слов (статической).
- Невозможно определить, какой предварительно обученный вектор слов (представления Google word2vec / GloVe) лучше, разные задачи дают разные результаты, вам следует поэкспериментировать с вашей текущей задачей;
- размер окна фильтра, число
- Эксперименты с использованием одного типа фильтра показывают, что размер окна фильтра от 1 до 10 является разумным выбором.
- Сначала выполните поиск по размеру фильтра одного типа, чтобы найти «лучший» размер для текущего набора данных, а затем исследуйте комбинации размеров фильтра вокруг этого наилучшего размера.
- «Лучшее» количество фильтров (количество карт объектов), соответствующее фильтру каждого типа окна, зависит от конкретного набора данных;
- Однако видно, что когда количество карт признаков превышает 600, улучшение производительности ограничено и даже ухудшает производительность.Это может быть связано с чрезмерным количеством карт признаков, приводящим к переоснащению;
- На практике разумным пространством для поиска является от 100 до 600.
- функция активации (tanh, relu, ...)
- Sigmoid, Cube и tanh cube работают хуже по сравнению с функциями активации Relu и Tanh;
- tanh лучше, чем сигмоид, что может быть связано с нулевым свойством tanh центрирования (в начале координат);
- По сравнению с Sigmoid, ReLU имеетненасыщающая форма, и может ускорить конвергенцию SGD.
- Для некоторых наборов данных линейного преобразования (Iden, то есть без использования нелинейной функции активации) достаточно, чтобы зафиксировать корреляцию между вложениями слов и выходными метками. (Но если есть несколько скрытых слоев, Iden не подходит по сравнению с нелинейной функцией активации, потому что полностью используется линейная функция активации. Даже если есть несколько скрытых слоев, вся модель после объединения остается линейной, и способность выражения может быть недостаточно. , не может получить достаточно информации);
- Поэтому рекомендуется сначала рассмотреть ReLU и tanh, также можно попробовать Iden
- Стратегия объединения: максимальное объединение лучше?
- Для задач классификации предложений объединение 1-max, как правило, лучше, чем другие стратегии объединения;
- Это может быть связано с тем, что конкретная позиция контекста может быть не очень важна для предсказания метки, а конкретная n-грамма предложения (функция, извлекаемая фильтром после объединения 1-max) может быть более способна описать некоторые значения. всего предложения. Больше смысла для прогнозирования меток;
- (но в других задачах, таких какРаспознавание парафраз, объединение k-max может быть лучше. )
- Регуляризация
- Ненулевые коэффициенты отсева между 0,1 и 0,5 могут улучшить производительность (хотя улучшение небольшое), конкретная оптимальная настройка зависит от конкретного набора данных;
- Добавление ограничения к норме l2 обычно не улучшает производительность (за исключением набора данных Opi);
- Когда количество карт признаков больше 100, это может привести к переоснащению и повлиять на производительность, а отсев смягчит этот эффект;
- Отсев на сверточных слоях помогает очень мало, а большой показатель отсева плохо сказывается на производительности.
3.5 CNN на уровне символов для классификации текста
бумагаCharacter-level convolutional networks for text classificationРассматривайте текст как последовательность уровней символов и используйте CNN на уровне символов для классификации текста.
3.5.1 Дизайн модели CNN на уровне символов
Символы должны быть предварительно проквантованы. детали следующим образом:
- Определите алфавит (Алфавит): размер m (для английского m = 70, как показано на рисунке ниже, позже будет рассмотрено включение прописных и строчных букв для сравнения)
- Оцифровка символов (кодирование): «горячее» кодирование
- Длина последовательности (текста): l 0 (фиксированное значение)
Затем в статье проектируются два типа сверточных сетей: Большая и Малая (в качестве контрольного эксперимента). - Все они имеют 9 слоев, из которых 6 сверточных слоев, 3 полносвязных слоя:
- Вероятность отсева 0,5
- Инициализируйте веса, используя распределение Гаусса:
- Длина выходного признака одиночного фильтра в последнем слое сверточного слоя (длина выходного кадра) равна l 6 =(l0−96)/27 , push
- Входное измерение первого полносвязного слоя (где 1024 и 256 — количество фильтров или размер кадра/функции):
- Большой: l 6 ∗1024
- Малый: l 6 ∗256
- Изображение ниже является графическим примером модели. Длина текста равна 10, размер ядра первого слоя свертки равен 3 (полупрозрачный желтый квадрат), количество сверток равно 9 (Feature=9), а размер шага равен 1, поэтому длина=10-3+1 =8 , а затем выполнить неперекрывающееся максимальное объединение (то есть шаг = размер объединения), размер объединения равен 2, поэтому объединенная длина = 8 / 2 = 4.
3.5.2 Соответствующее резюме и размышления о CNN на уровне персонажей
- CNN на уровне персонажей — эффективный метод
- Размер набора данных может дать рекомендации по выбору традиционного подхода или модели сверточной сети.: Для небольших наборов данных, например, от сотен до тысяч, можно отдать предпочтение традиционным методам, а для наборов данных с миллионами начинают хорошо работать CNN на уровне символов.
- Сверточные сети на уровне символов хорошо подходят для пользовательских данных.(например, орфографические ошибки, смайлики и т. д.),
- бесплатного обеда не бывает
-
Как сделать на китайском
- Если рассматривать каждый иероглиф китайского языка как иероглиф, алфавит будет очень большим.
- Можно ли сначала преобразовать китайский язык в пиньинь?
- В китайском так много омофонов, как их побороть?
- бумагаCharacter-level Convolutional Network for Text Classification Applied to Chinese CorpusБыли проведены соответствующие эксперименты.
-
Лучше ли совмещать уровень персонажа и уровень слова?
- Как сочетать англ.
- Как сочетать китайский
3.5.3 Расширение данных с помощью тезауруса
Для моделей глубокого обучения используйте соответствующийувеличение данных(Увеличение данных) может улучшить способность модели к обобщению. Увеличение данных относительно распространено в области компьютерного зрения, например, поворот изображения, его соответствующее искажение, случайное добавление шума и т. д. Для NLP идеальным методом увеличения данных является использование человеческих перефразировок предложений, но это непрактично и дорого для крупномасштабных корпусов.
Более естественным вариантом является использование синонимов или синонимов к словам или фразам для целей дополнения данных. Конкретные методы заключаются в следующем:
- Английский тезаурус: отmytheas component used in LibreOffice1 project. www.libreoffice.org/
- Из заданного текста извлекаются все заменяемые слова, а для замены случайным образом выбираются r, где r определяется геометрическим распределением с параметром p, то есть P[r]∼p r
- Для заменяемого слова может быть несколько синонимов (список), а вероятность выбора s-го слова также определяется другим геометрическим распределением, а именно P[s]∼qs. Это делается для того, чтобы синонимы с более дальними расстояниями (s больше) в списке синонимов текущего слова были выбраны с меньшей вероятностью.
- Экспериментальные параметры статьи: p=0,5, q=0,5.
4. RNN для классификации текста
- Стратегия 1: напрямую использовать последний единичный выходной вектор RNN в качестве текстового объекта.
- Стратегия 2: используйте конкатенацию или среднее значение выходных векторов двух направлений двунаправленной RNN в качестве текстовых признаков.
- Стратегия 3: использовать среднее или максимальное объединение выходных векторов всех единиц RNN в качестве текстовых функций.
- Стратегия 4: Иерархическая RNN+Внимание,Hierarchical Attention Networks
5. RCNN (RNN+CNN) для классификации текстов
бумагаRecurrent Convolutional Neural Networks for Text ClassificationКомбинированная модель RNN и CNN предназначена для классификации текста.
5.1 Вывод модели RCNN
5.1.1 Обучение представлению слов
Используйте двунаправленную RNN, чтобы узнать левое контекстное представление cl (wi) и правое контекстное представление cr (wi) текущего слова wi соответственно, а затем соединитесь с представлением e (wi) самого текущего слова, чтобы сформировать вход xi сверточный слой. детали следующим образом:
cl (wi )= f(W (l) cl( wi −1 )+ W( sl) e( wi −1 )) cr (wi )=f (W (r) cr (wi− 1 )+W ( sr) e(wi− 1 )); xi = [cl ( wi ) ;e (wi ) ;cr (
ш я ) ];
Затем возьмите xi в качестве представления wi и введите его в сверточный слой с функцией активации tanh и размером ядра 1, чтобы получить скрытый семантический вектор wi y (2) i = tanh (W (2) xi + b (2))
Установка размера ядра на 1 связана с тем, что x i уже содержит информацию о контексте w i , поэтому нет необходимости использовать фильтр с окном больше 1 для извлечения признаков. Но следует отметить, что на практике одновременно можно использовать несколько ядер. Фильтр размера, например [1, 2, 3], может дать лучшие результаты Одно из возможных объяснений состоит в том, что фильтр с окном больше 1 усиливает контекстную информацию левого и правого ближайших к wi. Кроме того, на практике можно использовать более сложные RNN для сбора контекстной информации wi, такие как LSTM, GRU и т. д.
5.1 2 Изучение текстового представления
После сверточного слоя получается представление всех слов, затем представление текста получается через максимальный объединяющий слой и полносвязный слой, и, наконец, для классификации используется слой softmax. детали следующим образом:
- Max-pooling layer: y (3) =n max i= 1 y( 2) i
- Fully connected layer: y (4) =W (4) y( 3) +b (4)
- Слой Softmax: p i =exp (y (4) i )∑ n k=1 exp(y (4) k )
Следующий рисунок иллюстрирует описанный выше процесс:
5.2 Резюме, связанное с RCNN
- NN против традиционных методов: нейронные сети превосходят традиционные методы на всех экспериментальных наборах данных в этой статье.
- Сравнение на основе свертки и RecursiveNN: методы на основе свертки лучше, чем методы на основе рекуррентных нейронных сетей.
- RCNN против CFG и C&J: RCNN может захватывать более длинные шаблоны
- RCNN против CNN: RCNN лучше, чем CNN на всех наборах экспериментальных данных в этой статье.
- CNN используют фиксированное окно слов, и на экспериментальные результаты влияет размер окна.
- RCNN захватывают обширную контекстуальную информацию, используя повторяющиеся структуры.
6. Нужны ли CNN/RNN?
Вышеупомянутые методы глубокого обучения могут достичь лучших результатов за счет введения CNN или RNN для извлечения признаков, но есть и некоторые проблемы, такие как слишком много параметров, ведущих к слишком долгому времени обучения, и слишком много гиперпараметров для настройки модели. Следующие две статьи предлагают несколько простых моделей для классификации текста и используют некоторые стратегии оптимизации для простых моделей.
6.1 Комбинированные методы глубокого беспорядка
бумагаDeep Unordered Composition Rivals Syntactic Methods for Text ClassificationпридумалNBOW(нейронный Bag-of-Words) модель иDAN(Сети глубокого усреднения). в сравненииГлубоко неупорядоченный комбинированный метод(Глубокая неупорядоченная композиция) исинтаксический метод(Синтаксические методы) преимущества и недостатки применительно к задачам классификации текста, подчеркивая эффективность, действенность и гибкость методов глубоко неупорядоченных комбинаций.
6.1.1 Neural Bag-of-Words Models
В статье сначала предлагается одна из простейших неупорядоченных моделей, модели нейронного мешка слов (Neural Bag of Words Models).NBOWмодель). Модель напрямую принимает среднее значение всех векторов слов в тексте как представление текста, а затем вводит его в слой softmax.Формальное представление выглядит следующим образом:
- Среднее вложение слов: z =g(w ∈X)=1 X ∑w ∈X vw
- Слой Softmax: ˆ y =softmax(W s ⋅z+b)
- Функция потерь: кросс-энтропийная ошибка, ι(ˆ y )= k ∑ p= 1 yplog (^ yp )
6.1.2 Considering Syntax for Composition
Некоторые способы думать о синтаксисе:
- Recursive neural networks (RecNNs)
- Некоторые сложные языковые явления, такие как отрицание, переход и т. д., могут быть рассмотрены (преимущество)
- Реализовать синтаксическое дерево, эффект которого зависит от входной последовательности (текста) (может не подходить для длинных текстов и менее канонических текстов)
- Нужно больше времени на обучение
- Using a convolutional network instead of a RecNN
- Временная сложность также относительно велика или даже больше (вывод, сделанный на основе экспериментальных результатов, который зависит от настроек гиперпараметров, таких как размер и количество фильтров).
6.1.3 Deep Averaging Networks
Deep Averaging Networks (DAN) вNBOWНа основе модели путем добавления нескольких скрытых слоев увеличивается глубина сети (Deep). На рисунке ниже показано сравнение моделей DAN и RecNN с двумя скрытыми слоями.
6.1.4 Word Dropout Improves Robustness
- Для модели DAN в статье предлагается стратегия исключения слов: перед усреднением векторов слов некоторые слова (токены) в тексте случайным образом аннулируются. Формальное представление выглядит следующим образом:
r w ∼Be rnoulli( p);ˆX ={w|w∈X andr w >0};z =g(w∈X )=∑w∈ˆX vw |ˆX|;
- Word Dropout может сделать недействительными некоторые очень важные токены. Однако использование выпадения слов часто улучшает ситуацию, вероятно, потому, что количество слов, которые имеют решающее значение для предсказания меток, часто меньше, чем количество незначимых слов. Например, в задачах анализа тональности нейтральных слов, как правило, больше всего.
- Выпадение слов также можно использовать для других методов, основанных на нейронных сетях.
- Может быть, Word Dropout играет аналогичную роль в дополнении данных?
6.2 fastText
бумагаBag of Tricks for Efficient Text ClassificationПридумайте модель для быстрой классификации текста и некоторые хитрости.
6.2.1 Архитектура модели fastText
Модель fastText напрямую усредняет все встроенные функции как представление функций текста, как показано на следующем рисунке.
6.2.2 Особенности
- Когда количество категорий велико, используйте Hierachical Softmax.
- Включите N-граммы в функции и используйте трюк с хешированием[Weinberger et al.2009]Повысить эффективность
7. Последние исследования
- Согласно репозиторию github:state-of-the-art-result-for-machine-learning-problems, модели, предложенные в следующих двух статьях, могут достичь наилучших результатов в классификации текста (модель в статье Learning Structured Text Representations была использована для первого места в конкурсе судей AI):
- бумагаMulti-Task Label Embedding for Text ClassificationСчитается, что между метками и метками может существовать взаимосвязь, поэтому вместо обработки меток как однократных векторов, как в предыдущей модели глубокого обучения, для каждой метки выполняется встраивание обучения для повышения точности классификации текста.
References
[1] Le and Mikolov - 2014 - Distributed representations of sentences and documents
[2] Kim - 2014 - Convolutional neural networks for sentence classification
[3] Zhang and Wallace - 2015 - A Sensitivity
Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sentence Classification
[4] Zhang et al. - 2015 - Character-level convolutional networks for text classification
[5] Lai et al. - 2015 - Recurrent Convolutional
Neural Networks for Text Classification
[6] Iyyer et al. - 2015 - Deep unordered composition rivals syntactic methods for Text Classification
[7] Joulin et al. - 2016 - Bag of tricks for efficient text classification
[8] Liu and
Lapata - 2017 - Learning Structured Text Representations
[9] Инь и Шютце - 2017 - Внимательная свертка
[10] Zhang et al. - 2017 - Multi-Task Label Embedding for Text Classification