2015年11月の現在、ディープラーニングが注目されています。昨今のディープラーニングの技術革新によって、画像の識別精度が急速に向上しています。一方で、その高度な画像認識技術を用いて新たなサービスが次々と作られようとしています。また、ディープラーニングを使うソフトウェアの覇権争いが白熱し、次々と新しいフレームワークが発表されています。
このディープラーニングですが、もちろんMicrosoft Azure Machine Learning (以下、AzureML)でも扱うことができます。
AzureMLとはMicrosoftのクラウドサービス(PaaS)のうちの一つで、様々な機械学習アルゴリズムを扱うことができるサービスです。
AzureMLを使うことでユーザーはブラウザ操作だけで簡単に機械学習アルゴリズムを使うことができます。
専用のプログラムを自分のPCにインストールする必要はありません。
AzureMLでディープラーニングを扱うメリットは二つあり、
①簡単にディープラーニングを扱えること、
②複雑なネットワーク構造も設計できること
です。
簡単にディープラーニングを扱えるのは、環境設定を行う必要がないという理由からです。
通常、自分のPCでディープラーニングを扱う場合、非常に煩雑な環境設定を行う必要があります。
しかし、AzureMLはPaaSなので既に環境が用意されており、自分自身でゼロから構築を行う必要はありません。
このように、環境構築が簡便でありながら、AzureMLでは複雑なネットワーク構造も設計可能です。
ニューラルネット構造の記述言語であるNet#を使って、取り扱う問題に合わせてネットワークの構造を詳細にカスタマイズすることができるのです。
では、AzureMLでディープラーニングを使う方法を簡単に紹介します。
AzureMLではいくつかのExperimentのサンプルが用意されているのですが、それらの内下記の画像が、ディープラーニングのサンプルです。
用意されているサンプルの内の1つ「Neural Network: Convolution and pooling deep net」を用いてAzureMLのディープラーニングの実力を確認してみます。
サンプルとしてモデリングに使うデータはMnist(数字の画像認識用データセット)で学習用データとして60000件、検証用データとして10000件の画像が用意されています。
以下はモデルの精度を表しています。
全体の精度が98.89%であることがわかります。
予測した値が実際はどの値の数字だったかが記された表です。
対角線上のマス目に入っている数字が100%に近いほど正答率が高いことをあらわしています。
ほとんどのマス目で99%近い正答率であり、どの数字でも精度が高いことがわかります。
これらから、AzureMLの計算精度が非常に高いことがわかりました。すごい!
計算速度、および、正答率が十分に高いので、AzureMLの計算スペックは期待できるレベルであると言っていいと思います。
ポイントはニューラルネットワーク用のモジュール※のHidden layer specificationパラメーターをCustom definition scriptに変更することです。そうすれば、Net#言語を書き込む領域Neural network definitionが表示され、この領域で設計したいネットワークを記述することができます。
Net#言語はニューラルネットワークのネットワーク構造を記述するためにMicrosoftが作成した言語で、詳細は以下のサイトに記されています。
https://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-azure-ml-netsharp-reference-guide/#layer-declaration
また、上で紹介したExperimentのサンプルはNet#で書かれていますので、それらを参考にしてみるとよいかもしれません。
以下、Net#言語の主な機能を挙げてみます。
用意されているものとしては
活性化関数
・シグモイド
・ソフトマックス
・relu
・tanh
etc.
ネットワーク構造
・全結合層
・フィルター層(フィルターを手動で定義できる)
・畳み込み層
・プーリング層
・局所正規化層
etc.
変更できるパラメーター
・学習率
・エポック数
・重みの初期分布
・モーメンタム
etc.
です。
PCにプログラミング環境を準備していないWindowsユーザーでさえも、複雑なネットワークを組めるというのがAzureMLのディープラーニングの強みです。気になった方は一度試してみるのはいかがでしょうか。
※ AzureMLでは複数のモジュールを組み合わせて分析を実行します。ニューラルネットワーク用のモジュールはMulticlass Neural Network、Two-Class Neural Network、Neural Network Regressionの3つです。