9 месяцев назад я начал работать с командой разработчиков алгоритмических продуктов, создавая модели и алгоритмы, которые принимают оперативные решения в Deliveroo.
Я обнаружил, что не беру его так быстро, как хотелось бы. В настоящее время я работаю в нескольких командах, поэтому я не мог полностью погрузиться в изучение того, как работает команда, и все это довольно чуждо мне, поэтому я подсознательно придерживался того, что знал.
Через 6 месяцев я решил измениться - узнать, как работает машинное обучение, а не просто знать определение словаря. Лучший способ научиться - создавать вещи.
Что я хочу извлечь из этого:
- процесс машинного обучения; что сложно, что легко?
- как все это работает?
- как сформулировать проблему машинного обучения?
- какие ограничения у машинного обучения?
- какие части быстрая и простая? что сложнее?
- как мне лучше работать с людьми, которые делают это каждый день?
- где возможности лежат в Deliveroo? Я не могу внести свой вклад, если не понимаю основ.
- где есть возможности за пределами Deliveroo? Что я могу построить, чтобы решить настоящую проблему или заработать немного денег?
Мой путь сюда:
Несколько месяцев назад я взял четыре книги, которые помогают мне разобраться в предмете (хотя на самом деле это скорее отрасль, чем предмет). Алгоритмы, по которым нужно жить (легко читать), Как измерить что угодно (читать средней тяжести), Главный алгоритм (легко читать), Обучение с подкреплением (все еще работает, очень трудно читать).
Эти книги помогли мне концептуально осмыслить математику, бизнес, машины и мозг. Я похвалил это Курсом Эндрю Нг на Coursera по машинному обучению - он немного математичен, но в целом доступен для всех, кто хочет потратить время.
Мне это нравится, но я считаю, что обучение само по себе не дает мне энергии. Моя концентрация колебалась, и я учился все меньше и меньше. Я мог представить, как сдаюсь через несколько месяцев. Так что я решил, что пришло время самому создать что-нибудь. Создание дрянных вещей - это то, как я узнал о веб-сайтах, приложениях, дизайне - почти все цифровые навыки, которые у меня были, появились в результате того, что я вовсю вмешивался и делал что-то плохо.
Итак, я начал с учебника Kaggle, в котором вы узнаете, как заниматься наукой о данных. После небольшого копирования и вставки я понял, что кодирование было немного тяжелее, чем я мог импровизировать, и мне нужно было освежить свой Python. Поэтому я взял бесплатный курс DataQuest.io (похожий на CodeAcademy, но специализирующийся на данных) и потратил несколько недель на изучение базовых руководств по Python. Я не закончил обучение, когда остановился, но почувствовал, что мое внимание снова ослабевает. Я ушел от желания узнать, как думают машины, к повторению самого простого Python. Пора вернуться на правильный путь и попробовать свои силы в машинном обучении.
Моя вторая попытка пройти через руководство по машинному обучению (с моими вновь обретенными навыками Python) была более успешной. Мне удалось скопировать-вставить то, что мне нужно, и заставить это работать в браузере DataQuest. Но в приложение в браузере предварительно загружено много данных и информации, которые мне не нужно вводить; Я хотел, чтобы это работало на моем собственном компьютере, где это было 100% моей работы.
Я загрузил несколько пакетов для Python в Atom (мой новый любимый текстовый редактор), чтобы немного упростить задачу. Затем я снова просмотрел учебник, строка за строкой, но на моем собственном компьютере. Куча вещей пошла не так, поскольку в их коде было довольно много ошибок, которые их приложение в браузере проигнорировало. Но через 6 часов все заработало! Моя машина получала данные, говорила, что искать, и узнавала вероятность того, что произойдет.
В данном случае задача машины - предсказать шансы того, что кто-то выживет после гибели Титаника. Я скормил ему данные, немного очистил данные и сказал, на какие точки данных смотреть (все шаги из учебника). В итоге я получил то, что может предсказывать шансы на выживание с точностью 79%. В руководстве говорится, что это не очень точно, и есть что улучшить, но эта машина научилась сама, дайте ей передохнуть.
Мне, как человеку, эта программа была не очень интересна - это не тот продукт, от которого я мог бы получить какую-либо пользу. Поэтому я добавил немного новизны - вы могли ввести информацию о себе, а затем вам сообщали шансы на ваше собственное выживание.
Самым трудным было добавление дополнительного кода, так как я ни в коем случае не разработчик. Но у меня все заработало, и теперь у меня есть первое, что изучает вещи, в которые я действительно вложил немного оригинальности.
Затем я хочу поработать со своим собственным кодом, предсказывая вероятность того, что произойдет что-то более личное, - спортивные результаты!
Что я узнал от своего первого ученика:
- Как и в случае с другими технологиями, копировать и вставлять чужой код и менять кое-какие биты очень просто.
- вы можете получить огромное количество улучшений, выбрав функции и предварительно поработав с данными, поэтому не беспокойтесь о более сложных алгоритмах.
- существуют разные типы алгоритмов, и изучение того, какой из них выбрать, будет само по себе навыком
- машина может сказать вам, насколько точны ее собственные прогнозы, что кажется странным
- поиск и очистка данных - это очень и очень трудоемкая задача, вероятно, самая большая временная задача. Это также то же самое, что заправлять машину бензином - чем больше вы заправляете, тем лучше он будет выполнять свою работу, а вам лучше, черт возьми, залить правильные вещи.
Вот и все. Это большая веха для меня, надеюсь, моя следующая будет более интересной для всех остальных.