機械学習や人工知能の作り方を効率的に学習する方法

  • 2018.06.08
  • AI
機械学習や人工知能の作り方を効率的に学習する方法

1.機械学習や人工知能の作り方を効率的に学習する方法まとめ

・Googleが社内で使われている機械学習のオンライン速習コースを公開
・速習コースを更に充実させたコースもCourseraで公開
・TensorFlowに特化+英語だが入門編としては選択肢の一つかも

2.GoogleがCourseraに公開した機械学習を学ぶ為のオンライン講座

少し前にGoogleが「Machine Learning Crash Course」と言うGoogle社内でも使われている人工知能を最速で学ぶオンライン学習コースを公開した事が話題になった。「40の実践問題、25のレッスン、計15時間」との事だけど、日本語の字幕はまだ完全ではなかったので英語が相当得意な人でなければ15時間で終わらせるのは難しそうだった。

今回、Googleが上記講座をベースにした新しい講座をCoursera(世界最大のオープンオンライン教育機関)上で開講したとの事。

「Machine Learning with TensorFlow on Google Cloud Platform」

(1)How Google does Machine Learning
所要時間:1 week of study, 8-10 hours/week
(2)Launching into Machine Learning
所要時間:不明
(3)Intro to TensorFlow
所要時間:1 week of study, 8-10 hours/week
(4)Feature Engineering
所要時間:2 weeks of study, 5-7 hours per week
(5)Art and Science of Machine Learning
所要時間:3 weeks of study, 5-7 hours per week

お値段は修了証発行込みで¥5,339円。Machine Learning Crash Courseより所要時間がかなり増えており、順調に進めても二カ月くらいかかる規模のコースになった模様。これもまだ英語のみだけどいずれは日本語字幕を誰かがつけてくれるかもしれない。

3.人工知能作成に必要な知識とは?

私の個人的な理解だと下記(1)~(3)が全て必要になる。

(1)基礎知識
ベースとなる知識。
これだけでも大変な量だが、これだけ習得しても具体的に何かを作る事は難しい。

1-1.プログラム言語に関する知識
Python、R、C#、JavaScriptなど
何か一つを頑張ってマスターする

1-2.統計に関する知識
標準偏差、分散、検定、数学
ざっと全体を俯瞰して必要に応じて後で詳細を確認できるようなレベルまで

1-3.アルゴリズムに関する知識
各機械学習の手法、ニューラルネットワーク、ディープラーニング、Backpropagation等
代表的な手法を簡単に理解。新しい理論等もどんどん発表されるのである程度で妥協

(2)実行知識
具体的に何かを作るために必要になってくる知識
特定のベンダーの製品(Google, Amazon, Micrsoft等)に依存しがちになる。

2-1.ツールに関する知識
OS、DataBase、FrameWork(TensorFlow、Chainer等)、ライブラリ等
群雄割拠で更新も激しいため、何にでも対応できるように学ぶことは困難

2-2.ハードや環境に関する知識
クラウド(GCP、AWS等)、GPU、仮想環境
2-1.と密接に関連し、特定のベンダーに依存しないようにするのが大変手間

(3)専門知識
研究や製品レベルの何かを作るために必要になってくる知識
軽視されがちだが、ここで大きく細分化されてくる

3-1.扱うデータに関する知識
画像、ビデオ、自然言語、音声、等のデータの構造や特性

3-2.業務に関する知識
業界固有の商習慣や傾向など

最近は人工知能関連の本やオンライン講座などが増えてきているが、どれに相当するかを認識して勉強するとより効率的に学ぶことができると思う。

Courseraで公開されている既存の講座はほとんどが「1-3.アルゴリズム」を学ぶ講座。なるべくベンダーや言語に依存しないように配慮されていて、実習用のプログラミング言語も「Octave(オクターブ)」と言うグラフ描画や行列演算機能が最初から備わっているソフトウェアを使う事が多い。

ただ、「1-3.アルゴリズム」だけを学んでも具体的に実用レベルのソフトを作る事が難しいので、今回の講座のようにGoogle依存になる事を承知で「2-1」「2-2」の内容を含む「Machine Learning with TensorFlow on Google Cloud Platform」を受講するのはアリとは思う。もちろん、AWSに慣れ親しんだ人はAmazon提供サービスを前提で解説している講座が良いだろうし、Visual StudioやAzureが好きな人はMicrosoft提供サービス前提が良いと思う。オープンソース製品を組み合わせてベンダーに依存しない方法を模索するのは、ライブラリの依存関係などで解決が難しい問題に直面して大変なエネルギーを取られる事があるので、ある程度慣れてからの方が良いと思う。

とにかく(1)~(3)を細くても幹として一本通してしまい、後はその幹を必要に応じて太くしていくのが効率的なのではないかと思う。

現在、「1-3.アルゴリズム」関連は毎月玉石混交の1000本以上の論文が発表されるような状態。それらに追いつくため+ベンダー間の競争で「2-1.ツール」や「2-2.ハードや環境」はそれ以上の速度で進化している。相当有名な製品であっても「以前のVersionとの互換性はありません」などと以前の知識を切り捨ててくる事があるので、何か一つを追いかけていくだけでも大変。

巨大企業による独占は望ましいものではないとは思うのだけど、変化があまりに早いので、本流から外れると苦労は多くメリットは少ない。お膳立てされた環境でも更新が早すぎてマニュアル通りにいかない事が多いので、自分好みにカスタマイズ等を考えずに最初は敷かれたレールに乗ってしまう方が楽だと思う。

4.機械学習や人工知能の作り方を効率的に学習する方法関連リンク

1)developers.google.com
Machine Learning Crash Course

2)www.coursera.org
Machine Learning with TensorFlow on Google Cloud Platform

3)www.gnu.org
GNU Octave

4)jp.techcrunch.com
GoogleとCoursera、機械学習の特別クラスをスタート――ITプロフェッショナルが実戦的能力を得られる