読者です 読者をやめる 読者になる 読者になる

蛍光ペンの交差点[別館]

"どの点に関心をもつべきか ―をわれわれが学びとるのは,もっぱら仮説からだけである"

アルゴリズムはどのように何をしたいのか:豊かさについて

 

アルゴリズムとは、機械にも実行可能なぐらい明確に表現された作業手順のことである。その手順さえ実行すれば、目的とする何かが達成される。

その目的は、「病院の待合室で待っている人のうち、次に診察室に呼ぶ人を決めること」だったり、「布団 クリーニング とGoogle検索した人の検索結果の広告枠に表示させる広告を決めること(たいていはネットクリーニング屋が出てくる)」だったりする。あるいはもっと基礎的なアルゴリズムならば「与えられた記号列(プログラムなど)の意味が一意に定まるか」だったり「特定の値を最大にするように、いくつかの数値の値を変えること」だったりする。

 

これらのアルゴリズムは、どのように目的を達成したいのだろう?

 

たとえば、面積や築年数などの物件情報から、家賃価格を知りたい場合を考えてみる。ひとつの方法としては、日本国内のすべての物件情報を登録しておいて、「面積」と「築年数」を入力したときに、それらの家賃価格の表を返すようなデータベースを作ればいい(データベースによる方法)。別の方法としては、それらの物件情報をひとつの関数fで表すようにして、面積と築年数を入れると関数値として家賃価格(もしくは家賃価格の分布など)を返すようにすればいい(統計学機械学習による方法)。

 

この2つの方法は、一見するとどちらも「家賃価格を知る」という問題をエレガントに解決しているように思える。
でも、その裏ではいったい何を犠牲にしているだろう?

 

まず、データベースによる方法では、探したい物件情報に符合する物件が記録されていなければ何も結果を返さないという問題がある。東京ドーム22コぶんの大きさのマンションに住みたいです、はいありません、となってしまう。加えて、空間効率も最悪である。全ての物件情報をもれなく残しておかなければいけないから、テラバイトとかペタバイトレベルの記憶容量が必要となりうる。統計学機械学習による方法の「数式1つだけ(1キロバイトも行かないだろう)」と比べたら歴然である。このようなデータベースでは128ギガバイトしか容量のないiPhoneに入れることはできないし、IoTのこの時代では家電に入れることもできない。

 

一方で統計学機械学習による方法では、一度見たことのある物件でも正しい値を返さない(正しく暗記していない)という信頼性の薄さが問題となる。たとえば線形回帰モデルと呼ばれる数式では、一つの物件情報に対して1つの平均値しか保存されない。だから面積30平方メートルで10万円の物件と12万円の物件があった時点で、それらの価格を寸分違わず出すことはできない。たった2つあっただけでダメなのである。これはデータベースによる方法とまるで異なる問題点だ。ただし、データベースと違って、見たことのない物件についてもそれっぽい家賃価格を算出できることは大きなメリットだと言える。

 

こうなってくると、一つの疑問が生じる。

どうして併用しないのか?

 

たとえば、家賃価格を調べたいなら、まずはデータベースで検索してみて符号したらその結果一覧を返す、符号しなかったら数式による予測値を返す、という風にすれば、お互いの問題を解決したことになる。しかし今日も世界のどこかではデータベースはデータベースの授業として、機械学習機械学習の授業として別個に扱われる。少年は線形モデルを正しく理解したことに満足して何が犠牲になったか考えるに至らない。

 

 

アルゴリズムは機械に指示できるほど明確に表現できる。でもアルゴリズムを使うその手順は混沌としていて、それほど明確にはならない。ほんとうのところ私たちは、山程あるアルゴリズムを使って何をしたいのだろうか?

 

行き着いた結論のひとつは、有用性のある情報の抽出である。現実世界の要約とも言い換えられる。

 

データベースによる検索結果も、数式による予測結果も、つまるところ参考資料に過ぎない。何かをする上で役立ちそうな結果を弾き出している。日本全国の物件情報を読むことは一生かかってもできそうにないが、自分が探している物件情報と平米と築年数が等しい物件なら数千程度だろう。数式による予測結果が平均値ならば、平均値から明らかに乖離した物件を見つける物差しになるだろう。前者では自分が興味のある情報だけの提示、後者では有用性のある情報の抽出が行われている。

 

要約が目的になることはなく、それは単なるツールに過ぎない。それらが個別に取り扱われるのは、あまりに細部が込み入っていて短時間では統合するまで至らないだけであって、ツールとしての立ち位置には何の違いもない。

 

最後に一つ考えてみたい疑問がある。

人間がここまで計算機として優秀な理由は何故だろう?

 

私たちは、いまプログラムでやられているようなことをかつて仕事にしていた。古代は奴隷が政治家に付き添って、面会者の身辺情報を面会前に復習させることを仕事にしていたらしい。今はこの仕事は名刺管理アプリや顔認識、フェイスブックの個人ページなどが担っている。現在でも各種の新技術の登場で仕事が奪われるとかいった話題が紙面を賑わしている。

 

私たちは定型業務をしながら、しかし新しいことについて学習をしていく。
記憶を大事に大事に扱いながらも、推論や経験の中から自身の能力を変化させていく。

起動時間が長く、コンピュータのHDDの寿命が4年程度であるのに対して、約80年は稼働する。20数年ほどで生物としての基礎能力はおよそ開花し、あとは経験のなかから能力の適応の仕方や組み合わせ方を学んでいく。体調や感情があり、乱数には難しい偶発的な事象を引き起こす。イノベーションがそこから生まれることもある。

 

矛盾した言動や感情を持つことができる。非論理的な事項に直面しても処理が停止しない。多様な嗜好性があり、70億インスタンスが並列に作業している。

 

総じて、人間は豊かである。

 

アルゴリズムは、人間の豊かな部分のごくごく一部のサブセットをいま明確に表現された手順として体現しようとしている。それらを組み合わせることで、人間とはまた一味異なった「凝縮された」豊かさを実現しようとしている。それらはデータベースと数式の組み合わせが〜などとごくごく基礎的な論点が扱われているようにまだまだ黎明期であるが、これはこれとして興味深い。いままで歴史上人間がここまで、明確な手順として自分たちのできることを述べたことはなかったと思われるからである。