人工知能を勉強したい → Pythonの動画講座を受講してみた
人工知能や機械学習、ディープラーニングって気になってはいたけれど、
- 環境構築がめんどくさそう
- 取り組んでも、難しくて理解できず、時間のムダになるんじゃないか
という理由で先延ばしていました。さすがにそろそろやらねばと思い立ち、Udemyの動画講座を受講してみました。動画だと見てるだけで進むので始めるのがめんどい技術にはもってこいです。
いろいろと得るものがあったので、紹介します。
受講した講座の概要
私が受講したのは初心者必見!Pythonでニューラルネット・深層学習を完全攻略という動画講座です。
- はじめに → 講師の自己紹介、講座の説明
- Python入門 → Pythonの基礎的文法など
- 人工知能とは何か → 人工知能の歴史や概要、基礎的理論の説明。Tensorflow, Kerasの演習
という3つのセクションで構成されています。
Pythonの文法についてはWebサイトや本でおおまかに理解していたので、セクション3だけでいいかなともおもったのですが、はじめから順番に見ていきました。
自分では理解してたつもりでも、曖昧だったところがけっこうあって、
- タプルは、変更できない配列のようなもの、リストよりも高速に処理できる
- import from asの意味、__init__.pyなどモジュールの作り方
などをしっかり理解できました。耳で聞くと頭に入りやすいもんだなと。
Webサイトや本などで「読んで学ぶ」のとはちがう刺激「見て、聞いて学ぶ」が動画からは得られますね。
環境構築は意外なまでにかんたんだった
機械学習ライブラリってセットアップが大変そうなイメージがあったのですが、かんたんにできました。
Anacondaというパッケージをインストールして、
pip install scipy
conda install tensorflow
conda install keras
conda install scikit-learn
conda install h5py
とコマンドを打つだけでエラーもなくセットアップできました。
しかも「WindowsPCで」です。
PythonやRubyはWindowsと相性が悪い印象でしたが、Anaconda最高じゃんって感じです。
人工知能の歴史
人工知能の歴史を大雑把にいうと、
第一次AIブーム | 1960年代 推論と探索に関するブーム |
人工知能冬の時代 | 1970年代 第一次ブームの技術では扱える問題が小さかったことが原因で下火になった |
第二次AIブーム | 1980~90年代 エキスパートシステムなど。 |
人工知能冬の時代 | 2000年代 第二次ブームの技術では複雑な問題・例外への対応ができないため下火になった |
第三次AIブーム | 2010年代 機械学習によってフレークスルー ★今ここ |
という状況なんだそうです。
人工知能の限界「フレーム問題」
「フレーム問題」についても、ダニエル・デネットのロボットの例でわかりやすく解説されていました。
かんたんに言うと、人は何かを考える時にフレーム(枠組み)を設定できるが、人工知能が自主的にそれを行うことは難しいというものです。
将棋のAIは将棋というフレームが人間に与えられていますが、人間のように現実のあらゆる問題に対応しようとするとフレームをその都度切り替えなければならないですが、それをコンピュータに自動的に行わせることができないという問題です。
この辺りは本で読んでなんとなく知ってたのですが、人の声で説明を聞くことですっと頭に入りました。いろんな種類の学び方をしていろんな刺激を自分の脳に与えるのって大事だなって思いました。
学んだことメモ
- チューリングテスト(会話相手が人間だと感じれば合格というテスト)
- 2045年問題とシンギュラリティ
- 機械学習とニューラルネット
- 教師あり学習、教師なし学習、強化学習(価値を最大化するための試行錯誤をさせる)
- 人工ニューロン(入力に重みをかけて活性関数を通し出力する)
- 二層のパーセプトロンの限界(線形分離可能な問題しか扱えない)
- K-means法 → クラスタ分類する数を指定することで自動的に分類させる
- バックプロパゲーション(誤差逆伝搬法、2層のパーセプトロンを3層にし、隠れ層(中間層)を設けて誤差を補正する)
- 4層以上に深くなると誤差伝搬が伝わりきらなくなる
- ディープラーニング(自己符号化によって制度の高い抽象度の高い特徴量にたどり着く)
- 畳み込みニューラルネットワーク(Sonvolution Neural Network=CNN)
- 畳み込み層 → データの局所的な情報の抽出
- プーリング層 → 畳み込み層で抽出された特徴を残しながら小さくする
- 再帰的ニューラルネットワーク(Recurrent Neural Network=RNN) → 音声、言語、動画のような系列的なデータを扱える。機械翻訳で成果を上げている、スマホの予測変換なども
- LSTMによって長期記憶が可能。不必要な記憶を忘却できる
- ボルツマンマシン(Boltzman machine) → この講座では扱わない
- ベクトル、行列などの数学基礎 → 機械学習では入力の値 = ベクトル、重み = 行列で表記すると分かりやすい
- 分類問題と回帰問題
などの幅広い解説が聞けました。文字で書くと難しそうに見えますが、図解を見ながら説明を聞くとしっくりきます。
聞いてるだけでいいので本読むよりずっと楽でした。
学生のころは毎日授業があって、毎日こんな感じだったんだなぁと。大人になったら自分で能動的に本読んだりしないと勉強できないので、学生時代って恵まれてたんだなぁって思いました。
TensorflowとKeras
- TensorflowはGoogleが開発した人工知能ライブラリ
- KerasはTensorflowをかんたんに利用するための高水準インターフェース(Tensorflow以外のライブラリにも使える)
Kerasについては「名前は聞いたことあるけど、なんなのかは知らん」という状態だったので、やっとちゃんと知れました!
演習では、
- アヤメを分類する人工知能プログラム
- 手書きの数字を分類する人工知能プログラム
を動かしました。
演習内容はそのまま何かに流用できるような実践的なものではありませんでしたが、
- 人工知能って難しそう
- めんどくさそう
っていう思い込みがとれて、人工知能学習の具体的な一歩目を踏み出せたのが大きな収穫です。
ここから先は自分でネットや本で調べて試行錯誤していけそうかなと思います。
そういう意味で、最初の一歩を踏み出すための講座としてとてもおすすめできます。