learning.ikeay.net

文系エンジニア、AI勉強中。

文系エンジニアだけどAIを勉強してみる

こんにちは、@ikeayです。

突然ですが、最近すっかり人工知能(AI)がバズワードになってきていますね!

ここ最近だけでも、GoogleのAlphaGoが世界トップ棋士であるイ・セドル氏に勝利したことが世の中の話題をかっさらっていったのを皮切りに、レンブラントっぽい絵を生成するやつとか、1枚の絵を組み合わせて1枚の絵をつくるやつとか、自動でJazzを生成するDeepJazzだとかetc, etc...

こうしてみると、この技術でほんとに職失いそうだし、芸術とはなんぞやということになりそうだし、人類滅ぼされるかもしれないし(偏見)、もうほんと怖いしつらいですよねー。

特に最近はAI絡みで毎日何かしらのニュースがあるので、日々ヒヤヒヤしてます。(あ、TechFeedってテクノロジーに特化した情報キュレーションサービスがあるんですけど、それで「人工知能」とか「深層学習」とかを登録しておくと毎日それ関連のニュース届いていい感じにAI怖いなーって思えるのでおすすめです。)

ほんとにAIのせいで世の中変わっていっちゃいそうですよね。それなのに私はAIのことなんにも知らずに生きてていいのかと考えるようになりました。そしてそれはそれでよくない気がしてきました。

というわけで、私もこのビックウエーブに乗ってAIに入門してみることにしました。 ご縁があり、東大松尾研で勉強させていただくことになったのですが、そこで学んだ知識を私だけに留めてしまうのはもったいない!メモがてらブログも始めてみました。どうぞお付き合いください。

ひとまず、今話題のDeepLearningまで使いこなせるようになるのが目標です! がんばるぞ!おー!

ていうかまず人工知能(AI)ってなに?

そうそう。知ってるようで実はそっからよく分かってなかったんですよね。 松尾研でAIの研究をしている鈴木雅大さんことマサさんと、最近お世話になっているPARTYのAI担当の宮本さんにいろいろとお話を伺ったので、自分なりにまとめてみたいと思います。

人工知能(AI)はその名の通り、コンピューターで人間の知能を再現することを目指した技術群の総称らしいです。技術群というのは、機械学習、画像認識、意味ネットワーク、探索、音声認識、合成音声、自然言語処理だとか…ですね。

詳しいことは、まずは松尾先生の本を読むことをオススメします。私ももちろん読んだのですが、わかりやすい上にけっこう詳しいことまで書いてあるので、わかった気になれます。

なんでブームが来てるの?

実はAIブームはこれで3度目。ちなみに最近まで「人工知能」というワードはあんまり陽の目を見てなくて、このブームで復活したワードなのだそう。もともと「人間のような知能を創りたい!!」って言ってはじめてみたのはいいものの、コンピューターの性能やデータ量が足りなかったりでなんだかんだで全然実現できなくて、「ハイ、みんな解散〜!!」「ありがとうございました〜!」って感じになったらしい。

それでも多くの研究者の方々は諦めず、機械学習音声認識など分野を細分化し、地道に研究を続けていたのだそう。

で、ついに最近この機械学習の分野で革新が起きました。それがDeepLearningです。DeepLearningとは人間の脳のニューロン構造を模したアルゴリズムで(以下略)(すみません、DeepLearningに関してはまだ実際にいじってみたわけじゃないのでざっくりとしか理解してません!)

あとは単純にコンピューター性能があがったこと!そしてインターネットが発達し、さらにビックデータ時代を経て、大量のデータに簡単にアクセスできるようになったこと!そんなこんなで、当時できなかったことも今やってみると出来てしまった…ということが大いにあった模様です。

詳しい内容は松尾先生の(以下略)

AIって万能なの?

マサさんいわく、正直あんまり万能感はなく「DeepLearningがブレイクスルーなのか?!」とも言われているそうです。イメージとしては「一部の技術がすっごく強くなった」という感じです。

その一方でこれを単なる第3次ブームで終わらせてはならない…という責任感があるのだそう。なぜなら時代は少子高齢化。労働者が減っており、少人数の若者が社会の柱として支えなければいけないからです。

なので「この波乗り越えないと日本死ぬ!!」といわんばかりに強力に推し進めており、全員本気で向き合っている…… というところを含めると万能じゃないか?

ということだそうです。 とはいえ、要所要所では人間を超えた能力をもっていたりもしているので、これからに期待!!です!!

AIを使うには?

細分化されてるので、やりたいことにあわせてアルゴリズムを選ぶ必要があります! 最近では様々なライブラリやAPIが出てきて使うハードルが下がって来ているみたいです。

DeepLearningもできる機械学習ライブラリ

以下全てPython系のライブラリ。なんでPythonなのかというと、NumPyなどで行列の演算が簡単にできるからなんだそう。

  • Chainer
    • 日本のベンチャー企業がつくったPythonのライブラリ。あんまりよくわからなくても参考資料を軽く読めば使えます。パッケージ化されていて楽。新しいモデルを考えるときに。
  • Tensorflow
    • Googleがつくっただけあって手厚い。パッケージ基礎研究したいときにも使えてけっこう万能です。世の中がこれに移行中(らしい)。
  • Theano
    • 基礎研究したいときには使いやすいらしく、松尾研ではこれを使っています。研究室がつくったので、研究者にとっては使いやすい。エラーは見難い。続かないかもしれないらしい…
  • Keras
    • 2015年に誕生し、みんな一躍つかいだしたらしいのがこれ。TheanoやTensorflowにも対応しているラッパーみたいです。
機械学習
  • scikit-learn
    • データいれてサクサクっと実装できる便利なライブラリ。
さくっとAI的なものに触れてみたい
  • Microsoft Azure
  • IBM Watson
    • 知識をつめこみまくって賢くしていったのがIBM Watson。
    • 研究用ではなく大企業クライアントが使うことが多いですが、最近はIBM Bluemix上から個人でもいじれるようになりました!

というか、文系エンジニアでも使えるようになるの?

確かに他のプログラミングに比べたら必要な数学的基礎知識が多いですが、以下の分野がわかってればきっと大丈夫なのだそう。

  1. 線形代数
  2. 確率・統計
  3. 微分積分

数学むちゃむちゃ苦手だったけど、これを期にべ、勉強します…

実は2ヶ月前くらいから勉強し始めたのですが、まだまだ「あれ?分からなんだ〜〜!」となることが多く、消化吸収に時間がかかり、はじめての投稿が遅くなってしまいました。

これからは勉強しながら定期的にあげていきたいと思います。DeepLearningめざしてがんばろー!!

補足

「文系エンジニア」というワードが想定外に火種となってしまったようです。
ここでいう文系とは、高校で数Cまで習っていないという意味です。機械学習で一番大切な線形代数を学んでいないなか、これから頑張って学習していきたいなと思います