Автор | Рис Произведено | Alibaba New Retail Tao Department Технологический отдел
Введение: В качестве одного из четырех основных технических направлений передового комитета экономики Али, передовой интеллектуальный проект прошел поэтапное тестирование Double Eleven 2019 и сдал хороший лист ответов, Онлайн-код генерируется автоматически. интерфейсным интеллектуальным проектом. За этот период команда R&D испытала много трудностей и мыслей.В этой серии статей «Как разумно генерировать интерфейсный код» мы поделимся с вами всеми технологиями и идеями в области интеллектуальных интерфейсных проектов.
Обзор
Во внешнем коде рекламной страницы беспроводной связи имеется большое количество бизнес-модулей или бизнес-компонентов (далее в совокупности именуемых бизнес-модулями), то есть кодовых единиц с определенными бизнес-функциями. После получения информации о бизнес-модуле на странице ее можно использовать для последующих функций, таких как повторное использование кода и привязка бизнес-полей. Таким образом, бизнес-модуль идентифицируется из визуального проекта, и он стал широко используемым функциональным звеном в области интерфейсной аналитики.
В отличие от основных функций распознавания компонентов и форм для промежуточной и конечной частей, распознавание бизнес-модулей в основном ориентировано на конечную страницу беспроводной сети, а источником является в основном визуальный черновик. Напротив, структура пользовательского интерфейса бизнес-модуля более сложна, а контент, предоставляемый визуальным черновиком, уже содержит более различимую информацию (например, текстовое содержимое, размер изображения и т. д.), поэтому мы не используем глубокое обучение изображения напрямую. решение, а из визуального проекта.Предопределенные значения признаков извлекаются из выходного DSL, а распознавание модулей реализуется традиционным методом обучения мультиклассификации. Эта функция идентификации, наконец, возвращает такую информацию, как категория бизнес-модуля и местоположение в визуальном проекте.
Общая функция показана на рисунке ниже. включать:
1. Создание образца: улучшите уровень пользовательского интерфейса визуального проекта в соответствии с пользовательской конфигурацией и пользовательскими правилами улучшения данных, чтобы получить визуально разнообразные образцы. Затем, на основе определения бизнес-полей, выполняется извлечение и сохранение значений признаков. 2. Выбор алгоритма. В настоящее время предоставляются алгоритмы мультиклассификации в традиционных методах машинного обучения.
3. Реализация модели на основе платформы машинного обучения группы для реализации построения модели и разработки соответствующих алгоритмов, чтобы обеспечить автоматическое обучение и развертывание.
4. Предоставляется интерфейс, а модель предоставляет внешние услуги прогнозирования и идентификации, а также услуги обратной связи по результатам.
Общая функция показана на следующем рисунке:
на слое
Как показано на рисунке ниже, наша служба идентификации бизнес-модуля расположена на уровне идентификации материала, который обеспечивает дополнительные возможности идентификации бизнес-настройки для DSL, экспортированного из визуального проекта, и проникает в связывание полей, бизнес-логику и другие функции в последующем. процесс генерации кода. Распределение функций D2C показано на следующем рисунке:
Образец конструкции
Машинное обучение — это процесс обучения, основанный на большом количестве реальных данных. Хорошая библиотека примеров может сделать обучение вашей модели более эффективным. Нашим источником примеров является Sketch, но может быть только несколько эскизов Sketch одного и того же модуля, а количество доступных образцов слишком мало. Поэтому сначала надо решить проблему количества.
увеличение данных
Чтобы решить проблему размера выборки, мы используем метод увеличения данных. Расширение данных имеет набор правил по умолчанию, которые также можно настраивать. Пользователи могут настраивать атрибуты в соответствии с возможными изменениями каждого элемента на визуальном эскизе в реальной сцене, например, «может ли он быть скрыт», «переменный диапазон текстовых слов» и другие размеры, а также создавать настраиваемые элементы конфигурации. Таким образом, производители образцов могут четко знать, в чем заключаются различия в направленности создаваемых ими образцов.
На основе этих элементов конфигурации мы различаем и комбинируем свойства для создания большого количества различных макетов DSL. Эти DSL отличаются друг от друга случайным и регулярным образом, из чего мы можем получить большое количество выборок.
Расширенный интерфейс конфигурации показан на рисунке ниже: слева и посередине находятся дерево DSL и область визуализации, а справа — область расширенной конфигурации. Элемент конфигурации состоит из следующих 2 частей:
1. Расширенные свойства: размер, положение, скрытие, цвет фона переднего плана, содержимое.
2. Метод улучшения: непрерывный диапазон, указанное значение перечисления
Интерфейс, сгенерированный образцом, показан на следующем рисунке:
извлечение цифровых признаков
Как вы генерируете образцы, когда у вас есть значительно улучшенный визуальный DSL? Прежде всего ясно, что нужный нам формат выборки должен быть табличными данными, чтобы соответствовать входному формату традиционных методов машинного обучения: выборочные данные — это вектор признаков. Итак, нам нужно выполнить извлечение признаков на DSL.
Основываясь на предыдущем опыте обучения модели, мы обнаружили, что определенная визуальная информация особенно важна для оценки модулей по категориям. Поэтому мы абстрагируем, настраиваем и извлекаем информацию о пользовательском интерфейсе в виде размеров функций, таких как ширина, высота, направление компоновки, количество изображений и количество текстов DSL. Путем абстрагирования различной визуальной информации мы получаем 40 многомерных визуальных признаков.
В дополнение к измерению визуальных функций мы также добавили пользовательские бизнес-функции. То есть в соответствии с определенными «бизнес-правилами» некоторые блоки элементов определяются как элементы с бизнес-значением, такие как «цена», «популярность» и т. д., и абстрагируются 10 измерений бизнес-характеристик. В этом процессе также поддерживаются пользовательские бизнес-правила, которые могут быть реализованы посредством регулярного сопоставления.
Визуальные абстрактные функции плюс бизнес-функции образуют вектор функций. Вектор признаков плюс классификационная метка, то есть выборка.
Алгоритмы и модели
Прежде всего, наш ввод — это стандартизированный DSL, извлеченный из черновика проекта Sketch.Цель — определить, к какому бизнес-модулю относится DSL, что можно отнести к проблеме множественной классификации. Следуя этому направлению мысли, мы извлекли значения признаков из большого количества дополненных DSL и сгенерировали наборы данных для обучения. Используемая нами мультиклассификационная модель построена на основе различных компонентов, предоставляемых платформой алгоритма.
случайный лес
Построение модели
Изначально мы выбрали модель случайного леса в качестве мультиклассификационной модели, потому что случайный лес имеет высокую скорость выполнения и плавный процесс автоматизации, что может удовлетворить потребности нашей алгоритмической разработки практически без дополнительных операций; и требования к собственному значению обработки являются низкими, а непрерывная обработка будет выполняться сама по себе и дискретными переменными, правила приведены в таблице ниже.
Правила автоматического разбора типов переменных случайного леса показаны на следующем рисунке:
Поэтому можно быстро построить очень простую модель, как показано на следующем рисунке.
Модель случайного леса, используемая онлайн, показана на следующем рисунке:
процесс настройки параметров
Мы обнаружили, что случайным лесам иногда не хватает уверенности в данных в библиотеке образцов, то есть уверенность в положительном истинном низком уровне и застревает на пороге достоверности. Особенно для визуально очень похожих образцов два одинаковых модуля, как показано на рисунке, принесут ошибки в результаты нашей классификации.
Похожие модули показаны ниже:
Чтобы оптимизировать эту «неуверенную» проблему, мы скорректировали параметры случайного леса, в том числе количество случайных выборок одного дерева, максимальную глубину одного дерева, соотношение типов деревьев ID3/Cart/C4.5. , и т.д. Предварительный доступ к компонентам выбора функций, эффект не идеален. Наконец, после оценки важности значения функции ручная обратная связь по ссылке выбора функции и переобучения дала лучшие результаты, как показано на следующем рисунке. Но этот процесс не мог быть интегрирован в автоматизированный процесс обучения и в итоге был нами заброшен.
Модель случайного леса, используемая в процессе настройки параметров, показана на следующем рисунке:
Проблема с дискретными функциями
Хотя случайные леса могут автоматически иметь дело с дискретными переменными, если в тестовом наборе есть дискретные значения вне обучающего набора, алгоритм не может справиться с такой ситуацией. Чтобы решить эту проблему, нам нужно убедиться, что все значения каждого дискретного признака присутствуют в обучающем наборе. Поскольку существует несколько дискретных признаков, его также нельзя решить с помощью простой стратифицированной выборки. Это также одна из болевых точек в применении модели случайного леса.
Подводя итог, мы выполнили работу над моделью случайного леса.Случайный лес прост в использовании, быстро дает результаты и может соответствовать требованиям идентификации в большинстве бизнес-сценариев, став версией 1.0 функции идентификации модуля. Но из-за его алгоритмических недостатков позже мы представили другую модель — XGBoost.
Мультиклассификация XGBoost
Построение модели
XGBoost повышает «точность» дерева с помощью метода повышения, который лучше, чем алгоритм случайного леса в нашем наборе данных. Однако в модели платформы алгоритмов XGBoost много нестандартных процессов, поэтому для реализации автоматической ссылки мы построили модель, как показано на рисунке.
Модель XGBoost показана на следующем рисунке:
предварительная обработка
Для моделей XGBoost требуется больше методов предварительной обработки, в том числе:
1. Кодирование этикетки: процесс предварительной обработки. XGBoost поддерживает только значения меток от 0 до (количество классов — 1). Но для удобства сопоставления значение метки, которое мы сохраняем, соответствует идентификатору классификации платформы, а не от 0 до N или даже непрерывному целому числу. Следовательно, необходимо использовать компонент Label Encoding для кодирования значения, соответствующего требованиям XGBoost.
2. Сохранить таблицу сопоставления меток: дамп данных, поскольку интерфейс прогнозирования будет использовать эту таблицу сопоставления, чтобы избежать классификации платформы, поэтому ее необходимо сохранить дополнительно.
3. Реорганизация данных: в процессе предварительной обработки, чтобы алгоритм случайного разделения не разбивал метки обучающего набора на неполные наборы данных, извлекаются недостающие данные меток обучающего набора. Будут некоторые помехи модели, но это будет работать только в крайних случаях, когда данных очень мало.
Производительность XGBoost на тестовых данных вполне уверена, что снижает сложность порогового деления, а результаты прогнозирования также вполне могут удовлетворить наши бизнес-потребности по «идентификации правильных компонентов», а также могут поддерживать автоматизированные процессы, поэтому он стал наша главная традиция толчка.Обучайте модель.
Сложная проблема: Out Of Distribution
Стоит отметить, что мы не можем комплексно собрать все визуальные образцы вне текущей библиотеки модулей, такой проект подобен сбору фотографий лиц 7 миллиардов человек для построения внутренней системы распознавания лиц в Ali. Отсутствие данных за пределами выборочной базы приводит к тому, что мы фактически теряем скрытую классификацию - отрицательную классификацию выборки. Это также приводит к проблеме Out-of-Distribution, то есть проблеме неточности предсказания, вызванной данными вне выборочной базы, суть которой заключается в том, что в результатах классификации слишком много ложных срабатываний.
В нашем сценарии решить эту проблему сложно из-за сложности сбора всех отрицательных образцов. Как мы сейчас решаем эту проблему?
Настройка порога
Мы используем вывод доверительной вероятности модели классификации в качестве эталона для определения результата классификации, и если он выше определенного порога, считается, что он соответствует определенной классификации. Этот метод имеет эмпирическое значение и эффективно защищает от большинства ошибок OOD на практике.
логическое управление
Для некоторых ошибочных суждений OOD модели алгоритма мы можем идентифицировать их через логические отношения. Если мы считаем, что на одном пути в дереве DSL не может быть несколько одинаковых компонентов (иначе образуется самовложенность), если на пути идентифицировано несколько одинаковых компонентов, то выбираем результат распознавания по степени достоверности. Такая логика помогает нам отфильтровать большую часть ложных срабатываний.
запись отрицательного образца
Предоставляемая нами служба обратной связи позволяет пользователям загружать DSL, которые выявляют ошибки, и после загрузки они расширяются до определенного количества отрицательных образцов и сохраняются. Переподготовка на этой основе может решить проблему ООП.
В настоящее время проблема OOD все еще зависит от логики и методов обратной связи, чтобы избежать ее, уровень алгоритма еще не решил проблему, что мы и планируем сделать на следующем этапе.
Развертывание модели
Платформа алгоритма поддерживает развертывание модели в качестве онлайн-интерфейса, то есть службы прогнозирования, которую можно развернуть одним щелчком мыши через платформу imgcook. Чтобы реализовать процесс автоматического обучения и развертывания, мы также выполнили ряд работ по разработке алгоритмов, которые не будут здесь подробно описываться.
Прогноз и обратная связь
Служба прогнозирования, вход — это DSL (JSON), извлеченный из проекта проекта, а выход — информация о бизнес-модуле, включая идентификатор, местоположение в проекте проекта и т. д.
Перед вызовом интерфейса предсказания платформы алгоритма мы добавили логическую фильтрацию, в том числе:
1. Фильтрация по размеру: Для модулей с большими отклонениями по размеру не входить в логику предсказания, а сразу думать, что они не совпадают
2. Иерархическая фильтрация. Для листовых узлов (то есть простого текста, чистых изображений) мы не думаем, что узел имеет бизнес-значение, поэтому нам не нужно фильтровать.
Ссылка обратной связи по результатам включает в себя автоматическое определение результатов и обратную связь с пользователем.В настоящее время предоставляется только функция загрузки образцов с неправильными прогнозируемыми результатами.
Наша функция распознавания бизнес-модулей, наконец, впервые используется онлайн в рамках рекламной акции 99. Упомянутая выше модель, предварительная логика и предотвращение ООП в конечном итоге приводят к тому, что показатель точности распознавания в бизнес-сценарии может достигать 100% (фактический показатель точности чистой модели не учитывается).
будущая работа
Оптимизация алгоритма
Решение сложных проблем
Как упоминалось ранее, проблема OOD — сложная проблема, и хорошего решения до сих пор нет. У нас есть несколько решений этой проблемы, и мы планируем попробовать их в последующей работе.
Оптимизация функции потерь на основе DNN: сеть DNN по-прежнему строится на основе ручных значений функций пользовательского интерфейса.Благодаря оптимизации функции потерь расстояние между различными категориями увеличивается, расстояние в пределах одной категории сжимается, а пороговое значение расстояния настроен на оптимизированную модель для идентификации данных OOD.
Оптимизация автоматического создания отрицательных выборок: на основе алгоритма XGBoost добавляется модель предварительной бинарной классификации для различения данных в наборе и вне набора, и соответствующим образом оптимизируется случайный диапазон, генерируемый отрицательными выборками. Конкретные планы изучаются.
глубокое обучение
Ручные методы извлечения признаков, хотя и быстрые и эффективные, не могут сравниться с методами глубокого обучения, такими как CNN, по способности к обобщению. Поэтому в будущем мы попробуем алгоритм на основе изображений, используем модель CNN для извлечения векторов признаков пользовательского интерфейса, а затем сравним сходство между входными данными и каждым компонентом пользовательского интерфейса с помощью вычисления векторного расстояния или двухклассовой модели.
В области глубокого обучения может быть больше попыток, не ограничивающихся приведенными выше предположениями алгоритма.
Пример платформы
В настоящее время наша функция генерации образцов имеет такие проблемы, как низкая эффективность конфигурации и несколько типов поддерживаемых алгоритмов, поэтому в последующей работе мы планируем выполнить более обильный дизайн продукта для создания образцов. Функциональность демонстрационной платформы примерно такая, как показано.
Функции продукта на примере платформы показаны на следующем рисунке:
**Расширение исходного кода: **В настоящее время наша ссылка для создания образцов — это переход из Sketch в данные таблицы ODPS. В последующих бизнес-сценариях мы также надеемся поддерживать создание образцов из HTML и внешнего кода. Независимо от источника, на уровне улучшения данных будет много общего.Мы абстрагируем сервис общего алгоритма улучшения и откроем вызов.
**Расширение алгоритма**. Окончательный сгенерированный образец может представлять собой данные таблицы собственных значений для множественной классификации, а также изображения и данные аннотаций в таких форматах, как PASCAL и COCO, которые предоставляются модели обнаружения цели.
**Расширенный интеллект: **В настоящее время пользователи считают, что конфигурация сложна и сложна в использовании при использовании функции создания образцов, и даже образцы часто недоступны из-за неправильной работы. Поэтому мы рассчитываем свести к минимуму пользовательские операции и быстро генерировать эффективные образцы благодаря «интеллектуальности» с расширенными данными.
Таким образом, оптимизация алгоритмов и создание образцов платформы являются основной работой нашего следующего этапа.