新年早々から面白いソフトウェアが出てきましたよ! 2013年にはビッグデータに注目が集まりましたが、鍵になるのはその膨大なデータをいかに扱い、価値あるデータを引き出すかにかかっています。ただ蓄積するだけ、見ているだけではまったく意味がありません。 テキストであればまだしも画像や音声などではそれが何であるか判断する技術は単純ではありません。そこで2012年頃から注目を浴び始めたのがディープラーニングと呼ばれる技術であり、それをJavaScriptで体感できるのがConvNetJSになります。

ディープラーニングとは

筆者もはっきりと分かっている訳ではないのですが、これまでの機械的学習では特徴点を予め人間の手で設計する必要がありました。それに対してディープラーニングでは設計過程も含めて機会学習に含められるようです。

また、特徴点の組み合わせだけでなく、それらの特徴となる部品の組み合わせまで含めて概念的に物体を捉えることができる技術になります。場合によっては人間以上に正確な(特にぼやけていたり小さかったりする情報を含めて)分類分けを可能とします。

同じような認識処理は元々人間の脳で行われていたようで、概念としては知られていたのですが情報の処理能力やアルゴリズムの複雑さによって実現できていませんでした。それが昨今のハードウェア、ソフトウェアレベルの進化によって実現できるようになった訳です。

デモ

ではConvNetJSの公式サイトにあるデモでその実力を見てみましょう。まずはOCR。

手書き文字を認識しています。こうやってみるとかなり認識率が高いのが分かります。

人の目で見てもなかなか判断しがたい文字まで含めてかなり正確に判定されているようです。

認識処理部分。これまでの結果を受けつつ、それらをGPU処理して判断しています。

手書き文字の場合は白黒でしたが、さらに複雑な場合はどうでしょう。

猫、鳥、飛行機、車などを判断するデモ。

面白いのは馬などいずれにも属さないものは明確な緑判定が行われていないところです。どれかに必ず属するという条件がなくとも適切に動作しているのが分かります。

最後は赤と緑のボールを囲むデモです。

任意の場所をクリックして赤いボールを配置できます。

そうするとその場所を含めて囲むように枠が最適化されます。

こんな感じにも展開します。


ConvNetJSの使いところとしては画像などのフィルタリングになるかも知れませんが、そのアルゴリズムを学ぶことで他の処理に活かすこともできそうです。特に最新ではビッグデータが人気なので、その手法を学ぶことは決して損にはならないでしょう。 ちなみにディープラーニングと言うアルゴリズムがなぜ高い性能を出せるのかは理論的に解明はされていないようです。そう考えると応用範囲としてはまだまだ可能性を秘めているのが分かります。非常に面白いソフトウェアですね。 ConvNetJSはJavaScript製のオープンソース・ソフトウェア(MIT License)です。 ConvNetJS: Deep Learning in your browser karpathy/convnetjs