Эта статья отредактирована и составлена на основе «Практики машинного обучения / глубокого обучения», которой поделился г-н Ву Цзяньцзюнь, старший эксперт по искусственному интеллекту из Ping An Life Insurance & DataFunTalk Algorithm Theme Salon Technology — «Последние исследования и практика применения машинного обучения / Глубокое обучение в финансовой сфере». Слегка реорганизован на основе неизменного первоначального замысла.
Сегодня я в основном делюсь следующими аспектами: обзор технологии применения ИИ Ping An Life, обработка данных и кодирование, приложение модели и обслуживание в реальном времени, обучение алгоритму и модели.
Во-первых, давайте поговорим об обзоре технологии приложений искусственного интеллекта Ping An Life.Во-первых, она будет разработана на платформе больших данных, которая разделена на разработку на уровне платформы и разработку на уровне приложений. Разработка на уровне платформы в основном включает автономные вычислительные платформы, вычислительные платформы в реальном времени и механизмы многомерного анализа; разработка на уровне приложений включает сбор и очистку данных, разработку статистических отчетов и анализ портретов. Алгоритмические исследования делятся на три направления.Первое – статистический анализ.Финансовые данные более сложны и требуют много человеческих и финансовых ресурсов для проведения статистического анализа, который используется больше. Существует также два типа методов: машинное обучение и глубокое обучение, Основные проблемы, которые необходимо решить: машинное обучение в основном решает классификацию и рекомендации, граф знаний, обработка естественного языка, глубокое обучение решает количественные актуарные и визуальные модели, а обучение с подкреплением в разработке. Фоновая система разделена на две части: одна — разработка компонентов, а другая — разработка сервисов. Компоненты в основном представляют собой сервисную платформу, учебную платформу, контейнерную платформу и некоторые компоненты распределенного хранилища. Служба модели в основном предназначена для разработки некоторых специальных систем для этого приложения и подключения к специальным службам приложений.
На картинке выше архитектура нашей платформы.Первый сбор данных,который в основном опирается на Kafka.Для старой системы у него свой механизм сбора.После завершения сбора данных он поступает в Hadoop и реляционную БД. Очистка данных в основном опирается на Hive и Spark, Hive реализует HQL и Spark для комплексной обработки данных. Кроме того, также требуется некоторый аналитический анализ, который разделен на две части: первая — это быстрый анализ одной таблицы в реальном времени, а вторая — анализ ассоциации нескольких таблиц в реальном времени. Единая таблица в основном использует Druid и ES для многомерности, а ассоциация нескольких таблиц в основном опирается на Presto и Impala. Некоторые используют Matlab и SAS для актуарных количественных моделей и Tensorflow для глубокого обучения, Hbase и Redis используются для хранения изображений и запросов в реальном времени, а некоторые контейнерные платформы обеспечивают вызовы внешних контейнеров.
Далее давайте поговорим о том, почему мы используем технологию ИИ. ИИ по-прежнему широко используется в финансовой сфере. Многие предприятия управляются данными, а финансы сильно зависят от данных. Конкретные приложения включают управление агентами, Ping An имеет миллионы агентов и использует алгоритмы искусственного интеллекта для управления набором агентов, продажами и обновлениями, а также интеллектуальным обслуживанием клиентов, интеллектуальным продлением, интеллектуальными претензиями и агентами, которые используются во многих сценариях.
Данные — это ядро, давайте поговорим о наших данных и их обработке. При интеллектуальном анализе данных в страховой отрасли возникает много проблем. Первая проблема заключается в том, что цикл принятия решений является длительным, а взаимодействие происходит редко. Процесс принятия решений о потреблении относительно рационален. Следовательно, эффективна модель или нет, она должна пройти длительный период испытаний, и в этот период она столкнется с большими рисками. Другие данные более сложны и менее стабильны. Сложность данных отражается в том, что бизнес-линий много, и для каждой бизнес-линии много носителей.Сценарии, генерируемые каждыми данными, тоже разные, и типы данных тоже очень разные, в том числе текстовые, LBS, а также некоторые изображения и естественный язык. Существует также относительно высокая стоимость.Модели, сделанные в Интернете, должны пройти через текст A / B, но страховая отрасль не может этого сделать.
Итак, как решить эти проблемы, как правило, из следующих трех аспектов: создание портрета, проверка качества, встраивание данных. Во-первых, как создается портрет, а затем данные проверяются, потому что полученные данные не обязательно надежны, а затем данные встраиваются.Причина встраивания заключается в том, что данные относительно сложны, и стандартизированное представление данные необходимо предоставить.
Чтобы наладить портретное производство, сначала установите уровни данных (ODS, DW, DM, MM). Это разделение данных в основном ориентировано на бизнес. Хотя нет никаких технических трудностей, его нелегко построить хорошо. Затем абстрагируйте и унифицируйте модель данных, а также абстрагируйте и унифицируйте три типа данных: поведенческие данные, фактические данные и данные изображения. Ежедневно генерируется множество поведенческих данных, таких как страховые звонки, заявки, нажатия кнопок в Интернете и т. д., которые классифицируются по пяти элементам поведения, то есть кто выполняет какое действие с каким объектом, в какое время и с интенсивностью. данного действия. Тройка фактов состоит из субъекта, сказуемого и объекта, а образ вложен. Есть много способов сделать портреты после абстрагирования и объединения данных.Первый из них - производство в стиле мастерской, которое более утомительно, чтобы выживать портреты по требованиям руководителей. В настоящее время стандартом является стандартизация формата портретных требований, чтобы реализовать автоматизированный производственный механизм.Преимущество этого заключается в том, что сначала можно сэкономить рабочую силу, а требования можно использовать повторно.
Далее поговорим о том, как проверить качество данных.Проверка качества всегда была сложным моментом.Показатели очень сложные и времени очень мало.Трудно судить о точности расчета. Это в основном начинается с трех аспектов.Во-первых, стабильность.Хотя данная модель трудно судить о ее устойчивости, необходимо знать, насколько она неустойчива. Во-вторых, наблюдать его важность.Некоторые показатели очень важны в действительности, но не важны в модели.Этот вид моделирования имеет проблемы.Поэтому необходимо судить о важности переменных в модели.К показателям оценки относятся IV значение , хи-квадрат и важность переменных Свойства (веса в линейных моделях, частота вхождений в алгоритмах). Затем необходимо исключить соответствующие переменные.Показатели для проверки корреляции включают коэффициент корреляции, PCA/RUFS, коэффициент инфляции дисперсии и уменьшение размерности (PCA недостаточно стабилен, поэтому используется алгоритм RUFS). Для проверки стабильности средства разработки spark+python конфигурация данных является гибкой, а результаты выводятся в один клик.
Существует множество методов встраивания данных, таких как встраивание изображений, встраивание слов и встраивание узлов графа. Сначала структурированные данные искусственно комбинируются, затем для объединения признаков используется GBDT, а для представления признаков с помощью низкоуровневых векторов декомпозиции используется кодирование FM.Теперь можно использовать кодирование KB. Для текстовых данных модель TF/IDF, word2vec и данные изображения в основном используются для SITF и CNN. Основная работа заключается в том, чтобы встроить данные и объединить их со следующими данными, чтобы сделать их более унифицированными.
Далее поговорим о том, как обучать алгоритмы и модели.В настоящее время это в основном основано на распределенном или параллельном машинном обучении. Перед лицом большого количества данных, сложных моделей и больших параметров платформа для параллельных операций может решить эту проблему.Платформа требует эффективной связи, надежной отказоустойчивости и сильной способности описания.Причина, по которой машина не может выполнять все алгоритмы заключается в том, что он не может описать алгоритм, поэтому необходима описательная платформа. Текущие типы параллелизма включают параллелизм моделей, параллелизм данных и гибридный параллелизм. В настоящее время чаще используется параллелизм данных, данные сначала делятся и распределяются по каждому воркеру для расчета, а в модель передается градиент, модель его агрегирует, возвращает воркеру, а затем использует воркер для обновления местная модель.
Распределенное машинное обучение требует сильных описательных способностей, что является вопросом упрощенной парадигмы программирования. Такая парадигма, как процессно-ориентированная и объектно-ориентированная, заключается в том, может ли эта парадигма полностью описать алгоритм. Самая ранняя парадигма - MP, а основная реализация - MPI, но она предоставляет только базовые коммуникационные примитивы с почти неограниченным программированием, высоким порогом программирования и отсутствием механизма восстановления после ошибок. Позже я пошел в MR, в основном для изучения Hadoop, он прост в программировании и может быть отказоустойчивым, но он жестко ограничен и негибок, обмен данными происходит через диск, что неэффективно. Далее идет DAG (направленный ациклический граф).Типичная реализация - искра, вычисления в памяти и ослабление ограничений.Он может гибко реализовывать сложные алгоритмы, не может иметь циклов и не может поддерживать большое количество итераций.Цель - отказоустойчивость. Другой — расчетный граф, tensorflow — типичный представитель, преимущество в том, что он автоматически дифференцирует, поддерживает произвольную итерацию и может реализовать большинство алгоритмов NN, недостаток — слабая отказоустойчивость. Позже появились динамические расчетные графы, в основном представленные Torch, а также поддерживаемые tensorflow, который поддерживает изменение графов во время расчета, и очень практичен для RNN.
Модель обновления параметров решает, как синхронизировать воркеры в кластере.Первый метод — это BSP, в основном включающий Pregel (не с открытым исходным кодом) и Spark.Если 10 воркеров завершат один раунд, они передадут параметры на центральный узел, а затем обновят их опять же Этот метод медленнее, но он может гарантировать сходимость. Затем есть ASP, который является полностью асинхронным, поэтому он в основном используется для многоядерных одномашинных систем с использованием модели хранения общего типа; этот метод представляет собой случайное обновление без гарантии сходимости, если модель сильно разрежена, конфликтов меньше, и есть определенный эффект регуляризации. Типичной реализацией SSP является petuum, который синхронизирует параметры, когда граница самого быстрого работника и самого медленного работника превышает порог.Преимущество в том, что скорость высокая и сходимость гарантирована. Когда дело доходит до обновления параметров, мы должны говорить о ps-lite, который основан на PS и характеризуется тем, что модель опирается на распределенное хранилище, поддерживает массивные параметры и поддерживает три вышеуказанных режима обновления. Это два аспекта машинного обучения, которые необходимо понять.
Далее поделитесь, как мы этого добились. Во-первых, кластер распределенного машинного обучения опирается на spark.Возможности Spark: описание вычислительных задач с помощью DAG, абстрагирование операций с данными с помощью RDD, обмен данными в памяти, синхронное обновление параметров (BSP), бесшовное соединение с производственной средой и в основном использование данных. параллелизм. Многие пакеты были разработаны на основе распределенных кластеров spark: пакет MLlib реализует дерево решений, SVN и LR, пакет splash реализует MCMC, Gibbs Sampling и LDA, что в 20 раз быстрее, чем mllib, а также пакет Deep Learning4j, который в основном используется для глубокого обучения на spark.Обучение, поддерживает GPU, но недостаточно гибок, чтобы автоматически писать структуру сети без TensorFlow; следующая наша реализация PAMLkit, которая поддерживает алгоритмы NB, Ada Grad+FM, FTRL+LR.
Основываясь на практическом опыте искрового распределенного кластера, первое, что нужно сделать, это понять алгоритм без отклонений. Следующий шаг — иметь хорошую структуру кода: класс градиента (Gradient), класс обычного элемента (Updater) и класс оптимизатора (Optimizer) не зависят друг от друга. Есть и соответствующий опыт тюнинга, все вышеперечисленное суммировано из ямы в нашем реальном бою. Используйте как можно больше разреженных векторов и выполняйте обход или вычисления разреженным способом, что приведет к снижению производительности, если вы не будете осторожны.
Далее поговорим о том, как проводить глубокое обучение в TensorFlow. Приложения TensorFlow в основном предназначены для структурированных данных, дополненных визуальным текстом, широко используются алгоритмы DNN, успешно применяются другие родственные алгоритмы (CNN, AE), а обучение с подкреплением находится в стадии разработки. Распределенные функции TensorFlow: кодирование для формирования обучающего кластера и назначения задач; необходимость вручную запускать процесс на каждой машине; необходимость заранее разделить данные и скопировать их на каждую машину вручную; в принципе отсутствует механизм отказоустойчивости. Метод обучения прошел следующие три этапа: одномашинный и однокарточный, данные считываются за один раз как единое целое и отправляются в видеопамять пакет за пакетом в ходе итерации; позже одномашинный двух- используется карта, используется очередь ввода, а данные чередуются между графическими процессорами после выхода из команды. Синхронный режим, усредняется градиент каждого графического процессора и обновляются параметры, позже он переходит в многомашинный и мультикарточный, используя Междуграфовый и квазисинхронный режимы. Разделите данные заранее, не запуская процесс вручную, в основном на основе pdsh для распределения данных и запуска служб.
Во многих случаях он основан на совместном моделировании spark и TensorFlow, Spark в основном полагается на свою параллельную способность, а TensorFlow строит сложные модели. Как совместить их, например модель GBDT+FM+DNN, GBDT+FM обучается на искре, DNN на TensorFlow. Первый этап — копирование вывода spark непосредственно в TensorFlow, а TensorFlow нарезает данные и копирует их на каждую машину. В настоящее время выходные данные искрового обучения помещаются в HDFS, а затем PDSH используется для запуска каждого рабочего процесса в TensorFlow, прямого чтения некоторых данных в HDFS и продолжения обучения. В настоящее время кластеры Spark и tensorflow разрабатываются для сосуществования, и каждый раздел RDD запускает вычислительный граф и программирование с одним стеком.
После того, как модель обучена, она должна предоставлять услуги.Проблемы предоставления услуг включают в себя: множество моделей, длинную историю моделирования, широкие бизнес-требования, сотни моделей, запущенных в производство, децентрализованную работу и сложный мониторинг. Другое дело, что существует множество платформ моделирования, таких как MATLAB, java, python, SAS, R, Spark, tensorflow и другие платформы моделирования, потому что существует множество количественных и актуарных моделей, которые очень важны. Тогда стратегии алгоритмов являются сложными, включая алгоритмы дерева решений, различные линейные модели, модели глубокого обучения, традиционные алгоритмы временных рядов и т. д., и различные алгоритмы часто комбинируются. Существуют также различные способы обработки данных, обработка данных очень беспорядочная и персонализированная, модель включает в себя как исторические данные, так и данные в реальном времени, и ее необходимо объединять в режиме онлайн, а разные модели должны обрабатывать данные по-разному. Система нужна для достижения целей: централизованное управление и единый мониторинг; вторая быстро выходит в интернет, экономит ресурсы, масштабируема и высоконадежна; не может ограничивать инженеров-моделей и поддерживает кроссплатформенность; должна поддерживать типичную модель преобразование форматов, необходимо определить типовые алгоритмы обработки данных.
Для достижения цели разрабатывается множество компонентов с открытым исходным кодом. Фреймворк использует бережливость, которая характеризуется: межъязыковым общением, поддержкой python, java, c++ и т. д.; u является зрелым и стабильным, с открытым исходным кодом в течение десяти лет и широко используется; легким и простым, с компилятором ( менее 3М). Zookeeper используется для координации сервисов, Redis — для онлайн-хранилища, Netty — для внешней коммуникационной библиотеки, docker — для запуска контейнеров, а Nginx — для балансировки нагрузки.
Архитектура модельного приложения разделена на три уровня: уровень обработки модели, уровень вычисления данных и уровень интерфейса. Ядром уровня обработки модели является синтаксический анализатор модели для обеспечения кросс-платформенности, кросс-языка и трех выходных форматов: PMML (линейная модель), protobuf (TensorFlow) и пользовательских форматов. Модель обучена формировать файлы моделей, и онлайн-сервис алгоритмов будет загружать эти файлы для предоставления услуг. Бизнес-приложение вызывает модель, поддерживает протокол http и использует балансировщик нагрузки для определения каждой службы приложения. Служба приложения представляет собой соответствующий уровень вычисления данных. Определенные связанные операторы разрабатываются для обработки данных, реализации комбинации функций и их передачи. в маршрутизатор модели.Маршрутизаторы модели вызывают связанные службы. Существует также платформа мониторинга управления.
--КОНЕЦ