Чтобы расширить исследования и понять передовые алгоритмы и технологии, я принял участие в международном конкурсе интеллектуального анализа данных 2017 CIKM AnalytiCup. Конференция по управлению информацией и знаниями (CIKM) — это ежегодная научно-исследовательская конференция в области компьютерных наук, которая проводится с 1992 года.

Это соревнование было моей первой простой попыткой; В свободное время с июля по август я пытался создать простую структуру изучения естественного языка. Я занял 16-е место в соревновании среди 169 команд.

В этой статье я поделюсь с вами своим опытом участия в соревнованиях.

Описание проблемы: проблема качества названия продукта Lazada

Lazada представила цель конкурса, которая заключалась в том, чтобы определить, являются ли названия ее продуктов ясными и краткими на фоне растущего числа транзакций на сайтах электронной коммерции. Конкретная цель испытания состояла в том, чтобы оценить ясность и краткость названия каждого продукта (два балла в интервале [0,1]).

Можно заметить, что эти два показателя не совпадают. Ясность относится к тому, легко ли понять содержание заголовка и является ли описание исчерпывающим и точным.

Пример неясного предложения: «Серебряный хрустальный вечерний клатч со стразами, свадебный кошелек, коробка для выпускного вечера». Это не уточняет, является ли продукт «свадебным кошельком» или «коробкой для выпускного вечера».

В то время как пример четкого предложения: «Мягкий на ощупь пластиковый жесткий чехол для корпуса MacBook Air 11.6 (модели: A1370 и A1465) с прозрачной крышкой клавиатуры (прозрачный) (экспорт)».

Напротив, краткость относится к тому, является ли содержание заголовка кратким.

Пример короткого, но неконкретного предложения: «rondaful чистый цвет оконной сетки свадебного банкета из стекловолокна», потому что синонимы избыточны, а также неясны. Пример краткого предложения: «чехол Moonmini для iPhone 5 5s (ярко-розовый + синий), креативный жесткий чехол с тающим мороженым, защитная задняя крышка».

Чтобы исследовать и решить эту проблему, Lazada предоставила ряд необработанных данных из реальных сценариев, включая название, трехуровневое дерево категорий, описание, цену и идентификатор продукта. Lazada также предоставила некоторую информацию, помеченную вручную.

Нам были предоставлены стандартные наборы данных для оценки. Было три набора данных: первый — обучающие данные для обучения, второй — проверочные данные для начального тестирования, а третий — тестовые данные для финального тестирования.

Анализ и дизайн

Анализ проблемы

Это была задача обучения с учителем, но сложность заключалась в том, что она включала в себя задачу извлечения коротких текстов на чисто семантическом уровне. Во-первых, не было данных обратной связи, а доступная информация была очень ограниченной, включая только базовую информацию, такую ​​как название, категория, описание и т. д. Однако то, что нам нужно было идентифицировать, было очень многомерным и очень абстрактным. С другой стороны, такие задачи имеют жизненно важное практическое значение. Для внутренних служб использование простейших данных для определения абстрактных бизнес-целей — очень ценная общая технология.

В процессе решения этой задачи я использовал родственные технологии в двух областях: обработка естественного языка и интеллектуальный анализ данных. Ниже я подробно расскажу о конкретных методах. Более того, поскольку ясность и лаконичность были двумя отдельными целями, с точки зрения узнавания для этих двух целей были построены две независимые модели для отдельных решений.

Дизайн решения

В решении были построены две независимые регрессионные модели для оценки ясности и краткости. Согласно моему анализу, это была проблема с анализом короткого текста. Поэтому сначала я построил промежуточную семантику для нескольких измерений, а затем использовал промежуточную семантику для решения конечной задачи. Благодаря построению и расширению (насколько это возможно) мы можем генерировать больше доступной информации для устранения этого естественного дефекта в коротких текстовых данных.

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

  1. Измерение длины. Длина — это аналитический параметр, который важен для ясности и краткости.
  2. Показатель избыточности. Избыточность очень важна для анализа краткости.
  3. Показатель релевантности. Для точности названий продуктов релевантность важна для обеих целей.
  4. Измерение встраивания: встраивание — это информационное дополнение в форме векторов слов, которое может эффективно получать различающую информацию, которую трудно определить.
  5. Параметры черного списка. Черный список полезен для некоторой информации, которую трудно определить и которую нельзя охарактеризовать семантикой, но которая является статистически дискриминационной.
  6. Измерение класса слов. Это важный параметр естественного языка, который влияет на мнение пользователя.

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

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

Системный дизайн

Чтобы эффективно построить многомерную систему контролируемого обучения, я реализовал всю систему с точки зрения данных, функций, моделей и проверки. Это была структура машинного обучения, основанная на обработке естественного языка без использования каких-либо конкретных служебных данных. Фреймворк включал несколько основных модулей, таких как предварительная обработка данных, визуальный анализ, разработка функций, обучение модели, интегрированное обучение и перекрестная проверка. Схематично вся система выглядит следующим образом:

Ниже я кратко описал функции и реализацию нескольких основных модулей:

Статистический анализатор

Я использовал этот модуль в основном для классификации необработанных данных и визуального анализа в разных измерениях. Это не основной процесс машинного обучения, но он важен для открытой бизнес-задачи. Мы можем использовать его для обнаружения ценной регулярности и интерпретируемости необработанных данных, и его преимущество в том, что он может находить ценную информацию с максимальной эффективностью и с наименьшими затратами.

Компонент разработки функций

Этот раздел содержит несколько модулей создания признаков (на основе модуля обработки естественного языка) и модулей выбора признаков. Разработка функций была самой важной задачей в этом проекте. Его сложность была намного больше, чем вариативность моделей. Сочетание большого количества признаков представляет собой экспоненциальный уровень. Для общих проблем машинного обучения очень важно за короткое время найти набор исчерпывающих и подходящих наборов функций.

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

Специальное повторное использование и добавление функций в Feature Recorder требует гибкого управления функциями. В противном случае при управлении большим количеством функций система становится очень турбулентной. Поэтому в процессе проектирования системы для вычисления признаков я попытался выполнить блок признаков для кластера признаков и group_id выборки. Это позволило мне свободно комбинировать функциональные блоки в соответствии с конфигурацией. Это обеспечило высокую эффективность и четкое управление кодом, что подходит для таких масштабных задач обучения.

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

Компонент модели

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

  1. Модуль обучения модели
  2. Интегрированный учебный модуль
  3. Модуль перекрестной проверки

Я реализовал большое количество часто используемых моделей в модуле обучения моделям, которые можно выбрать и загрузить с помощью конфигурации. Я использовал интегрированный обучающий модуль как инструмент для повышения точности. В этом проекте для реализации интегрированного обучения использовался метод наложения. Я разделил тренировочную структуру на два слоя; первый уровень предназначался для обучения отдельной модели, а второй слой — для обучения XGBoost.

Разработка функций

Разработка признаков — одна из самых важных задач для приложений машинного обучения. В этом конкурсе я использовал более 100 фич для обучения. Из-за нехватки места здесь я описал идеи дизайна только некоторых основных функций.

Функции избыточности. Ссылаясь на структурированную обработку языка, я сконструировал множество функций, характеризующих избыточность, таких как повторение n-грамм (3 грамма — 8 граммов), повторение n-char (3 символа — 8 символов), количество/доля уникальных слов, сходство векторов слов (разделенных на несколько интервалов) и статистические значения максимума, минимума, среднего, суммы и т. д. для каждой функции.

Кроме того, здесь я использовал n-gram и n-char, которые рассматривают предложение как набор неупорядоченных слов. Они не зависят от порядка и не обязательно должны быть последовательными словами.

Особенности категорий: я выполнил однократную сериализацию (длиннохвостая часть была нормализована) сначала для трехуровневых категорий, а затем выполнил анализ основных компонентов PCA на однократном сокращении размерности для формирования числовых значений. Особенности.

Функции релевантности. Я использовал здесь word2vec, чтобы выяснить, связано ли сходство между словами и категориями всех уровней с точностью содержания заголовка. Чтобы полностью охарактеризовать описание, я также использовал несколько статистических показателей, таких как наиболее релевантная часть предложения, сумма всех релевантностей в предложении и первые N релевантных частей предложения.

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

Особенности TF-IDF: я рассматривал заголовок и описание как документ и рассматривал слово как ключевое слово для построения карты TF-IDF, которую я использовал в семантическом распределении предложения.

Функции класса слов.В дополнение к вышеупомянутому общему анализу обработки с помощью машинного обучения я использовал инструмент NVTK для анализа класса слов ввода предложения и построил статистические характеристики для существительных и прилагательных в приговор.

Введение в основной алгоритм

В окончательном решении четыре основных типа алгоритмов предложили наиболее значительное улучшение: модель XGBoost, модель CNN, модель LSTM и интегрированная оптимизация обучения. Ниже приводится краткое описание:

XGBoost, который на сегодняшний день является одним из лучших алгоритмов «обучения с учителем» в отрасли, продемонстрировал наилучшую производительность по сравнению с одной моделью в этом проекте. Это алгоритм повышения, который объединяет несколько слабых классификаторов в сильный классификатор. Самой большой особенностью является использование разложения Тейлора второго порядка для оптимизации цели с использованием производных как первого, так и второго порядка и введением регулярных членов в функцию стоимости. Он имеет лучшую производительность в аспекте переобучения. Кроме того, XGBoost использует метод выборки случайных лесов, который также может эффективно предотвращать переобучение и ускорять вычисления. Что касается производительности, XGBoost в настоящее время является лучшим алгоритмом повышения. С точки зрения эффекта он очень похож на LightGBM от Microsoft.

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

LSTM, в дополнение к CNN, я также использовал сеть LSTM, которая представляет собой особый тип RNN с сетевой структурой, которая оказывает эффект памяти на долгосрочные слова. Поскольку заголовок представляет собой короткий текст, эффект LSTM почти такой же, как у CNN, но из-за разных сетевых структур он дополняет их.

Наложение. Для дальнейшей оптимизации точности я также использовал в этом проекте метод наложения, чтобы комбинировать различные типы алгоритмов, чтобы дополнять друг друга. Однако, в отличие от бустинга, который преобразует несколько слабых классификаторов в один сильный классификатор, суммирование превращает несколько сильных классификаторов в один более сильный классификатор. В этом проекте первый уровень наложения интегрировал эффекты различных моделей, таких как XGBoost, CNN, LSTM, SVM и Lasso Regression. Я объединил функции модели и оригинальные функции в качестве входных данных для второго слоя наложения. Конструкция всей тренировочной структуры укладки выглядит следующим образом:

Изображение 2

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

Уроки выучены

Я думаю, что благодаря этому конкурсу есть некоторые идеи и опыт, которыми стоит поделиться.

Какие изменения вы внесли в дизайн системы?

Я использовал дизайн вышеуказанного решения в качестве основы для финальной версии конкурса. Однако, используя только этот метод, нельзя значительно улучшить эффект. Одна из характеристик, которую я обнаружил в этой работе, заключается в том, что тексты с одним заголовком в похожих наборах функций имеют почти одинаковое выражение, но при этом дополняют друг друга. Взяв в качестве примера избыточность, интуитивное понимание веса определения подобия и веса совпадения слов может полностью выразить избыточность. Однако в процессе фактического тестирования было очевидно, что выражение было очень похожим или почти одинаковым, например, доля и количество независимых слов, доля и количество слов со сходством менее 0,4, максимальное сходство, количество совпадений и количество бинарных совпадений.

Даже переопределенные наборы функций значительно улучшаются при накоплении в больших количествах после очистки предложений. Что касается сущности этого явления, я думаю, что характеристика определения естественного языка многомерна. Функции здесь не распространяются независимо как данные эффекта, а дополняют друг друга. Я расцениваю эту дополнительность как образ естественного языка в больших размерах, особенно для признаков детализации слов, которые могут дополнять друг друга в виртуальном образе после накопления сходных признаков. Так что в конкурсе использовалось много практически непротиворечивых фич. Это один из ключей к улучшению.

Какие модели подходят для накопления функций?

Не все алгоритмы могут обеспечить значительные улучшения после накопления признаков. Например, с SVM и LR, даже когда мы используем большое количество функций, улучшение очень ограничено. Модели серии Boost больше всего страдают от накопления функций. В принципе, это не случайно. Это просто потому, что идея бустинга состоит в том, чтобы обрабатывать плохие образцы по отдельности или оптимизировать остатки. Поэтому большое количество схожих признаков играет существенную роль в дальнейшей итерационной оптимизации.

Кроме того, в вопросе классификации заголовков данные имеют очевидное иерархическое распределение; то есть объекты одного типа находятся в одном слое, а объекты другого типа — в другом слое. Согласно визуальному анализу соревнований, слой данных, который было сложнее всего определить, составил всего 1% от общего числа выборок. Помимо повышения, CNN и LSTM — это другие алгоритмы, которые хорошо адаптированы для накопления признаков. Разумеется, в этом выпуске в качестве признаков система использовала исходные векторы слов.

Проблемы с неправильной маркировкой

Во время теста на конкурсе я обнаружил, что многие названия очень похожи, некоторые из них отличаются только скобкой, но все равно по-разному обозначаются.

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

Резюме и перспективы

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

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

  1. Интегрированная обучающая сеть, которая поддерживает 100-уровневую оптимизацию модели.
  2. Изучение структуры сети глубокого обучения и возможностей выражения, особенно возможности лучшей интеграции исходных функций и эмпирических функций.
  3. Улучшение возможностей предварительной обработки данных и кластеризации иерархической структуры.
  4. Улучшение функции антишумовых помех.
  5. Постоянное повышение эффективности разработки функций.

Победители CIKM AnalytiCup 2018 года будут объявлены в августе 2018 года. Для получения дополнительной информации посетите официальную страницу мероприятия.

Ссылка:

https://www.alibabacloud.com/blog/lessons-learned-at-the-2017-cikm-analyticup-machine-learning-competition_593828?spm=a2c41.11790709.0.0