Azure MLでCNN(畳み込みネットワーク)を使ってディープラーニングさせる方法

今回は、Azure ML(Azure Machine Learning)を使って、画像認識に特化したディープラーニングのひとつであるCNN(畳み込みネットワーク)の作り方を紹介したいと思います。

Azure MLの使い方は以前の記事「プログラミング不要!? AI(人工知能)の作り方【Azure ML – 機械学習】」をご参照ください。

機械学習に使用するデータはAzure MLのサンプルデータ「MINST Test 10k 28×28 dense」を使用します。
「MINST Test 10k 28×28 dense」の中には28px×28pxの手書きの数字画像(0〜9まで)を数値化したデータが10,000個入っています。

作成するCNNは以下です。

作成するCNN

Azure MLの完成キャンバスイメージは以下です。

Azure MLの完成キャンバスイメージ

機械学習のモジュールには「Multiclass Neural Network」を使います。
「Multiclass Neural Network」はプロパティの設定で「Hidden layer specification」を「Custom definition script」に設定することで、Net#言語を追加できるようになりCNNを作成することができます。

Net#は、Microsoft が開発した言語で、ニューラルネットワークアーキテクチャを定義するために使用されます。

今回の設定値ですが、入力層のノード数は、画像が28px × 28pxなので784になります。
畳み込み層のそれぞれの設定値は

  • フィルタサイズ:5px × 5px
  • スライド量:1
  • フィルタ数:5
  • パディング:有り

で設定しています。
プーリング層の設定値はそれぞれ

  • フィルタサイズ:2px × 2px
  • スライド量:2

で設定しています。
また、プーリング層は「max pool」または「mean pool」のどちらかを設定することができますが、今回は「max pool」を設定しました。

Net#のプログラムコードは以下のようになります。

const { T = true; F = false; }

//入力層
input Picture [28, 28];

//畳み込み層
hidden C1 [5, 28, 28]from Picture convolve {
InputShape = [28, 28];
KernelShape = [5, 5];
Stride = [1, 1];
Padding = [T, T];
MapCount = 5;
}

//プーリング層
hidden P1 [5, 14, 14]from C1 max pool {
InputShape = [5, 28, 28];
KernelShape = [1, 2, 2];
Stride = [1, 2, 2];
}

//出力層
hidden H [100]from P1 all;

//ソフトマックス
output Result [10] softmax
from H all;

CNNをプログラミングで書くと複雑なコーディングが必要ですが、Azure MLだとこれだけの設定だけで作れてしまいます!
皆さんも一度試してみてください!

最新情報をチェックしよう!