体験!機械学習
まず、手始めにアマゾンで本を一冊買って体験してみました。
フリーソフトWekaを使用して、機械学習おおまかな流れを理解するというものです。
体験したのは、アンケートで好きなアイスを文章で入力してもらい、その種別をバー、カップ、バラ、その他といった風に分類するというものです。最初の200件については、答えを教えると、残りの2000件?はコンピュータが答えるというものです。人間なら残りの分類2000件なんてやってられるか!と言いますが、コンピュータなら一瞬で分類してしまいます。
ちょっと驚いたのは、WekaではなくMecabというソフト。日本語の文章は間をあけずに全部詰めてかかれるので、どれが名詞、助詞、動詞、、、といった分別をすることが必要となります。これをMecabというのでやってくれるのですが、これがすぐれもの。どうやって分けているのか、きれいに分けてくれます。アンケートのデータをこれに通して、品詞に分けてから処理をします。
Wekaというのは
こんな風に色々な処理のアイコンをつないで最終的なアウトプットを作成するというかんじです。このフローは教師つき学習では2つ、一つは機械に学習させる処理、もう一つは学習させた結果を使い実際のデータで判断をさせる処理となります。
これを応用すると教師なし学習ができ、勝手に勉強していくことに なりますが、これはもう少し先になりそうです。
現在、Microsoft Azureを使った企画学習にチャレンジしているのですが、やはり同じような画面で、色々な処理部品をフローにそってつないでいくというのが機械学習のシステムのようです。
例題に取り上げたアンケートがテキストなので、答えがバラエティに富んでいます。アイスの実、あいすの実、バニラ、がりがり君、グレープ、あまくないもの・・・とんでもない返事があります。これをMecabをとおしてみると、あいす の 実等に分割されるので、実が入っているとバラのアイスだと結論づけられます。グレープについては答えられません。この時使った統計理論は決定木(デシジョンツリー)というもので、学習時にアイスがあるかないか、もしあったら実があるか、あればバラのアイスだといったふうに答えます。これってみんなふつうに考えているプロセスですね。これをこんな複雑なツリーとしてコンピュータは覚えます。
これがデシジョンツリーと呼ばれるものです。
最終的な結果としては、CSVで出力され、Excelでみるとこうなります。
つまり、確率としてあらわされてきます。バラのアイスである確率、その他である確率はどのくらい。その中でもっとも高い確率のものを正解として選びます。
学習をした中でどのくらいの確率でその分類となっているかを示しています。
当然、教えた中にウソが入っているとダメ。教えてなければその他になってしまいます。たとえば、もなかについては教えていないので、その他になっていますが、学習時にモナカを最中として教えれば答えもそうなります。このあたりの調整が、いわゆるデータサイエンティストと呼ばれる人々の行う試行錯誤のことなのだろうなぁ、とおもいました。何度か試行錯誤するとかなり完璧なものができてくるかもしれません。
たとえば、上の例でチョコ、なのですが、当然その他が一番確率としては高いのですがそれ以外の分類でも0ではありません。これは現実に起きることで、チョコバーかもしれません。この辺で人間より正しいかも?と思わさせられます。
ただ、これではまだ教えたことを単に統計で分析して結果を出しているにすぎないですね。まあ、ここまでで機械も学習できるということはわかりましたが。
人工知能と機械学習
ウィキペディアによると
機械学習(きかいがくしゅう、英: machine learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。
だそうです。
結局のところ、人工知能として認められるためには学習能力があることのようです。その学習の方法論として色々な機械学習の分野があります。それらの分野が互いにつながりあい、補いあって人工知能がつくりあげられるようです。
つい最近Googleが買ったイギリスの会社DeepMindのOur Missionです。 - We combine the best techniques from machine learning and systems neuroscience to build powerful general‑purpose learning algorithms. (我々はパワフルな汎用の学習アルゴリズムを作成するために、機械学習と神経科学システムの最高の技術を結合します)
つまり、機械学習とニューラルネットワークがキモだと考えている訳です。私の勉強もこの二つをどう使うかが中心となっています。あと、Pythonが人工知能科学者のお気に入りだそうで、これと機械学習の基礎理論である統計学はRが主流だそうで・・・
人工知能は人間を超えるか
もう大分前からシンギュラリティというか2045年問題というか、人工知能が人間を超えるという話が巷のサラリーマンの間で人気の暇つぶし、飲み会のうだうだ話で出るようになっています。
情報技術をずーっとやってきたものにとって、人工知能は結構だるい話です。と、いうのはむかーしの人工知能は単なるプログラミングで、結局たいして使い物にならないというのが結論でした。というより、知能でもなんでもなくて単なる計算プログラムの一種でした。
私もそのころシステムの構成を自動で見つけ出すアプリケーションを使いこなす(予定だった)ナレッジエンジニアという職種ができて、チャレンジしてみようかなと思ったのですが、実際は業務知識をデシジョンツリーにしてシステムに入れるだけでした。えっ、これが人工知能!?という代物でした。結局、知識をコンピュータに入れてそれを使うという単純なもので、それならしっかりしたドキュメントがあれば十分だったりして。
それが、最近の人工知能は基本が人間の脳や統計学といったきちんとした理論をベースに、人間ではわからないことに対しコンピュータが答えられるようになっています。それでは、コンピュータが人間を超えるとして、どのように超えていくのか、を実際に人工知能と呼ばれるものを自分で一から覚えて、作ってみて、結論を出したいと思います。2045年までに終わるのかどうか・・・・
このために必要な知識として現在以下のものを勉強しています。途中で変わるかもしれません。
機械学習(含ディープラーニング)
プログラム言語 Python - ホームページを
プログラム言語 R
ベイズ統計
Chainer
勉強の途中でどんなことに人工知能を応用するのか決めていきたいと思います。