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

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

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

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

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

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

Создание данных

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

Сбор данных

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

Прежде чем приступить к сбору данных, мы должны задать себе определенные вопросы, которые помогут нам выбрать правильные инструменты, технологии и платформу.

Нас интересуют все данные или часть данных?

каким образцам мы будем следовать?

Можем ли мы терпеть свободные точки данных?

Достаточно ли точны и надежны эти данные?

Как заинтересованные стороны могут получить доступ к этим данным?

Какие функции можно сделать доступными, объединив несколько источников данных?

Будут ли эти данные доступны в режиме реального времени?

Сколько будет стоить этот процесс с точки зрения времени и ресурсов?

Как будут обновляться данные после развертывания модели?

Снизит ли использование самой модели репрезентативность данных?

Есть ли личная информация (PII), которую необходимо скрыть или сделать анонимной?

Существуют ли такие характеристики, как пол, которые по закону нельзя использовать в данном бизнес-контексте?

Обработка данных

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

  • Все ядра на одной машине
  • Использование графического процессора
  • Распределенные вычисления MLib и Spark.

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

Однако для параллельной обработки эти инструменты могут быть полезны (ниже приведен не полный список всех параллельных фреймворков, а некоторые популярные).

  • Спарк и MLib
  • FairScale — расширение Pytorch.
  • Элефас — расширение Керас.
  • TensorFlowOnSpark — среда глубокого обучения TensorFlow с Apache Spark и Apache Hadoop. Он обеспечивает как распределенное обучение TensorFlow, так и вывод в кластерах Spark.
  • Mesh TensorFlow — Mesh TensorFlow (mtf) — это язык распределенного глубокого обучения, способный определять широкий класс распределенных тензорных вычислений.

Хранение данных

Существует множество данных, и в соответствии с вариантами использования в бизнесе для обучения модели требуются разные типы и объемы данных. Эти данные могут быть структурированными (табличные данные), неструктурированными (изображения, аудио, видео) от большого объема до малого объема, и для этого определенно реляционная база данных не может подойти из-за ее огромной стоимости. Для управляемого облака существуют эти хранилища, которые обеспечивают дешевую репликацию данных, чтобы избежать потери данных, например. Хранилище SaaS — Azure BLOB, Azure, ADLS), хранилища S3 (AWS) и IaaS — HDFS (распределенная файловая система Hadoop).

Управление данными

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

Анализ данных

Анализ данных — это сердце науки о данных. Мы часто слышим утверждение, что «специалисты по данным тратят 80% своего времени на подготовку данных», и это утверждение в значительной степени подытоживает процесс анализа данных. Без этого мы не можем подтвердить и сделать выводы об особенностях и их влиянии на модель. И по той же причине специалисты по данным тратят 80% своего времени на получение данных, очистку данных, агрегирование данных, изменение формы данных и изучение данных с помощью исследовательского анализа данных и визуализации данных.

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

Обучение моделей

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

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

Для небольших данных-

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

Для больших данных —

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

Для неструктурированных данных —

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

Для структурированных данных —

  • Сложнее получить больше данных. Модели ML обычно требуют не менее 100 примеров для каждого класса, чтобы научиться классифицировать этот класс. Поэтому, если у вас есть большое количество классов, например. 500, вам уже нужно как минимум 50 000 примеров. Сбор данных может быть особенно сложным, когда некоторые классы встречаются редко. Когда у вас большое количество классов, вполне вероятно, что некоторые из них будут редкими.
  • Человеческая маркировка может быть сложной для некоторых случаев использования, когда нам нужны экспертные знания и навыки в предметной области для определения фактической истинности.

Интерпретация

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

Для решения/рекомендации пользователь может спросить

Зачем ты это сделал?

Почему не что-то другое?

Когда вы добиваетесь успеха или терпите неудачу?

Как я могу доверять тебе?

Как исправить ошибку?

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

Чтобы узнать больше об интерпретируемости, обратитесь к этому блогу.

Организация данных

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

Цикл мониторинга и обратной связи

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

Проблемы в жизненном цикле данных

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

Отсутствие данных хорошего качества

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

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

Дрейф данных

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

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

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

Безопасность данных и конфиденциальность

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

Обмен данными

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

Управление метаданными

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

Происхождение данных

Важно отслеживать путь данных от создания до развертывания, включая цикл обратной связи, чтобы конвейер можно было обновить и использовать для достижения оптимальной производительности. Почти каждая организация борется с этим. Некоторые поддерживают его частично, а некоторые находятся на пути к тому, чтобы с этим справиться. Тем не менее, есть несколько инструментов, например. Каталог данных Talend, IBM DataStage, Datameer, Spark Delta (хорошее вариант с открытым исходным кодом, а также с проприетарным продуктом, известным как Databricks Delta) и т. д.. это можно использовать, но реализация не всегда проста, потому что во всем этом жизненном цикле данных мы используем разные стеки для решения проблемы, и соединение каждой точки является сложной задачей.

Заключение

Данные — это сердце приложения ML/AI, и обработка данных на каждом этапе во многом определяет успех всех приложений данных. На практике при реализации существует несколько проблем, и принятие решения о соответствующих услугах и инструментах для создания надежного потока данных является сложной задачей, но если процессы спроектированы и спроектированы должным образом, большинство проблем можно легко устранить. Сообщество Global Data Management — действительно хорошее место, где можно найти рекомендации по управлению данными, но нам нужно предпринимать все шаги с долей скептицизма, поскольку работа с данными для ML/AI немного сложнее. разнообразны и быстро развиваются.

Спасибо, что нашли время, чтобы прочитать это💕

Рекомендации

https://www.sciencedirect.com/science/article/pii/S1877050920315465

https://www.youtube.com/watch?v=06-AZXmwHjo

https://www.dama.org/cpages/books-referenced-in-dama-dmbok
Книга Чипа Хьюена  — Проектирование систем машинного обучения: итеративный процесс для готовых к производству приложений