Как постепенно перекочевать из Web в Machine Learning максимально безболезненно?

Долго писал на PHP(Symfony) в основном Enterprise решения с большой бизнес-логикой. + иногда делаю SPA на JS, чаще всего для своих проектов. Постепенно понадобилось писать разных демонов и утилиты, попробовал делать на Node.js, понравилось больше чем на php. Сейчас вообще почти полностью пишу все на Node + Go для утилит и микросервисов. Хочу отметить, что для меня является большим плюсом, что я могу не забывать JS и писать также Front. Это предыстория.

На текущий момент меня начало колбасить :)

Недавно были проекты, где использовалось машинное обучение. Меня всегда интересовала эта тема, и я в целом посвящен в основы ML, но написанием кода не занимался.
В итоге я понял, что хочу перекочевать в ML.

Проблемы с которыми я столкнулся:
- Насколько я понял язык-лидер в ML это Python. Даже CPP не так популярен.
- Я не могу резко сменить направление деятельности, тк мне нужно кушать.
Поэтому я вижу тут такие варианты:
  1. Постепенно начать и перейти на использование Python в вебе, изучив в достаточной степени язык и основные библиотеки. Далее также постепенно начать пробовать себя в ML.
    Тут меня беспокоит, что во-первых не е*нусь ли я от таких переходов php->node.js+go->python. Языки похожи во многом, не начну ли я путаться. И во-вторых связка node.js+go в вебе меня более чем устраивает.
  2. Остаться в том же стеке в вебе. Начать учить CPP или R сразу для ML. А потом если нужно будет, когда отлипну от веба - перейти на Python.
    Но можно ли обойтись одним CPP в ML. Или все-таки все новое пишется на Python в этой сфере?
  3. Изучать пока что ML в Golang(который я сейчас уже использую), а там видно будет. Вообще есть ли будущее у Go в ML, мб кто знает? Библиотек пока очень мало, но язык активно развивается. Есть какие-либо ограничения у него для использования в ML.
Пишу с анонимного аккаунта, дабы не палиться (:
  • Вопрос задан
  • 3129 просмотров
Решения вопроса 6
  • @asd111
    Из языков строго python. Он похож чем то на Golang и на javascript так что сложностей в использовании не возникнет. С++ и R сразу нет. Потому что на С++ пишут в основном только сами библиотеки для ML либо что то очень быстрое наподобие анализа видеопотока в автопилотах и даже тогда прототип пишут на python, а R практически не развивается по сравнению с python и имеет более узкую сферу применения чем python.
    В плане обучения можно сделать так:
    1. Прочесть хорошую книгу по теме, потому что нужно знать термины и основные алгоритмы. Ну или хотя бы посмотреть курсы Andrew Ng Machine Learning. Для применения чужих библиотек на простых задачах этого в принципе достаточно.
    2. Глянуть scipy, numpy и jupyter notebook. У scikit есть scikit learn, в котором реализованы некоторые популярные алгоритмы. Например SVM, decision trees и т.д. и есть доки под это дело для начинающих scikit-learn.org/stable
    3. Зарегистрироваться на kaggle.com и найти задачу про титаник. Вот она https://www.kaggle.com/c/titanic Делаете решение как умеете. Можно взять простой gradient boost. Yandex как раз недавно выложил либу под это дело называется cat boost https://tech.yandex.ru/catboost/ Банальное использование этой библиотеки может дать около 80% точности. Вот туториал https://github.com/catboost/catboost/blob/master/c...
    4. Прочитать про keras. Взять готовую модель для смешивания стилей изображений и сделать сайт наподобие ostagram.ru для смешивания изображений. https://github.com/fchollet/keras/blob/master/exam...

    5. Дальше всё зависит от вас, поскольку заработать в области ML непросто :) Когда прочтете хотя бы одну книгу по ML, регистрируйтесь здесь ods.ai - это сообщество русскоговорящих специалистов в данной области.
    Ответ написан
  • xmoonlight
    @xmoonlight
    Сложный вопрос - мудрый ответ.
    Языки программирования - это инструменты передачи логики от человека к процессору ПК.

    Вам нужно - ИЗНАЧАЛЬНО познать построение логики (и схем, путём логических и математических формул и дальнейшим моделированием процессов и связей) ML (и только потом - браться за реализацию и думать о языках программирования).

    Т.е., безболезненно - не выйдет! ML - это абсолютно новое направление для изучения.
    Ответ написан
  • un1t
    @un1t
    Программист Python/Django
    Знакомый работал в стартапе когда его заинтересмовал ML, вобщем он предложил использовать какие-то штуки из ML для этого стартапа, заказчик согласился. И вот у него появилось несколько месяцев практического использования ML в продакшене. С точки зрения бизнеса я скажу, что идея была сомнительная, но кого это волнует)). Ну а знакомый продолжил дальше углубляться в эту тему и на следущую работу уже устроился как специалист по ML.

    Самый быстрый и безболезненный путь это начать применять ML на текущем месте. Придумай задачу, предложи заказчику, лучше начать с чего-то простого и нетрудозатратного.
    Ответ написан
  • angrySCV
    @angrySCV
    Java/scala, ML, startups
    чувак, исходи из текущих задач -> сам МЛ очень широченная область, возьми какую-нибудь задачу, начти ее разбирать для начала используя язык который тебе привычнее.
    Потом уже глядишь другой язык переключишься, несколько языков использовать нет проблемы, путаться ну да будешь немного, ну постепенно выберишь и язык который тебе будет удобнее для работы с с анализом данных, и это не только питон и С++
    Ответ написан
  • @dev_marshak
    Как сказал мой босс, который не плохой специалист по Machine Learning.
    Входить в тему проще всего так:
    Ищем конкурсы в этой теме. И пробуем, походу осваивая нужные знания, там и Python проще подучить и с либами можно познакомиться, и к математическому аппарату подходишь с вполне конкретными вопросами
    Ответ написан
  • @blugamire
    Заказчики (ну или фирма на постоянку) - это все что нужно.
    А языки-шмызыки, с учетом того, что вы уже опытный программист - осваивается чрезвычайно быстро.
    Ответ написан
Пригласить эксперта
Ответы на вопрос 3
  • AgentProvocateur
    @AgentProvocateur
    IT-менеджер
    Что-то ты не с того конца собираешься дом строить...образно выражаясь. Ты по выбору молотка загоняешься, а нужно по проектированию, архитектуре, инженерным коммуникациям, технологиям строительства и т.д. А молоток покупается в последний момент на строительной оптовке.

    Машинное обучение/нейроинженерия - это область научной деятельности. Специалист по машинному обучению - ученый-математик (часто и вовсе с докторской степенью). Программирование/владение Python - лишь прикладной навык к научным изысканиям. В научные лаборатории путь явно лежит не через изучение применяемых там языков/программ.

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

    А со знанием других языков (php, js, go) python осваивается за 10 дней. Он потому и используется так интенсивно в науке, чтобы на программирование, как на прикладной навык, тратить минимум телодвижений и времени, а максимум на нейроинженерию.
    Ответ написан
  • KaaPex
    @KaaPex
    неумеха
    Сам начал потихоньку углубляться в эту область, скажу сразу нужна математическая база, комбинаторика, теория вероятностей, статистика, линейная алгебра, матан. На курсере есть специализация от Яндекса, а так же как выше сказали от Эндрю НГ (он кстати вообще для полных даунов все разжевывает досконально) и у нег осейчас вышла новая специализация по нейронкам. Начни с этого, потом поймешь интересно ли тебе это или чисто как хобби. А дальше можно вообще пойти в сторону хадуп, спарк и Scala как вариант.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы