最近、人工知能(AI:Artificial Intelligence)という言葉を頻繁に見かけます。
2016年に囲碁の世界で、人工知能AlphaGoがプロのチャンピオンを破ったことにより、人工知能が人間を超えるポイントである技術的特異点(シンギュラリティ)が強く意識されるようになりました。
世間に火がついて以降、「人工知能に仕事を奪われる」だとか「人工知能により人は退屈な仕事から解放される」だとか各人の期待と不安をふんだんに混ぜ込んだ主張が跋扈しているわけですが、僕自身はそういった文章を見かけても何となく腑に落ちませんでした。
だって人工知能の仕組みが分からず、どう発展していくのかが想像出来ないですもん。
そんなわけで人工知能やそれに付随する技術的な知見を得るべく、手に取ったのが今回レビューする「あたらしい人工知能の教科書」です。
誰に向けて書かれた本なのか
・人工知能関連の開発を目指すエンジニア
・人工知能について一先ずの技術的知識を得たい理系大卒
著者が言うには「エンジニア向け」の内容だそうです。
対象読者という項に「人工知能を利用したプロダクトやサービス開発に携わるエンジニアの方(プログラマー、データベースエンジニア、組込みエンジニアなど)」と記載もしてあります。
ただ、実際に本を読んだ感想としては、上記の職に携わる人というよりも、それらを目指している人の方がターゲットとしてふさわしいです。
また、人工知能に興味があって多少大学数学の知識がある(線形代数やら統計やら)理系が、一先ずの知識を得るにも向いているように感じました。かくいう僕も、そのクチです。
書かれている内容について
広く浅くという言葉にふさわしい
本著がカバーする範囲はとても広く、人工知能の歴史の紹介からはじまり、条件分岐や繰り返し処理、データ探索、グラフ解析、統計的機械学習、深層学習(ディープラーニング)、果てはそれらを処理するためのコンピューティングの技術まで網羅してあります。これだけのボリュームをして一冊に詰め込んでありますので、各項目の解説は簡単なものになります。
人工知能関連の用語や技術に対して「こういう原理ですよ」と簡単な図と解説があり、深堀りしたい人には「後はネットで!」と言わんばかりに関連記事のURLが記載されています。
人工知能関連のエンジニアなら最初からそういう記事を探せば良いですし、そういう方は自分でアンテナはって情報収集しているでしょうから、わざわざこの本を読まなくてもいいでしょう。そういう意味で、知識は無いけど興味はある、ワナビーな方に向いている本だと思います。
人工知能の根底には数学がたくさん
読んでいる途中で行列だったり数式だったりが多く登場してきます。そこかしこで見かける最小二乗法*1も、言われてみれば膨大な過去データを元に未来を予測するツールと言えます。
人工知能という近未来的で雲の上のように思える技術も、昔ながらの学問に根差し、発展した技術なんですね。(人工知能も歴史を読む限り昔ながらの技術と言えますが)
大学生だった当時は苦痛でしかなかった難解な数学たちが、人工知能の分野を支える上で多いに役立っていたのかと分かると、「真面目に勉強しておけば良かったな」と思わされます。
(余談)大学の学問は実社会との関わりが分かりにくい
話が逸れてしまいますが、大学の学問は難解なくせに社会での応用方法がイマイチ見えにくいものが多く、モチベーションが上がらないものが多かったです。社会にでて何年かすると「こういうところで使われてたのか」と理解できるようになり、きちんと学ばなかったことを後悔するんですよね。
大学の教授はそもそも教育に特化した方々じゃないのは留意していますが、学問と社会の繋がりから学問の重要性を語り、学生のモチベーションに繋がるような教育をしてくれてればなぁ、と無責任ながら思います。
より実戦的な知識が欲しい
閑話休題。
「新しい人工知能の教科書」を読む事で、一先ずの知識を得る事は出来ました。
ここで言う知識は理解したというより、知っただけと言った方が正しく、理論は何となく分かったけど、実際の手順としてどう動かしているのかがイマイチ見えてこず、フワフワした状態です。本自体が「学び」よりも「紹介」に特化させた内容なので、しょうがないかなと言った所です。
それじゃ役に立たなかったのか?というと、そうではありません。技術を歴史や関連事項と絡めて体系的に紹介してくれるので、個別にググるよりも遥かにスムーズに頭の中に入ってきましたし、時間もかかりません。
人工知能の技術について興味を持った人が「こういう技術から人工知能は出来ている」と知るには、悪く無い本だと言えるでしょう。
で、僕はというと、人に説明出来る程度には知識を深めておきたく、次はステップアップということで、手を動かして学んでいこうと思います。下記の本が評判いいらしいので、ちょこちょこ読み進めていこうと思います。
*1:ざっくり言います。それぞれのデータとの誤差の足し合わせが最小になるような関数で近似する手法です。