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

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

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

Что?"

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

Подождите… как мы определяем критерии «хорошо» и «полезно»? Мы можем либо проигнорировать эти замечания и двигаться дальше, либо внимательно изучить их. В производстве полезно четко понимать значение этих прилагательных, которые время от времени всплывают.

Хорошие данные и плохие данные

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

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

Хорошая функция или хорошие данные имеют отношение к проекту, над которым мы работаем. Плохие данные — полная противоположность.

Представьте, если я настаиваю на добавлении в наш проект нескольких таких функций. Наша модель не будет чем-то, что предсказывает экономические колебания. Это будет то, что предрекает мусор. Так появилась фраза «Мусор на входе, мусор на выходе».

Вот одно из интересных описаний хороших и плохих данных, которые я нашел:

Что тогда полезного?

Было еще одно ключевое слово, которое использовалось для данных, которые нам нужно было собрать. Уполезный. Как узнать, важна ли функция для проекта?

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

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

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

Вопрос «Как?»

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

  • Как получить нужные нам данные?
  • Сколько данных мы должны собрать?

Источники

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

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

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

Сколько данных мы должны собрать?

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

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

Как все может пойти не так?

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

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

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

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

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

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

Вы можете начать читать здесь, если не ознакомились с серией жизненных циклов проектов машинного обучения. Подпишитесь на Neuronuts, если хотите быть в курсе следующих статей из этой серии, или следите за нами в Instagram или LinkedIn, чтобы получать другую информацию, связанную со статьями! Спасибо, что дочитали до конца. ✌️.

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

  1. Потребности пользователей и определение успеха, Руководство People + AI, Google
  2. Сбор данных + оценка, руководство «Люди + искусственный интеллект, Google»
  3. Лучшие практики машинного обучения
  4. Конкурс инклюзивных изображений