『あたらしい人工知能の教科書』よんでみた

【読む前の考え】そもそも人工で何が知能なのかを定義してからはじまるのかな
Qiitaはじめての投稿です。

##お前だれ
@kamapuというツイッターアカウントの者です。マーケティングとか広報とかの非エンジニア。イベントの裏方やったり、ちょっとした[対談記事](http://gihyo.jp/magazine/SD/archive/2014/201408)書いたりとか。日経Linuxさんで初心者向け[記事](http://amzn.asia/dko2E1J)一回書いたりとか、イベント[レポ](http://shell-mag.com/vol-43/)書いたりとか、[近藤佑子女史とポッドキャストやったり](http://codezine.jp/article/detail/9684)とか。才能ないのに運だけあってなんか貪欲…。一人立ち食い寿司したりとかが好きな思考ゆっくりめの　~~愛され~~  ボケキャラ。たぶん。

##詫び
本頁は、2016年12月に翔泳社より発行された「あたらしい人工知能の教科書」（351P）を読んで、数学がわからない私の頭の中で記憶するために書かれた内容であります。従って、数学で使われる単語の読み方すらわからない人向けの超低レベルにまとめてあり、数学を知る方には多少読みにくいことを先にお詫びします。

・<ruby>よりわかりやすくするために<rp>（</rp><rt>ルビに漢字や英語のスペルを入れてます</rt><rp>）</rp></ruby>


##対象読者
 以下のような方が対象だと思います。

1. テレビや新聞でよく単語を聞くのでまとめサイトなどで『人工知能』『機械学習』ワードを理解してみようとしたが、わからない単語だらけでますます混乱した方。
2. 人工知能/機械学習等のサービス開発に必要な『基礎知識』を学びたい方。（プログラマー、データベースエンジニア、組み込みエンジニア）

2が本にも書いてある対象読者ですが、1の需要もけっこうあると思います。

##章立て

| Chapter number | 　Big chapter | 　Small chapter　　　 |
|---:|:--|:--|
|Chapter 1|人工知能の過去と現在と未来|人工知能とは/人工知能<ruby>黎明期<rp>（</rp><rt>れいめいき</rt><rp>）</rp></ruby>/発達する人工知能|
|Chapter ２|ルールベースとその発展型|ルールベース/知識ベース/エキスパートシステム/レコメンドシステム|
|Chapter ３|<ruby>オートマトン<rp>（</rp><rt>automaton</rt><rp>）</rp></ruby>と人工生命プログラム|人工生命シミュレーション/有限オートマトン/<ruby>マルコフ<rp>（</rp><rt>markov</rt><rp>）</rp></ruby>モデル/ステート駆動エージェント|
|Chapter 4|重み付けと<br>最適解探索|線形問題と非線形問題/回帰分析/類似度の計算|
|Chapter 5|重み付けと<br>最適化プログラム|グラフ理論/グラフ探索と最適化/遺伝的アルゴリズム/ニューラルネットワーク|
|Chapter 6|統計的機械学習（確率分布とモデリング）|統計モデルと確率分布/ベイズ統計学とベイズ推定/MCMC法/HMMと<ruby>ベイジアン<rp>（</rp><rt>bayesian</rt><rp>）</rp></ruby>ネットワーク|
|Chapter 7|統計的機械学習（教師なし学習と教師あり学習）|教師なし学習/教師あり学習|
|Chapter 8|強化学習と分散人工知能|アンサンブル学習/強化学習/転移学習/分散人工知能|
|Chapter 9|深層学習|ニューラルネットワークの多層化/制約付き<ruby>ボルツマン<rp>（</rp><rt>Boltzman</rt><rp>）</rp></ruby>マシン/<ruby>DNN<rp>(</rp><rt>Deep Neural Network </rt><rp>）</rp></ruby>/<br><ruby>CNN<rp>（</rp><rt>Convolutional Neural Network </rt><rp>）</rp></ruby>/<br><ruby>RNN<rp>（</rp><rt>Recurrent Neural Network</rt><rp>）</rp></ruby>|
|Chapter 10|画像や音声のパターン認識|パターン認識/特徴抽出の方法/画像認識/音声認識|
|Chapter 11|自然言語処理と機械学習|文章の構造と理解/知識獲得と統計的意味論/構造解析/テキスト生成|
|Chapter 12|知識表現とデータ構造|データベース/検索/意味ネットワークとセマンティックWeb|
|Chapter 13|分散コンピューティング|分散コンピューティングと並列コンピューティング/ハードウェアからのアプローチ/ソフトウェアからのアプローチ/機械学習プラットフォームと深層学習プラットフォーム|
|Chapter 14|大規模データ・IoTとのかかわり|肥大化するデータ/IoTと分散人工知能/脳機能の解明とロボット/創発システム|


章を読むだけでも、知らない単語がたくさん出てきます。しかしこれらにはとても丁寧に解説が書かれています。
例えば、以下のような単語に対し、解説がありました。初心者にとっては適度な長さの文章で解説されていると思います。引用します。

>【ニューラルネットワーク】
人間の脳の機能を参考に、それらのいくつかの機能をコンピューターのシミュレーションによって表現することを目指したもの。

や

>【パーセプトロン】
1957年にフランク・ローゼンプラットが発表した、人工ニューロンやニューラルネットワークの一種です。

など。短くてわかりやすいです。
この言葉は1-3章「発達する人工知能」で人工知能のブームを解説する中で、以下のような文章で解説されていました。


> 第2次人工知能ブームは、ニューラルネットワークの発展が見られた時期でもあります。1960年代に確立された単純パーセプトロンによる「学習」は、非線形なルールでの分類ができないことがわかり、下火になりました。一方で、パーセプトロンの多層化（多層パーセプトロン）により、非線形なものでも分類できるようになりました。

わかりやすいです。

ちなみに[Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%BB%E3%83%97%E3%83%88%E3%83%AD%E3%83%B3)による「パーセプトロン」の概要はこうなります。
>視覚と脳の機能をモデル化したものであり、パターン認識を行う。シンプルなネットワークでありながら学習能力を持つ。1960年代に爆発的なニューラルネットブームを巻き起こしたが、1969年に人工知能学者マービン・ミンスキーらによって線形分離可能なものしか学習できないことが指摘されたことによって下火となった。他の研究者によってさまざまな変種が考案されており、ニューロン階層を多層化し入出力が二値から実数になったボルツマンマシン（1985年）やバックプロパゲーション（1986年）などによって再び注目を集めた。2009年現在でも広く使われている機械学習アルゴリズムの基礎となっている。

続いて、

> 第2次人工知能ブームは当時のコンピュータの性能に起因する限界も同時に露呈し、1990年代からは人工知能研究は冬の時代と呼ばれる不遇期を迎えることとなりました。

なるほど。
そして1990年にベイズの定理を出発点とした統計的機械学習のアプローチや、分散処理技術の発展があり、データ解析の進歩がめまぐるしく高まると本書は続きます。

>【ベイズの定理】
ピエール＝シモン・ラプラスによって確立された、条件付き確率が成立する定理です。一般的に確率及び条件付き確率に関して、次の恒等式が成り立つものとしています。

![IMG_1315.JPG](https://qiita-image-store.s3.amazonaws.com/0/14583/c5a805be-8a4b-3075-67b8-59fee628c8ae.jpeg)

とまあ、ふむふむ、ベイズの定理とは確立のことか。（あ、間違えた確率…）と、こう初心者は理解できるのです。
Bという条件の元で、Aとなる確率。うんうん。（←本当の理解はあと２年ぐらいかかる。またはinfinity）

##個人的にツボだったところ

あと面白かったのは、機械学習勉強会界隈で良く聞く「モンテカルロ法」が解説してあるページで、

>【モンテカルロ法の命名由来】
ウラムの叔父が賭博好きであったことからギャンブルの国モナコの地区名になじんでいるとされている。

がツボでした。数が好きな家系なんだろうな。でもウラムさんという人物を知らなかったので、Wikiで調べたらユダヤ人で、ノイマン氏に大学誘われてなかったらホロコースト行きだったかもしれないとか、いやそもそも弟以外の家族がホロコースト行きになってしまったという…壮絶な人生。本を読まなかったらこのことを知れなかった。
あと、P344に
>人工知能に「知能」「意識」が生まれたとしても、「人と同等」と呼べるかとうかはわかりません。

とありました。さらっとしたMEMOでしたが、この一行、とても真意を突いていると思います。私の持っていたもやもやがクリアになった感じです。
あと、人工小脳をコンピュータでモデリング・シミュレーションする話など。将来的に神経回路を回路装置に任せるとか。そんな研究開発がされているのかと思うと、身近なようででもとても先の話のような感じがしました。生きている間にできるかな。

##人工知能ブームに乗りたいなら第二プログラミング言語はどれにすべきか

これを読んでいる貴方はJavaプログラマでしょうか、Rubyプログラマでしょうか。Pythonプログラマでしょうか。え？なんだって20言語いけるって？（そんな方はこの文にはたどり着かないか）
本書がおススメするのは Python のようです。引用します。

> 今後も使われていくであろうChainerやTensorFlowなどの深層学習プラットフォームではPythonを用いて開発を行うことが中心になることから、2015年以降は国内でのPythonの需要が高まっています。
10年以上前から続くWebプログラミングの隆盛とともにJavaやPHP、そしてRuby on Railsに利用されるRubyが国内では人気でリードしており、科学技術計算に用いられる傾向の強いPythonは海外での人気とは対照的に日陰の存在でした。
しかし深層学習や機械学習による人工知能関連の開発人気が高まったことにより、WebプログラミングにおけるPHPの立ち位置になろうとしているPythonは、今後習得しておいてよい言語の１つと言えます。

##プログラミング言語のランキング（２０１６）

| ランキング | 言語 |
|:--|:--|
| 1 |JavaScript |
| 2 |Java |
| 3 |PHP |
| 4 |Python |
| 5 |C# |
| 6 |C++ |
| 7 |Ruby |
| 8 |CSS|
| 9 |C|
| 10 |Objective-C |
| 11 |Shell|

まだ続くけどShellがでてきたのでここで省略。

##最後に

引用を用いてメモや感想を書きましたが、アマゾンの「なか見！検索」機能でたくさんのページが読めます。

 http://amzn.asia/i5tKzkv

もちろん書店で手に取ってみるのも良いかと思いますが、人工知能で語られるAIの限界などはこの本で理解できるかと思います。

素人がよく耳にする「職業がAIに奪われる」という考えですが、（この文章だけ素人が理解できるから言葉が一人歩きしやすい）脅威かという問いに脅威では無いと、あらためて考えを強固にしました。素人ですけど。人間の仕事が奪われるようなことが明日起きるかといったら明日は起きなさそう。短時間で多くが変わることは無さそうです。（あるとしたら量子コンピュータの開発と需要で大きな動きがあった時かなぁ）「仕事を奪う」というのは、人間の仕事の創出をAIに任せるなどという発想が無いのと同じだと思います。前向きに考えるのであれば人間の仕事を機械にやってもらい、人間は時間の多くを教育や他のことに割くことができるようになる。学習障害のある子供も、教育機会無く成長した大人も、「アダプティブ・ラーニング」で語学習得や数学が得意な物に成る日は近くなるかもしれないと、機械よりも人間の知能そのものが全人類高まるんではと夢を見てしまうのでありました。（現在の日本は識字能力97%、世界は86.3%です（wikipedia調べ））

素人なので「これで人工知能ブームで何を言っているのかをだいたい網羅できる」なんて大それたことは言えないです。
ですが、なぜ機械学習を人間が学習するうえで数学の知識が必要になるのか、などが良く解ると思います。
またこの本を書かれた多田智史さん、監修をおこなった石井一夫先生、お二人ともバイオ系の方であります。
多田さんは大学で生物工学を専攻し、現在バイオインフォマティクス勤務。石井一夫先生は東京農工大学で特任教授として教鞭をとられており、医学博士でもあり技術士会フェローでもあり、2015年度情報処理学会優秀教育賞をも受賞されている。コンピュータ書籍や人工知能関連書籍へのアンテナが強く、「マシンラーニングのら猫読書会」というのも主催されていて、技術者への積極的な発信や交流を深めています。
ゲノム解析を本気で取り組まれている方々による、概念の基礎が書かれた良書なのだと思います。