Вы наверняка читаете заголовок этого поста с очень раздражительным лицом вроде «как, черт возьми, кто-то создаст свою собственную библиотеку машинного обучения в 2020 году ?! Ты что, придурок !!! » Слава вам, привратники, я прекрасно понимаю ваши мотивы и ваше глубокое желание проклясть меня тысячей имен. Я объясню очевидное, почему вам никогда не следует рассматривать создание собственной библиотеки машинного обучения, прежде чем изложить свой случай.

Примо: Уже существует множество зрелых решений в области машинного обучения.

Уже существует МНОГО зрелых библиотек для любого языка, который вы можете себе представить, и для любого «прикладного» контекста, который вы можете рассмотреть (например, кластеры против отдельных машин). Любой прагматичный и практичный парень сразу выберет уже имеющееся зрелое решение и будет его придерживаться.

Секундо: вы напишете нераспространяемый код

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

Тертио: Никто не хочет чего-то без гарантии

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

Хорошо, теперь, когда Я сказал и разъяснил ВАШЕ дело, не нужно распинать меня. Вы, конечно, пришли к выводу, что я понимаю плохая идея, это так… но! Таким образом можно получить много пользы, поэтому я постараюсь прояснить свою позицию.

Я стремлюсь создать библиотеку машинного обучения с двумя вариантами, написанными на Python и JavaScript, которые я назову соответственно Ostorlab и OstorlabJS. Почему это имя? Это арабское произношение астролябии, очень элегантного и удобного инструмента для астрономических измерений, усовершенствованного исламской культурой в средние века. Меня очень увлекают исламские астролябии: они сочетают в себе красоту и практичность, философия, которая меня действительно привлекает, это как искусство и наука, смешанные вместе, чтобы выразить красоту и изысканность, исходящие из человеческого разума! Итак, я надеюсь, что это будет моим лейтмотивом, и название здесь, чтобы напоминать мне об этом.

Вернемся к «плохой идее». Как, черт возьми, запуск такого побочного проекта может быть «лучшей наихудшей идеей», и вот мой случай:

Эго!

Многие люди не признают этого, но иногда эго - это чистая мотивация для того, чтобы начать много чего. Было много ситуаций, когда я хотел просто крикнуть каким-то тупицам: «Я, черт возьми, понимаю и знаю, как создать то, что, по вашему мнению, я не в состоянии понять», а наличие собственной библиотеки для таких людей как удар по яйцам. . Хорошо, чтобы поместить это в контекст, теперь я живу в Париже, Франция, и здесь царит странная элитарность, если вы не закончили местные инженерные школы «Лиги плюща», как предполагается, для большого количества людей , что у вас нет необходимых интеллектуальных способностей для понимания математики, машинного обучения и статистики, и что вы просто еще один программист, который использует from sklearn import, не давая вам возможности доказать их неправоту (реальная история ...). Да, чистое эго ... так что давайте исправим предрассудки, используя from myfunckinglibrary import.

Оттачивайте свои навыки программирования

Давайте будем откровенны, Jupyter notebook - это инструмент программирования, который нужно «перейти» для специалистов по данным, и то, как мы пишем код на нем, действительно плохое. Он далеко не готов к производству, код плохо написан и не структурирован, и со временем мы вырабатываем вредные привычки. Создание машинного обучения или любой «официальной» библиотеки заставит вас принять лучшие практики, написать модульные тесты, подумать о масштабировании приложения и заглянуть за пределы своей «ячейки».

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

Углубление ваших знаний

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

Иметь предлог для создания контента

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

Думаю, я изложил свой случай, и вы можете следить за развитием двух моих библиотек в соответствующих репозиториях для Python и JavaScript. А для связанных сообщений блога о машинном обучении я буду перечислять опубликованные сообщения в этом репо здесь.

Вы можете подписаться на меня в Twitter, Facebook или Medium, чтобы получать уведомления о новых публикациях!

LEM OUT !!!