Код
#статьи

Какой язык программирования выбрать специалисту по машинному обучению?

Машинное обучение ― это только Python и R или нет? Разбираемся, какие ещё языки любят инженеры по ML.

На GitHub есть рейтинг популярности языков программирования для машинного обучения. Критерий оценки — количество ML-проектов, которые хостятся на платформе. Расскажем, почему именно они стали популярными и какой лучше изучать. Языки размещены в порядке от наиболее используемых к наименее.

Python

Python лидирует в машинном обучении. И вот почему:

  1. Это универсальный язык, и на нём можно написать что угодно — от облачного сервиса до нейронной сети.
  2. У Python активное сообщество и огромное количество свободных МL-инструментов (TensorFlow, Keras, scikit-learn, Pandas).
  3. Новички в разработке нередко начинают именно с Python — его синтаксис прост и понятен.

Но есть и минусы: низкая скорость выполнения программ и высокое потребление памяти.

Пример ML-проекта на Python: Video Object Removal ― программа, которая использует алгоритмы глубокого обучения, чтобы убрать из видео любые лишние объекты всего за пару секунд.

Одновременно существует две версии языка: Python 2 и Python 3. У Python 3 нет обратной совместимостью со второй версией — то есть код, написанный на старой версии, не будет работать в новой. Советуем изучать именно Python 3 — предыдущий уже официально не поддерживается.

С++

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

Преимущество C++ в том, что на нём можно вручную управлять оперативной памятью и извлечением данных. Это помогает оптимизировать работу программы, если данных для обработки очень много, а ресурсы ограничены и скорость критически важна.

Пример ML-проекта на C++: AirSim — симулятор дронов и беспилотных автомобилей.

JavaScript

Многие слышали о JavaScript только в связке с HTML и CSS — когда речь идёт о веб-дизайне и фронтенде. JS часто используют для разработки пользовательских интерфейсов.

Но в JS есть и немало ML-библиотек: Brain.js, Deeplearnjs и ConvNetJS ― для нейронных сетей, Compromise ― для NLP, TensorFlow.js ― для всего понемногу.

Примеры ML-проекта на JavaScript: «Катана» — текстовый виртуальный ассистент, который любая компания может подстроить под себя в пару кликов; Beat Blender — фановый софт для создания музыки.

Java

Синтаксис Java похож на синтаксис С/C++. Но это высокоуровневый язык программирования, который не требует ручного управления памятью. У тех, кто занимается разработкой для ML на Java, есть отличные библиотеки: Weka, MOA, MALLET.

Примеры ML-проектов на Java: Seldon Server ― движок для создания рекомендательных систем, который позволяет развернуть нейронную сеть для рекомендаций, даже если вы новичок; GROBID ― программа для парсинга и извлечения информации даже из неструктурированных документов.

Если вы уже знакомы с Java, то сможете зайти с ним в машинное обучение. Но если вы его не знаете и собираетесь идти в ИИ, лучше изучите другой язык. Да, на GitHub есть много Java-проектов в сфере машинного обучения. Но инфраструктура в сфере ML для того же Python гораздо богаче, выучить его с нуля до хорошего уровня проще.

C#

C# — универсальный, гибкий и многофункциональный язык от Microsoft. Он позволяет программистам писать всё — от системных приложений до сайтов.

Microsoft активно поддерживает C# и даже создала для него библиотеку ML.NET, которая содержит всё необходимое для работы с машинным обучением. Компания активно обкатывала библиотеку на протяжении десяти лет и только после этого выложила в открытый доступ. По замыслу разработчиков, она должна стать альтернативой многочисленным библиотекам Python и сделать C# ведущим языком в ML. Но пока это только мечты — прямо сейчас найти работу в сфере искусственного интеллекта на C# не так просто.

Пример ML-проекта на C#: BotSharp ― опенсорс-платформа для создания чат-ботов.

Julia

Julia — молодой язык, конкурент R и Python, совместимый с ними. Однако он гораздо быстрее Python и по скорости может сравниться с C/C++. Julia — универсальный язык, хотя изначально его разработали для числовых и технических вычислений.

Его можно и нужно использовать для веб-программирования низкоуровневого системного программирования в качестве языка спецификации. Он поддерживает динамическую типизацию — это делает его более гибким, но и увеличивает вероятность ошибки. В Julia есть и мастхэв-библиотеки для ML: Flux, Mocha.jl, Knet, TensorFlow.jl, ScikitLearn.jl.

Примеры ML-проектов на Julia: SALSA — софт для продвинутой работы со стохастическими алгоритмами; MLJTuning — программа для оптимизации гиперпараметров.

Проекты на Julia в основном создают для учёных и для ML-поддержки лабораторий. Из этого вывод: делать ставку только на Julia не нужно — язык ещё растёт. Но обратить внимание точно стоит.

Shell

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

Shell легко изучить — по сути, это просто набор текстовых команд. В машинном обучении Shell используется для быстрого решения рутинных задач — например, для создания API, которое помогает легко установить нужные фреймворки и библиотеки.

Пример ML-проекта на Shell: mlmmj-archivist — программа, которая автоматически генерирует веб-архивы для email-рассылок.


R

R обычно используют в связке с Python. Он подходит для статической обработки данных и работы с графиками. Под R есть несколько пакетов для машинного обучения — например, benchm-ml, CARET, KernLab.

Однако R может и осложнить решение простых задач. В нём существует множество полезных функций — согласно CRAN, для R создано больше 11 тысяч пакетов, а это сотни тысяч функций. Привычной системы меню, как в Excel, нет. Новичку легко запутаться в таком количестве команд. Например, где взять функцию для проведения какого-нибудь статистического анализа? Придётся пролистать немало документации.

Примеры ML-проектов на R: Healthcare.ai ― платформа для создания искусственного интеллекта в здравоохранении. Student Early Warning — программа, которая предсказывает, насколько велика вероятность того, что ученик бросит школу.


TypeScript

TypeScript — это надстройка над JavaScript. Любой TS-код корректен с точки зрения JS. На нём можно писать алгоритмы и строить модели машинного обучения. Самые популярные ML-библиотеки для TypeScript — machinelearn.js, TensorFlow Deep Playground, machine-learning.

Одно из главных преимуществ TypeScript в сравнении с JS — строгая типизация. Язык сам отлавливает ошибки вроде «сложить свиней с апельсинами» (например, типы «строка» и «число»). JS часто высмеивают за то, что в таких случаях он выдаёт непредсказуемые результаты.

Примеры ML-проектов на TypeScript: BrainGames ― игровой бот, который можно тренировать самому; Windows Machine Learning — облачный сервис для создания и обучения моделей.


Scala

Scala поддерживает и объектно-ориентированное, и функциональное программирование. Его синтаксис похож на Java, а чтобы полноценно овладеть языком, нужно понимать и функциональное программирование. Поэтому у Scala высокий порог вхождения. Зато код получается более стабильным и хорошо подходит для крупных многозадачных проектов в ML.

Хотя язык молодой, для него уже есть хорошие библиотеки: Apache Spark, Apache PredictionIO, OpenNLP, Aerosolve. Конечно, пока ему сложно конкурировать с Python или C++, но в него инвестируют многие крупные компании.

Примеры ML-проектов на Scala: Big Data Project ― инструмент для идентификации спам-отзывов на Amazon; Awesome Recommendation Engine — программа для создания рекомендаций в реальном времени.

Популярность языков на рынке труда

По информации hh.ru, обычно работодатели ищут в ML кандидатов с опытом разработки на одном из этих языков:

  • Python. Большинство компаний — от крупных брендов до исследовательских центов — использует именно Python и его библиотеки. С одной стороны, он универсален и может интегрироваться с чем угодно. С другой — заточен под машинное обучение благодаря большому количеству библиотек.
  • С++. Этот второй по популярности язык среди работодателей. Когда появляется задача из мира интернета вещей или роботехники, то есть приходится напрямую работать с оборудованием (hardware), без него не обойтись.
  • Java. Один из самых популярных языков в мире. Поэтому компаниям проще всего нанять разработчика для своего проекта на этом языке.

Вывод

Мы рекомендуем начать с самых популярных технологий: Python, C++ или Java. Благодаря большому количеству библиотек и поддержке комьюнити на них можно написать что угодно. Изучив эти языки, можно перейти к чему-то более нестандартному — например, Julia или Scala.

Получить востребованную специальность можно на профессии «Data Scientist: машинное обучение». Вы научитесь с нуля программировать на Python, работать с библиотеками и базами данных. А применить знания и собрать портфолио можно на стажировке ещё во время обучения.


Курс

Профессия Machine Learning Engineer

Научитесь создавать модели ML и обучать нейронные сети. Освоите анализ данных и в конце курса выберете одну из специализаций: обработку естественного языка или Computer Vision.Через 9 месяцев сможете трудоустроиться ML-инженером, параллельно продолжите проходить курс и дорастёте до уровня Middle.

Узнать про курс

Учись бесплатно:
вебинары по программированию, маркетингу и дизайну.

Участвовать
Обучение: Профессия Machine Learning Engineer Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована