魔法の鏡とお妃さま 1 - cloudfront.net

まえがき
子供の成長を見ると、「どうやって物事を理解しているのか」
、そんなことが気にな
ります。あれやこれやと失敗を繰り返している中で、知識を習得しているから、と一
言では言えますが、「ではその知識とは何なのか」、それがわかれば、人間と同じよう
な知能を獲得することがコンピュータにも可能ではないでしょうか?
それを実現させたものが機械学習とよばれる近年流行を見せている技術です。
様々な試行錯誤を通じて、世の中がこうできている、というルールを学び取ること
ができるというものです。一体どんな風に世の中のことを学び取っているのか? 機械学習も工夫を凝らして進化し続けているところですが、本書ではその中でもボ
ルツマン機械学習と深層学習(Deep Learning:ディープラーニング)を取り上げる
ことにしました。
ボルツマン機械学習は、いろんな絵を眺めて、世の中の風景を記憶する技術です。
人間はなんとなくぼやけたものや一部が隠れて見えにくい画像であっても、何がある
のかを即座に理解します。それは過去の経験や今の状況などを加味して理解している
と考えられます。こうした技術をコンピュータに搭載できるようになりました。その
基本技術となっているのがボルツマン機械学習です。いわば眼と脳の記憶部分をコン
ピュータ上に用意することができるようになったわけです。
深層学習は、それをさらに発展させて、脳の判断能力部分を付け足すことで、周り
の状況を見て、これはこうだ、あれは前に見たあれだという識別や予測という能力を
コンピュータに付与することができる技術です。なんだかすごい技術が出来ているん
だなあ、と思うでしょう?
こうした技術の発展により、お話の中での想像上のものだと考えられてきた「人工
知能」による未来絵図が実現するのかもしれない。そういう高揚感に世界が包まれて
います。そして、コンピュータができるようになったこととして、世界の人々があっ
と驚いたのは、Deep Mind による Alpha Go のニュースでしょう。最新の機械学習
の様々な技術を駆使して、囲碁の勝負でコンピュータが人間に勝ってしまったのです。
本当にすごい時代がやってきたな、でもその技術ってどういうものなんだろうか? 多くの人が今興味を持っていることと思います。
iii
ようしそれじゃあ、機械学習の本を見てみよう! と本屋に駆け込むとたくさんの
本があります。しかも今の時代、Web 上を調べればそれなりの知識を獲得すること
ができます。それらの情報に触れて、きっと多くの人が挫折してしまうことと思いま
す。何せ「数式だらけ」で難しそう。どんなことをしているのか、
コンピュータを使っ
てどうやって知能を獲得しているのか、そのさわりだけでも知りたいと思う人にとっ
ては敷居が高いものばかりだと思います。
そこで本書では、「機械学習とは何か」から、ブレークスルーをもたらしたと言わ
れている深層学習と、その深層学習の黎明期に進化をもたらすきっかけとなったボル
ツマン機械学習について、「数式なし」で、「ある物語」を通して解説を試みました。
興味があれば誰にでも読めるように、世界でこんな本見たことない! というものを
作ったつもりです。
そういうわけでこの本は、機械学習に興味を持つビジネスマンにも良いし、手が空
いて何か新しい趣味を始めようとする人にも良いと思います。仕事をリタイアして残
りの人生を楽しむ布石にとご高齢の方が読んでも面白いと思います。親御さんととも
に小学校や中学校の自由研究の題材にしても良いくらいに平易に書いてみました。こ
の物語の結末を迎えた時に、機械学習の未来を切り拓く人材が育っていることと思い
ます。そういう一億総機械学習時代に向けて、この本が入門書としてお役に立てれば
幸いです。
2016 年 11 月
iv
まえがき
大 関 真 之
目 次
第
1 章 何も知らない鏡
1 - 1 魔法の鏡とお妃さま
2
1 - 2 機械学習をやってみよう
6
Column 機械学習って何ですか? 1 - 3 データから学ぶ Column 機械の自学自習 第
9
10
13
2 章 美しさの秘訣
2 - 1 魔法の鏡が出す答え
16
Column 数学の必要性
20
2 - 2 回帰問題に挑戦 21
Column 機械も人間と同じ!?
2 - 3 美しさを表す関数 Column 機械にも先生がいる 第
27
28
37
3 章 最適化問題に挑戦
3 - 1 お妃さま全力疾走! Column アルゴリズムから多くを学べ 3 - 2 モデルの限界 Column 訓練データとテストデータ
40
50
51
55
v
3 - 3 新しい特徴量を作り出す Column 難しい関数を作り出すには?
3 - 4 ニューラルネットワーク Column 脳の情報処理機構
第
63
64
67
4 章 深層学習に挑戦
4 - 1 レバーが動かない? Column 深層学習の盛り上がり 4 - 2 過学習に注意しよう Column 機械学習は過学習との戦い 70
78
79
83
4 - 3 バッチ学習とオンライン学習 84
Column 確率勾配法のリバイバル 94
第
5 章 未来を予測する
5 - 1 識別をする鏡 96
5 - 2 境界線を探せ 98
Column サポートベクターマシンの汎化性能 5 - 3 そもそも分離できるのか? Column 空間をねじ曲げるカーネル法
5 - 4 穴あきデータを埋める Column データの素性 vi
56
104
105
109
110
117
5 - 5 データの中にある本質をつかめ
118
Column スパース性と人間の直感 124
目 次
第
6 章 美しく見せる鏡
6 - 1 貴重な画像データ Column 磁石で機械学習? 6 - 2 ボルツマン機械学習による画像処理
Column 機械学習と統計力学 6 - 3 もっと複雑な特徴を捉える? Column 変分原理 6 - 4 隠れ変数を仕込んで多様な世界を Column サンプリング専用マシンの登場 6 - 5 複雑なデータの正体 Column ヒントンさんの意地 第
126
128
129
144
145
150
151
157
158
169
7 章 顔だけで美しさを
7 - 1 この世の全てを知った鏡 172
7 - 2 鏡よ、鏡、鏡さん 183
魔法の鏡の作り方(参考文献)
189
あとがき
196
索 引
199
vii
1章
第
何も知らない鏡
魔法の鏡、覚醒!
1- 1
魔法の鏡とお妃さま
「鏡よ、鏡、鏡さん、世界で一番美しいのは誰?」
白雪姫の有名な一節です。
きさき
自分が世界で一番美しいと思っているお妃さまに、白雪姫が成長するに従い、
白雪姫が世界で一番美しいと知った鏡は、そのことをうっかりお妃さまに伝え
てしまい、お妃さまの機嫌を損ねるという話です。
その鏡を実際に作ることを考えてみましょう。鏡はディスプレイにして、カ
メラを上部に取り付けてみましょう。カメラで写した映像を、ディスプレイに
映せば、鏡としての基本機能を持ちます。気分転換をしようと、世界のいろん
な風景を映すということも今ではできます。魔法ではない科学の力です。
さらに鏡にちょっとコンピュータをつけてあげましょう。そしてそのコン
ピュータが、機械学習のアルゴリズムが組み込まれたコンピュータだったとし
たらどうでしょうか?
機械学習。現代の魔法のような技術がこの本の主人公です。その技術が組
み込まれた鏡。その鏡とお妃さまの出会いから物語は始まります。
「鏡よ、鏡、鏡さん、世界で一番美しいのは誰?」
「えーっと、美しいっていうのはどういうことですか?」
「お、お前、しゃべれるの??」
「ええ、
実はしゃべれます。最近強制的にアップグレードしたので。ああ、 それはこっちの事情です」
2
第1章 何も知らない鏡
「いつもだったら、そのまま私の顔を映し出してくれて、そうか! 私が 世界で一番美しいのか! って幸せな気分になっていたのに」
「まあまあまあ、これを機会に仲良くしましょうよ。それで美しいって いうのはどういうことですか?」
「なんだか生意気な感じがするけど、まあいいわ。それは私のように綺 麗でかわいらしくて、…美しいっていうことよ」
「あー、そういう抽象的な言葉はよくわからないので、ちょっとわかる
ように数値化してもらえますかね? お妃さまの、その美しさってい うのは、どれくらいのものなんですか?」
「そりゃもう、ものすごい美しいわよ」
「いやいや、すみません。僕、新米なもんで、美しいっていう言葉の意 味とかわかっていないんですよね」
1-1 魔法の鏡とお妃さま
3
「美しいっていうのは、お肌が綺麗で、髪型がこうかわいらしくって、
立ち居振る舞いが完璧で。そうね、なんでもドレスを着こなしちゃっ
て…」
「ああ、それそれ!! そういうのですよ。特徴量っていうんですけど、
美しいっていうものを数値化するためには、どんなところに注目した
ら良いかっていうことを教えてください」
「目元のぱっちり度合いとか、若さとか、小顔な感じとか…」
「感じとかっていうのはわからないです。若さだったら年齢っていう数
値がありますよね? その数値を教えてくださいよ」
「そんなことを聞くの? 失礼な鏡ね!!」
4
第1章 何も知らない鏡
「いやいやいや、嘘をつきたくないっていうのが僕のモットーですから、
事実に基づいて、しっかりと答えたいじゃないですか」
「まあ確かにお前は、真実を映し出す鏡だものね」
「そうでしょう? 目のぱっちり度合いっていうのも、ちゃんと数値化
してくださいよ」
「そ、そんなの数値化してって言われてもよくわからないわよ」
「それじゃあ、僕にはよくわからないですねえ。美しいっていうのもど
ういうことかってよくわからないし」
「そんなことを知って、一体あなたはどうやって美しさを計算してくれ
るの?」
「任せてください。僕の機械学習という新しいシステムの威力を見せて
差し上げましょう」
「機械? 学習?」
1-1 魔法の鏡とお妃さま
5
1- 2
機械学習をやってみよう
「そんな難しいことじゃないですよ。機械学習。この世のありとあらゆ
る情報をもとに、未来やまだ見たことのない誰も知らない結果を推定
することができます」
「え、すごい! 明日の天気とかわかるの? 明日ちょうどお出かけした
いのよね」
「できますよ。最近は色々な技術の発展で天気予報も当たるようになり
ましたからねぇ」
「やってやって!」
「まあ待って待って。まずは美しいっていうものを教えてくださいよ」
「そうだったわね。美しいっていうのは私のこと! ほら、そこそこ若
くて、目もぱっちり!」
「そういう言葉じゃなくって、まずは僕にわかるように、全部数値にし
ていってください。うーん、例えば、この中で一番わかりやすい特徴
量は、年齢ですね」
「まあ数字でいうには一番簡単よね」
「その年齢が高い方が美しいんですか? 美しくないんですか?」
「うーん、まあ年齢が高い方が美しくない…かもしれないわね」
6
第1章 何も知らない鏡
「じゃあこんな関数どうですか?」
「がーん! なんか現実を突きつけられた気分…」
「こんな単純ではないですよね? 年齢以外にもほら、なんでしたっけ?
目のぱっちり度合い?」
「そうそう、
でも年齢が効くのか、
目のぱっちり度合いが効いているのか、
お前はちゃんとわかるの? むしろどっちが効いているのかが私は知
りたいわ」
「それは教えてください」
「それがわかったら、苦労しないわよ!!」
「ああ、そうではなくて、世の中には美しい人がいるんですよね? そ
の美しい人の年齢とか目のぱっちり度合いがどうだったかっていうこ
とですよ」
1-2 機械学習をやってみよう
7
「ああ、そっち?」
「そうです。そっちです。そういう特徴量と実際に美しいのかどうなの
か、これも数値化してくれると嬉しいんですけど、それを教えてくだ
さい。僕は世の中のことを知らないので、教えてください」
「何も知らないで、おまえは私の顔を映していたの?」
「ええ、外の世界のこと何も知らないので、とりあえず目の前にきた人
の画像を映し出していただけです」
「なんだか、しょっくーーーーーー」
8
第1章 何も知らない鏡
Column
機械学習って何ですか?
機械学習という言葉を、今やニュースでも目にするようになりました。 機械が学習する、という言葉から人工知能との関係が連想されて、なお一層
ブームの熱が高まっているのでしょう。そのブームはさておいて、機械が学ぶ
というのはどういうことなのでしょうか。ここで想定されている機械というの
は、無骨なロボットではなく、むしろその中身のコンピュータのことを指して
います。コンピュータに向かって、
こういうルールで世の中はできているからね、
だからそのルールを学びとってください、
と人間が教えてあげます。教える方法がコンピュータ・プログラムです。プロ
グラムというと、イメージしにくいかもしれませんが、人間からの指令書をコ
ンピュータに読めるようにしたものと思ってください。その指令書に従って、
コンピュータは世の中を見渡して、データを取得して学びとるようになります。
それを端的に表現して、機械学習、機械が学ぶというわけです。
そうやってルールを学びとったコンピュータは、次なるタスクに移ります。
その学びとった結果を利用して、世の中の動きを予測したり、新しいものごと
が起きたときに今までと同じかどうか判断をしてくれます。
例えば天気予報や地震予測などに応用する動きも活発です。病気に関するこ
れまでの経験や事例に基づいて、お医者さんの代わりに診断をすることすら可
能だろうと研究が進んでいます。法律に基づいて、
犯罪者が犯した罪の重さを、
これまでの判例との関係も参照して適切に判断するということも可能でしょ
う。
この本では、その機械学習の中で行われている計算処理の基本部分を紹介し
ます。そして最近のブレークスルーと言われている深層学習(ディープラーニ
ング)について、その中身と意義に迫っていきたいと思います。
1-2 機械学習をやってみよう
9
1- 3
データから学ぶ
「ちゃんとこれからは誰が美しいのか、答えて差し上げますよ! さあ
さあ、どんな人が美しいのですか?」
「だから私でしょう!!」
「ダメですよ、お妃さまの美しさを知りたいから、美しさの関数を作ろ
うとしているんですから」
「私を見て美しいというのはダメなの?」
「そんな主観的なことはしちゃダメですよ。機械学習ではデータに基づ
いて、客観的な判断をするんですから。まずこれから世界でいろんな
人の美しさと特徴量の関係について学習します。例えば年齢と目の
ぱっちり度合いがどの程度美しさに関係しているのか? とかですね」
「私を見れば美しさと特徴量の関係はわかるんじゃない!? 私みたいな
人が美しいって!」
「それだと世界でお妃さまのことしか知らない状態で、世界で一番美し
いのは誰って、そりゃ目の前のあなたですとしか言いようがないじゃ
ないですか」
「なんで私が説教されなきゃいけないの…」
「だから他の人がどうなのかが重要です。そういう多くの人に関する情
報、特徴量をたくさん集めたものをデータといいます」
10
第1章 何も知らない鏡
「私以外の人を見て判断するっていうことね?」
「そうです。客観的な視点から、世の中のことをまず知ってから、後で
お妃さまが実際美しいのか判定するというわけです」
「なんだか怖いわね」
「真実を知るっていうのはそういうことですよ。それで、誰が美しいん
ですか?」
「じゃあ、世の中にいる美しいとされる人をかき集めてくるわよ」
「よろしくおねがいしまーす」
こうして、全国で美しい人の情報、いわゆるデータを採取するという一大国
家プロジェクトが行われて、年齢はもちろんのこと、目のぱっちり度合い、お
肌の張り具合などさまざまな特徴量を数値化して、美しいかどうかの数値につ
いても多くの国民により投票がなされて点数化されることになりました。
1-3 データから学ぶ
11
「私が美しいのか、国民に直接聞いた方が早かったんじゃないかしら?」
「そんな勇気がお妃さまにあったんですか?」
12
第1章 何も知らない鏡
Column
機械の自学自習
学習という言葉でなんとなくイメージしやすいのが機械学習という分野の助
かるところです。まさに機械にお勉強をさせることを想像してください。
機械というのはコンピュータのことを指していますので、そのコンピュータ
にさまざまなデータを入力することで学習をさせます。
いわばたくさんの計算ドリルの問題を見せて、計算練習を積ませるというわ
けです。世の中にはこういう問題がある、こうやって解く決まりだ。ひたすら
それを見よう見真似で解けるようにしろ。
ここで、自然に疑問に思うことがあるでしょう。機械は本当に計算の仕方を
果たして理解しているのだろうか? そういうわけではありません。
問題と解答のパターンをたくさん見せると法則やルールが見えてきて、うま
く答えを出してくれるようになるだろうという気持ちです。人間の学習もそん
な気がします。足し算はなんでそうなるのか? と問われると、そうなるから
としか説明できない人が大半のはずです。
我々も多くのことを経験や結果からなんとなくそうなるものだと、納得をし
て前に進んでいます。そういうことを機械にもさせるというわけです。
もちろん人間の場合には効率よくルールを教えてあげることができます。そ
れが教育ですが、機械の場合には、どうやってうまく教えてあげたらよいのか。
僕らは人間ですから、機械に向かってそれをうまく伝える必要が出てきます。
その方法として利用されるのが数学を使った計算式で、多くの機械学習の初学
者を悩ませる部分かもしれません。
1-3 データから学ぶ
13
2章
第
美しさの秘訣
そうだよね…
ただのナンパだよね…。
2- 1
魔法の鏡が出す答え
鏡が提示したのは答えではなく、機械学習という技術。
その技術を用いれば、データからその法則性を、裏側にある関係性を捉える
ことができるといいます。
そのためにはデータがたくさん必要だそうです。
そこで全国の美人候補たちの、年齢や目のぱっちり度合い、お肌の張り具合
など大量のデータを用意して、それを鏡に提示することになりました。
さてそのデータを使ってどうやったら法則性を捉えることができるのでしょ
うか? お妃さまは、鏡の出す答えを期待しながら待ちます。
「さあ、
お前の言う通り、
全国からありとあらゆる特徴量を調べまわって、
美人かどうかまで投票してもらい、たくさんのデータを手に入れてき
たわよ!」
「おお、それだったらできそうですね。それじゃあデータを入力してく
ださい」
「データを入力する?」
「そうです。僕にそれぞれの特徴量がいくつだったかを教えてください」
「この手に入ったデータをあなたに伝えればいいわけね? それじゃあ
いくわよ。ミレーユ(仮名)さんは年齢が 24 歳で、目のぱっちり度合
いは 3 で、お肌の張り具合が 452 で…、シルベン(仮名)さんは年齢
が 19 歳で…」
16
第2章 美しさの秘訣
「ちょ、ちょ、ちょっと待って!!」
「何よ、早口すぎた?」
「 1 人 1 人区切って言ってくださいよ!」
「ああ、そういうことね。わかったわよ。なんだか面倒くさいわね」
「今の情報をミレーユさんの特徴量ベクトル x というものにして、コン
ピュータにわかる形にする必要があるんですよ」
「え、お前コンピュータ使えるの?」
「というより僕がコンピュータなんですけど」
「魔法の鏡じゃなかったの?」
「まあ、ざっくりいうと魔法の鏡ですね」
「ベクトルってなんだか難しいこと言っていたわね」
2-1 魔法の鏡が出す答え
17
「そうでもないですよ、特徴量はわかりますね? 年齢とか、目のぱっ
ちり度合いとか、お肌の張り具合とか、それらの数字をまとめたもの
をベクトルといいます」
「あ、そうか。ミレーユさんのベクトルっていうことね」
「そうです。その次はシルベンさんですかね。その特徴量をそのまま続
けて書いても意味がないですよね。ミレーユさんのベクトルはミレー
ユさんの情報だけが入っているべきですから」
「わかったわ。それじゃあ次はシルベンさんは、…えーとえーと…、次
はね~。…………ふぅ~、やっとできたわ。これで全員よ。結構骨が
折れる作業ね」
「そうなんですよ。データを 1 人で入力するなんて本当正気の沙汰じゃ
ないですよ。お手伝いさんの 1 人や 2 人ぐらいいるでしょう?」
「えー早く言ってよ!!」
18
第2章 美しさの秘訣
「とりあえずデータさえあれば、ご所望の作業はできるんで、どちらで
もいいですけど。それでミレーユさんは美しいんですか? その出力
を教えてください」
「出力? いよいよもって何を言っているかわからない」
「いいですか、僕がやれることはこういうことです。用意してもらった
特徴量ベクトル x を入力したときに美しさを出力する関数っていうも
のを作ります」
「その関数が作れれば、美しさが出力できる。美しさがわかるっていう
ことね。でもその関数をどうやって作ればいいの? それがわからな
いんじゃないの?」
「だからたくさんのデータを集めてもらったんです。僕は適当な関数か
らスタートして、関数の形をそのデータに合うように微調整をして、
美しさを表す関数を学習するっていうわけです。そういう形や関係が
かい き
わからない関数を、データから学習することを回帰っていいます」
2-1 魔法の鏡が出す答え
19
Column
数学の必要性
ベクトルという言葉が出てきました。関数という言葉が出てきました。
数学が得意な人も苦手な人もいることでしょう。なんであの人は数学が得意
なんだろう? そう羨むこともしばしばあるかもしれません。
数学が苦手になってしまった人は、何をやるのか、何のためにやるのかとい
うことを捉えきれずにいる間に、先に進んでしまってだんだんと嫌になってし
まったのではないかと思います。
大人になってから勉強するというのは、その点で気楽です。自分のペースで
やりたいようにやることができます。特に必要に迫られた場合は理解するチャ
ンスです。何のためにやるのかを意識して、結局何をやればよいのか? とい
うことを追い求めるからです。
数字の羅列、並べたものをベクトル。さらに縦にも横にも並べた場合は行列
といったりします。Excel を始め、表計算で利用されるのは行列の形をしたデー
タです。馴染みがある形で想像もしやすいことでしょう。しかし表計算で利用
している限りは、数学としての行列の利用価値を最大限に活かしたことにはな
りません。
中学生の時に学んだ連立方程式。あれは未知数とよばれるわからない文字・
数値がたくさんあり、それを解くために複数の方程式を立てるというものでし
た。そのわからない文字と、そのために必要な方程式の数が大量になったらど
うでしょうか。
それを取り扱うために存在するのが行列です。連立方程式を解くためにはた
くさんの式変形や計算が必要だったことを覚えているでしょうか? それを行
列の性質を利用して、1 回きりの計算で解けると聞いたらどうでしょう? そ
の計算方法が知りたくなります。もう一度学校に行きたくなったりするかもし
れません。
でも大丈夫です。今の時代調べればなんでもわかりますから、目的と手段を
明確化することで数学をより効率よく勉強することができるようになっていま
す。それこそが便利な時代に生きる人間の幸せなところかな、と個人的には思
います。
20
第2章 美しさの秘訣
2- 2
回帰問題に挑戦
「でも関数って、何か決まったものなんじゃないの? 関数のことを習っ
たとき、学校の先生が解けって言った問題は、関数が与えられていて
とにかく計算させられるものだったわ。関数を微調整ってどういうこ
と? 想像もできないわ」
「いや意外に簡単なことですよ。ここにこんなデータがあるとしましょ
う」
「直線っぽいから一次関数で合わせられそうね!」
「今なんで直線って見抜けたか。データの形を見ていますよね? その
データの形に合わせようと線を描いている。その線を表す関数を思い
出して一次関数って言ったわけですよね」
「そうだけど?」
2-2 回帰問題に挑戦
21
「もう少しゆっくりと考えてみましょう。その直線を頭の中で描いてみ
ましょう」
「直線直線…」
「そうしたら直線がデータに合わない。データに合わせるためには、傾
けた方がよさそう」
「そうね。傾けた方が合いそうね。それだけじゃなくて位置もずれてい
るわ」
「そう。まず直線の形を決めるには、傾きとどこに直線があるかという
位置を指定する必要がありますね。この 2 つのことを直線の形を決め
るパラメータといいます」
「パラメータ? じゃあ今は頭の中ではパラメータを動かしていたとい
うことね」
「ご名答。そのパラメータを動かすことで色々な直線を作れます」
22
第2章 美しさの秘訣