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

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

Чтобы изложить приведенные ниже моменты в контексте, я объясню, в чем заключалась моя роль.

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

Прошедшее время связано с тем, что с тех пор я оставил свою роль инженера по машинному обучению, чтобы заняться собственным бизнесом. Я снял об этом видео.

Как выглядел мой день

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

Как только сообщения были очищены, я просматривал статьи и сообщения в блогах и читал те, которые прижились. Обычно было что-то, что могло помогать в том, над чем я работал. Чтение занимало до часа, а иногда и больше, в зависимости от того, что это было.

Почему так долго?

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

Сейчас 10 утра.

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

Мой блокнот представлял собой непрерывный дневник дня.

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

И если я застрял.

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

Большую часть времени я проверял, чтобы данные были в форме, готовой для моделирования.

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

К 17:00 мой код был на GitHub, а заметки на следующий день были в моем блокноте.

Это был идеальный день, но не каждый день. Иногда в 16:37 вам в голову приходит красивая идея, и вы следуете ей.

Теперь у вас есть приблизительное представление о том, что происходило изо дня в день, мы уточним.

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% времени. Это означало, что 20% нашего времени можно было бы потратить на изучение вещей. Вещи - это был общий термин, означающий вещи из мира машинного обучения. Там много.

Это не раз оказывалось бесценным. Использование ULMFiT над BERT произошло в результате 20% времени.

20% времени означало, что 80% будет потрачено на основные проекты.

  • 80% на основной продукт (профессиональные услуги машинного обучения).
  • 20% на новинки, связанные с основным продуктом.

Он не всегда так раскалывался, но это хорошая цель.

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

6. Читают 1 из 10 статей, привыкают меньше.

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

Другими словами, из тысяч заявок в год у вас может быть 10 новаторских работ. И из этих 10 новаторских работ 5 могут быть написаны одним и тем же институтом или лицом.

Вывод?

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

Но затем возникает проблема разведки и эксплуатации.

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

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

Проблема исследования и эксплуатации - это дилемма между попыткой чего-то нового и повторным применением того, что уже работает.

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

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

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

20% времени помогает в этом. Но 70/20/10 могло работать лучше. Возможно, вы потратите 70% на основной продукт, 20% на создание основного продукта и 10% на лунные выстрелы - вещи, которые могут не работать (вероятно, не работать).

Я никогда не практиковал это в своей роли, но я к этому стремлюсь.

8. Проблема с игрушкой первым делом работает

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

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

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

Рон научил меня этому. Если вы застряли на проблеме, сидение и пристальное внимание к коду может решить ее, а может и нет. Вместо этого поговорите на языке с товарищем по команде. Представьте, что они ваша резиновая уточка.

«Рон, я пытаюсь перебрать этот массив и отслеживать состояние, пока перебираю этот другой массив и отслеживаю состояние, а затем я хочу объединить состояния в список кортежей».

«Петли в петлях? Почему бы тебе не векторизовать это? "

"Могу ли я сделать это?"

"Давайте разберемся."

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

Это связано с тем, что инженерия машинного обучения сливается с разработкой программного обеспечения.

Если ваша проблема с данными не очень специфична, многие из основных очень похожи: классификация, регрессия, прогнозы временных рядов, рекомендации.

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

Что касается разработчиков, у вас есть библиотеки, такие как fast.ai, которые делают современные модели доступными в нескольких строках кода и различные зоопарки моделей (набор предварительно созданных моделей), например PyTorch hub и TensorFlow hub , которые предлагают то же самое.

Что это значит?

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

Теперь нет причин, по которым ваши базовые показатели не должны быть чем-то близким, если не самым современным.

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

Что касается клиентских проблем, над которыми я работал, мы все сначала писали код. Весь код машинного обучения и обработки данных был Python. Были времена, когда я баловался математикой, читая статью и копируя ее, но в 99,9% случаев математика учитывалась в существующих фреймворках.

Это не означает, что в математике нет необходимости, в конце концов, машинное обучение и глубокое обучение - это формы прикладной математики.

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

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

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

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

Это само собой разумеющееся. И становится все больше благодаря слиянию программной инженерии и машинного обучения.

Но это то, на что вы подписались.

Что остается прежним?

Фреймворки изменятся, библиотеки изменятся, но базовая статистика, вероятность, математика, эти вещи не имеют срока годности (даже лучшее время с новым курсом fast.ai).

Самая большая проблема по-прежнему заключается в том, как их применять.

Что теперь?

Могло быть и больше, но 12 хватит.

Работа в Max Kelsen была моей лучшей работой. Проблемы были забавными, но люди были лучше. Я многому научился.

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

Если у вас есть какие-либо вопросы, мои личные сообщения в Twitter открыты или подпишитесь на мою рассылку, чтобы получать новости о моих планах.