自社サービスにAI機能を!「機械学習」の要素を取り入れたJavaScriptライブラリ9選
- 酒井 涼
- 2018年6月20日
- ニュース
- 1,578
ライター・コラムニスト。デザインやテクノロジー、マーケティングやライフハック系の記事が得意。2016年からferretでも記事の執筆を開始。
>> 執筆記事一覧はこちら
「機械学習」に挑戦しよう、と思って最初に多くの人の前に立ちはだかるのは、使用言語の壁でしょう。多くの機械学習モデルは、プログラミング言語に「Python」を採用しているので、Web開発者には馴染みのないケースが多いようです。
しかし、仮にもし、Web開発者が慣れ親しんでいる JavaScript で、機械学習の操作ができるとしたらどうでしょうか。実は、機械学習機能を取り入れた JavaScript ライブラリは、日々リリースされています。
そこで今回は、「機械学習」の要素を取り入れた JavaScript ライブラリ9選を紹介します。それぞれに得意や苦手がありますが、ご自身が機械学習で取り組んでみたいことと比べてみて、実現可能に思えるライブラリをぜひ手に取ってみてください。
「機械学習」の要素を取り入れた JavaScript ライブラリ9選
1. TensorFlow.js
TensorFlow.jsは、 Google が開発した機械学習ライブラリ「TensorFlow」(テンソルフロー)をベースに、WebGL技術と組み合わせて機械学習モデルを作成することのできる JavaScript ライブラリです。フレキシブルで直感的なAPIを使うことで、難しそうに感じられる機械学習を、フロントエンドエンジニアでも気軽に扱えるようになっています。
もとはdeeplearn.jsとして開発が進められていたライブラリですが、正式に Google 傘下での開発が決まり、TensorFlowからのリリースとなりました。導入も数行のコードで簡単に行えるだけでなく、すでに存在する機械学習モデルを再教育することも可能です。npmやyarnを使っている人は、それぞれ直接ダウンロードを行うことができます。
2. Brain.js
Brain.jsは、ニューラルネットワークのライブラリの中でも人気のあるBrainと呼ばれるライブラリを、Node.jsや他の ブラウザ でも利用可能にした JavaScript ライブラリです。
Brain.jsのデモサイトでは、ニューラルネットワークを用いた色調の学習モデルが公開されています。このライブラリを使うことで、 ユーザー がよく行う動作を学ぶことができ、使えば使うほど賢くなっていきます。
3. Synaptic.js
Synaptic.jsは、Node.jsや ブラウザ を使って、構造にとらわれることのないニューラルネットワークモデルを JavaScript を使って簡単に構築することができるライブラリです。ニューラルネットワークの一分類である多層パーセプトロン(MLP)などをビルドインとして組み込んでいるので、他のライブラリでは処理の難しいことも比較的簡単に行うことができます。
Synapticでは、ニューラルネットワークの基礎単位を「ニューロン」として、ニューロン同士をつなげたり、既存のニューロンのコネクションに間に割り込んだりさせることができます。Wikiに詳しい使用方法が書いてあります。
4. WebDNN
WebDNNは、東京大学情報理工学系研究科の原田・牛久研究室が公開している、国産のディープラーニング用 フレームワーク です。WebDNNとはWeb ブラウザ 上で行うディープニューラルネットワーク(DNN)のことで、各エンド ユーザー 端末を使って機械学習を行うことで、サーバーの計算負荷を分散させることができます。
ニューラルネットワークは、インプットを行う「学習フェーズ」とアウトプットを行う「推論フェーズ」の2段階に分けることができます。WebDNNでは後者の「推論フェーズ」に特化することで、学習済みモデルを積極的に最適化することができます。
WebGLかWebAssemblyを搭載したWeb ブラウザ か、その代わりとなるasm.jsを読み込んだ環境で実行可能です。すべての演算はWeb ブラウザ 上で行われるので、画像などを外部サーバーに送ることもなく、プライバシー上の配慮もクリアできるライブラリだと言えます。
5. compromise
compromiseは、英文の言語解析に強みを持つ自然言語処理用の JavaScript ライブラリです。決して完璧とは言えないライブラリなので「妥協」(コンプロマイズ)という名前が付いていますが、英語学習 アプリ や添削 アプリ など、英語を使う コンテンツ を組み込む際にはあると便利な機能が満載です。
また、こうしたライブラリには珍しく、 ファイルサイズ は200KB以下と、jQuery本体と同じくらいの非常に小さい ファイルサイズ です。入力した英文から動詞だけを抜き出したり、インプットした文を疑問文に変えたりという機能が、わずか数行で実装できてしまいます。
6. Naetaptic.js
Neataptic.jsは、人工ニューラルネットワークの学習に遺伝的 アルゴリズム を用いる「ニューロエボリューション」、および教師あり学習 アルゴリズム のひとつである「誤差逆伝播法(バックプロパゲーション)」という手法をWeb ブラウザ やNode.js上で簡単に実行することができる JavaScript ライブラリです。
LSTMやGRUといった主要なネットワークがビルドインで組み込まれているため、複雑な処理も比較的簡単に取り入れることができます。
7. ConvNet.js
ConvNet.jsは、スタンフォード大学の機械計算学部アンドレイ・カルパシー研究室が公開している、ディープラーニングをWeb ブラウザ 上で実行するための JavaScript ライブラリです。他のソフトウェアに一切依存せず、GPUの負荷もかからない、処理速度に定評のあるライブラリです。npm経由でも利用できます。
デモサイトには、機械学習で定番の、人が書いた数字を学習してどんな数字かを推論する「MNIST」や、画像を使って「車」や「犬」など写真に写っている一般物体の認識を行う「CIFAR-10」といった機械学習はもちろん、画像から特徴を掴んでペイントを行うような実験的なデモも公開されています。
8. Mind
Mindは、Node.jsと ブラウザ 上で、様々なインプットに対して推論を提供する、シンプルな JavaScript ライブラリです。できることは非常に限られますが、他のライブラリに比べると初心者にも十分扱える、 プラグイン のような存在です。すでに「学習済み」のため、すぐに使うことができるのも魅力のひとつです。
インプットに対して推論を提供することができるこのライブラリは、 ユーザー の好みを学習することでオススメの商品をリコメンドする「あなたへのオススメ」機能の実装に便利です。もちろん、 ユーザー が好みを伝えれば伝えるほど、「あなたへのオススメ」の精度は上がります。
9. Natural
Naturalは、英語だけでなくベトナム語や日本語にまで対応した、自然言語処理に特化したNode.js用の JavaScript ライブラリです。npmでは、「npm install natural」というコマンドで簡単にインストールすることができます。
正直なところ、まだまだ簡単な処理しかできません。2つの文の類似性を数値で表したり、文を文節で区切ったりといったことが可能です。使い方を工夫することで、非常に役立つものとなるでしょう。
まとめ
今まで難しそうに思えた「機械学習」も、 JavaScript で書いてみると「意外とシンプルだった」というケースもあるでしょう。これらのライブラリを使えば、Pythonを学ばずとも機械学習を取り入れられ、なおかつフロントエンドで開発も行えます。
今では、大量のデータを扱う職種の多くで、機械学習の技術を取り入れたデータサイエンスが行われています。ぜひこの機会に機械学習の仕組みを自社サービスに取り入れてみてはいかがでしょうか。