Давайте перейдем к тому, почему я завожу блог. Являюсь ли я особенно интересным человеком, поэтому я должен делиться своим опытом, историями и т. д.? Нет. Мне 25 лет, недавно женился и начинаю свою карьеру с нуля. У меня очень мало знаний, которыми я мог бы поделиться с читателем. Итак, еще раз. Почему я завожу блог? Для кого?
Идеального читателя не существует. Я не имею в виду, что идеального читателя не существует, я имею в виду, что читателя не существует. Я влезаю в это из-за себя. Во-первых, есть много преимуществ писать буквально что угодно. Уметь правильно писать непросто. Это второй абзац, и я уже вижу много некрасивых фраз, которые я написал. Во-вторых, трудно облечь идеи в правильные предложения, поэтому весь документ имеет смысл. Я надеюсь, что кто-то (возможно, все еще я :) ) сможет увидеть улучшение моего стиля письма.
О чем я хочу написать? В основном о профессиональном опыте и вещах, связанных с тем, чтобы стать начинающим исследователем машинного обучения. Сегодня мой последний день испытательного срока (первые три месяца) в качестве младшего исследователя машинного обучения в Seznam.cz. Несмотря на то, что я получил отличные отзывы о своей работе от начальства, я знаю о многих ошибках, которые я уже совершил. Впереди наверняка много ошибок, не считая грамматических.
Я приглашаю вас присоединиться ко мне на моем пути развития карьеры с самого начала, не имея представления о том, как это сделать. Если вы тоже начинаете свою карьеру и понятия не имеете, что происходит, вы не одиноки. Я считаю себя достаточно честным, и я определенно не планирую делать вид, будто я на высоте. Не я.
Теперь, наконец, об ошибках!
Не совсем. Во-первых, я должен заявить, что я делаю. Насколько мне известно, быть исследователем машинного обучения — это очень широкое понятие. Я знаю исследователей машинного обучения, которые следят за тем, чтобы модели машинного обучения хорошо работали в продакшене, работая в основном с kubernetes и т. д. Они не занимаются практическим машинным обучением. Мне повезло, что я занимаюсь чистым машинным обучением. В моей команде мы не создаем никаких исполняемых скриптов. Цель нашей команды — просмотреть данные, создать модель и отправить ее разработчикам, а они интегрируют ее в производство.
Мы работаем в блокнотах Jupyter, это отличный инструмент для всего, что связано с данными. Это делает все, что нужно нашей команде, очень простым. Однако есть много недостатков, связанных с блокнотами, блестяще изложенными Джоэлом Грусом. Подводя итог, Jupyter Notebooks делает ваш стиль кодирования ужасным. Они делают. В моем проекте беспорядок.В нескольких областях.
Во-первых, качество кодирования. Поскольку я могу запускать одну ячейку, проверять результат и улучшать его, мне не нужно писать чистый код. Я предварительно обрабатываю данные определенным образом и считаю, что это не подходящий формат. Это не ошибка, просто часть исследования. Ошибка, однако, заключается в том, что я могу исправить формат в следующей ячейке, а не решить проблему там, где она возникла. Когда я понял, что код беспорядочный, я не смог найти исходный формат. Я удалил исходную ячейку. Когда я не могу воспроизвести результат, как будто этого никогда не было. Я знаю, это исследование 101, я знал это раньше. Другое дело знать это и самому совершить глупую ошибку.
Во-вторых, структура проекта. В проекте есть каталог блокноты, где должны быть все блокноты. Я поместил все блокноты в этот каталог, потому что он должен быть там, верно? Масштабы проекта как-то увеличились, есть несколько направлений: анализ данных из наших источников, анализ данных дополнительных 6 разных источников (т.к. мы понятия не имеем, где нужные данные находится), создание необходимого набора данных, понимание того, что есть дополнительный вопрос, который мне нужно найти в данных, анализ данных других данных (потому что кто-то сообщил нам о другом источнике), моделирование, изменение функций (что требует создать новый набор данных, потому что предыдущий формат не подходил) и так далее. В настоящее время существует более 20 ноутбуков, и их число продолжает расти. Я думал, что был таким умным, что пронумеровал их всех, чтобы было легко ориентироваться. Позвольте мне дать вам обзор проекта: 001–004 — это изучение необходимых техник, как подключиться к данным и т. д. 005 — это окончательный анализ данных (я был таким наивным), 006–008 другой анализ данных , 009 — коннектор mysql, 010 — объединение нескольких источников данных, 011 подготовка данных, 012 модель (ужасный модельный подход), 013 дополнительный вопрос для данных (потому что я понятия не имел, какой блокнот связан с этим вопросом), 014 манипулирование данными … Вы поняли идею. Этого было так легко избежать! Просто создайте дополнительные каталоги, например
Наконец, или есть в-третьих на английском языке? Это точно не в последнюю очередь. Наконец, мне нужно было подтолкнуть своего руководителя к проверке кода! Он доверяет мне результаты (что приятно) и проверит их, когда все будет сделано. На данном этапе это просто невозможно. В проекте бардак, большинство блокнотов вообще не читаются. Если бы он проверил один из первых блокнотов, он мог бы сказать мне, что я делаю неправильно, я бы знал это с тех пор и, вероятно, написал бы более читаемый код. Я не знаю, как мы это решим.
Что я вынес из этого проекта?
Блокноты Jupyter — замечательная штука, но я должен быть предельно осторожен и строг к себе, чтобы создавать читабельный и воспроизводимый код.
Более тщательно продумайте объем проекта в отношении непредвиденных требований. Создайте достаточно надежную структуру проекта, чтобы выдерживать дополнительные требования. Это не революционная идея, это разработка программного обеспечения 101. К сожалению, я был обучен науке о данных и теории. Все, что касается разработки программного обеспечения, меня упустило, поэтому мне нужно изучать это шаг за шагом.
Люди готовы помочь мне, однако они должны знать. Это не героизм, что я могу сделать что угодно сам и показать всем это то, что я сделал. Они просто посмотрят на меня и скажут: «Круто, а как мы можем это воспроизвести?».. Мы не можем на самом деле. Я закончил проект (основной объем) и потрачу какое-то время только на уборку бардака, который я создал.
Я понятия не имею, когда (если) я доберусь до другого поста. Что касается моего письма, я заметил, что большинство моих предложений начинаются с I. Это просто плохой текст, не более того. Это, как и любой другой навык, требует практики. Я надеюсь встретиться с вами снова в следующем посте из серии борьба с началом карьеры и невозможность писать по-английски.