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

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

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

Что я хочу извлечь из этого:

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

Мой путь сюда:

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

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

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

Итак, я начал с учебника Kaggle, в котором вы узнаете, как заниматься наукой о данных. После небольшого копирования и вставки я понял, что кодирование было немного тяжелее, чем я мог импровизировать, и мне нужно было освежить свой Python. Поэтому я взял бесплатный курс DataQuest.io (похожий на CodeAcademy, но специализирующийся на данных) и потратил несколько недель на изучение базовых руководств по Python. Я не закончил обучение, когда остановился, но почувствовал, что мое внимание снова ослабевает. Я ушел от желания узнать, как думают машины, к повторению самого простого Python. Пора вернуться на правильный путь и попробовать свои силы в машинном обучении.

Моя вторая попытка пройти через руководство по машинному обучению (с моими вновь обретенными навыками Python) была более успешной. Мне удалось скопировать-вставить то, что мне нужно, и заставить это работать в браузере DataQuest. Но в приложение в браузере предварительно загружено много данных и информации, которые мне не нужно вводить; Я хотел, чтобы это работало на моем собственном компьютере, где это было 100% моей работы.

Я загрузил несколько пакетов для Python в Atom (мой новый любимый текстовый редактор), чтобы немного упростить задачу. Затем я снова просмотрел учебник, строка за строкой, но на моем собственном компьютере. Куча вещей пошла не так, поскольку в их коде было довольно много ошибок, которые их приложение в браузере проигнорировало. Но через 6 часов все заработало! Моя машина получала данные, говорила, что искать, и узнавала вероятность того, что произойдет.

В данном случае задача машины - предсказать шансы того, что кто-то выживет после гибели Титаника. Я скормил ему данные, немного очистил данные и сказал, на какие точки данных смотреть (все шаги из учебника). В итоге я получил то, что может предсказывать шансы на выживание с точностью 79%. В руководстве говорится, что это не очень точно, и есть что улучшить, но эта машина научилась сама, дайте ей передохнуть.

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

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

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

Что я узнал от своего первого ученика:

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

Вот и все. Это большая веха для меня, надеюсь, моя следующая будет более интересной для всех остальных.