どうも、そらです!
Pythonではじめる機械学習の第一弾ということで、今回は手書き文字認識(MNIST)のやり方を紹介したいと思います!
手書き文字を認識させるには、予め用意した手書き文字の画像サンプルを使って学習させる必要があります。
しかしMNISTは機械学習の中でもチュートリアルなどによく利用されるものなので、Google Colaboratoryのみでモデルの作成が可能です。
環境を新たに構築する必要がないので、手軽に機械学習の勉強を始めることができます!
これから機械学習を学びたいと思っている人は、ぜひ参考にしてみてくださいね!
※記事中で紹介しているコードはGoogle Colaboratory上で動作することを確認しました。(2025年4月時点)
手書き文字認識(MNIST)をさせる手順
手書き文字を認識させるモデルを作成するための手順を確認したいと思います。
まずはGoogle Colaboratoryを使用するために、Googleアカウントを一つ用意しましょう。
Google ColaboratoryはGoogleアカウントを持っていれば誰でも使用することができます。
アカウントと開発環境が整ったら、必要なライブラリをインポートします。
以下のように使用するライブラリを読み込みましょう!
import numpy as np
from matplotlib.pyplot import imshow
import matplotlib.pyplot as plt
%matplotlib inline
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation
from tensorflow.keras.optimizers import SGD,Adam
from tensorflow.keras import utils
from tensorflow.keras.datasets import mnist
これは計算で使用する配列ライブラリNumPyや画像表示、ディープラーニング用のKerasをインポートするようなコードです。
無事インポートが完了したらデータセット(手書き文字のサンプル画像)を読み込み、これらの画像を機械学習に使えるように処理していきます。
ニューラルネットワークモデルの構築を行って、学習を実行したら一通りの作業が完了です!
機械学習では得られた結果を踏まえ、条件やモデルの構造を変えて再学習させ、どんどん改善させていくものです。
一周だけで終わらずに、様々な条件や学習方法を試して自分だけのモデルを作ってみてくださいね!
データの前処理
データの前処理には大きく分けて3つの工程があります。
1つ目は画像を一元配列に変換する操作です。
画像を取り扱う際は、画像を細かく分け、それぞれの部分(画素)の色の情報を一元配列にしていきます。
2つ目は1つ目で変換した一元配列の数字を正規化をします。
そして3つ目では、One-Hotエンコーディングという操作です。
One-Hotエンコーディングとは、これまでに処理をした情報をニューラルネットワークで使えるような形に変形する操作です。
これらの3つの処理を行えば、ニューラルネットワークに使うことができます。
ニューラルネットワークモデルの構築
データの準備ができたらニューラルネットワークモデルを作っていきます。
ここでは、使用するニューラルネットワークの入力や出力の個数、構造を指定します。
構造の選択によって、作られるモデルの精度も変化していくので、ぜひ色々試してみてください!
モデルができたら、以下のようなコードでモデルの構造を確認しましょう。
(モデル名).summary()
実行すると指定したモデルの構造が表で出力されます。
最後は学習を実行してモデルの完成です!
終わりに
今回は、Pythonではじめる機械学習の第一弾ということで、手書き文字認識(MNIST)の流れを紹介しました。
現在、様々なツールやサービスが普及し、機械学習が手軽に試せるようになっています。
ぜひ実際にプログラムを動かして色々試してみてくださいね!
今後も機械学習の学習方法などを、サンプルプログラムと合わせてまとめたいと思っています。
それではまた、次の記事で!