AIや機械学習をはじめようと思ったときに使われるプログラミング言語といえばPythonでしょう。しかし、すでに別なプログラミング言語でシステムを組んでいる時、Pythonを新たに覚えるのは時間がかかります。
もしあなたがフロントエンド開発者だったり、JavaScriptを知っているのであれば、JavaScriptで動作する機械学習ライブラリを使ってみましょう。今回はWebブラウザ、Node.jsで動作する機械学習ライブラリを紹介します。
TensorFlow.js
最も有名と思われるWebブラウザ向けの機械学習ライブラリです。すぐに利用できる下記のモデルが公開されています。
- 画像分類
- オブジェクト検出
- 人体セグメンテーション
- 姿勢検出
- テキストの有害度検出
- ユニバーサル・センテンス・エンコーダ
- 音声コマンド認識
- KNN分類器
- シンプルな顔検出
- セマンティク・セグメンテーション
- 顔のランドマーク検出
- 手のポーズ検出
- 自然言語で自然に回答
TensorFlow.js | JavaScript デベロッパー向けの機械学習
Brain.js
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
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
JavaScriptの基本的なライブラリ集になります。その中で機械学習に関するライブラリがあります。二項分類、k平均法、回帰分類に対応しています。
stdlib - A standard library for JavaScript and Node.js
neuro.js
neuro.jsは二項分類、複数ラベルの分類、特徴量エンジニアリング、交差検証、SVMなどに対応しています。こうした手法を利用する場合であれば、コーディング量がごく短く実装できるでしょう。
Synaptic
Node.js、Webブラウザの両方で実行できる機械学習ライブラリです。多層パーセプトロン、LSTM、LSM、ホップフィールド・ネットワークといったアーキテクチャが組み込まれています。
Synaptic - The javascript neural network library
ConvNetJS
完全連結・非線形ニューラルネットワーク、SVM/Softmax/L2、畳み込み、強化学習(Deep Qラーニングベース)をサポートした機械学習ライブラリです。
Keras.js
KerasのモデルをWebブラウザで実行するのに特化したライブラリです。ImageNet、LSTM、AC-GANなどを扱えます。
Keras.js - Run Keras models in the browser
Neataptic.js
あらかじめ組み込まれているネットワークとしては以下が挙がっています。
- パーセプトロン − LSTM
- GRU
- NARX
- ホップフィールド・ネットワーク
自分でコーディングして構築もできますが、これらのネットワークであればすぐに利用できるでしょう。
MIL WebDNN
WebGL/WASMを活用することで高速に実行できる機械学習ライブラリです。IE10から利用できる点も大きな特徴です。Keras.jsと比べて高速なベンチマークが掲載されています。
TensorFire
TensorFlowやKerasで学習したモデルが利用できます。TensorFlowでネイティブに実行するよりも高速に処理できる場合があるそうです。
compromise.cool
テキスト解析に特化したライブラリです。テキスト同士のマッチ率を見たり、単語の品詞を見分けたりします。
Natural
NaturalはNode.js向けの自然言語処理用の機械学習ライブラリです。トークン化、ステミング、分類、tf-idf、WordNet、文字列の類似性チェックができます。
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だけで実装できると便利でしょう。
今回紹介したライブラリをぜひチェックして、皆さんの開発に役立ててください。