初心者にお勧めの人工知能開発の勉強法

人工知能は、昔、ニューラルネットワークという技術だった研究が今、機械学習、ディープラーニングという形で進化してきた技術です。今の人工知能の特徴はシナプスという論理回路の一種のものが、1層辺りに数百個オーダーのシナプスを並べ、更に、層を多層化することによって、学習能力を上げ、正解率を上げている論理回路の大きな塊の様な構成になった構造になっています。

といっても、人工知能の学習ようわからん・・・

人工知能で手書き文字・画像を認識することができる

昔の学習方法は人間が考えた特徴を機械に覚え込ませるのが特徴でした。例を挙げると、ネコを認識させたい時、そのネコの特徴(髭がある、とんがった耳がある、しっぽがある、四つ足である)といった特徴を入力して、人工知能のパラメータを学習されることが特徴でした。

今、機械学習・ディープラーニング・人工知能といったものの学習方法は、機械に自分で学習させ人間がやっていることは、「これはネコの画像だよ、これは犬の画像だよ、これは飛行機」という様に、入力物とその答えを人工知能が学習して、各シナプスのパラメータを最適値に調整していることが特徴です。

2012年に「Googleの猫認識」が有名が話です。

「Googleの研究開発によってコンピュータが猫を認識できるようになった」というニュースが飛び回り、話題を呼びました。その後、他の研究機関でも研究が進み、2016年には、’0’~’9’の手書き文字を認識する技術能力(MNIST)、10種類の画像(動物や飛行機など)を認識する技術能力(Cifar10)、100種類の画像識別能力(Cifar100)等に関して、世界の研究機関の正解率トップランキング、研究機関、正解率、手法、論文が公開されています。

”What is the class of this image ?”で検索すると、トップランキングの性能が分かりますし、ここから、訓練データ、検証データをダウンロードできる様になっています。

自分たちの人工知能の手法、モデルがどの程度の性能を出せるかを競う為に、決められている訓練データと検証データを使って、性能を比較しないと、他の研究機関と土俵を同じにして、比較できないので、この様な形になっています。

人工知能を作るには?

pythonを使って基本は作ることが可能です。Pythonは科学技術計算に優れた無料のプログラミング言語で、python japanの公式ホームページからダウンロードすることができます。今の最新はpython 3.x.xなので、最新のものを32bit版、64bit版に合わせて、ダウンロードすると良いです。パッケージのダウンロード方法は公式ホームページに記載のやり方に従って、実行していけば、ダウンロードすることができます。

プログラミングする際、自分の使いやすいエディタを使って、プログラムを作成し、コマンドプロンプトからPython プログラム名.pyで実行すると、プログラムは自動的に実行してくれます。

簡単な人工知能の作り方

Pythonだけでもプログラミングはできますが、人工知能用に用意されているフレームワーク(ライブラリ)を利用した方が簡単にプログラミングを作ることができ、Run動作を行なって正解率を確認することができます。このフレームワーク(ライブラリ)にKeras, TensorFlowといったものがあります。

なぜKerasを使った方が良いかというと、1層辺りの人工知能モデルを1行のプログラミングで書けるからです。Kerasを使うためには、インストールのやり方にコツがあります。インターネットで調べると分かりますが、苦労しながら、インストールして、可能なやり方を公開してくれている方がいらっしゃいます。

一番簡単な方法はまず、Anacondaをインストールします。Anacondaはpython本体に加え、機械学習に関連するライブラリもインストールできるパッケージためだからです。その後、コマンドを使って、kerasをインストールすれば、pythonとkerasを使うことができます。

初心者が独学で、人工知能を勉強する一番早く、理解しやすい方法

良書を使い、その良書に付属しているサンプルプログラムを使って勉強していくのが、一番効率の良い方法です。順番としては

  1. ’0’~’9’の手書き文字を認識する技術能力(MNIST)
  2. 10種類の画像(動物や飛行機など)を認識する技術能力(Cifar10)
  3. 100種類の画像識別能力(Cifar100)

という様に徐々に学習が難しい学習材料にしていくことが事です。動作するバグのないプログラムで徐々にパラメータを変更して、訓練データの学習性能・検証データの正解率がどう変化するかを見ていくと、どのパラメータを変更すると正解率が向上するか、学習能力が向上するかが、学習回数に対する訓練データ正解率、検証データ正解率のグラフ化で分析することができます。

インターネットを使って、python、人工知能の情報はQiitaというコミュニティを検索すれば、色々と勉強になる情報を公開されています。また、pyhthonで検索しても、プロのライターの方がサンプルプログラムを使って、説明されているものもあり、初級者でも理解できます。プログラムは

  • ライブラリをimportする初期命令
  • 学習させるための多層構造人工知能モデルの列挙
  • 訓練データを使った学習部分(学習を行ない、エラー
  • 検証データによる検証(正解率評価)
  • グラフプロット

に分かれているので、個々に順番に理解していくと良いでしょう。

簡単な人工知能の学習方法の理解

どの様に学習しているのでしょうか?

それは誤差関数を計算させて、誤差関数を小さくする様に学習させていきます。簡単な例で説明します。誤差関数がy=3*(x-1)^2であったとします。この関数グラフはx=1で、極小値を持つ、グラフです。x=1よりも小さい時は、グラフの勾配がマイナスのため、x軸の右側に極小値を持つことが理解できます。

逆に、x=1よりも大きな数値の場合はどうでしょうか。勾配が、プラスになっているので、極小値が左にあることが分かります。この様に、誤差関数を微分して、その微分値から、人工知能の学習に関する各パラメータを調整し、エラーを再度計算します。

このパラメータ調整、誤差関数エラー値計算を繰り返します。この繰り返し学習する行為をイッテレーションと言います。イメージ的には、丸みのある底のあるツボの底が最適値で、その底に最適値が移動していくように、各パラメータ調整をしながら、繰り返し計算処理を行なうことで、最終的な値を求めていくことになります。

人工知能学習初心者にお勧めの本

まず、オライリー関係の本は中級・上級者様なので、初心者の方は最初からいきなり読むと挫折してしまいます。どこで挫折するかというと、一行で高等な技術を使って、実行しているので、一度に理解するには無理があるからです。少し慣れてから、オライリー関係の本を見て、プログラムを比較してくと、その高度なレベルが理解できる様になります。

また、サンプルプログラムがなく式ばかりの本も避けた方が良いです。複雑な式だけで、理解しようとすると、高度な数学的な知識なしには、難しく、微分の難しい式ばかりなので、結局の処、理解できずに徒労に終わってしまいます。

以下、独学で機械学習・ディープラーニングを勉強するのにお勧めの本をご紹介します。以下の本は全て、サンプルプログラムがダウンロードでき、自分で、pythonでプログラムを動かしながら、勉強することができます。

プログラム中にバグも少ないです。100%バグなしとはいきませんが、初級用の良書と言えます。3.から5.は少しレベルの高い内容が書かれていますが、全て理解できなくてもどうすれば性能を改善できるのか、最新の人工知能モデルはどんな構成になっているかが書かれているので面白いです。伊藤真氏、クジラ飛行机氏の本は、図が多いので理解しやすく、プログラムのコメントを丁寧に書かれているので、初心者でも、挫折せずに読めるでしょう。

1.「Pythonで動かして学ぶ! 新しい機械学習の教科書」、伊藤真著、翔泳社
2.「すぐに使える!、業務で実践できる! PythonによるAI・機械学習・深層アプリのつくり方」、クジラ飛行机著、ソシム社
3.「ゼロから作るDeep Learning pythonで学ぶディープラーニングの理論と実装」、斎藤康毅著、オライリー社
4.「アルファ碁ゼロ対応 最強囲碁AI アルファ碁解体新書 増補改訂版 深層学習、モンテカルロ木検索、強化学習から見たその仕組み」、大槻知史著、三浦陽一郎監修、翔泳社
5.「pythonとKerasによるディープラーニング」、Francois Chollet著、株式会社クイープ訳、巣鴨悠輔 監訳

おすすめの記事