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

こんにちは、AI研究所の三谷です。
今回は、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は以下です。

111

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

333

機械学習のモジュールには「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だとこれだけの設定だけで作れてしまいます!
皆さんも一度試してみてください!

最新情報をチェックしよう!
企業向けAI人材育成サービス

企業向けAI人材育成サービス

AI事業発足やAI導入に必要な人材育成のステップとAI研究所が提供するサービス。AI研究所の人材育成サービスでは、3つのステップを軸に御社の業務内でAIを活用できる人材育成やAIプロジェクトの支援を行います。

CTR IMG