4 причины изучить машинное обучение с помощью JavaScript

Источник · Перевод автора

В последние несколько лет Python стал предпочтительным языком программирования для машинного обучения и глубокого обучения. Большинство книг и онлайн-курсов по машинному обучению и глубокому обучению используют либо исключительно Python, либо вместе с R. Python стал очень популярным из-за своего богатого набора библиотек машинного обучения и глубокого обучения, оптимизированной реализации, масштабируемости и универсальных функций.

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

Хотя JavaScript не является заменой богатого ландшафта машинного обучения Python (пока), есть несколько веских причин для приобретения навыков машинного обучения JavaScript. Вот четыре.

Частное машинное обучение

Большинство приложений машинного обучения основаны на архитектуре клиент-сервер. Пользователи должны отправлять свои данные туда, где работают модели машинного обучения. У архитектуры клиент-сервер есть явные преимущества. Разработчики могут запускать свои модели на серверах и делать их доступными для пользовательских приложений через веб-API. Это позволяет разработчикам использовать очень большие нейронные сети, которые не могут работать на пользовательских устройствах.

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

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

Но проблема в том, что машинное обучение Python по умолчанию не поддерживается на многих пользовательских устройствах. MacOS и большинство версий Linux поставляются с предустановленным Python, но вам все равно придется устанавливать библиотеки машинного обучения отдельно. Пользователи Windows должны установить Python вручную. А мобильные операционные системы очень плохо поддерживают интерпретаторы Python.

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

Уже существует несколько библиотек машинного обучения JavaScript. Примером может служить TensorFlow.js, версия JavaScript известной библиотеки машинного обучения и глубокого обучения TensorFlow от Google. Если вы перейдете на демонстрационную страницу TensorFlow.js со своего смартфона, планшета или настольного компьютера, вы найдете множество готовых примеров с использованием машинного обучения JavaScript. Они будут запускать модели машинного обучения на вашем устройстве без отправки данных в облако. И вам не нужно устанавливать дополнительное программное обеспечение. Другие мощные библиотеки машинного обучения JavaScript включают ML5.js, Synaptic и Brain.js.

Быстрые и индивидуальные модели машинного обучения

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

Еще одно важное применение машинного обучения JavaScript – настройка модели. Например, предположим, что вы хотите разработать модель машинного обучения для генерации текста, которая адаптируется к языковым предпочтениям каждого пользователя. Одним из решений было бы хранить одну модель для каждого пользователя на сервере и обучать ее на пользовательских данных. Это создаст дополнительную нагрузку на ваши серверы по мере роста количества пользователей, а также потребует от вас хранения потенциально конфиденциальных данных в облаке.

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

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

Простая интеграция машинного обучения в веб-приложения и мобильные приложения

Еще одно преимущество машинного обучения JavaScript – простая интеграция с мобильными приложениями. Поддержка Python в мобильных операционных системах все еще находится на предварительных этапах. Но уже существует богатый набор кроссплатформенных инструментов разработки мобильных приложений на JavaScript, таких как Cordova и Ionic.

Эти инструменты стали очень популярными, потому что они позволяют вам один раз написать код и развернуть его для устройств iOS и Android. Чтобы сделать код совместимым с различными операционными системами, инструменты кросс-платформенной разработки запускают «веб-просмотр», объект браузера, который может запускать код JavaScript и может быть встроен в собственное приложение целевой операционной системы. Эти объекты браузера поддерживают библиотеки машинного обучения JavaScript.

Единственным исключением является React Native, популярная кроссплатформенная среда разработки мобильных приложений, которая не полагается на веб-просмотр для запуска приложений. Однако, учитывая популярность мобильных приложений машинного обучения, Google выпустила специальную версию TensorFlow.js для React Native.

Если вы написали свое мобильное приложение на собственном коде и хотите интегрировать код машинного обучения JavaScript, вы можете добавить в свое приложение собственный встроенный объект браузера (например, WKWebView в iOS).

Существуют и другие библиотеки машинного обучения для мобильных приложений, такие как TensorFlow Lite и Core ML. Однако для них требуется собственное кодирование на мобильной платформе, для которой вы разрабатываете свое приложение. С другой стороны, машинное обучение JavaScript очень универсально. Если вы уже реализовали версию своего приложения машинного обучения для браузера, вы можете легко перенести ее в свое мобильное приложение с небольшими изменениями или без них.

Машинное обучение JavaScript на сервере

Одна из основных задач машинного обучения – обучение моделей. Это особенно верно для глубокого обучения, где обучение требует дорогостоящих вычислений обратного распространения в течение нескольких эпох. Хотя вы можете обучать модели глубокого обучения на пользовательских устройствах, это может занять недели или месяцы, если нейронная сеть большая.

Python лучше подходит для обучения моделей машинного обучения на стороне сервера. Он может масштабировать и распределять нагрузку на кластеры серверов, чтобы ускорить процесс обучения. После обучения модели вы можете сжать ее и доставить на пользовательские устройства для вывода. К счастью, библиотеки машинного обучения, написанные на разных языках, очень совместимы. Например, если вы тренируете свою модель глубокого обучения с помощью TensorFlow или Keras для Python, вы можете сохранить ее в одном из нескольких независимых от языка форматов, таких как JSON или HDF5. Затем вы можете отправить сохраненную модель на устройство пользователя и загрузить ее с помощью TensorFlow.js или другой библиотеки глубокого обучения JavaScript.

Но стоит отметить, что машинное обучение на стороне сервера JavaScript также набирает обороты. Вы можете запускать библиотеки машинного обучения JavaScript на Node.js, движке сервера приложений JavaScript. У TensorFlow.js есть специальная версия, которая подходит для серверов с Node.js. Код JavaScript, который вы используете для взаимодействия с TensorFlow.js, такой же, как и для приложений, работающих в браузере. Но в фоновом режиме библиотека использует специальное оборудование вашего сервера для ускорения обучения и вывода. PyTorch, еще одна популярная библиотека машинного обучения Python, еще не имеет официальной реализации JavaScript, но сообщество разработчиков открытого исходного кода разработало привязки JavaScript для этой библиотеки.

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