Deeplearning4jとは何か?

Deeplearning4j(以下DL4J)はJava, Scalaで書かれた世界初商用グレードで、オープンソースの分散ディープラーニング・ライブラリです。Hadoopや Sparkと連携することにより研究、調査目的に加えて実際のビジネスに活かせるように作られています。Skymindは、その商業的サポートを行っています。

DL4Jは最先端のプラグ&プレイテクノロジーを駆使し、設定よりも非研究者でも手軽にプロトタイピングできるように作られています。DL4Jはスケーラブルでカスタマイズ可能です。Apache 2.0で配布されており、DL4Jの派生物はすべてその著者に帰属します。

弊社のクイックスタートにある手順に従いさえすれば、初めてのニューラルネットワークのexampleを数分で使用することができます。

Deep Learningのユースケース

  • 顔/画像認識
  • 音声検索
  • 音声の文字化
  • スパムフィルタ
  • 不正検出
  • レコメンダーシステム(CRM、adtech、解約防止)
  • 回帰

なぜDeeplearning4jなのか?

Deeplearning4jは、分散型で、マルチスレッドであるディープラーニングのフレームワークと通常のシングルスレッドであるディープラーニングのフレームワークの両方を持っています。学習はクラスタで行われるため、大量のデータを素早く処理することができます。ネットワークは、iterative reduce経由で学習させます。ネットワークはどれも等しくJavaScalaClojureと互換性があります。Deeplearning4jは、オープンスタックでモジュラーコンポーネントとしての役割を担いますが、これは、ディープラーニングのフレームワークとしては、初めてmicro-service architecture(マイクロサービスアーキテクチャ)に適応したものです。

DL4Jのニューラルネットワーク

ディープ・ニューラル・ネットワークは、驚異的な精確さを実現します。ニューラルネットワークの概要を簡単に知りたい方は、こちらをお読みください。手短に言うと、Deeplearning4jにより、様々な浅いネットワークを使って「レイヤー(層)」と呼ばれるものを形成し、ディープ・ニューラル・ネットワークを構成することができます。このように柔軟性が高いため、分散型のCPU、GPU、そしてSparkやHadhoopと連携した分散型フレームワークが必要に応じて、制限付きボルツマン・マシン、その他のオートエンコーダー、畳込みネットワーク、または再帰ネットワークを組み合わせることができます。

以下は、弊社が構築した様々なライブラリ、そして、それらのライブラリがそれらを取り巻くシステムのどこに位置するのかを図式化したものです。

Alt text

ディープラーニングで学習させるときには非常に多くのパラメタを調整することになります。Deeplearning4jをDIY(自助)ツールとして、JavaやScalaClojureのプログラマーの方々がご利用できるよう、ご説明して参りました。

分からないことなど質問があれば、是非、Gitterにご連絡ください。プレミアムサポートをご希望の方は、Skymindまでご連絡ください。ND4Jは、Javaベースの科学的計算エンジンで、弊社の行列演算に使われています。弊社にて、大規模な行列で測定したところ、その処理速度は、Numpyの約2倍の速さでした。

Deeplearning4jのチュートリアル

ユーザーの方々の声

  「まるでフランケンシュタイン、あの医者になったような気分だ...」 - Steve D.

  「deeplearning4jを使うことについて、こちら製造部門ではかなりの熱意を持っている。何十億ポンドの市場価値が期待できるからだ。」 -John M.

Deeplearning4jに貢献したい方々へ

Deeplearning4jに貢献したい開発者の方々は、Developer’s Guide(開発者のガイド)をお読みになるといいでしょう。

Deeplearning4jの研究

ジッターで私たちとチャット