Norbert Preining氏によるコラム、【手書き数字を認識する機械学習】を公開

アクセリア株式会社の研究開発部社員であるNorbert Preining氏による、コラム連載を開始しました。 https://www.accelia.net/column/research/

アクセリア株式会社 2017年11月24日

第3回:手書き数字を認識する機械学習

「数字を認識するように学習する小さなニューラルネットワーク」
 前回のコラム (リンク ») では、ニューロンをニューラルネットワークの単純なビルディングブロックとして説明しました。今回のコラムでは、手書き数字(MNISTチャレンジ)を認識する機械学習の、最も有名な問題のひとつに注目して、数字を認識するように学習する小さなニューラルネットワークを考えてみます。

 入力レイヤー、出力レイヤー、および活性化関数によってどのように単一のニューロンがモデル化されるかについて、前回で説明しました。活性化関数は入力を取り、与えられた重みと組み合わせて出力を計算します。手書き数字認識ネットワークに注目する前に、シンプルなニューラルネットワークがその出力をどのように計算するかを見てみましょう。


「ニューラルネットワークの出力とその計算方法」
 3つのニューロン(I1,I2,I3)を有する入力層、4つのニューロン(H1,...,H4)を有する1つの隠れ層、および2つのニューロン(O1,O2)を有する出力層を仮定します。さらに、ネットワークが完全に接続されている、すなわち各ニューロンが下図の通りそれぞれのニューロンに接続されていると仮定します。

V(入力層と隠れ層の間)とW(隠れ層と出力層の間)は、接続の重みと仮定します。この場合にはV1,3はI1とH3との間の接続の重みを表します。

ネットワークの出力を計算するために、入力値から始めて、隠れ層の値を計算します。
 ・計算式 (リンク »)
hはある指標関数です。

次に、出力ニューロンを計算します。
 ・計算式 (リンク »)

数学では、通常、上記を記述するために行列/ベクトルの乗算を使用します。
 ・計算式 (リンク »)

 ニューラルネットワークの出力を計算することができたので、その結果を使って学習させます。入力値と出力値のセットがあり、ニューラルネットワークに合わせて重みを調整します。各入力データに対して出力を計算し、計算結果と期待される出力を比較したその差を損失といいます。重みを調整することにより、この損失を最小限に抑えようとします。


「手書き数字を訓練する例」
 ここで、MNISTデータセットを見てみましょう。これは手書き数字の28x28ピクセルの画像です。したがって、ニューラルネットワークの入力には28×28 = 784個のニューロンがあります。 1つの隠れ層に64個のニューロンを追加し、出力層に10個のニューロンを追加します。訓練入力は画像のピクセルであり、期待される出力は正しい数字が1で残り全てが0であるベクトルです。

 下記でダウンロードできるコードはTFLearn (リンク ») というフレームワークを使ってPythonで書かれています。TFLearnはGoogleのTensorFlow (リンク ») に実装されています。TFLearnとTensorFlowをインストールした場合は、下記のコードをそのまま起動できます。

 ・コードのダウンロード (リンク »)

---コードの説明---
l1:tflearnフレームワークをインポートし、テンソルフローを読み込み
l2:mnistデータセット関数をインポート
l4:MNISTデータをロードし、トレーニングセットとテストセットに分割
l5-l13:学習データ、テストデータ、バリデーションデータを設定

l15-22:ニューラルネットワークを構築
l16:入力層を784個のニューロンで定義
l17:完全に接続された64個のニューロンの隠れ層
l18:出力層は10個のニューロンで構成され、10個の値の和が1になる確率を保証する特別なアクティブ化関数 `softmax 'を使用
l19:どのように重みを学習するか、ネットワークを定義

l21:モデル(深いニューラルネットワークDNN (Deep Neural Network))を作成
l22:訓練セットXとYに適合し、検証セットtestXとtestYに対するテスト

l26:Xvalに対して認識の結果を計算
l28-45:ランダムの画像を10枚を表示
------


・・・ここから先は、アクセリア株式会社で公開中のコラム本編でご覧ください。
本編では、挿絵を交えて詳しく説明しています。
(リンク »)


【Norbert Preining氏のコラム】
・第1回:今さら聞けない、機械学習/ディープラーニングとは!? (リンク »)
・第2回:最新の機械学習の代表、ニューラルネットワークとは (リンク »)

関連情報へのリンク »

本プレスリリースは発表元企業よりご投稿いただいた情報を掲載しております。
お問い合わせにつきましては発表元企業までお願いいたします。

アクセリア株式会社の関連情報

アクセリア株式会社

アクセリア株式会社の記事一覧へ

【企業の皆様へ】企業情報を掲載・登録するには?

御社の企業情報・プレスリリース・イベント情報・製品情報などを登録するには、企業情報センターサービスへのお申し込みをいただく必要がございます。詳しくは以下のページをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]