この記事では、AIを作ってみよう:画像分類DNN(2/3) で作ったAIを解説していきます。
プログラムを簡単に解説
作ったプログラムをパートに分けてみます。
最初のパートでは、データを読み込んだ後、学習をするための変形をしています。
画像データは縦×横の2次元になっていますが、学習では2次元にする必要がなく、また単純に順番に読み込むと早いことから、1次元にします。
さらに、「3」という数値を「0,0,1,0,0,0,0,0,0,0」のような3つ目を1とした0/1の数値にします。これをベクトル化(one-hotベクトル化)といい、学習するに都合のよい形となります。
次のパートでは、DNNモデルを生成しています。kerasライブラリを用いて、層を重ね(addし)、結果、下のような構成のモデルにしています。
入力層は入力データのドット数784に、出力層は出力する分類の数(今回は0~9の数字)10個になります。
中間層の数は割と自由に定義できます。特徴を記憶できる厚みを表し、多いほど特徴をとらえますが多すぎても精度は上がりません。データが複雑でなければほどほどの数値にします。
3つ目のパートでは、学習データをDNNモデルに入れ学習をさせています。fitという命令1行でできてしまうんですね。
最後のパートで、predictという命令を用いて学習済みモデルにテストデータを入れ、予測をさせています。予測の結果は最初の5つだけ取り出し、表示させています。
簡単ですがプログラムの解説は以上です。
簡単なDNNモデルで正確な予測ができているのは、小さな画像を扱っているからですが、モデル内の活性化関数、最適化アルゴリズムという要素が効いているからともいえます。別の記事で紹介していきます。