強いAIの実現方法 ~実践的な作り方~

強いAIの実践的な作り方を検討しています。メイン記事に主張をまとめています。人工知能関係の書評もあり。なお、今後、任意団体として活動してみたいと考えており、手伝ってみたいという方は是非ご連絡下さい。詳しくは、メイン記事の7を参照下さい。

直感 Deep Learning を読んだ(その1)

直感DeepLearning Python×Kerasでアイデアを形にするレシピ
Antonio Gulli 著 2018年 オライリー・ジャパン

 作って動かすAlifeに続き、Pythonでのネットワーク実装のために参考とする。
 アナコンダをインストールしたWindows7で、正常に動いた。プログラムの苦労として、つまらないことで動かないのの解決に時間を要するので、わりとあっさり動いたのに感謝。

 表題にもKerasとあり、tensorflowのさらに上位のKerasを使うことで簡単にニューラルネットワークが組める。第1回として、1章「ニューラルネットの基礎」にて手書き数字認識を一通りこなした。たったの70行で28×28=784の入力があるニューラルネットを組めてしまい、Kerasのコンパクトさは異常。1章はまだディープラーニングでは無いが、3章のCNNでも100行しかない。

 1章の内容にしたがい、中間層が1層、隠れ層を2層追加(5行で追加出来る)、さらにドロップアウト層の追加をして、それぞれテキスト通りの結果を得た。また、学習回数を変える等で、自分で効果のほどを確認できる。手書き数字識別で95%程度の識別率になった。まぁ、数字なので10種類しかないし。CNNだと99%を越えてくる。

 TensorBoardの使い方が分かると、学習結果のグラフ化、ネットワークの視覚化が出来る。以下に3種類のネットワークの視覚化したものを載せる。これがネットワーク構造と言ってよいのかはちょっと自信が無い。

f:id:tomotomo47:20190321223929j:plain

中間層1層 Dense(全結合)

f:id:tomotomo47:20190321224009j:plain

隠れ層2層追加

f:id:tomotomo47:20190321224046j:plain

ドロップアウト追加

 

 なお、本書は、他のオライリーの「ゼロから作るDeepLearning」とかに比べやや敷居が高そうだが、取りあえず1章で行き詰ったのは2か所。

  1. アナコンダをインストールした状態で、JupyterNotebookで保存先のフォルダにいき、terminalからソースを実行したところ、以下のエラーが出た。
    ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'
    これは、pipで一度tensorflowをアンインストールし、condaで再インストールしたら解決。こちらのページを参考にしました。

    qiita.com

  2. TensorBoardの使い方。
     起動時に指定しなくてはならないディレクトリ位置の指定が良く分からず。ターミナルで打ち込むコマンドが、最後のでないと駄目なのだが、これにたどり着くまでに1時間ぐらいかかったかも。こういうところで時間を取られる。
     ログディレクトリの名前が長いのは、本書がログファイルの保管場所を毎回時間で変えている設定のためで、ディレクトリがどんどん出来てしまうのでいまいち。TensorBoardも、ログファイルの場所をエクスプローラー風に探せるようにすれば良いのに。
    × tensorboard --logdir=./keras_MINST_V2_Thu_21_Mar_2019_08_27_18
    × tensorboard --logdir=./keras_MINST_V2_Thu_21_Mar_2019_08_27_18/
    ○ tensorboard --logdir=keras_MINST_V2_Thu_21_Mar_2019_08_27_18