FRONT-END.AI Blog

FRONT-END.AIやAI/機械学習に関する最新情報を発信しています

JavaScriptで利用できる機械学習ライブラリまとめ

AIや機械学習をはじめようと思ったときに使われるプログラミング言語といえばPythonでしょう。しかし、すでに別なプログラミング言語でシステムを組んでいる時、Pythonを新たに覚えるのは時間がかかります。

もしあなたがフロントエンド開発者だったり、JavaScriptを知っているのであれば、JavaScriptで動作する機械学習ライブラリを使ってみましょう。今回はWebブラウザ、Node.jsで動作する機械学習ライブラリを紹介します。

TensorFlow.js

f:id:moongift:20211015203706j:plain

最も有名と思われるWebブラウザ向けの機械学習ライブラリです。すぐに利用できる下記のモデルが公開されています。

  • 画像分類
  • オブジェクト検出
  • 人体セグメンテーション
  • 姿勢検出
  • テキストの有害度検出
  • ユニバーサル・センテンス・エンコーダ
  • 音声コマンド認識
  • KNN分類器
  • シンプルな顔検出
  • セマンティク・セグメンテーション
  • 顔のランドマーク検出
  • 手のポーズ検出
  • 自然言語で自然に回答

TensorFlow.js | JavaScript デベロッパー向けの機械学習

Brain.js

f:id:moongift:20211015203717j:plain

RNN/LSTM/GRUがサポートされています。NeuralNetworkメソッドを使って、個別に活性化関数の指定もできます。GPUを活用している点が特徴に上がっています。

const net = new brain.NeuralNetwork();

net.train([
  { input: { r: 0.03, g: 0.7, b: 0.5 }, output: { black: 1 } },
  { input: { r: 0.16, g: 0.09, b: 0.2 }, output: { white: 1 } },
  { input: { r: 0.5, g: 0.5, b: 1.0 }, output: { white: 1 } },
]);

const output = net.run({ r: 1, g: 0.4, b: 0 }); // { white: 0.99, black: 0.002 }

Brain.js: GPU accelerated Neural Networks in JavaScript

ml5js

f:id:moongift:20211015203727j:plain

TensorFlow.jsを使いやすくラッピングしたライブラリです。特定用途においては、素で使うよりも簡単になるでしょう。コード例は以下のようになります。

// Step 1: Create an image classifier with MobileNet
const classifier = ml5.imageClassifier("MobileNet", onModelReady);

// Step 2: select an image
const img = document.querySelector("#myImage");

// Step 3: Make a prediction
let prediction = classifier.predict(img, gotResults);

// Step 4: Do something with the results!
function gotResults(err, results) {
  console.log(results);
  // all the amazing things you'll add
}

ml5js·Friendly Machine Learning For The Web

stdlib

f:id:moongift:20211015203738j:plain

JavaScriptの基本的なライブラリ集になります。その中で機械学習に関するライブラリがあります。二項分類、k平均法、回帰分類に対応しています。

stdlib - A standard library for JavaScript and Node.js

neuro.js

f:id:moongift:20211015203747j:plain

neuro.jsは二項分類、複数ラベルの分類、特徴量エンジニアリング、交差検証、SVMなどに対応しています。こうした手法を利用する場合であれば、コーディング量がごく短く実装できるでしょう。

neuro.js

Synaptic

f:id:moongift:20211015203757j:plain

Node.js、Webブラウザの両方で実行できる機械学習ライブラリです。多層パーセプトロン、LSTM、LSM、ホップフィールド・ネットワークといったアーキテクチャが組み込まれています。

Synaptic - The javascript neural network library

ConvNetJS

f:id:moongift:20211015203806j:plain

完全連結・非線形ニューラルネットワーク、SVM/Softmax/L2、畳み込み、強化学習(Deep Qラーニングベース)をサポートした機械学習ライブラリです。

ConvNetJS

Keras.js

f:id:moongift:20211015203817j:plain

KerasのモデルをWebブラウザで実行するのに特化したライブラリです。ImageNet、LSTM、AC-GANなどを扱えます。

Keras.js - Run Keras models in the browser

Neataptic.js

f:id:moongift:20211015203826j:plain

あらかじめ組み込まれているネットワークとしては以下が挙がっています。

  • パーセプトロン − LSTM
  • GRU
  • NARX
  • ホップフィールド・ネットワーク

自分でコーディングして構築もできますが、これらのネットワークであればすぐに利用できるでしょう。

Neataptic.js - Home

MIL WebDNN

f:id:moongift:20211015203858p:plain

WebGL/WASMを活用することで高速に実行できる機械学習ライブラリです。IE10から利用できる点も大きな特徴です。Keras.jsと比べて高速なベンチマークが掲載されています。

MIL WebDNN

TensorFire

f:id:moongift:20211015203924p:plain

TensorFlowやKerasで学習したモデルが利用できます。TensorFlowでネイティブに実行するよりも高速に処理できる場合があるそうです。

TensorFire

compromise.cool

f:id:moongift:20211015203943j:plain

テキスト解析に特化したライブラリです。テキスト同士のマッチ率を見たり、単語の品詞を見分けたりします。

compromise.cool

Natural

f:id:moongift:20211015203952j:plain

NaturalはNode.js向けの自然言語処理用の機械学習ライブラリです。トークン化、ステミング、分類、tf-idf、WordNet、文字列の類似性チェックができます。

Introduction - Natural

ml.js

以下の手法などが用意されている機械学習ライブラリです。

  • PCA
  • 凝集型階層クラスタリング
  • K-meansクラスタリング
  • 教師あり学習
  • 単純ベイズ
  • KNN
  • PLS
  • 交差検証
  • Confusion Matrix
  • 決定木分析
  • ランダムフォレスト
  • ANN
  • FNN
  • SOM − 線形回帰
  • 多項式回帰

mljs/ml: Machine learning tools in JavaScript

limdu

Node.js向けに作られている機械学習ライブラリです。次のような機能があります。

  • 二項分類
  • マルチラベル分類
  • 特徴量エンジニアリング
  • SVM

erelsgl/limdu: Machine-learning for Node.js

まとめ

JavaScriptはフロントエンド開発には必須ですし、人気も高いプログラミング言語になります。機械学習分野においてもPythonをあえて別で覚えることなく、JavaScriptだけで実装できると便利でしょう。

今回紹介したライブラリをぜひチェックして、皆さんの開発に役立ててください。

著者

アツシ