Команда VK Cloud перевела вторую статью из серии о создании ML-систем. Первую читайте по ссылке. Здесь поговорим о Data-centric ИИ, данных для обучения, разметке и очистке, синтетических данных и еще немного о Data Engineering и ETL.

Вместо введения


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

Data-centric ИИ


Точность модели можно повысить двумя способами:

  1. Собирайте больше данных или очищайте имеющиеся и следите, чтобы модель оставалась постоянной.
  2. Используйте наиболее современные алгоритмы или настраивайте гиперпараметры модели и следите, чтобы набор оставался постоянным.

Первый подход называют Data-centric, второй — Model-centric. Сейчас ML-сообщество тяготеет к Data-centric ИИ. Многие исследователи и практикующие специалисты пришли к выводу, что повышение качества данных увеличивает их точность больше, чем оптимизация алгоритма. Все миллион раз слышали фразу «Мусор на входе — мусор на выходе», и сейчас она обретает новое звучание.

Вот что говорит Эндрю Ын, учредитель DeepLearning.AI и Landing AI:

Компаниям нужно делать ставку не на код, а на разработку системных, надежных и эффективных методов повышения качества данных. Иными словами, компаниям нужно переходить от подхода Model-centric к Data-centric.

Компании, которые создают качественные ИИ-продукты, также придерживаются подхода Data-centric. Бывший руководитель ИИ-подразделения в Tesla Андрей Карпати рассказал, что на этой должности он большую часть времени занимался данными.


Ведущие ИИ-компании делают ставку скорее на данные, чем на алгоритмы. Источник: Создание стека ПО 2.0 Андреем Карпати

Data-centric ИИ стал настолько популярным, что недавно он оформился в отдельную дисциплину, изучающую приемы повышения качества датасетов. Тем, кто хочет говорить на одном языке с ML-сообществом, я настоятельно рекомендую пройти отличный бесплатный курс MIT «Введение в Data-Centric искусственный интеллект».

Пайплайны данных


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

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

Сначала их нужно обработать, преобразовать, очистить, агрегировать и поместить в хранилище, и только потом дата-сайентисты и ML-инженеры смогут их использовать.

Пайплайн — это способ организовать поток данных


Вариант ETL (Extract — Transform — Load) весьма распространен в аналитике и машинном обучении. С ETL нужно работать следующим образом:

  1. Определить, какие данные и откуда вы хотите собрать.
  2. Объединить эти источники, преобразовать данные в выбранный формат, устранить несогласованности и исправить ошибки.
  3. Спроектировать хранилище и хранить там обработанные и очищенные данные.
  4. Автоматизировать весь процесс, чтобы он выполнялся без участия сотрудников. Пайплайн данных должен автоматически запускаться с определенным интервалом или после определенного события.

Изучить ETL подробнее можно в статье NIX United «Что такое процесс ETL: обзор, инструменты и передовые методы».


ETL-пайплайн. Изображение NIX United

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

Если вам интересно, какие навыки необходимы дата-инженеру, прочитайте статью datastack.tv «Дорожная карта современного дата-инженера». Мне нравится, что в этой области появляется все больше узких специальностей. Я просто счастлива, что дата-сайентисты больше не должны знать все. Какое облегчение!

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

Обучающие данные


Чтобы натренировать классификатор «кошка/собака», нужно показать модели много изображений кошек, повторяя ей: «Это кошка», и много изображений собак, повторяя ей: «А это собака». Если вы не устанавливаете правила и не даете объяснения, вы разрешаете модели самой решить, на что смотреть, чтобы сделать прогноз. В математическом плане это означает, что модель корректирует свои параметры до тех пор, пока в рамках обучения данные на входе не совпадут с ожидаемыми данными на выходе.

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

  1. Модель «кошка или собака» не сможет определить породу собаки/кошки или правильно классифицировать другие виды животных, потому что этой информации не было в обучающем датасете.
  2. Если в метках содержатся ошибки и некоторые кошки маркированы как собаки и наоборот, модель будет путаться и не сможет достичь высокой точности. Неслучайные ошибки могут нанести модели большой вред. Например, если все чихуахуа будут маркированы как кошки, модель научится распознавать чихуахуа как кошек.
  3. Реальные данные содержат смещения. Например, женщинам платят меньше. Так что если вы учите модель прогнозировать зарплаты сотрудников компании, она в конечном счете может выучить, что у женщин зарплаты ниже, потому что именно это она черпает из данных, и начинает считать, что так и должно быть.
  4. Если какие-то классы или сегменты недостаточно представлены или вообще не представлены в обучающем датасете, модель не сможет обучиться на них и будет выдавать неправильные прогнозы.

Обучающие данные должна быть релевантными, униформными, репрезентативными и полными. Значение этих терминов хорошо раскрыто в статье Амаля Джоби «Что такое обучающие данные? Как они используются в машинном обучении».

Вот несколько советов для повышения качества данных.

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

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


Пример несовпадения между обучающими и рабочими (тестовыми) данными. Источник: блог Google Research

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

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

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

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

Разметка данных


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

Есть два вида меток: сделанные вручную и «органические».

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

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

Разметка данных вручную — это чрезвычайно сложный, медленный и дорогостоящий процесс. Не относитесь к нему как к задаче в рамках ML-проекта. Лучше подходите к нему как к отдельному проекту по аннотированию данных с собственным объемом работ, сроками, бюджетом, командой, инструментами и KPI.


Этапы проекта по аннотированию данных. Источник: Передовые методы реализации проектов по аннотированию данных

Если вы много занимаетесь аннотированием данных, советую вам изучить 30-страничный отчет «Передовые методы реализации проектов по аннотированию данных», подготовленный группой авторов, включая Тину Ценг. Выжимки отчета с моими выводами я приведу в этой статье.

В первую очередь нужно решить, кто будет заниматься разметкой. Есть три варианта: краудсорсинг, работа с поставщиками и разметка силами собственной команды. Помню восторги по поводу краудсорсинговых инструментов вроде Amazon Mechanical Turk лет пять назад. Правда, быстро выяснилось, что краудсорсинговая разметка подходит только для очень простых задач, где от участников не требуется никакой или почти никакой подготовки. Так что большинство компаний выбирают между аутсорсингом и собственными командами по разметке. Стартапы обычно склоняются к работе с поставщиками услуг, поскольку с ними проще начинать, а крупные ИИ-компании создают собственные отделы по разметке данных, чтобы контролировать весь процесс и обеспечивать высокое качество аннотирования. Например, в Tesla в отделе ручной разметки данных работают 1000 штатных сотрудников. Просто к слову пришлось.

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

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

Инструмент аннотирования имеет значение. Аннотаторы обычно получают почасовую оплату, так что если вам удастся наладить их работу в быстром темпе и с высокой точностью, это сэкономит вам много денег. Успевает ли аннотатор за час 100 выборок или 300, особенно бросается в глаза в крупномасштабных проектах. Так что отнеситесь к выбору серьезно. Вот на что стоит обратить внимание:

  • Сколько времени нужно на разметку отдельной выборки? Есть инструменты, разработанные специально для задач по обработке естественного языка. А для 2D- или 3D-компьютерного зрения используются совершенно другие инструменты.
  • Поддерживается ли разметка на базе ИИ? Это как раз те инструменты, которыми имеет смысл воспользоваться. В таких программах можно одним щелчком мыши по объекту прогнозировать маски сегментации или деплоить собственные модели, чтобы оптимизировать процесс разметки.
  • Насколько хорошо инструмент подходит для вашей инфраструктуры? Инструмент для аннотирования интегрируется в пайплайн данных. Как только поступают данные, из них автоматически делается выборка и отправляется аннотаторам. Они размечают, и метки автоматически направляются в базу данных. Некоторые инструменты подойдут для вашей инфраструктуры лучше, чем другие, это тоже надо учитывать.

Вот список Open-Source-инструментов для аннотирования, а вот классное сравнение нескольких бесплатных и платных инструментов.

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

Вот по этим формулам можно приблизительно оценить затраты и время:

  1. Сроки разметки (в человеко-часах) = время на разметку выборки (в часах) × размер датасета (в выборках) + время, выделенное на обучение и исправление ошибок (в человеко-часах).
  2. Сроки разметки (в рабочих днях) = время разметки (в человеко-часах) / количество сотрудников / 8 часов.
  3. Расходы ($) = часовая ставка аннотатора ($) × время на разметку (в человеко-часах).

Как бы вы ни старались, метки данных все равно будут неочищенными. Люди ошибаются, отвлекаются или неправильно понимают задачу. Так что качество меток обязательно нужно проверять. И конечно, алгоритм или инструмент, который вы выбрали для этой задачи, обязательно нужно интегрировать в пайплайн данных. Я не устаю повторять: все нужно автоматизировать.

Один из таких инструментов — Cleanlab. Его разработали выпускники MIT, а недавно он стал очень популярным. Cleanlab повышает качество разметки для изображений, текста и табличных данных с помощью статистических методов и алгоритмов машинного обучения (посмотрите в блоге Cleanlab, на что он способен).

И еще пара слов об аннотировании данных: рекомендую полезную статью Synced «Аннотирование данных: миллиардный бизнес в основе достижений искусственного интеллекта». Из названия понятно, о чем речь — очень рекомендую прочитать.

Синтетические данные


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

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

Если вы интересуетесь этой темой, вот отличный ресурс «Что такое синтетические данные?» от NVIDIA.

Заключение


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

Попробуйте ML Platform от VK Cloud — она помогает построить процесс работы с ML-моделями от дизайна до деплоя, контролировать качество экспериментов и моделей. Для тестирования мы начисляем новым пользователям 3000 бонусных рублей и будем рады вашей обратной связи.

Stay tuned

Присоединяйтесь к телеграм-каналу «Данные на стероидах». В нем вы найдете все об инструментах и подходах к извлечению максимальной пользы из работы с данными: регулярные дайджесты, полезные статьи, а также анонсы конференций и вебинаров.

Комментарии (0)