The Pros and Cons of Using JavaScript for Machine Learning

 

There’s a misconception in the world of machine learning (ML). Developers have been led to believe that, to build and train an ML model, they are restricted to using a select few programming languages. Python and Java often top the list.

Python for its simplicity: The language has an abundance of out-the-box libraries to shorten development time. PyBrain, for example, is a modular ML library that helps developers build algorithms, then test and compare solutions in predefined environments.

Java for its maturity: Java has been around for decades, so it’s the de facto language of choice for larger organizations such as banks and financial institutions when building and using algorithms.

***

Whereas a language such as JavaScript? Well, for many developers, it was useful for nothing but the frontend.

Even in the context of machine learning, most assumed JavaScript only had applications in data visualization: take the library D3.js, for example — used purely for visualizing data with HTML, SVG, and CSS.

But times are changing — as are the dynamics of ML engineering. And it’s become common practice for developers to write machine learning functions using common web-scripting languages.

These days, it’s possible to build and train an algorithm using any general-purpose programming language you want.

…and that includes Javascript.

TensorFlow.js: The Javascript library for Machine Learning in the browser

TensorFlow.js is a JavaScript library created by Google as an open-source framework for training and using machine learning models in the browser. In short, the framework helps JavaScript developers build and deploy ML models within client-side applications.

Developers have swarmed to using TensorFlow.js as they can use it to both:

  • Create new machine-learning models from scratch
  • As well as run — or retrain — existing, pre-trained models

The language is also a companion to its namesake TensorFlow (the ML library used with Python), meaning any machine learning model built using TensorFlow can be converted to run in the browser using TensorFlow.js.

Still, the question remains: why do we need a Javascript machine learning library?

Pros and cons of using JavaScript for machine learning

The answer is…

The fact that TensorFlow.js runs within the browser opens up a range of exciting possibilities for businesses and developers alike.

As browsers are an interactive space: one that offers access to various sensors — including webcams and microphones — which can provide visuals and sounds as an input into any machine learning model.

That said, the JavaScript library is only v1.0, and it still has significant limitations. So what are the current pros and cons of using TensorFlow.js in machine learning?

Pros of TensorFlow.js

Popularity

The first positive signal: developers who use it love TensorFlow.js. And adulation typically points to utility, so it’s safe to say the library offers a valuable addition to the world of machine learning.

Moreover, given its a companion to the popular Python library, there’s a low entry threshold — making it simpler for developers to start using it.

Performance

The language itself has high computational performance. It’s hardware-accelerated, as it uses WebGL (a JavaScript graphics API). Plus, if an end-user has a GPU in their system, developers can leverage that to enhance performance further.

Security

Web-scripting languages can open potential vulnerabilities. However, TensorFlow.js has built a reputation for the security of its execution environment, ensuring devices remain protected against threats when running an application.

Range

TensorFlow.js has already proven its value in several use cases on multiple devices: be it in JavaScript applications that run in the browser; on servers inside a Node.js environment; on the desktop; even in mobile browsers on Android and iOS devices.

Cons of TensorFlow.js

Data Limitations

Despite all the positives, TensorFlow.js does not have default access to the file system in the browser host environment. This limits available data resources and can put restrictions on file sizes.

Hardware Acceleration

The framework also has limited support for hardware acceleration. That said, as the open-source language evolves beyond v1.0, this situation is rapidly improving.

Single-threaded

In the JavaScript library, single threads download synchronously, which might throttle performance. Developers can overcome this by yielding the main thread, say, to improve the responsiveness of a page during training.

And in Node.js environments, developers can ensure tasks queued in the event loop are handled in a timely manner.

***

So now you know the pros and cons, but what’s actually possible with TensorFlow.js?

TensorFlow

What’s possible with Machine Learning and JavaScript?

Presciently, many developers are moving from handling ML on back-end servers to front-end applications.

And thanks to TensorFlow.js, teams can now create and run ML models in static HTML documents without ever setting up a server or even database — enabling the following services, hosted entirely client-side.

  • Automatic Picture Manipulation: auto-adjust images based on a predefined rule-set using a browser-based application — even generate art using convolutional neural networks, as Google has done.
  • Offline Game Opponents: play against an AI-operated adversary, even when a video game is offline — as you can do against Chrome’s built-in Trex opponent.
  • Content Recommendation Engine: build and train an ML algorithm in the browser, identifying what users like to look at and surfacing more relevant content — just as Twitter have done to rank tweets.
  • Activity Monitoring: install a client-side application that learns usage patterns on a local network or device — to monitor and flag unusual activity.
  • Object Detection: use a client-side application to detect documents or objects in pictures — such as Airbnb uses to alert users to the presence of sensitive information when they upload a passport or driving license photo.

See also: Introduction To Deep Learning With Fastai: This Is Why Deep Learning Can Work For Everyone

How to use Tensorflow.js to showcase your creativity

Yes — TensorFlow.js is in its early stages.

Still, an increasing number of companies are experimenting with machine learning applications that run on the end-users’ device. And as devices get more powerful, the opportunity to experiment will only grow.

At DLabs.AI, we’ve used browser-based applications (with permission, of course) to carry out early-stage data analysis from the client’s device, gleaning powerful insights that inform on future development decisions.

We’ve also used the latest APIs — like Node’s File System API — to access files stored locally on the user’s device, as well as to run multiple threads to help clients overcome performance issues.

We’re excited by what we’ve been able to do, not to mention intrigued by what’s to come — safe to say, it’s a technology we’ll be exploring well into the future.

If you’re sat there questioning whether Javascript for machine learning is fad or fashion, experience and popularity suggest its a trend that’s only set to grow.

***

Interested in exploring browser-based ML? Feel free to get in touch to see how DLabs.AI can help you use TensorFlow.js to boost your machine learning initiatives.

Krzysztof Miśtal

JavaScript Tech Lead focused on everything JS. He is also fascinated with cameras.

Read more on our blog