Hatena::ブログ(Diary)

shi3zの長文日記 RSSフィード Twitter

2016-06-24

[]Stacked Auto Encoderを実装して半教師なし学習で得たデータを立体的に可視化してみた 06:32

 昨年、松尾先生の書いた名著「人工知能は人間を超えるか」を読んでものすごく面白そうだったんだけどネットにサンプルがあまりないのでどうすれば実装できるのかよくわかんなあと思って放っておいたもののひとつがStacked Auto Encoderだった。


 Auto Encoderとは、入力と出力が一緒になるように学習させることで、入力データの特徴を上手く掴むように学習させる手法である。


https://i.gyazo.com/fa4c718739164cdf8209c3f9811f3ee0.png


 入力データを一度少ない次元に変換してから、もとの状態に復元するので、たしかにこれを見るとうまく次元圧縮できているような気もする。


 次元が圧縮できるということは、要は『特徴量」を掴むための条件が揃ったということだ。我々人間は、入力された画像が数字の7で、出力された画像も数字の7であると判別できる。


 「数字の7」と判別できるのは、我々はMNISTのデータが0から9までの10次元しかないと知っているからだけれども、もっと一般的なものに範囲を広げれば、カタカナの「フ」とか、ハングルの「フ」に見えるかもしれない。


 28x28ドット=784次元の入力を10次元まで圧縮するには、このオートエンコーダを積み重ねていけばいい。


 具体的には、768次元を400次元に圧縮して、次に同じ要領で400次元を100次元に圧縮、僕の場合、可視化にこだわっていたので、100の次は49次元(7x7)、その次は16次元(4x4)、最後に3次元に圧縮する。


 さて、これはこれでこのオートエンコーダは勝手に特徴量を掴んでくれているはずである。

 この状態のまま、MNISTのデータを読ませて三次元空間にマッピングするとどうなるか。


https://i.gyazo.com/88479b498e7e59d27ddbf6094bc8afda.png


 「な、何も成長していない・・・・」


 まあタイミングによっては、「お、ここがクラスターになってるのかな?」「お、ちょっとだけ分離できてるのかな」というふうに見えるタイミングがなくもないが、実際的にはなにも成長していないように見える。


 それもそのはず、この三次元散布グラフの点の色は数字を表している。0が青、赤が9というように。その基準で見ると、一見、全く特徴量を掴めてないようにも見える。


 これは要するにニューラルネットワーク本人(?)は「オレはアレがこうなって、アレがこうだっていう感じがしてんだよなあ」と「分かった気になってる」状態であって、彼女(今後僕はAIを女性だと思うことにする)は彼女なりに自分で理解できてるつもりでも、言葉にできるほど明晰に理解できてるわけではない。


 さて、この状態に持っていくのに実はけっこう時間がかかる。

 というのは、たとえば畳込みだと入力から出力までをただつないで、出力から逆伝搬をかければ理論的にはどれだけ深いニューラルネットワークでも学習できる。


 オートエンコーダの場合は、一層ずつ順番に学習しなければならない。500エポックまわすなら、5層で25000エポック回す必要がある。畳込みなら全体で20エポックも回せばMNISTくらいの問題なら簡単に精度が出る。このあたりが、オートエンコーダがやや不人気になってしまった理由かもしれない。


 しかし畳込みは局所性を利用しているので「ちょっと邪道」と考える一派もいる。

 あくまでニューラルネットワークは全結合層をベースに考えるべきだと。まあ僕はどっちの派閥の言うことも一理あると思うので面白くて便利ならば両方やろうという派である。


 問題はここからで、今の状態では、いわばきちんと教育を受けていない幼児のような状態で、特徴を掴むことはできるが、彼女が掴んだ特徴を我々人類が理解できるレベルにブレークダウンできていない。三次元へ射影すると混沌とするというのは、要はインターフェースの問題である。


 そこで、ほんの少しだけファインチューニングをかけてやる。

 この「ほんの少しだけ」というところがミソで、ガッツリとかけると却ってバカになってしまう。


 ファインチューニングとは、できあがったニューラルネットワークに僅かな教師付きデータを与えてあげて、学習させるという手法だ。


 つまり、彼女の頭のなかで「アレは丸くて、ピョッと線が出てクルッとなってる」と漠然と感じている特徴量を、「それは9だよ」と教えてあげる。


 すると彼女のあたまの中では「ああ、丸いのと線が出てクルッとなってるのは9なんだ」と整理される。

 今回の場合、ファインチューニングをわずか8エポックほどかけた結果はこうなる。

https://i.gyazo.com/debc2b9b6740b4b334c4c710bb98b7c8.png


 バビューン!

 なんと明晰!

 それぞれの数字が綺麗に一直線に並ぶ。

 この3次元空間上にこつ然と出現した10本の軸(パッと見で見えるのは4本だが、他の軸は中央付近にわずかに折りたたまれている)は、それぞれが「0っぽさ」「1っぽさ」などの手書き数字の特徴量に沿った軸になっているのだろう。


 よちよち歩きだった彼女が、数時間に渡るオートエンコーダの学習と、わずかなファインチューニングによってここまで明晰に状況を理解できるようになったというのは、ある意味で感動的でさえある。


 しかしこれでは真ん中あたりにある小さいクラスターを見つけづらい。

 そこで角特徴量のベクトルを正規化して可視化してみると


https://i.gyazo.com/efed20d3f7be3700d27ac2c0a6163a98.png


 こんな感じで、さっきは気づかなかった黄色や緑の軸がクラスターごとにある程度まとまっているというのを視覚的に確認できる。


 ただし、通常のディスプレイを使うとこの手のものを確認しようと思っても、どうしても三次元空間のものを二次元に写像したものを眺めるということで、立体感に欠ける。


 色々なデータを文字通り様々な角度から眺めて新しい知見を得たい、という目的には、二次元のディスプレイはいかにも狭すぎるのだ。


 そこでVRの登場である。


 VRで空間的に配置した各データ群を識別し、どのようなクラスターに別れるか、クラスターはどんな形をしているのか、直接確かめることができるシステムを作れば、今までにない知見を得られるかもしれない。


 これは画像以外でもあらゆるデータに対して適用可能な非常に汎用性の高い手法なので、なるほど確かに畳込みは邪道、というのはわからんでもない、と思ったりした。でもGPUで使う以上は畳込みは速くて便利なんだけどね

2016-06-23

AutoEncoderが学習する過程をアニメーションにしてみた 10:31

 先日、松尾先生にAutoEncoderこそが深層学習の本命だという話を聞いて、やっぱり作ってみるか、と思ってとりあえず作ってみるテスト。


 学習教材はMNIST。


 例によって6万epochぶんくらいの学習データセットをオートエンコーダーで教師なし学習させる(ここがポイント)。


 とりあえず500エポックほど0から9までの手書き数字を学習させたあと、下のような数字の7を見せた

https://i.gyazo.com/02023348fd031ec2924e1565e88f4a60.png


 この入力は28x28=784次元、これを約半分の400次元にまで圧縮して、その結果がどうなるかというもの。


 半分まで圧縮させたのに、もとの7に近い形になれば手書きの「7」というものの特徴量を中間層がうまく学習できたことを意味する。

https://i.gyazo.com/ae1dc47dba463f7d9ed9c191853c3898.gif


  「こんなんでほんとにうまくいくのかな」



 と半信半疑で作ってみると、なんと、上手くいく。

 作ってる人間が「ほんとにこれでいいのか?」と思っているのに上手く行ってしまうのが機械学習の凄いところだ。

 同時にかなりの黒魔術でもある。


 最初は完全なるランダム。

 それから、少しずつ数字っぽい形になっていって、最初は9と8と3が混じったような感じ、それからだんだんと7に近づいていく。最後はほぼ完全な7の形になって、少し感動した。


https://i.gyazo.com/54ffcfe99c717e9895f19b5653d23560.gif


 さらに、この中間層の特徴を1/4の100次元まで圧縮する第二層も同じようにオートエンコーダーで次元圧縮する。


 よくわからんが、安定している輝点があるので、このあたりが「7」の特徴量を掴んでいるのだろう。こういうのを人間が設計するのは無理ゲーなので、なるほどオートエンコーダーすげえ というわけだ。


 うーむ。楽しい。

 来週の「AI・人工知能ワールド」でなにか新しいものを出したくて、いまはAIとVRの組み合わせの展示を考えている。


 乞うご期待

2016-06-21

戦前生まれが28年前に描写した人工知能のあるべき姿 07:55


 さてさて、平成といってももはや30年近い時間が過ぎてしまった。

 小渕優子議員の父君である小渕氏(後の総理大臣)が、昭和に続く元号として「平成」を発表したのは、僕が小学校の頃だった。おっと年がバレるな。


 むかしはこの「年がバレるな」というセリフを活字で見るたびに、「おまえの年齢などどうでもいいわ」と思っていたのだが、いざ不惑を前にすると、なんとも、認めたくないものだな、自らの老いというやつを。という気分になるものだ。


 さて、平成である。平成元年うまれの秘書に散々「昭和の話ですよね」「バブルですよね」などと野次られてきたが、どっこい、平成といえどもう30年近い月日が流れているわけで、これから平成元年世代は「平成ヒトケタうまれ」と、「20世紀うまれ」という、2つのジェネレーションギャップというか、ジェネレーション差別を受けることになるだろう。散々「バブル世代」と煽られた身としてはまさしくざまあみろという感じではある。


 のだが、そもそも平成元年は1989年であって、バブルは1990年〜1993年頃なので、平成元年はぜんぜんバブル世代である。少なくとも親世代はバブルの恩恵を享受していたはずで、真にバブルの恩恵を享受していたのは当時の大学生以上、すなわち現在48歳以上の世代である。その頃僕はまだ小学生から中学生に上がるか上がらないかの頃で、基本的にバブルの影響は平成ヒトケタうまれと同程度にしか受けてない。つまり、ぜんぜん受けてない。


 果たして、バブル景気はわずか3年で崩壊し、高校生になり大学に上がる頃には、すっかり景気は冷え込んでいた。それどころか、大学四年になると、就職そのものが難しくなりつつあったと思う。それでも、少し前の就職氷河期よりは随分マシだったと思うが。


 バブル入社組は、まあ能力が多少低くても誰でも大卒という切符さえあれば有名企業に入れた時代なので、今就活に苦労している学生さんたちも、バブル入社組の人たちが次々とリストラされている様を目の当たりにしたら、羨ましいとも言ってられないのではないか。


 実際、僕の見える範囲でもまさしくバブル入社組の大先輩方が次々と一流企業をやめ、フリーランスになったり、田舎へ帰ったりしている。


 就活は運が9割であり、本人の努力や実力、ましてや適正なんかともなんの関係もないというのが世間の残酷なところである。


 話がずれた。

 まあとにかく少し前まで生意気なことを言っていた平成ヒトケタ生まれ世代は、このあと20世紀うまれと21世紀うまれに別れた時に全部僕らと同じ世代に区分されるわけで、それはもう痛快としか言いようがない。どだい100年という時間の差はいかんともしがたい。


 さて、100年といえば、100年には少し足りないが、90年ほど前に生まれたとある男が居た。


 清水正二郎。1925年4月うまれ。太平洋戦争の始まった1942年に拓殖大学中国語科に進学。戦争で物資が不足しているため、比較的裕福と言われていた満州に密航して、3年ほど過ごす。

 1945年に満州の独立混成第八旅団で特務機関員をし、終戦後はシベリアに抑留されている。

 二年後に開放されて帰国。

 大学を卒業して1953年、NHKに入社し、プロデューサーとして活躍する。


 1977年、息子と娘の名前から、新たなペンネーム、「胡桃沢耕史(くるみざわこうし)」を名乗り、次々と小説をヒットさせる。バブル直前の1980年、「翔んでる警視」シリーズ第一作「私も犯人です」を発表し、以後、このシリーズを死ぬまで書き続ける。バブル崩壊の1993年がんによる多臓器不全で死去。


 清水という名前に不思議なつながりを感じるが、当たり前だが僕と血縁関係にはない。

 

 しかし、この「翔んでる軽視」シリーズが僕のコンピュータとの関わり方に大きな影響を与えたことは、付け加えてもいいだろう。


 「翔んでる警視」の主人公は、岩崎白昼夢(いわさきさだむ)という、かなり変わった名前の警察官である。

 東大法学部卒、国家公務員上級職試験で3番の好成績を取ったにも関わらず、花型官庁の大蔵省(今の財務省)には行かず、敢えて警視庁の殺人課勤務を希望して入庁したという異色の経歴の持ち主だ。


 世界各国の言語に精通し、どの国のどんな方言でも、ほとんど現地人と変わらぬイントネーション、アクセントで会話することができる。


 時には一地方警察の刑事という立場を離れて、国際的に活躍することもしばしばであり、総理大臣の特命を受けてゲリラと取引したりもする。


 後には元特務機関員らしい描写に満ちたスパイ小説ばりの展開も見せる物語だが、僕が最初に衝撃を受けたのは、主人公、岩崎警視のコンピュータの使い方だ。


 岩崎警視はコンピュータの達人であり、世界中の犯罪をコンピュータにインプットしている。

 そして複数の犯罪の履歴を照合し、類似点をコンピュータが自動的に分析、時折、岩崎警視が質問をすると、かなり的確な答えをコンピュータが返してくれる。


 プログラマーでありながら(当時コンピュータを使うとはプログラミングすることと同義だった)、それ自体を仕事にするのではなく、プログラミングをあくまでも犯罪捜査のための道具として割りきって難事件を解決するというその発想にとても憧れたものだ。


 ただし、やはり戦前の人が想像だけで書く物語であるから、平成の御世となり、岩崎警視も警視庁捜査一課の管理官として、岩崎警視正に昇進した後の1990年も、警視庁本庁のコンピュータの描写はこんな感じである。


 このごろは、庁内でも一種の嫌煙運動が勢力を持ってきて、かつては自由だった勤務中の喫煙も、なるべく一定の場所で、決まった時間にするようにと、改善指導されてきた。

 しかし、岩崎警視正は、てんからその風潮を無視している。デスクで、コンピューターの端末にデータを入力するときは必ず、上質の葉巻を横ぐわえにし、流れる煙に目をしかめながら打ち込む。

 殺人だけをこれまで専門にやってきた岩崎警視正の経験によるカンで、コンピューターにデータを打ち込めば撃ちこむほど、物いわぬ機械が彼にささやきかけてくる声がきこえてきた。

 それは次のような声だ。


 『やがて東京の殺人事件の相当部分が、近隣諸国人がしかけてくるものか、近隣諸国人同士の間で行われるものになる』

 機械のディスプレイが直接そう指示したわけではないが、データは、テレビの選挙速報が、開票一パーセントの段階で、もう当確を早々と打ち出してくるように、それを物語って見せる。新しく打ち込むのを中止し、思い切って機械にきいてみた。

 「サツジン、ハンザイヲ、ナンパーセントノカクリツデ、カレラハオコスカ」

 将来の判断を示させられるときは、コンピューターは過去のデータを全て掘り起こし、年度ごとの発生増加率を出して、将来へカーブを描く。これはコンピューターが最も得意とする分野で、どんなに鋭く明晰な頭脳でも、とても人間が太刀打ちできない能力を発揮する。

 それでも、返事が入ってくるまでに二秒、というコンピューターにしては、異常に長い時間がかかったのは、32ビットの全能力を振り絞り、何万ワットもの電力をむさぼり喰い、機械全体が身をよじらせるほどの苦しい計算の後で、息も絶え絶えになって答えを送ってきた証拠で、警視正にはその努力が察せられた。

 「ショウガイトセットウハ、三十四パーセント。サツジンハ、三ネンイナイニ、二十パーセントヲコエル」

 これはえらい数字だ。蛍光色のディスプレーの字は、帝都に於ける殺人事件を絶滅させようという悲願を持つ岩崎警視正には、喉元にナイフを突きつけられたような思いのする数字だった。

 もうのんびりとデータの打ち込みなどやっていられない。将来の捜査一課のためにも、早急に対策を講じなければならない。


 「ソノタメニ、ワレワレハ、ナニヲナスベキカ」


 この答えは瞬時に返ってきた。コンピューターにとっては、最も容易な設問であったようだ。


 「ケイジニ、カントンゴヲ、シュウトクサセヨ」


 そうか、と世界の状況に詳しい警視正はすぐに納得した。




出展:翔んでる警視正 平成編3 キャリアウーマン 「VI 空飛ぶ大根」より


 子供の頃はこの描写を読んで大爆笑したものだが、久しぶりにKindleで読み返してみると、かなり奥の深いシーンである。


 まず、この当時は第二次人工知能ブームの最中だった。

 既に還暦を迎えていた清水正二郎でさえも無視できないほどの大きなムーブメントと期待が人工知能を含めたコンピューターに寄せられていた。


 このシリーズでは警視庁のコンピューターは明確に人工知能とは書かれていないが、期待されている役割は明らかに人工知能である。


 まあ苦しいのは、この警視庁のコンピューターへの世界の犯罪データの入力が全て岩崎警視正ひとりの手入力によって行われている点で、ここさえ目をつぶれば基本的にはビッグデータ解析である。


 また、インターフェースは自然言語に近い形になっている。

 この当時は既に第2水準漢字ROMを使うのが民生機でも当たり前だったから、カタカナで会話するのは明らかにおかしいのだが、戦前うまれの正二郎としては機械のぎこちなさをカタカナで表現したかったのだろう。


 さて、現代の目でこのシーンを振り返ると、たとえば過去の犯罪傾向の推移から、今後起きる犯罪に対して新しい知見が得られるというところは、オートエンコーダーを使った機械学習を彷彿とさせる。人間でも気づかない特徴を機械が偶然発見するのではないかというひとつの期待だ。


 さらに、今後なにをすべきかという行動指針までコンピューターに聞いている。

 コンピューターがどのようにして、犯罪捜査のために広東語が必要と判断したかは今の技術を持ってしても不明だが、犯罪を起こす外国人が広東語を使う可能性が高く、警視庁にはそれができる人材がいない、という情報を持っていたのかもしれない。


 そしてこういうことこそが、まさしく今もまた、人工知能と呼ばれる技術全般に期待されていることだろう。


 そして、一部の機能は今の技術でも十分実現可能だ。たとえばWord2Vecと同じように、Clime2Vecというのも当然作れるだろうし、そういうものがあるとすれば、個々の犯罪の類似性を人間よりも素早く正確に把握することができるだろう。


 そう考えると、当時はまったく現実感がなかったが、今考えると非常に理にかなっているというか、21世紀の人類が仮に人工知能を使いこなすとしたら、まずは岩崎警視正のような使い方から想像されるのではないか。


 ただしこの段階では、まだコンピューター(人工知能)が特別な人だけが使うもの、という前提がある。犯罪者の側にはなく、警視庁にだけあるから強いのであって、犯罪者の側も人工知能を持っているとすればイタチごっこだ。


 こうなると、やはり攻殻機動隊の世界である。


 攻殻機動隊では、AI(人工知能)が単なる道具のひとつとして描写される。

 多くの場合、道具としては多用されるが、最終的に判断を下すのは人間である。たとえ全身義体化し、電脳化したサイボーグであっても、最後の最後にはゴースト(魂?)が重要になる。


 攻殻機動隊では、特にアニメ版はAI搭載戦車『タチコマ』はメンテナンス時にお互いの経験を共有して同一人格になるという描写があるが、実際のAIでそれをやるのは少し大変だ。


 むしろ同一のものよりも多様性を持ったものがそれぞれ存在し、協調するほうが結果として高い効果を生み出せる。弱学習器を束ねて強学習器に対抗するアンサンブル学習はまさしく多様性を利用した学習であり、全く同じAIが複数あっても、あまり意味がない。まあこのへんは、フィクションだからなあ、という感じかもしれない。



 むかしの人が書いたAIの描写はいろいろと参考になる。

 ハインラインの「月は無慈悲な夜の女王」もAIの話だったなあ。


2016-06-20

文系社会人でも手軽にプログラミングが学べる特別教室をNHK文化センター青山教室で開催します 07:24


 さて、小中学生を対象としたプログラミングコンテストが始まったことで、子供たちがプログラミングを学ぶ動機づけができるようになったのではないかと思います。


 しかし、それを指導する大人や、最低限、子供にプログラミングを習わせる前に、プログラミングとはどのようなものか一通り知っておきたい、という大人の方のために、今年もNHK文化センター青山教室で「教養のためのプログラミング講座」を開催します。

NHK文化センター青山教室:教養のためのプログラミング講座 ゲームからVR/人工知能まで | 好奇心の、その先へ NHKカルチャー

https://www.nhk-cul.co.jp/programs/program_1092073.html

 日程は、7/6、13、20、8/3、10、17の全六回で、今年は通常のプログラミングに加えて、近年急速に注目を集めている人工知能と、今年がVR元年と言われているバーチャルリアリティについても扱います。

 本当は人工知能だけで6回くらいできるんですけど、まあ基本も抑えないとダメかということで追加という形にしました。


 UEIで開催しているDEEPstationの深層学習ハンズオンセミナー(詳しくはhttp://deepstation.jp)は社会人プログラマー対象なのでかなり敷居が高いのですが、そうではなく、文系なんだけれどもプログラミング全般と人工知能やVRについて一通り知っておきたい、という方が対象になります。



 先日、とある出版社の編集者の方がやってきました。彼は僕が去年このブログで書いた「文系の人こそ人工知能を勉強するべき」という指摘を受けて、実際に独学でTensorFlowをやってみたところ、人工知能時代に必要なスキルは理系的な「ランダム要素を排除して排除してコントロールする」というものではなく、「ランダム要素を受け入れて、外部から観察しながらコントロールしていく」という世界に変わるのだということを強く感じたとのことです。


 まさしく、このような時代だからこそ、それまで比較的もやもやしたことを扱っていた文系と呼ばれるジャンルの教養が重要度を増してくるでしょう。なぜなら今の人工知能はランダム性が強く影響し、設計だけでなく教え方によっても育ち方が大きく違ってくるからです。外的な環境からどのように人工知能をとらえ、学習させていくか、そしてまた、人工知能と人工知能をどう組み合わせるかという問題は、教育や心理学という問題に近くなります。そして、人間が「美しい」と感じることを人工知能にも「美しい」と感じさせたり、「危険」と感じるものの危険性をやはり人工知能にも感じさせたりすることが、人間と人工知能がうまく共生していくために不可欠なことになります。


 そのとき活かされる知見というのは、数学的なセンスよりもむしろ他の知能と接するというセンスです。いまや人工知能は、昆虫や哺乳類並の知能を持つようになったことは疑いようもありません。哺乳類並ということは、たとえば動物心理学のようなものが人工知能に適用できるかもしれませんし、ペットとしての人工知能ということをもっと追求してもいいかもしれません。人工知能をさらに進歩させて言葉を喋らせようとしたときに、どのような言葉遣いが美しいのか、人の心を揺さぶるのかといったことを人工知能に教えなければなりません。そのとき文学の知見がきっと役に立つでしょう。


 他にもいろいろなことが考えられますが、人工知能の研究開発に文系学問的なセンスを導入しようとするとき、どうしても最低限「プログラミングとはこうである」ということを知っておく必要があります。それを踏まえて、道具としての人工知能、人類のパートナーとしての人工知能とどう接し、どう関わっていくか、それが全六回の講義を通して皆さんと共有できればと思っています。


NHK文化センター青山教室:教養のためのプログラミング講座 ゲームからVR/人工知能まで | 好奇心の、その先へ NHKカルチャー

https://www.nhk-cul.co.jp/programs/program_1092073.html

2016-06-17

いよいよ本日、重大発表 06:29

先日の肩透かしを乗り越え、いよいよ本日情報解禁です。

ここまで長い長い道のりだったなあ

お楽しみに


14:58追記

 出ましたね

  http://prtimes.jp/main/html/rd/p/000002448.000007006.html

 参考までに、なぜこれが僕にとって重大なニュースだったのか、Facebookの説明を引用します


小中学生を対象とした本格的なプログラミングコンテストの開催が決定しました。稲見 昌彦東大教授を実行委員長として、 角川アスキー総研、CANVAS、UEIが実行委員になります。総務省から後援していただく予定です。スポンサーになってくれる企業様も募集しています。


そう、これが僕の重大発表です。


僕にとって、子供の頃は自分が参加できるプログラミングコンテストがなく、どこで自分の能力や素質を測れば良いのかわからずに孤立無援のまま独学で勉強しなければなりませんでした。


このコンテストを通じて、全国に散らばる明日の日本、そして人類を進歩させる才能の発掘と育成を目指します。