SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【機械学習】独習① 機械学習の勉強を独学で初めてみる

タイトルはAIにしようか人工知能にしようか機械学習にしようか迷いました。
今更ですが勉強をスタートしようと思います。今回は勉強を始めますよって話だけです。

自身の勉強について

なぜ勉強するのか?

一言で言うなら、「流行り」だからです。もう少し言うと流行りだけど全く知らない状況に危機感を感じたからです。

もう引退間近ならば、新しく学ばずに乗り切るというのも一着だと思いますが、私はまだ社会人5年目のシステムエンジニアです。
もちろん、この先も引退までずっとエンジニアとして生きていくという保証はありませんが、現時点ではまだまだ続けていくつもりです。

そんな中で、ITを専門としない人でもAIや人工知能という言葉をきく機会が増えてきており、できることできないことはあるものの、遠い世界でやっている「夢の最先端技術」ではなく、今後は基本技術の一つとなっていくのではないでしょうか。

そのような状況でAIについて全く知識がないというのは、外からみたら一応はIT専門家である私から出せる強力な選択肢を一つ減らすことになり、これは非常にまずいと感じたからです。

私はサラリーマンなので、仕事自体は上から降ってきます。AI関連の案件の話も社内ではきくようになってきました。
現状では現場でAIの知識を強く求められているわけではありません。

では、現場で必要になってからやればいいのでは??
確かにね。やったことないから分からないもまだ通るかもしれないし、私より優秀な人から教わることもできるでしょう。わざわざプライベートの時間を削ってやるよりも遥かに楽でしょう。

でもやっぱり単純に興味もありますし、やってみたいですよね。自己学習は私の武器なんです。
どこまでいけるか分からない、けどやる気があるうちに動いてみます。

なにを勉強するのか?

少なくとも「完全独学」でやる範囲についてはハードル低くいきます。

基本的な知識を押さえ、機械学習の仕事をやる際にスムーズに開始できるレベルを目指します。
ここでは専門家レベルは目指しません。オリジナルの機械学習搭載アプリケーションの一個でも作れれば上等でしょう。

さらに続けて学習したくなった場合には、独学でできたら苦労はないので、外部に目を向けた方がいいかもしれません。

要素的には以下のようなものを考えています。

・pythonについて学ぶ(言語学習も兼ねています)
・pythonのライブラリについて学ぶ
・機械学習の使いどころについて学ぶ
・機械学習の仕組みについて学ぶ
・機械学習の数学的理論について学ぶ

どのように勉強するのか?

すこーしネットで検索をしてみた結果、まずは理論や書籍から入らずに実践からとか独学は困難みたいなことを見ることもあります。
しかし、まずは自分なりに進めてみようと思います。挫折したらいくらでも切り替えます。

とりあえずある程度進むまでどうなるかは分からないので、あまり参考にしない方がよいでしょう。

①AIの外観を把握
 ザックリあっさり深く入ってここで挫折しない程度に
 どのような要素があるのかとか。
②pythonの学習
 機械学習の言語にはpythonを使用します。開発環境、実行環境を整備から始める。
 pythonはまるで触ったことがないため、参考書に沿ってpythonの基礎学習を行う。
③数学の復習
 ②と並行して機械学習で出現する数学について復習を行う。
 私自身は数学科や情報処理系の出身ではないが、理系出身であるため高校、大学での復習が中心となる。
 闇雲にやるのは大変なので、参考書に沿って進める。
④機械学習のライブラリを学習
 機械学習のライブラリを利用しどのようなものがあるのかを知る。
 可能な限りで数学的なアプローチも試みる。
⑤なにか作ってみる
 ④までは原則、参考書をベースに進めるがここでは何かを作りたい。
 学習を通す中で可能な範囲を見定めて何を作るか考えておく。

参考書籍

マンガでわかる!  人工知能 AIは人間に何をもたらすのか (Informatics&IDEA)

マンガでわかる! 人工知能 AIは人間に何をもたらすのか (Informatics&IDEA)

概要を把握するために人工知能学習へのとっかかりとする。
一応一度は読了済み。

人工知能プログラミングのための数学がわかる本

人工知能プログラミングのための数学がわかる本

機械学習のための数学を学ぶしるべとする。
最初に一通り読み通して、学習を進めながら必要に応じて戻ってくる。

Pythonで動かして学ぶ!あたらしい機械学習の教科書 第2版 (AI & TECHNOLOGY)

Pythonで動かして学ぶ!あたらしい機械学習の教科書 第2版 (AI & TECHNOLOGY)

機械学習のベースとする参考書。実装を行いながら進めていくためkindle版にした。
pythonの基礎ものっているようだが、足りない場合には他から仕入れることも検討する。
その後、少し応用または実践的なものに手を出す可能性もある。

AI概要しらべ

自分用に適当に一言ずつ。
嘘はかかないようにしたつもりですが、微妙に解釈が違っているかもしれない。
別記事にしてもっとしっかりやった方がよかったのでは?

上記でも紹介した「マンガでわかる! 人工知能 AIは人間に何をもたらすのか 」を主に参考にさせていただいてます。

第三次AIブーム

今まさにという感じです。元々は2010年ごろの「機械学習」、「ディープラーニング」の登場により流行り、近年で爆発的に発展した。
背景にはインターネットの発達による膨大なデータ取得とそれを処理する技術が整ったことがある。
第三次というくらいなので、1960年代ごろの第一次、1980年代ごろの第二次ブームがあり衰退とブームを繰り返してきた経緯がある。

そもそも人工知能とは

その定義は専門家の間でもまちまちであり、議論のさなかにあるようです。

引用元:マンガでわかる! 人工知能 AIは人間に何をもたらすのか

厳密には定まりきっていないようです。ステークホルダ間では認識をそろえておいた方がよさそうですが、なんとなくのイメージができていれば専門家に程遠い初学者があまり気にしすぎることではないのかもしれません。

現在の私の感覚としてはいろいろな言葉を借りて、「人工的に作られた人間の学習や判断を模倣するシステム」という感じでしょうか。
なんとなくのイメージはあっても言葉で明確に定義してみろというのはなかなか難しいですね。

学習を通してこの辺りもしっかりと言葉にできるようになれたらと思います。

フレーム問題

フレーム問題とは、あるタスクを実行するときに、「関係ある知識だけを取り出してそれを使う」ことが実は非常に難しいという問題

引用元:マンガでわかる! 人工知能 AIは人間に何をもたらすのか

判断や行動に必要な知識を無限大に蓄積できたとしても、目の前の問題を解決するために必要なものがどれかを判断するのが困難であるという感じでしょうか。関係のない振る舞い(知識)を無視するということも考慮する必要がでてくるのですね。
その行動に必要なフレームを定義してその中での知識のみを使用するという方法もあるけどそのフレームの判別自体でまた同様の問題が起きると。


Wikipediaにもあります。
フレーム問題 - Wikipedia

シンボルグラウンディング問題

記号(文字列や言葉)をそれが意味するものと結び付けられるかどうかを問うもの

引用元:マンガでわかる! 人工知能 AIは人間に何をもたらすのか

「シマウマ」の例がよく使われるらしい。
「シマウマ」をシマのあるウマだと定義したとしても、これは文字列を定義しているだけにすぎず現物を見たときに判断が困難となる。
これをシマとウマのイメージで把握していないため、人間であれば両者のイメージさえ分かっていれば比較的容易に解決できる。

機械学習

明示的な指示を用いることなく、その代わりにパターンと推論に依存して、特定の課題を効率的に実行するためにコンピュータシステムが使用するアルゴリズムおよび統計モデルの科学研究である。

引用元:機械学習 - Wikipedia

大量のデータを用いて、コンピュータ自身がパターンを学習することによって判断などを行うといったイメージでしょうか。

教師あり学習

教師あり学習とは、「入力」とそれに対する「正しい出力」がセットになった訓練データをあらかじめ用意して、コンピュータに学習させる方法

引用元:マンガでわかる! 人工知能 AIは人間に何をもたらすのか

人間が答えを教えるわけですね。(雑になってきた)

教師なし学習

教師なし学習は、「入力」のみを大量にコンピュータに与えて、一定のルールやパターンを学習させる方法

引用元:マンガでわかる! 人工知能 AIは人間に何をもたらすのか

データの背後に存在する本質的な構造を抽出する際に用いられる。比べて、教師あり学習の場合は思い通りの出力を求めるときに用いられる。

ニューラルネットワーク

人間の脳にある神経細胞(ニューロン)と、そのネットワークを模した数学モデルのこと

引用元:人工知能プログラミングのための数学がわかる本

データを読み込む入力層と最終的にデータを出力する出力層、そしてその間のN層の中間層からなる。
ここでは深入りせずに学習の中で再度まとめる。
関連キーワード
重みづけ、シグモイド関数

ディープラーニング

対象の特徴を表す「特徴量」(ものによって別の言い方かもしれない)を人間が設定せずにコンピュータが設定できるようになった。
特徴量の設定によって得られる結論の精度が大きく変わってくるため重要となる。(うまくまとめられない)

ディープラーニング自体の特徴としては、ニューラルネットワークの中間層を深く重ねた構造となる。
人工知能の一種のブレークスルー。

シンギュラリティ

技術的特異点。

ひとたび自律的に作動する優れた機械的知性が創造されると、再帰的に機械的知性のバージョンアップが繰り返され、人間の想像力がおよばないほどに優秀な知性(スーパーインテリジェンス)が誕生するという仮説である。

引用元:技術的特異点 - Wikipedia

人工知能が例えわずかでも自身の能力を超えるものを創造できるようになったときに、それを繰り返すことにより圧倒的な「知能」が誕生すると。
まさにSFみたいな話ですが、前述のディープラーニングにより現実的に議論されるようになり、一説によると2045年付近に到達するとも。





最初に気合入れすぎると続かなくなるので、今回はこんなところまで。
しかし、学習するのはいいとしても記事にするのがなかなか難しそうなところですね。しばらくは単純にpythonやりそう。