スポンサーリンク

競馬AIの作り方 3話 AIを作ってみよう

こんにちは。Gary設計者です。
今回は実際にNeural Network Consoleを使ってAIを作ってみます。
まだ過去の投稿を見てない方はそちらからお読みください。

競馬AIの作り方 0話 はじめに
競馬AIの作り方 1話 AI Toolの紹介
競馬AIの作り方 2話 AIの勉強方法

Neural Network Consoleにはブラウザ版とアプリ版がありますが、今回は直ぐにAI体験ができるブラウザ版で説明します。
ブラウザ版を無料で使える時間は10時間です。
本格的に開発を行いたい方はアプリ版の利用、もしくはブラウザ版で課金をしてGPUを利用するのがオススメです。
それでは早速AI作りを体験してみましょう。

MNISTの画像分析

今回はサンプルとしてMNISTの画像分析を行い、画像内の数字が4か9かを判定をさせるAIを作ります。
MNISTとは手書き数字が書かれている画像データセットのことです。
AI作りのサンプルとして一番有名なデータセットになります。

Neural Network Consoleには予めサンプルデータセットとしてMNISTのデータセットが存在します。
まずはデータセットを見てみましょう。

Neural Network Consoleのアカウントを作成後、ログインしてください。
次に左側のメニューからデータセットを選択し、mnist.small_mnist_4or9_traningを選択すると下記の画面になります。

画面右側のプレビューにはmnist.small_mnist_4or9_traningに含まれるデータの一覧を示しています。
x:imageはmnistのデータで4か9の手書き数字が描かれています。
y:9はそのデータが4か9かの答えで1なら9、0なら4ということを示しています。

次に同じ画面内にあるmnist.small_mnist_4or9_testを選択すると同じような画面が出ますが、プレビュー内に表示されるデータが異なります。
この二つのデータセットは下記の役割を果たします。

  • mnist.small_mnist_4or9_traning・・・学習用データ。AIモデルの構築に使用。
  • mnist.small_mnist_4or9_test  ・・・・テスト用データ。AIモデルの妥当性を検証するために使用。


なぜデータセットが二つに分かれているかは後で説明します。

それでは早速AI作りをやってみましょう。
左のメニューからプロジェクトを選択し、プロジェクトの新規作成をクリックします。
プロジェクト名を入力してOKをクリックすると下記の画面になります。

プロジェクト画面(初期状態)

次に上のメニューからデータセットをクリックすると下記の画面になります。

データセットの選択画面

Training用データセットとして【データセットの選択】からmnist.small_mnist_4or9_traningを選択してください。
次に左のメニューからValidationをクリック後、同じように【データセットの選択】からmnist.small_mnist_4or9_testを選択してください。
データセットの選択はクリップみたいなマークを選択するとできます。
正しくデータセットが選択できると下記の画面になります。

データセット選択後の画面


正しくデータセットが選択出来たら上の編集をクリックしてプロジェクト画面に戻ります。
次に左側のレイヤーメニューから下記レイヤーを順番にダブルクリックして画面中央の編集部に配置してください。

  1. Input
  2. Affine
  3. Sigmoid
  4. BinaryCrossEntropy

次に配置されたAffineレイヤーを選択し、レイヤープロパティのOutputShapeを1に編集します。
ここまで編集できると下記のような画面になっていると思います。

プロジェクト画面(レイヤー挿入後)

後は右側のメニューの実行をクリックすればAIの作成が完了です。
思ったより簡単じゃないですか?
それでは実行を押してみましょう。
実行が完了したら下記のような画面になります。

学習結果

ここでEpoch数は学習回数と考えてもらえば大丈夫です。
今回は全てのデータセットに対して100回学習を行っています。
赤色の線がAIモデルの正確さを示しており、0に近いほどいいモデルができているという意味になります。
実線がmnist.small_mnist_4or9_traningのデータに対しての正確さを示しており、ほぼ0なので間違いなく4と9の判別ができています。
点線はmnist.small_mnist_4or9_testのデータに対しての正確さで、実線より大きな値になっています。
これは概ね4と9の識別はできているが、たまに間違えてるということを示しています。

このようにAIは学習したデータに対しては良い精度で正解を導けますが、そのモデルが汎用的かを検証する必要がります。そのため、traningとtestで異なるデータを使って検証する必要があります。

次にAIがどのようなデータのときに間違えているかを見てみましょう。
右側のメニューにあるコントローラーの実行をクリックして評価を実行します。
評価が完了すると下記の画面になります。

評価実行結果

ここでy’__1stはAIがこの数字が導いた答えです。
y:9と同じ値だったら正解ということになります。

y’__1st_valueはy’__1stが1(image = 9)の確率です。
0.5以上ならy’__1stは1(image = 9)で、0.5未満ならy’__1stは0(image = 4)ということを示しています。

次にAIが間違えたデータを見てみましょう。
y:9とy’1__1stが異なるデータを探してみると下記がありました。

AIが間違えたデータ

データセットの答えだとこの数字は9ですが、AIは4と答えました。
但し確率は0.4なので、どちらかといえば4という答えです。
確かに人間が見ても4に見えなくもない画像になっています。

さらに精度を高めるには各層を接続したProject画面を編集する、もしくはTrainingのデータを増やすことで精度の向上が期待できます。
Neural Network Consoleには多くのサンプルデータセットが用意されているので色々試してみてください。

今回はサンプルのデータセットを基にAI作成の簡単さを説明してきました。
モデル構築に使った各層の説明などは省いていますが、前話の勉強方法で紹介した動画や本を読んでもらえると各層が何をしているかの説明があります。

また今回構築したモデルからわかるように、AIは答えが正解かどうかの確率を計算することができます。
Garyではこれを応用して1位になる馬の勝率を算出しているという仕組みです。

AI作りの簡単さが感じていただけましたかね?
次回は競馬AI作成に必要なデータ収集方法(スクレイピング)について投稿予定です。
#リクエストありがとうございます!


コメント

タイトルとURLをコピーしました