2017年1月29日日曜日

人工知能は人間を超えるか

大関先生の「機械学習入門」の巻末で紹介されていた人工知能に関する入門書です。

人工知能には過去3度のブームがありました。第1次ブームでは推論を行うプログラムで、迷路を解いたり、ハノイの塔をプレイしたり出来ましたが、現実的な問題は扱えませんでした。
第2次ブームは知識をいれて現実的な問題を扱えるようにしました。診断して薬の処方を行うMYCINに代表されるエキスパートシステムです。しかし、ヒトの知識をプログラムで表現することは膨大な作業であり、知識量が増えれば増えるほど大変なものとなりました。理由は、知識は言葉で表されますが、言葉は「意味」や「概念」と結びついています。この結びつきをプログラムで表すのができなかったのです。こうした問題を扱うのがオントロジーという分野で、オントロジー研究の究極の形がIBMの開発したワトソンです。ワトソンはクイズ番組で人間のチャンピオンに勝ったことで有名になり、現在は医療診断や料理のレシピの考案を行っているそうです。

一方、第3次ブーム のブレイクスルーはディープラーニングがもたらした特徴表現学習の進化です。特徴表現学習とは、データから特徴と特徴間の相関ルールを自動的に抽出する学習のことです。そのブレイクスルーをもたらしたのが2012年の世界的な画像認識のコンベンションILSVRCでカナダのジェフェリー・ヒントンの率いるトロント大学の開発したSuper Visoonです。

過去の人工知能や機械学習の最大の問題は認識や予測の精度を左右する特徴量をヒトが探して組み合わせてきたことでした。例えば競馬予想なら過去の勝率や走破タイムが大事だとヒトが予想し、それを勝率を計算する確率にインプットして、インプットの仕方だけ自動的に学習します。また、ある画像がどういった画像なのかを認識する問題でも同じで、画像のどういった特徴を捉えて分類するかをヒトが決め、それをもとにプログラムが自動的に最適な計算式を探します。すると、予想や分類の精度はヒトの特徴量を探す能力で決まることになります。

一方、ディープラーニングでは予測や認識でのキーとなる特徴量を自動的に探し、さらに特徴量と特徴量を結びつけることを多層のニューロンで行います。そうしたアイデアはニューラルネットのころからあったのですが、多層にしたときの学習がうまくいきませんでした。多層にすると局所的な最適解が増え、精度の向上がとまってしまうからです(「消滅する勾配」が原因ではない)。ディープラーニングでは自己符号化器という、入力と出力に同じ画像を用いることで特徴量やそれを組み合わせる高次の特徴量を学習し、それを用いて画像を認識することに成功したのです。

 この自己符号化器のアイデアはなかなかおもしろいです。例に挙げられているのは、全国の都道府県の天気の情報を10個の数値で他人に伝えるというゲームです。10個の数値として、北海道、東北、北陸、関東、中部、東海などと代表的な値域の天気を伝えれば、それをもとに全国の天気を再現する精度が高くなる。10個にまとめているので、完全に再現できませんが、少々天気にばらつきがあっても、ばらつきがならされて変な天気を予測することもありません。この10個の数値が日本の天気の特徴であり、ディープラーニングではこうした10個の数値や、それを組み合わせた高次の情報を自動で見つけることができるのです。

こうして人工知能はデータから特徴量や高次の特徴量を自動的に見つけるレベルに達しました。これは、概念や概念の間の関係を学習できるレベルに達したことを意味しています。すると、データとして時間変化するようなものを与えれば因果関係を学ぶことができ、学習する主体としての個が確立できるかもしれません。そうした個が他の個と情報をやりとりすることで並列化し、環境に対する高度な適応能力を獲得したとき、人工知能はヒトと同じレベルに達するのでしょう。

非常に刺激的な本で、大変勉強になりました。ディープラーニングの凄さがよく分かりました。

2017年1月25日水曜日

ゼロから作るDeep Learning

ディープ・ラーニングDeep Learningが初等計算レベルから解説されているとの情報を見たので、勉強してみた本です。
うまくいけば、大学院の講義のタネ本としても使えるかとも考えたのですが、結論から言えば、そんなに楽な本ではありません。

目標はMNISTの0から9の手書きのアラビア数字を認識するプログラムの作成です。プログラム言語は機械学習での主流となっているPythonということで、Pythonの入門から始まります。算術計算、配列、グラフのプロットを扱います。第2章からニューラルネットワークの解説で、パーセプトロン での論理回路の構成や単層のときの限界を解説します。パーセプトロンは、多数のチャンネルからのシグナルを線形変換し、しきい値を超えたら1を出力,超えなければ0を出力という単純な回路です。入力と出力の間の層が一層の場合、単純な計算しかできません。例えば、AND、OR、NANDという論理演算は出来ますが、XORはできません。しかし、 パーセプトロンの層を多く(ディープ)することでコンピュータで処理できるどんな複雑な処理でも扱えることを説明します。

第3章では入力信号がしきい値を超えたら1、超えなかったら0では扱いにくいので、この入出力を表す活性化関数をシグモイド関数にしてなめらかにするか、または、ReLU関数というしきい値未満で0、しきい値以上で入力信号そのままを使うこと、行列を用いた入力と出力の関係の表し方、出力層として、信号からある選択肢の確率に変換するソフトマックス関数(多項ロジスティックモデル)を解説し、MINSTのデータで認識精度を計算します。この時点では3層(入力層+2個の隠れ層)のニューラルネットワークで認識精度は93%です。

第4章ではデータでニューラルネットワークの膨大なパラメータを決める=学習の手法の解説です。ニューラルネットの出力と正解の差(損失関数)を交差エントロピーで測ること、また、データすべてでなく、その一部をランダムに選んで学習するミニバッチ学習、また、 損失関数を最小にするアルゴリズムである勾配法を解説し、第3章での93%の認識精度であるニューラルネットを学習で構成します。

第5章は勾配法を効率よくすすめるための誤差逆伝搬法で、計算グラフでアッフィン変換と活性化関数を表し、誤差関数の微分計算を計算グラフを用いて計算する方法を解説します。また、第6章は勾配法などの数値手法のアルゴリズムを改善する話です。5章の計算グラフもですが、この第6章の興味深い。特に、活性化関数の出力がネットワークを流れていく過程でどのように変換するのか、また、どのどうに変化するべきなのか、についての説明があります。

第7章は画像認識で用いられる畳み込みニューラルネットワークの解説です。畳み込み演算を行う畳み込み層を用意するのですが、画像の2次元的な構造をうまく抽出するためのフィルターを用意する目的のようです。ニューラルネットワークワークを多層にする理由は、単純なフィルターを何層も通すことでネットワーク全体でのパラメータ数を抑えながら情報抽出の精度をあげることにあります。そして、第8章で畳み込みニューラルネットによるMINSTデータの認識精度が99%を超え、間違った画像は人間にとっても見分けにくいものであることが示されています。

 非常に勉強になったのですが、問題はPythonという言語を使ったことがないので、5章ぐらいまではプログラムも大体理解できるのですが、それ以降はPythonをちゃんと勉強してとりかからないと消化不良になる。

ということで、Pythonの勉強をしないといけなくなりました。そのあとでもう一度勉強しようと思います。大学院の講義ではRをベースに機械学習を扱う予定なのですが、こうしてPythonで書かれた本や、GoogleがPython押しであることを考えると、RよりPythonでやったほうがいいのかもしれません。

2017年1月4日水曜日

機械学習入門

あけましておめでとうございます。2017年の最初のBlogの更新ですが半年ぶりです。今年はもうすこし更新回数を増やしていきたいと思います。

お正月に読んでいた本が、Twitterで流れてきた大関先生の「機械学習入門ーボルツマン機械学習から深層学習まで」という本です。機械学習には以前から興味があり、競馬予想にも取り組んだことがあります。といっても枯れた技術である多項・多重ロジスティック回帰で過去のデータをもとに馬の勝率を予想するものでした。機械学習としての新しさを目指したものではなく、馬券市場でのヒトの集団の予想精度はどの程度なのかを知るために、機械学習と比較したというものです。結論は、

1:ヒト集団の予想が明後日雨が降るかどうかの天気予報レベルとするなら、機械学習は明々後日の天気予報レベルである」

2:競馬新聞の記者一人の予想よりは高い精度で予測出来る。競馬市場の予測に勝つことはない

3:競馬市場の予測は競馬新聞の記者の予想を軸にオッズを微調整するものである。勝ち負けに関しては集合知が新聞記者の専門家集団に勝ることはない

というものでした。

ただ、「機械(学習)は専門家集団に勝てない」と結論するには、比較に用いたロジスティック回帰はあまりにも枯れた技術で、最新の機械学習手法ではない。ニューラルネットや最近はやりのディープラーンニング(深層学習)を使えばアルファGoのように専門家集団に勝てるかもしれないわけです。

また、競馬予想で機械がヒト(専門家集団)に勝てるのかとは別に、ヒトの自然における法則性の認識の問題は高校のときからずっと興味があり、これまた最近はやりのスパースモデリングの勉強もしたいと思っていました。ヒトが認識できる自然法則はヒトの認識にのどように縛られているのか、という問題に答えるにはデータサイエンスとしてヒトの認識をモデル化して理解する必要がある。

そんなか、Twitterのタイムラインに大関先生の「機械学習入門」の情報が流れてきたので、さっそく注文して読んでみました。内容は、しらゆき姫に登場する魔法の鏡をお后さまが機械学習で作り上げていくもの。

 最初は、年齢や目のぱっちり具合などの要素をもとに、国民アンケートのデータを使って美人度を線形回帰モデルで作りましょうから始まり、線形だとあんまりなので、シグモイド関数を用いてニューラルネットでやりましょう、でも、ニューラルネットだと計算時間が発散するので、シグモイド関数をランプ関数という計算時間が劇的に短くなるものに変えましょう、これがディープラーンニングだ、という感じで展開します。

さらに、データに穴がある場合にデータを少数のパターンで生成するスパースモデリング、パターン生成において足し算しか使わない非負値制約行列分解、お肌の状態を知るための画像認識から画素間のつながりを考慮したボルツマンマシンという磁石のモデル、そして、ヒトが顔を認識する場合、画素を認識するのではなく、目や口といったパーツをベースにしていることをもとに隠れ変数モデルと、研究の最前線まで一気にすすみます。

なかなか盛りだくさんで消化不良の部分も多いのですが、機械学習で精度を上げてもヒトの現象の理解にはつながらないので現状のどこをよくすればよいのかのアイデアにはつながらない。それよりもデータのパターンを機械学習で認識した上で、それをヒトが読み、その上で機械学習でモデル化することで現状を改善するヒントにつなげていく。

今年は機械学習の勉強に励んでみようと思います。後期の大学院の講義は機械学習チュートリアルで回帰モデルあたりからディープラーニングを扱ってみましょう。とりあえず巻末の参考文献を片っ端から注文して読んでみて、競馬や現在扱っている選挙のデータのパターン認識や予測で遊んでみたいと思います。後期までに間にあうかが問題ですが、今月10日が大学院の講義のシラバスの締め切りなので、見切り発車になりそうです。

今年の抱負でした。

ちなみに、今年の研究は、日本やアメリカの選挙のモデル、非定常多腕バンディットのナッシュ均衡の集団実験による検証、外部情報のある非線形ポリア壺の情報伝達、2ch掲示板のスレッドの効用の推定と書き込み数予測などをやっていきます。卒研生が6名、大学院2名なので、新し題材を探しながらの自転車操業になりそうですが。