Python
MachineLearning
CNN
TensorFlow
MNIST

TensorflowのMNISTの記事を翻訳してみた

Tensorflow公式の、CNN(Convolutional Neural Network)でMNISTの数字データを学習させる記事を日本語に訳してみました。
ぜひご活用ください。
注意
私は海外滞在経験もなければ、この手の分野に明るいわけでもありませんので、訳が不適切である可能性が大いにあります。
もし発見した場合はコメントいただけると幸いです。
またなるべく文意を変えないように訳しますが、無理に訳すと返ってわかり辛くなると判断した場合は、多少原文と異なる場合があるかもしれません。
また、略語一覧です。目を通しておいてください。
略語一覧

略語 英語 日本語
CNN Convolutional Neural Network 畳み込みニューラルネットワーク
NN Neural Network ニューラルネットワーク
C-L Convolution Layer 畳み込み層
P-L Pooling Layer プーリング層
D-L Dense Layer 全結合層

畳み込みニューラルネットワーク構築のためのTF Layerガイド

Tensorflow layer moduleでは、簡単にNNを構築できるような高レベルAPIを提供しています。
このAPIが提供するメソッドには、全結合層と畳み込み層の構築を容易にし、活性化関数やDropout、正則化などの機能も盛り込まれています。
このチュートリアルでは、MNISTデータセットの手書き数字を認識するCNNモデルを構築するためのlayerの使い方を学びます。

mnist_0-9.png

MNISTのデータセットには、28x28ピクセルで白黒の、60,000枚の教師データと10,000枚のテスト用の手書き数字があります。

はじめに

まず空のTensorflowプログラムを作りましょう。
ファイル名はcnn_mnist.pyとし、以下のコードを記述してください。

cnn_mnist.py
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

# Imports
import numpy as np
import tensorflow as tf

tf.logging.set_verbosity(tf.logging.INFO)

# Our application logic will be added here

if __name__ == "__main__":
  tf.app.run()

このチュートリアルをやるにつれて、CNNの構築・学習・評価のためにソースコードを追加していくことになります。最終的に完成するソースコードはこちらにあります。

CNNの紹介

CNNは画像分類処理において現在最先端の技術です。
CNNでは画像の生データからハイレベルな特徴を抽出し、学習するための連続フィルターを持っており、それによって画像を分類することができます。
CNNは3つの要素から成り立っています

  • 畳み込み層(C-L) C-Lは画像に対し、具体的な畳込みフィルターを適用する。この層はそれぞれの区域に対し、特徴マップ出力のための値を生成するために数学的な処理を行う。さらにC-Lは一般的にReLu activation functionをモデルに非線形さを伝えるための出力に適用する。
  • プーリング層(P-L) P-LはC-Lを用いて、処理速度を上げるために特徴マップの次元を下げるために抽出処理を行っている。一般的に使用されるプーリングアルゴリズムは、特徴マップの小区域を抽出しその中の最大値だけを残す、というようなマックスプーリングである。
  • 全結合層(D-L) C-Lによって抽出された特徴や、P-Lによってダウンサンプルされた特徴を元に、分類を行う。全結合層では層内のすべてのノードが前の層のすべてのノードとつながっている。

一般的に、CNNは特徴抽出を行う畳み込みモジュールの積み重ねから成り、それぞれのモジュールはプーリング層とそれに続く畳み込み層から構成されています。そして、最後のモジュールは分類を行うためのいくつかの全結合層から構成されています。
CNNの最後のD-Lには、ソフトマックス活性化関数でそれぞれのノードに対して生成された0から1の値を付した(生成されたすべての値の和は0になる)、モデルのターゲットクラスへの一本一本のノードがある。
つまり、与えられた画像に対するソフトマックスの値は、画像がどのターゲットクラスに分類されるかどうかと関係のある量だと解釈できる。

CNN MNIST分類システムの構築

CNNの構造に適したMNISTのデータセットの画像の分類モデルを作ってみましょう。
1. 畳み込み層#1
ReLU Activation functionで32層・5×5フィルター(5×5ピクセルの区域に抽出する)を適用する。
2. プーリング層#1

とりあえずここまで
一緒に翻訳してくれる人募集...