Kerasを使ってkaggleのDigit Recognizerに挑戦したので実践内容を順次紹介していきたいと思います。
はじめに
-
kaggleのDigit Recognizerとは?
Digit Recognizerはkaggleが用意している画像分類の入門となるCompetitionです。
MNISTと呼ばれる手書き数字画像(0〜9)のデータセットに対して予測モデルを構築し分類を行います。
そして分類精度がスコアになり順位を競います。 -
挑戦結果
まず結果がどうなったのかを紹介しておきたいと思います。
今回はKerasを用いてモデル構造としてはシンプルな2層のCNNモデルを構築し、
分類精度:99.442%を達成しました。
確率上は、200枚の0〜9画像を判定すると199枚は正解することになります。 -
挑戦したDigit Recognizerのソースコード
Digit Recognizerに挑戦した際のソースコードをkaggleで公開しています。
kaggleが用意しているkernelを活用すればすぐに自分で動作させることが可能です。
まずは動かしてみたいという方は利用してみてください。
Digit Recognizerへの挑戦
CNNモデル
画像分類の問題なのでCNN(Convolutional Neural Network)でモデルを構築しました。
今回はアーキテクチャの全容について紹介し、次回以降で個々の詳細について順次紹介していきたいと思います。
アーキテクチャ
Input -> Conv -> Activation -> Pooling -> Dropout ->
Conv -> Activation -> Pooling -> Dropout -> Flatten -> Softmax
-
Input
入力層。入力する画像データです。MNISTの場合サイズは(画像数, 28, 28, 1)になります。 -
Conv
畳み込み層(Convolutional Layer)。入力にフィルタを通すことで、特徴を抽出します。
このフィルタを良くするのが今回の学習の目的になります。 -
Activation
活性化層。畳み込み層の結果に活性化関数を適用します。今回はReLUを使用しています。 -
Pooling
プーリング層。2*2のMaxPoolingを使用しています。 -
Dropout
ドロップアウト層。ドロップアウト率0.1を使用しています。 -
Flatten
2次元で扱っていたデータをフラット(1次元)にします。 -
Softmax
10クラスの分類問題なので出力層にはソフトマックス関数を使用しています。
次回以降で詳細について順次説明していきたいと思います。
終わりに
ご質問や補足してほしい内容や要望などありましたらコメントいただけると幸いです。