雑学界の権威・平林純の考える科学

 今年の後半に発売される予定のiPhone 5 には、画像認識エージェント 「ハピネス “Happiness”」 が搭載されます。 その画像認識エージェント「ハピネス」は、「(言葉にできない)人が見つけられないもの・けれど人が求めているものを、iPhone が見つけ出す」という機能です。 関係者によれば、「ハピネス」のデモは「iPhoneを中庭に向けると、カメラが緑の中から”4つ葉のクローバ”を見つけ出し、”We found our happiness.”と表示する」というものだったと言います*。

 現行機種 iPhone 4s の目玉機能は、音声認識エージェント Siri でした。 Siriを使えば、音声を認識して、音声に応じて適切な処理・作業をしてくれます。 「やって欲しいこと」をiPhoneに言うだけで、音声認識エージェントSiriは色々なことをしてくれます。 しかし、Apple によれば「(意外なことだが)”やりたいこと”を自分自身では見つけられない・言葉にできないユーザが少なからずいる」というのです。

 そこで、Apple が行った決断は「言葉にできないイメージ的なものを処理する」「人(自身)がわからない・わかっていないことを処理する」という2つの目標を目指す製品開発でした。 それが、画像認識エージェント「ハピネス “Happiness”」です。 ハードウェアとしては、信号処理機能を大幅に向上させた次期Sony製カメラモジュールとサムソン製の画像処理機能を付加したARMチップA5Xicが用いられ、それらに実装された機能のアルゴリズム開発は数式処理ソフトウェアWolfram Mathematicaで行われました。 最近行われた「(ソフトウェアによる)ウォーリーを探せ」コンテストでも、Mathematicaによるコードが優勝作品に輝きましたが、そういった高度な数多くの機能が「ハピネス “Happiness”」には搭載されています。 そうした開発の結果、「(言葉にできない)人が見つけられないもの・けれど人が求めているもの」をiPhone5 は見つけ出すことができるのです。

 「iPhone 5 の製品開発スケジュールには、日本の震災によりSony製カメラモジュール製造日程が大幅に狂ったことの影響は大きかった」
Apple関係者は振り返りつつ、語ります。
「しかし、その中で、”人が見つけられないもの・けれど人が求めているものを、見つけ出す技術”という方向を強く意識した」
「実は、このハピネス “Happiness”という名前は、カリフォルニア生まれ・日本育ちの歌手の歌からとったのさ。iPhoneみたいだろう?」
「何より面白いのは、その歌手の名前はAIというってことなんだ。”Happiness”を実現しているのもAI(人工知能 Artificial Intelligenceを指す)だしね。」
「そんな”つながり”があるのさ」

 iPhone 5の目玉機能、画像認識エージェント「ハピネス」は、「(言葉にできない)人が見つけられないもの・けれど人が求めているものを、iPhone が見つけ出す」という機能です。


*「四つ葉のクローバー」は「幸せをもたらす」と言われています。古くは、「エデンの園からイブが四つ葉のクローバーを持ち出した」とも言われています。

成人した男女800人に尋ねたら、3人に1人が「サンタクロースはいる」と信じていて、世界中にはサンタクロースが「何十万人もいる」と答えたというニュースが流れていました(調査レポート PDF)。…そう、サンタクロースは本当に存在しるということを、大人は確かに知っています。 今日書くことは、そんなクリスマスの話です。

クリスマスイブの夜、世界中のこどもたちにクリスマスプレゼントを届けるために、サンタクロースはトナカイのそりに乗り、世界中を駆け抜けます。世界中にはたくさんのこどもたちがいますから、サンタが「いきあたりばったり」に何の計画もなくソリを走らせたりしたら、プレゼントを届け終わる前に夜が明けてしまいます。だから、サンタクロースは、世界中のこどもたちがいる家を世界地図で探し「さぁ、今年はどういう順序で、世界中にいるこどもたちの家を回ろうか?」と考えます。

サンタクロースは、一体どういうコースで世界中にいるこどもたちの家を訪ねれば良いのでしょう? 実は、このクリスマスイブを前にサンタクロースを悩ませる問題は、「巡回サンタクロース問題(TSP: Traveling Santa-Claus Problem )」と呼ばれる計算機科学でも難問とされる「大問題」です。

「こどもたちが眠る枕元の位置の集合」と「各こどものいる位置の間の距離」が与えられたとき、すべてのこどもたちのもとをちょうど一度ずつ訪れて、そして、北極に戻るまでの総移動距離が最小のコースを求めよ。

巡回サンタクロース問題(TSP: Traveling Santa-Claus Problem )

 この問題がなぜ難問かというと、サンタは「考えうるたくさんのコースの中から、最短コースを見つけ出さなければならない」わけですが、考えうるたくさんのコースの数が、あまりにも膨大だからです。

サンタが考えないといけない「たくさんのコース」の総数は、サンタクロースが1人である場合は、こんな式で表されます。

( こどもたちの人数 - 1 ) ! / 2

この式の中にいる「! 」というのが曲者です。「! 」というのは、たとえば「5!」なら、「5×4×3×2×1=120」となります。つまり、(その数から1までを)延々と掛け合わせる、という意味です。この「!」があるせいで、上の式はあっというまに「膨大な数」になってしまうのです。たとえば、世界にいるこどもが「たった100人だけ」だったとしても、もう 156桁もの膨大な数になってしまうのです。あるいは、もしも1000人のこどもたちがいたら、あぁ「2565桁ものコース」の中から最短コースを選び出さなければならないのです。さらには、それが何千万人・何億人ものこどもたちがいたならば、もう想像もできないくらい、たいへん大きな数のコース中から、配達コースを考えなければならないのです…。

 

 スーパーコンピュータ「京」でも、1秒間に「1京回=16桁回」の演算しかできません。…ということは、クリスマスイブを前にサンタクロースを悩ませる問題「巡回サンタクロース問題(TSP)」がどれだけ難しい「大問題」であるか、わかるかと思います。サンタが1人しかいなかったとしたら、こどもたちにプレゼントを配るコースを考えるだけで、日が暮れるどころか何年・何万年もかかってしまいます。

 けれど、こう考えてみましょう。

「サンタクロースは”1人”ではなくて、何人かで分担してプレゼントを配っていたとしたら?」

 もしサンタが何人かいたならば、プレゼント配りは「1 / サンタの人数」だけ楽になります。 そして「コースを考える作業」は、実際に配る作業以上に「ずっと楽」になります。

1 / ( ( ( こどもたちの数 – 1 ) ! / 2 ) / ( サンタの人数 * ( こどもたちの数 / サンタの人数 – 1 ) ! / 2 ) )

にまで減るのです。世界にいるこどもが「100人」の場合、サンタが1人なら156桁ものコースを考えなければなりませんでしたが、もしサンタが10人いたら、たった7桁の「1814400コース」を考えるだけで良いのです。つまり、こういうことです。

 サンタが1人だけだったとしたら、プレゼントを配ることは不可能だ。
しかし、サンタが複数いたならば、プレゼントを配ることができる可能性がある。

 

けれど、これだけでは、不十分ですよね。「サンタが複数いたならば、プレゼントを配ることができる可能性がある」といっても、世界中にはたくさんのこどもたちがいます。しかも、世界の人口は1年あたり1億人づつ増えていますから、全世界にいる子供たちの数も、毎年どんどん増えているのです。こどもの数が増え続けたら、いくらサンタクロースが複数いるといっても、プレゼントの配達コースを考え・配るなんてできるわけもありません…。

それを解決する答えはこうなります。

 こどもが増えるにしたがって、サンタクロースも増える。
そうすれば、世界中のこどものもとに、プレゼントも届く。

 こどもが増えるのと同じようにサンタも増える、つまり、「こどもがこの世界に生まれ来ると、サンタも新たに増えていく」のであれば、何の問題もなくなります。プレゼントの配達コースを考えるだけで日が暮れてしまうこともないし、プレゼントを配り終える前に朝になってしまう…なんてこともなくなります。「サンタクロースは複数いて、こどもが1人現れるたびにサンタも増える」と考えれば、クリスマスイブの夜、世界中のこどもたちの枕元にプレゼントが置かれる、という事実を確かに説明することができるのです。

 

 

 おやおや?「こどもが1人地球上に現れるたびに、地球上のどこかで、サンタが新たに現れる」というのは何かの偶然でしょうか。…偶然にしては「できすぎ」ですよね?もちろん、それは「こどもたちがサンタになる」ということを意味しているに違いありません。そして、新たなこどもが生まれた瞬間、「(それまでの)こどもが大人になり、そしてサンタになる」のです。…「ひとりのこどもが世界のどこかに現れたとき、どこかのこどもがサンタに変わる」と、そう考えたなら、すべてのツジツマが合ってきます。そうです、こどもがいつか、こどもに呼ばれて、そしてサンタになるのです。

 「サンタに変わった(かつての)こども」は、普段は(サンタという名前ではない)他の名前で呼ばれていたりするかもしれません。けれど、クリスマスには、サンタクロースという名前で呼ばれる存在に、確かになるのです。クリスマスイブの夜に、人知れず、「(かつての)こどもたち」はサンタという存在に変身するのです。

 

 こうして…サンタが街にやってきます。ひとりのこどもが世界のどこかで生まれた瞬間に、どこかのこどもがサンタへと姿を変えていきます。かつてのこどもが、眠るこどもたちの寝顔を眺めつつ・夢を見ているこどもたちを起こさないように気をつけつつ…そっとプレゼントを置くサンタクロースという存在へと変わります。

 新たにこの世界に生まれて来たこどもの声を聞き、小さな頃いつもプレゼントが届けられていたという(かつての)こどもも、サンタなんか来たことがないという(かつての)こどもも、サンタへと姿を変えていきます。そして、自分の姿を変えさせたこどもを見た時、「本当にサンタがいた」ということに気づくのです。