Лаиси

Как одно из четырех основных технических направлений комитета по внешнему интерфейсу Alibaba, интеллектуальный проект внешнего интерфейса создал огромную ценность во время торгового фестиваля Double 11 в 2019 году. Интеллектуальный интерфейсный проект автоматически сгенерировал 79,34% кода для новых модулей Taobao и Tmall. В этот период команда R&D испытала массу трудностей и было много мыслей о том, как их решить. В серии «Интеллектуальное создание кода внешнего интерфейса из файлов дизайна» мы рассказываем о технологиях и идеях, лежащих в основе интеллектуального проекта внешнего интерфейса.

Обзор

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

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

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

На следующем рисунке показан общий процесс реализации распознавания бизнес-модулей. Он включает в себя следующие шаги:

  • Создание образцов: улучшайте файлы дизайна на уровне пользовательского интерфейса на основе пользовательских конфигураций и пользовательских правил улучшения данных для создания визуально разнообразных образцов. После этого извлеките и сохраните значения функций на основе предопределенных бизнес-полей.
  • Выбор алгоритма. Выберите традиционный алгоритм многоклассовой классификации машинного обучения.
  • Внедрение модели. Создайте модель и выполните разработку соответствующих алгоритмов на платформе машинного обучения Alibaba для автоматизированного обучения и развертывания модели.
  • Предоставление интерфейса: предоставление функций прогнозирования и обратной связи по результатам на основе модели.

Позиция в архитектуре D2C

На следующем рисунке показано, что служба распознавания бизнес-модулей находится на уровне распознавания материалов, который находится в иерархической архитектуре технологии Design to Code (D2C). Служба распознавания бизнес-модулей предоставляет возможности распознавания бизнес-модулей из DSL файлов проекта. Распознанные бизнес-модули могут использоваться в последующем процессе генерации кода другими службами, такими как привязка бизнес-полей и генерация бизнес-логики.

Образец конструкции

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

Улучшение данных

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

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

На следующем рисунке показана страница для настройки расширения данных. Дерево DSL и область рендеринга находятся слева и посередине страницы. Область настройки расширения данных находится справа. Параметры делятся на следующие категории:

  • Улучшение атрибутов: размер, положение, скрытый или видимый, цвет переднего плана, цвет фона и содержимое.
  • Метод улучшения: непрерывный диапазон и указанное значение перечисления

Извлечение признаков

Как генерировать образцы после того, как мы получили большое количество расширенных визуальных DSL? Образцы, которые нам нужны, должны быть табличными данными, требуемым входным форматом для традиционного машинного обучения. Образец — это вектор признаков. Следовательно, нам нужно извлечь функции из DSL.

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

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

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

Алгоритм и модель

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

Случайный лес

Конструирование модели

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

Поэтому мы можем быстро построить простую модель, как показано на следующем рисунке.

Настройка параметров

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

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

Проблема дискретных функций

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

Это то, что мы сделали с моделью случайного леса. Подводя итог, можно сказать, что модель случайного леса проста, удобна в использовании и может быстро давать результаты. Он может удовлетворить потребности в распознавании большинства бизнес-сценариев и стать алгоритмом 1.0 для службы распознавания бизнес-модулей. Однако из-за недостатков алгоритма позже мы представили другую модель под названием XGBoost.

Мультиклассовая классификация XGBoost

Конструирование модели

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

Предварительная обработка

Модель XGBoost требует дополнительной предварительной обработки, в том числе:

  • Кодирование ярлыков. Кодируйте ярлыки в процессе предварительной обработки. XGBoost поддерживает только значения меток, начинающиеся от 0 до единицы меньше количества категорий. Однако для целей сопоставления значения меток, которые мы сохраняем, представляют собой идентификаторы категорий из платформы алгоритма, а не от 0 до N, и могут даже не быть последовательными целыми числами. Поэтому нам нужно использовать компонент кодирования меток для кодирования значений меток в соответствии с требованиями XGBoost.
  • Хранение таблицы сопоставления меток. Сохраните таблицу сопоставления меток в хранилище. Интерфейс прогнозирования использует эту таблицу сопоставления для преобразования категорий, определенных на платформе, поэтому требуется дополнительное хранилище.
  • Реорганизация данных. Извлечение отсутствующих меток из обучающего набора, чтобы алгоритм случайного разделения не разбивал метки в обучающем наборе на неполные наборы данных. Реорганизация данных в некоторой степени повлияет на модель, но она будет работать в крайних случаях, когда данных мало.

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

Вызов: ООД

Стоит отметить, что мы не можем всесторонне собрать все визуальные образцы вне текущей библиотеки модулей. Это все равно, что пытаться собрать фотографии лиц 7 миллиардов человек, чтобы построить внутреннюю систему распознавания лиц в Alibaba. Отсутствующие данные за пределами выборочного пула заставляют нас не учитывать скрытую классификацию — отрицательную классификацию выборки. Это также приводит к проблеме вне распределения (OOD): проблеме неточного прогноза, вызванного данными вне библиотеки образцов. Симптомом этой проблемы является чрезмерное количество ложных срабатываний в результатах классификации.

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

Настройка порога

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

Логический контроль

Мы можем использовать логическую связь для выявления некоторых ложных срабатываний OOD в модели алгоритма. На наш взгляд, невозможно иметь несколько одинаковых модулей на одном пути дерева DSL. В противном случае дерево является самовложенным. Итак, если на пути распознано несколько одинаковых модулей, мы можем выбрать результат распознавания по степени достоверности. Эта логика помогает нам отфильтровать большинство ложных срабатываний.

Отрицательный отзыв о образце

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

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

Развертывание модели

Платформа алгоритма позволяет пользователям предоставлять модель как онлайн-интерфейс, то есть развертывать модель как службу прогнозирования. Пользователи могут использовать imgcook для вызова интерфейса и развертывания модели одним щелчком мыши. Чтобы автоматизировать процессы обучения и развертывания, мы также работали над разработкой алгоритмов, которые здесь не описаны.

Прогноз и обратная связь

Входные данные службы прогнозирования — это DSL в формате JSON, извлеченные из файлов проекта. На выходе — информация бизнес-модуля, включая идентификаторы и позиции в файлах дизайна.

Перед вызовом интерфейса прогнозирования платформы алгоритма мы добавили логическую фильтрацию, в том числе:

Фильтрация по размеру: если размер модуля значительно отличается, DSL не войдет в логику прогнозирования и будет считаться несоответствием.

  • Иерархическая фильтрация. Для конечных узлов (то есть простого текста или простого изображения) мы не считаем, что эти узлы имеют бизнес-значение, поэтому они также отфильтровываются.

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

Услуга распознавания бизнес-модулей впервые была использована онлайн в Taobao 99 Mega Sale. Модель, предварительная обработка и процессы предотвращения OOD в конечном итоге привели к следующим результатам: точность распознавания до 100% в бизнес-сценариях. (Показатель точности модели не рассчитывается.)

Будущая работа

Оптимизация алгоритма

Решение сложных проблем. Как упоминалось ранее, проблема OOD является сложной и не имеет идеального решения. У нас есть некоторые идеи о том, как решить эту проблему, и мы планируем попробовать их в будущем.

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

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

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

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

Платформа генерации образцов

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

Расширение источника: в настоящее время мы создаем образцы, извлекая DSL из файлов проекта и сохраняя функции в виде данных таблицы MaxCompute. В будущих бизнес-сценариях мы также хотим генерировать образцы из кода HTML и внешнего интерфейса. Независимо от источника ввода, уровень улучшения данных во многом похож. Мы разработаем общий улучшенный алгоритм и опубликуем его.

Расширение алгоритма. Конечные образцы могут представлять собой табличные данные со значениями признаков для многоклассовой классификации или изображения и данные меток в форматах Pascal VOC и COCO для модели обнаружения цели.

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

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

Оригинальный источник: