26
Июл
2019

12 правил, которые я усвоил как инженер по машинному обучению

Решили посвятить себя машинному обучению? Хотите повысить качество работы? Вот полезные уроки от практика, которые помогут добиться успеха. 12 правил, которые я усвоил как инженер по машинному обучению Для понимания контекста смотрите, в чём заключалась моя роль. Маленькая команда консультантов по машинному обучению занималась и сбором данных, и обработкой, и построением моделей, и развёртыванием служб в любых мыслимых отраслях. Поэтому мы исполняли много ролей.

Как выглядел рабочий день

В 9:00 я говорил «доброе утро» и наливал чашку кофе. Затем смотрел записи за предыдущий день и читал сообщения в Slack. 12 правил, которые я усвоил как инженер по машинному обучению Я просматривал статьи. На это уходил час. Почему так долго? Если для выполнения вашей работы придумали лучший способ, то изучите и примените его. Когда приближается крайний срок, не до чтения. Проекты отнимали большую часть дня. 16:00 – время сворачивать дела. Я чистил код и добавлял комментарии. Его будут читать другие? Задавайте себе этот вопрос. Как правило, это окажитесь вы сами. Удивительно, что ход мыслей забывается. К 17:00 код – на GitHub, а заметки на следующий день – в блокноте.

1. Дело в данных

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

2. Проблемы общения сложнее технических

Главные трудности – коммуникативные. Конечно, присутствовали технические проблемы, но в их решении и состоит задача инженера. Не стоит недооценивать значение общения, внутреннего и внешнего. Нет ничего хуже, чем решить техническую задачу, когда она неправильная. Как это происходит? Внешне появляется несоответствие между желанием клиента и не столько тем, что делает команда, а сколько тем, что предлагает машинное обучение. Внутренне, когда у сотрудников куча ролей, сложно убедиться в стремлении каждого к одной и той же цели. Ещё машинное обучение кажется волшебным. И временами это так. Но когда случай не тот, важно признать. Как исправить? Контактируйте. Регулярно. Клиент понимает, что предлагаете? Вы осознаёте его проблему? Он представляет, что принесёт машинное обучение, а что нет? Каким способом расскажете о результатах? Как насчёт внутреннего общения? Судите о сложности проблемы по количеству программных инструментов для её решения. Asana, Jira, Trello, Slack, Basecamp, Monday, Microsoft Teams. Вот результативный способ: пишите сообщения в канале проекта в конце дня.

Обновляйте:

  • 3–4 пункта
  • о том, что выполнили
  • и почему

Следующее:

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

3. Устойчивость > передовой уровень

Мы столкнулись с проблемой: классификация текста на две категории. Цель состояла в том, чтобы пользователи отправили фрагмент для автоматического определения нужной категории. Когда модель не предоставляла точный прогноз, передавали текст в человеческий классификатор. Нагрузка составляла 1000–3000 запросов в день. BERT – фаворит года. Но без вычислений Google-масштаба, обучение модели с помощью BERT требовало избыточных манипуляций. Вместо него использовали ULMFiT, формально не передовой, но с адекватными результатами. И с ним проще. Выпускайте то, что работает, и выиграете. Избегайте затягивания и лишнего перфекционизма.

4. Два пробела в машинном обучении

Первый – переход от намеченной к проектной работе. И разрыв между начальными моделями и развёрнутыми. Поиск в интернете курсов машинного обучения даёт кучу результатов. Я использовал многие для создания собственного – Степень магистра ИИ. Но после завершения курсов, когда я начинал работу инженером по машинному обучению, навыки базировались на структурированной основе курсов. На самом деле, проекты не структурированы. Не хватало знаний. Навыков, которым нельзя обучить на курсе. Как подвергать сомнению данные, что исследовать, а что использовать. Я общался на эту тему с талантом Австралии. Но также пригодилась готовность учиться и ошибаться. Конечно, не ставьте промахи за цель. Но чтобы разобраться, выясните, что не так. Если вы штудируете машинное обучение на курсе, продолжайте. Но вооружитесь знаниями, применяя усвоенное на практике, трудясь над собственными проектами. Как насчёт развёртывания? Я заметил тенденцию. Машинное обучение и разработка программного обеспечения объединяются. С такими службами, как Seldon, Kubeflow и Kubernetes, вскоре оно станет очередной частью стека. Один вопрос – построить модель в Jupyter Notebook, но как сделать её доступной для тысяч, миллионов пользователей. Судя по недавним выступлениям на мероприятиях Cloud Native, люди за пределами крупных компаний не знают, как это сделать.

5. 20% времени

Мы соблюдали правило: 20% дня тратить на исследование вещей в предметной сфере. Это помогало. Как раз потому и применили ULMFiT вместо BERT. Используйте:
  • 80% на базовый продукт (профессиональные услуги).
  • 20% на новые вещи, связанные с ним.
Если ваше бизнес-преимущество – быть номером один в том, что делаете, то будущий бизнес зависит от того, остаётесь ли вы лучшим в том, что делаете. Постоянно обучайтесь.

6. 1 из 10 публикаций читается, меньше используется

12 правил, которые я усвоил как инженер по машинному обучению Это грубый показатель. Но исследуйте случайный набор данных или явление, и вы увидите масштаб распространения. Закон Прайса гласит, что половина публикаций происходит от квадратного корня количества всех авторов. Из тысячи заявок в год – 10 новаторских научных статей. И из этих 10 передовых публикаций 5 окажутся одного и того же института или человека. Вывод? Не спешите за каждым последним прорывом. Лучше создайте прочную основу принципов и применяйте их. Это те, что выдержали испытание временем. Но тогда появляется другая трудность.

7. Будьте своим большим скептиком

И вы справитесь с проблемой «исследование против эксплуатации». Эта трудность – дилемма между испытанием нового и повторным применением того, что работает.

Эксплуатация

Легко запустить использованную модель и получить высокоточное число, а затем сообщить команде. Но если вы получаете результат, не забудьте проверить работу, и снова, и снова. Заставьте команду сделать то же. Вы стали инженером неспроста.

Исследование

20% времени помогает здесь. 70/20/10 ещё лучше. Потратьте 70% на основной продукт, 20% – на его создание и 10% – на амбициозные цели, которые могут не получиться.

8. Модельная задача работает в первую очередь

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

9. Резиновая уточка

Когда застряли с проблемой, то сидя и пялясь в код, вы найдёте решение, или нет. Лучше поговорите с товарищем по команде. Притворитесь, что он – ваша резиновая уточка. «Рон, я пытаюсь перебрать два массива и отследить состояние. Затем хочу объединить значения в список кортежей.» «Циклы в циклах? Почему бы тебе не векторизовать это?» «Смогу ли?» «Давай разберёмся.» 12 правил, которые я усвоил как инженер по машинному обучению

10. Модели с нуля приходят в упадок (вам не нужно их начинать)

Если проблема с данными не так специфична, то много подобного: классификация, регрессия, прогнозы временных рядов, рекомендации. Службы вроде Google, Microsoft AutoML и других делают машинное обучение мирового уровня доступным для каждого, кто загрузит набор данных и выберет целевую переменную. Это начало, но они набирают обороты. Как разработчик, вы используете библиотеки, такие как fast.ai, которые делают современные модели доступными в пару строк кода, и коллекции готовых моделей PyTorch hub и TensorFlow hub, предлагающие то же. Что это значит? Вам по-прежнему нужно знание принципов науки о данных и машинного обучения. Но понимание того, как применить их к проблеме, ещё ценнее.

11. Математика или код?

По части клиентских вопросов команда занималась в первую очередь вторым, который писали на Python. Временами я баловался математикой, читал публикации и повторял испытания, но в 99,9% случаев в действующих фреймворках она спрятана. Это не значит, что математика не нужна, ведь машинное и глубокое обучение – формы её прикладных разделов. Для практикующего инженера хватает понимания операций над матрицами, линейной алгебры и математического анализа, особенно цепного правила. Помните, цель состояла не в изобретении нового алгоритма, а в демонстрации клиенту потенциала машинного обучения (или отсутствия такового) для его бизнеса. Примечание: Как раз fast.ai выпустила новый курс Deep Learning from the Foundations о математике и коду глубокого обучения с нуля. Его предназначали для таких людей, как я, знакомых с применением глубокого и машинного обучения, но без математического образования. Чтобы исправить это, я прохожу его и сразу добавляю в список любимых ресурсов по машинному обучению. С прочной основой вы придёте к собственному последнему слову техники, а не повторению предыдущих.

12. Работа прошлого года аннулируется в следующем

Это данность. И в большей степени из-за слияния разработки программного обеспечения и машинного обучения. Но вы сами на это подписались. Что остаётся прежним? Фреймворки и библиотеки будут меняться. Но у лежащих в основе статистики, вероятности и математики нет срока годности. Самая большая проблема по-прежнему в том, как вы их применяете.

Что теперь?

Можно больше, но 12 – достаточное количество. Работа в Max Kelsen – лучшая в моей жизни. Уволиться – нелёгкий выбор, но я решил проверить полученные знания самостоятельно. Рассказываю об этом на YouTube.

Работали специалистом по машинному обучению? Поделитесь открытиями!

Запись 12 правил, которые я усвоил как инженер по машинному обучению впервые появилась Библиотека программиста.
Share

Тебе может это понравится...