蛍光ペンの交差点

"科学と技術に支えられ、夢を語る人になる"

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

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

 

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

 

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

 

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

プログラムと恐怖

プログラミングを始めて約3年が経ち、少し考えることがあった。

 

学ぶことが本質的に困難なプログラミングとは、どのようなものだろう?
あるいは、いつまでも怖いプログラミングは、どのようなものだろう?


プログラミングを習うというと、以下のようなことがパッと連想される。

  • RubyPythonといった初学者にもわかりやすい(?)言語
  • CやC++と言った比較的わかりにくい言語
  • RailsSwiftなどによるアプリ開発
  • プログラマやエンジニアになるつもりじゃないから、彼らに仕事頼めるぐらい理解できればよい」という発言と認識

 

今回は、自分が始めた頃には思いもよらなかった「怖い(難しい)プログラミング」について考えてみたい。

それは「設定ファイル」のプログラミングである。

 

プログラマは日々の作業のなかで、いろいろな道具を用いる。そして、それらの道具の細かな使い方を毎回いちいち指定するのは煩雑でミスが起こりやすいため、設定ファイルと呼ばれる特殊なファイルに予め指示を書いておくことが多い。

 

たとえば、オペレーティングシステムと私達ユーザーの仲介を行なうプログラムであるbashならば .bashrc (正式な読み方は知らないが、私は「ドット・バッシュ・アールシー」と呼んでいる)というファイル、遠隔のコンピュータにアクセスするためのコマンドの一つであるsshならば ssh_config (「エスエスエイチ・コンフィグ」)と呼ばれる設定ファイルを操作する。

 

これらの設定ファイル内での指示の書き方は、共通していない。たとえば .bashrc で変数を宣言するときは変数名と値の間に空白を入れないことが求められるが、ssh_configでは変数名と値の間に空白を入れることが求められる。プログラマは新しい道具をひとつ使おう(細かく使い込もう)とするたび、それらの文法を覚える必要に迫られる。

 

最近では .yml や .json という拡張子のファイルで、ある程度共通のフォーマットで書けるようになりつつある印象も受けるが、真に問題なのは書き方というより間違いの見つけ方である。

 

どういうことか。

 

RubyPython、あるいはCやC++と呼ばれるプログラミング言語では、文法上のミスがあるとそもそも実行される前にエラーを出して止まることが多い。変数が存在しませんだとかカッコが閉じていませんだとか言った類のものである。プログラマは多くの場合、これらのエラーを手掛りに、プログラムを修正して正しく動くようにする。

 

「エラーを手掛りに」というのがポイントで、設定ファイルにおいては、あるいはエラーの種類によっては、手掛りになるようなエラーの文言が表示されないことが多い

 

「初心者だけが間違えるようなミス」であれば、それほど問題はない。ググれば同じ問題に直面している人がいるから、その通りに修正すれば大抵直る。

 

問題は、「プログラミング自体は普通にできる人だったとしても、そのエラー自体に詳しくなければ防げないタイプの不具合」である。

 

たとえばsshであれば、アクセス先のコンピュータが(セキュリティ強化のため)デフォルトの22番ポートではなく他のポート(仮に20022番とする)での接続のみ受け付けるようにしていた場合、connection refused エラーが起きる。このエラーを見たプログラマは、だいたい次のような思考を巡らせる。

 

  1. ポート番号が間違っているのか?
  2. パスワード認証がオフになっているのか?
  3. 秘密鍵ファイルが ~/.ssh/ ディレクトリ以下に存在していないのか?
  4. それとも、存在はしていても、デフォルト名ではない鍵ファイルとして保存されているから、鍵名を指定する必要があるのか?
  5. プロキシか何かの関係で接続が阻害されているのか?
  6. それとも、アクセス先のファイヤーウォールで弾かれているのではないか?
  7. ほかに何か、自分の知らない技術的な理由でアクセスができないのか?そうだとしたら誰に聞けばよいのか?ネットの掲示板か?それとも社内システムなら、前任の担当者か?

 

このうち、アクセス成功にたどり着ける「正しい」試行錯誤は、1. のみである。そして仮に 6. から逆番号順に試行錯誤していった場合、相当な時間をかけなければ 1. の正解まで辿りつけない。

 

実際には、鍵が存在しないときのエラーは確か public key denied か何かであり、すなわち connection refused ではなかった気がするので、ポート番号から考えることができるかもしれない。では正解が 1. ではなく 5. だったら?あるいは 6. だったら?プロキシ環境下に ssh でアクセスする機会や、ファイヤーウォールによる弾かれ方(とそれによるエラーメッセージ)を「拝見できる」「貴重な」機会はそうそうあるものではない。少なくともRubyPythonでエラーを見る頻度と比べたら2ケタ以上の回数差で珍しいのではないか。

 

だから僕は、設定ファイルのプログラミングをすることがものすごく怖い。

 

極端なことを言えば、たとえばsshでアクセスするようなマシンを100台立てて、それらの環境をそれぞれ変えて、その時のエラーメッセージを調べてやればsshのあらゆるエラーに慣れることができるから、まったく怖くなくなるだろう。だがコスパに見合わない。怖いなかビクビクしながら何とか直すことのほうが、時間的には遥かに短く済む。

だからきっと、このプログラミングはずっと怖いままなのだ。

 

 

プログラマが使う道具は 、どんどん増えていく。数年前にはDockerなんて存在しなかった。今では企業でも実戦投入を始めている。DockerにはDockerfileという設定ファイルが存在する。その書き方はbashMakefileに似ているが、若干違うところもある。その「若干違うところ」を学ぶときは、全神経を研ぎ澄ませる。「怖い」からだ。まして新しい道具の場合は、エラーメッセージすら信用できない。公式のチュートリアルを全部無視して、githubに上げられている「実際に動く設定ファイル」を説明書として読むことだってある。

 

新しい道具を学ぶときには、つねにリスクが付きまとう。

Rubyが書けるようになったからとか、
どの入門書を読んでも知らないことがなくなったから、
それで学習が終わりなんてことはありえない。

 

ある程度書けるようになってくると、あとはプログラミングによる問題解決をいかに効率的にするかの最適化勝負になってくる。

 

 その最適化に含まれる小問題が、設定ファイルの「怖い」プログラミングだと思っている。設定ファイルのプログラミングでは常に、不確実な環境下での最善の判断が求められている。

価値観について

人の話を聞いたときに、賛成したい気持ちと反対したい気持ちがほぼ同時に発生することが増えた。異なる価値観が同居していると言い換えてもいい。

 

たとえば、コンサルタントとして就職したい、と友人Aから聞いたとする。「いや、かつて戦略コンサルがイケイケだった時代とは違って、いまではコンサルタントコモディティ化(汎用品化)しているし、当時のような人材は集まっていないよ。」という反対意見も浮かぶし、「この子だったら、あの生き馬の目を抜くような過酷な競争環境でも生き残れるかもしれない。」と応援したくなる感覚もある。

 

実際、戦略コンサルタントとして1年目を終えた友人Bは、目に見えて人間としての魅力が高まってきており、優れた上司とも知り合えたみたいで、このような洗練された人物が育つ場所ならば良いのではないかと思ったりもする。

 

ところがそんな友人Bの話を聞いてみると、職場環境としては耳を疑うような話も聞いたりする。高給だから低賃金長時間労働ではないが、果たしてその数百万を稼ぐためにその時間を売ることが適切なのか、という不安感を覚える。成功例ですら万々歳ではない。情報のベクトルが入り混じり、感情と発言をひとつに定めることができない。

 

そんなとき、友人Cの発言を思い出す。「調べていくと良い情報も悪い情報も何十何百と集まりますが、それは当たり前なので、当面は重要事項だけに集中します」。

 

それでは重要な事項とはなんだろうか。

この文脈で言えば、僕は価値観に沿う事項だと思う。

 

 

成功は定義できない。荒すぎる概念だ。幸せも定義できない。それも雑すぎる。世間的には大成功したと思われている人も、本人に聞いてみると意外な悩みに苦しんでいたりするし、楽しかったりワクワクしたような思い出も細部まで点検すると辛い時間がけっこう長かったりする。最後にハッピーが待っているような事項を幸せとみなす人ばかりではない。純粋に楽しみだけで満たされた活動が存在するとは思わないし、それが幸せであるとは信じない。

 

一日の、あるいはある期間の多くが、自身の価値観に反さない時間であることを、人は求めているように思える。人は「いま自分の価値観に沿っている時間の過ごし方をしているなあ」とは言わない。「いま幸せだなあ」と言う。高校で文化祭実行委員をやった子が、大学でも多くの時間を投下して参加していた。彼ら彼女らにとっては計画の興奮がどんな日常の些事より重要だったのかもしれない。どんな日常の些事よりも。

 

目的もあまり適切ではない気がしている。僕含め多くの人は大して目的もなく過ごす時間を経験しているし経験していく。そのときでも残っているのは何かと考えたとき、価値観は残っていると思う。明確に意識されているわけではない、自然あるいは反射的な感情や感覚。

 

その観点から、どうして自分が二律背反な感情を人の意見に持つようになったのかを考えてみると、たぶん「できるのならば知りたいことは網羅的に知りたい」という自分の価値観が影響しているのだと思う。同じ現象であっても、時と場所がほんのすこし違うだけで全く異なる結果になることを知ってしまった。これからはこの状況と付き合っていかなければならないのだと思う。

2015年度紅白歌合戦の出場年齢層は14年前と比べて若返ったか?

 

昨日は久しぶりに紅白歌合戦を見ていたのだが、おや?と感じた。

 

なんだか子どものときに見ていた紅白に比べて、知っている歌手が多い気がする。

 

♪ 僕の身体が昔より 大人になったからなのか と徳永英明風に無視してもよいものだが、何だか気になった。年末は掃除やら何やらでいつもバタバタしているので、僕が最後に紅白をまともに見たのは恐らく小学生か中学生のころ。つまりいまから10数年くらい前だ。

 

紅白は10数年前から何が変わったのか。

 

Wikipedia紅白歌合戦のページを見てみると、

 

第53回2002年)において、番組側は「日本音楽界の総決算」をテーマを掲げ、出場歌手・曲目の多ジャンル化を決行[76]第52回2001年)まで常連だった演歌歌手が次々に落選となり、同回以降、演歌歌手の出演数が従来の半分以下になった[77]NHK関係者は「出場歌手別に視聴率を調査すると演歌の時が目立って下がる。止むを得ない」と語っている[78]。

( NHK紅白歌合戦 より引用、強調は僕によるもの)

 

とのことだ。

 

今年の出場者陣を改めて見てみると、氷川きよし(38歳)や山内惠介(32歳)など若手の演歌歌手は確かに残っているし、常連の演歌歌手の名前もチラチラ見えるのだが、確かに子どものときに比べて(僕にとっては退屈な)演歌の時間が減った気がする。

 

興味を持ったので、分析してみた。対象としたのは、上記Wikipediaによると「演歌歌手を減らす前」だった2001年の紅白出場者と、今年2015年の紅白出場者の年齢である。

 

紅白歌合戦は、60年続くだけあって、紅白歌合戦データベースなんてサイトがあるぐらいファンが多い番組のようだが、このデータベースサイトにも「出場者の年齢変化」を扱っている様子はない。60秒に及ぶ綿密で網羅的なGoogle検索の結果、ひとつだけ先行研究を見つけたが、2015年の出場者のみであり比較ではない。

 

紅白出場者の年齢がどのように分布しているのかは、あまり調べられていないようだ。なので、2015年のデータについては先行研究のデータを参考にし、2001年についてはWikipediaで大体の推定値を入力した。

 

グループアーティストについてはボーカルの年齢を、全員がボーカルのアイドルグループについてはWikipediaで目についたメンバーの年齢を代表値として入力した。

 

その結果、得られたのが以下の出場世代分布図だ。

 

f:id:koshka-j:20160101180021p:plain

 

なんと、出場者の平均年齢は14年経っても1歳ぶんも変動していない。

 

これは美輪明宏(80歳)が初出場で最年長だったからではなく、むしろ美輪を抜くと2015年の平均値は39.9となり2001年と0.1歳差に迫る。

 

しかしグラフからは平均年齢は変わっていなくても分布の中身がかなり変わっている印象を受ける。紅白の出場者は2001年が54団体、2015年が52団体で大差ないが、30代の出場歌手が激増している(8団体→18団体)。その代わりに減ったのは40〜50代であり、28団体から13団体まで減っている。つまり、平均年齢が一致したのは単なる偶然だと言えるだろう。おそらくこの分布は最頻値 mode や中央値 median で解析するべき特質を持っている統計データなのだ。紅白がどういう思想で作られている番組なのかは寡聞にして知らないが、最頻値が「コンテンツの中心となる歌手陣の世代層」、中央値が「平均の年齢」とみなしてよいのではないだろうか。中央値は01年で43歳、15年で37歳である。

 

個別に見ていくと、同じ50代のソングでも主要ジャンルが変化しているような気もする。僕はあまり歌手に詳しくないので全員について言及することはできないが、少なくとも今井美樹徳永英明X JAPANが歌うのは演歌ではないことは分かるし、というかヨシキはピアノ弾いてたし、松田聖子が歌っているのは『赤いスイートピー』だ。 ♪ 春色の汽車に乗って 海に連れていってよ…。同じ世代層と言っても、もはやコンテンツの特質が異なるということか。

 

30代はゆず・TOKIOSMAP椎名林檎EXILEなどなど10代後半の若者〜30代(?)に受けそうなグループが参戦しており、38歳ーーここが2015年の分布のピークであることは興味深い。2001年のピーク(最頻値 mode )は51歳だったのである*1

高齢化社会の中で、なぜか紅白の出場者は若返っているのだ。

 

そして、60代での出場者も増えている(3人→6人)。2015年は2001年より出場組数が少ないのにだ。ちなみに小林幸子(62歳)は特別枠での出場だったので2015年の統計から外しているため、彼女を入れると7人、すなわち2.3倍になる。

 

ところで、なぜ01年のほうが最年少出場者が若いの?と思う人もいるかもしれない。ザッと調べたところ、労働基準法に抵触する恐れがあるため自主規制をしているようだ。

 

f:id:koshka-j:20160101184018p:plain

 

出場順をヨコ軸、年齢をタテ軸に取ると、上のグラフのように、およそ22:00前で18歳以下の出場者が消えることが分かる(今年のNMB48は大丈夫だったのだろうか?あまりよくわからない)。また、2001年は後半の10人全員が40歳以上という特殊な現象が生じている

 

その10人の曲目を出場が早いものから並べてみると以下のようになる。

 

森昌子森昌子メモリアルスペシャル」

美川憲一 「恋女」

石川さゆり 「涙つづり」

堀内孝雄酒と泪と男と女

川中美幸 「大河の流れ」

さだまさし 「きみを忘れない~タイムカプセル~」

天童よしみ 「春が来た」

五木ひろし 「逢いたかったぜ」

和田アキ子 「夢」

北島三郎 「山」

 

これは若者には厳しい布陣…!!!

やはり、2001年はクライマックスに演歌系で盛り上げるという特殊な傾向があったようだ。

 

 

まとめ

 

  • 01年と15年の紅白出場者の年齢を比較することで、日本の年末定番番組のコンテンツの変質を追った。
  • 同じ50代のソングと言ってもジャンルが異なる傾向にあることが示唆された。
  • 出場者の年齢分布の最頻値が50代から30代に移ったことを確認した。中央値は43から37に変遷した。
  • 若い人は前半でほとんど切り上げるのかもしれない。

 

個人的な感想

 

同じ番組とはいえ、製作方針がかなり変わっている印象を受けた。小林幸子がコメント弾幕のなか千本桜を歌うのは、演歌とは違う向きでの生存を狙ったイノベーション戦略だろうし、まあぶっちゃけ普通に見ていて面白かった。

来年も見ることにして、楽しみにしていよう。

 

使用したデータはこちらです。

紅白ファンの方、年齢のデータなどおかしい点などあればぜひ指摘お願いいたします

*1:同率で24歳もピークである。

『戦略がすべて』第5節の感想:最適戦略とプレイスタイルから見える性格

『戦略がすべて』を少しずつ読み進めている。

 

前回書いた第4節(単なる熟達ではない要因によって可能になる高額報酬について)に続く第5節では、実はロールプレイングゲームのなかに適切な経営戦略のヒントが隠れていると論じられている。

 

 

僕はゲームの非効率さ、たとえばロード時間や時間をかけるだけのレベル上げが大嫌いであるため、正直に言ってしまうとテレビゲームやスマホゲームの類は大嫌いなのだが、ファイナルファンタジーを1〜12(2と11は除く)を全クリした程度にはプレイ経験があり、作ったミニゲームが小さな賞を取ったこともある程度にはゲームのメカニズムに触れてきた。

 

しかしその程度のゲーマーからすると、RPGのなかに資本主義社会の要素が含まれているという著者の考え方は新鮮だった。僕は単なる時間つぶしや交流の手段としか捉えていなかった。ドワンゴの川上社長などTRPGを重視する人は聞いたことがあるが、RPGに経営とのつながりを見出している人は初めて見た。

 

この記事では、当該書では言及されていないが、僕が昔から気になっているRPGの2つの要素について考えてみたい。それは、

  • 強い武器を買ったのにパーティーが非効率になってしまうケース 
  • 盗賊の「盗む」コマンド

の2つである。1つ目は書いていないというより、「新しい装備を導入した直後は一時的に効率が低下する」(p.60)と簡潔に述べられているので、もう少し詳しく考えてみたい。

 

1つ目について。ターン制の戦闘RPGをやったことがある人なら誰しも経験があるだろうが、ザコ戦において「攻撃1発で / 2発でギリギリ確実に倒せる敵」というのが最も都合が良い。攻撃というのは現れた敵の数を0に近づける行為であり、こちら側が1ターンに出せる火力を無駄なく出すことが最も速く敵の数を0にする方法である行為であるため、「ちょうど倒れる」ことが部分最適解が全体最適解に一致するという点で理想的な現象である。

 

問題は、強い武器を買った直後はこのバランスが崩れてしまうことだ。50ダメージを与える武器Aと、85ダメージを与える武器Bで倒れていたHP130の敵Eが居たとする。このとき賢明な設備投資により、武器Bを105ダメージを与えられる武器Cに変えたとすると、武器AとCでの合計ダメージが155となり、25ダメージの余分が生じる

 

この瞬間、攻撃対象をゼロベースで再考する必要性が生じる。考えるべきケースは以下の2つだ。

 

(1)3人メンバーの戦闘システムだったとして、「ダメージ30を与えられる別の武器D」を持っている仲間では微妙に倒せなかった敵が、50ダメージを与えられる武器Aでは1ターン目で倒せるかもしれない。そうすると武器Dと武器Cで135ダメージを与えて敵Eを倒せば、武器Aの余剰火力が活かせるかもしれない。これは、設備投資が明確に活きた良いケースである。問題は次の(2)だ。

 

(2)武器Dが既に一体倒せるだけの十分な火力があったり、武器Cを加えたところで倒せる敵が変わらなかった場合。この場合は実は設備投資の時期を遅らせて、あとあと更に強力な武器を買ったほうがよかったのではないかという選択肢が生じる。買った直後におニューな武器を揃えた武器屋が登場したときのショックなど、サンクコストから来る悲しみは計り知れない。ここに非効率が生じる。

 

実際にはこれらに加えて、出現する敵はそれぞれプロジェクトベースで「今回は主人公のHPを30削るぞ!」などとKPI (Key Performance Indicator)を設定した上でさまざまな布陣で臨んでくるから、ここにおいて武器を変えたあとの攻撃対象は組み合わせ最適化の様相を呈する。

 

なんということか。

ファイナルファンタジーは組合せ最適化問題を解くゲームだったのか

 

敵がどんな布陣で臨んできても瞬殺する数理的な直観力を身に付けた少年少女は、企業の在庫管理や仕入量最適化において抜群の成果を上げるに違いない。なんということか。ファイナルファンタジー社員教育であったのだ。

 

ナップサック問題はNP困難(無理矢理簡単にいえば、数が多くなれば量子コンピュータが実現されたとしても最適に解くのが難しい問題)であることが知られているが、ゲームのプレイヤーは「そこそこいい戦略」でテンポよく敵を倒していくことを求められる。そうしないと今日の晩ごはんに間に合わないからだ。ここで、数理的な最適解以上に、他の制約条件に沿う現実的な解の大切さを自然に学んでいく。

 

 

続いて、(2)のぬすむに関する話題である。

スクウェア(現スクウェア・エニックス)が製作開発をしているRPGファイナルファンタジー』シリーズでは、敵からアイテムを盗むことを特技とするキャラクターが多く登場する。

 

FF4のエッジ、FF6のロック、9のジタン、10のリュックなどなど。5や7や8では特定のキャラではなく、付け外し可能な特殊技能として「ぬすむ」コマンドが用意されている(8では「ぶんどる」)。ファイナルファンタジーのバトルシステムを支えている仕組みの一つであると言えるだろう。敵からぬすめるアイテムには市販されていないようなレアアイテムも存在しており、序盤で協力な武器を手に入れるとその後の戦闘を有利に進めることができる。

 

しかし僕は、このぬすむコマンドを使って一周目のストーリーを進めた覚えがまるでない

 

昔のことだから単に覚えていないだけなのかもしれないが、ここではロード時間の短さを基準にプレイするRPGを選ぶようなユーザーは、ぬすむコマンドを使ってプレイすることがないと一般化して話を進めてみる。もっと踏み込んで解釈すれば、既存の有名どころのRPGではぬすむというゲームシステムによって楽しませることに失敗しているユーザーが居ると言えるかもしれない。

 

どうして僕はぬすむを使わなかったのか。

 

思い出せる限り、僕がぬすむを使っていたシーンが2つある。

ひとつはFF4のオマケ要素である、月の地下渓谷B5Fに出現するプリンプリンセスを出現させるためのアイテム(「アラーム」)を集めていたとき(このアイテムはエッジにぬすませることで効率よく集められる)。プリンプリンセスは他では手に入らない最強装備を落としてくれるモンスターであるため、数十回のリセットを繰り替えして倒し続けていた覚えがある。

もう一つは、FF5ギルガメッシュという敵キャラクターから盗んでいたときだ。こいつはゲーム中で複数回登場するが、攻略本によると強力な防具である「げんじのこて」や「げんじのかぶと」シリーズを落としてくれるというので、登場したらひたすら盗ませていた。ここでは、「攻略本で知っていたから行動が変わった」という情報構造が働いている。プリンプリンセスもそうだった。誰があんなB5Fで急にアラームを鳴らすのだ。

 

すなわち僕は、「ぬすむ」という不確実な行動に対して明確かつ高いリターンが見込めるときにのみ、そのアクションを実行していたということになるようだ。一方で、僕の知人は「ぬすむ」をひたすらいろんな敵に実行することが好きだった。知人にとってゲームは世界観を味わうためのインターフェイスであり、どういうモンスターがどういうアイテムを持っているのかは、たとえ100回に1回良いアイテムが手に入るだけでも、プレイ時間を引き延ばすことにつながるため、リターンの高い投資だったのだ。

 

こう考えると、心理学や性格診断よりも、RPGのプレイログにこそユーザーの正確が如実に現れるのではないだろうか。

 

将来のマーケティング担当者は、開示していないプライベートな情報ではなく、あなたがゲームをプレイしている姿を見てマーケ戦略を決めているかもしれない。

 

おしまい

 

 

戦略がすべて (新潮新書)

戦略がすべて (新潮新書)

 

 

数学って役に立つの?に対する試論

 

中学や高校で、2次方程式やら確率やら対数関数やら学んできたけど、こんなこと学んで意味があるの?いい会社に入るためのスキルセットとか、相手を説得するための話法とか、実学を学んだほうがいいんじゃないの?

 

 

明確には表明しないだけで、数学が苦手な人は誰しも上記のような感慨を抱いている。

 

代替案として提示された道具が役立つことは認めた上で、また数学が果たして誰しもが学ぶべきものか?という供給と需要のミスマッチも認めた上で、

 

しかしそれでも数学は役に立つ。

 

どのように役立つのか。

 

 

その例としてはおそらく、幾何学が最も納得しやすい。

 

この世界に暮らす誰しもが、直線 straight lines や平面 planes というものを見たことがある。街に張り巡らされた電線やタイルの模様、スターバックスでコーヒーを置く机の表面 surfaces や、いまあなたがこの記事を読んでいる電子情報媒体の画面 screens は、(数学的な定式化をしてしまうと厳密には違うのだが) 数学で出てくる直線や平面にとても似ている。

 

どうしてだろう?

 

歴史的な経緯は知らないが、これまでの僕の聞いた話を総合するに、それは数学で使われる直線 straight lines や平面 planes という「思考するための単位」が、もともと私達が身の回りで見ているような物体の性質を整理して曖昧さなく述べたものだから、ということなのだと思う。

 

 

とても頻繁に見るものだから、よく知っている。

よく知っているものに似ているから、知らないものでも、類推が聞く。「線形代数 linear algebra では線形性 linearity を扱う」と聞いたとき、たとえあなたがまったく線形代数も線形性も知らなくても、「たぶん直線みたいなものを扱うんじゃないかな?」と何となく推測できる。

 

数学が役立つのは、この「何となく推測できる」の量と質を上げることができるほぼ唯一のツールだからである

すなわち、形式的なことに対する直観をより精密かつ正確にするためには、「何となく」似ているのではダメで、「同じ」なのか「違う」のか、を誤りなく積み上げていく必要がある。

 

さらに踏み込めば「ずっと同じ手順を続けていけば同じになるかも」(極限、極限値)や「違うけれど、小数第 ホニャララ 位 までは同じ」(近似、線形近似)と言った、現代の数学の主力(教科書では大黒柱 mainstaysと表現されることもある)となっている概念に辿り着いていく。

 

それらを使うと、たとえばネット通販のユーザーの一人あたり購入額が「50000円まではまっすぐで、そのあとは曲がっている」とか、ガンの治療薬を使ったときの余命が「半年までは年齢に対して線形に比例して(まっすぐで)、その後はバラツキがある(別の要因に対して比例していて、それが計算式に入っていないのかもしれない)」とか言った知識直観が養われることになる。

 

あるいは、現実のべっとりとしたデータの方ではなく、さらに純粋な形式のほうに踏み込んでいけば、「円は開区間(0,1)と同相である」(位相幾何学)とか、「多様体のうえでは局所的に(私達が物理的に存在しているような)ユークリッド空間である」とかいった話になってくる。

 

それらの話は、最初はまるで数字遊びのように聞こえるかもしれないが、最近の実世界への数学の応用例は、ここらへんの純粋数学が実は私達の周りに現れているデータをうまく説明する(複雑なデータを、直観に沿うような説明に要約(近似)できる)みたいだ、という発見に満ちあふれている。

 

たとえば世界にはヤバい研究があって、Stanford大学の数学者Gunnar Carlsonが2009年に出した論文によると、

 

「デジカメで撮影した大量のモノクロ写真について、9ピクセル(画素、すなわち画像の最も細かな記録単位)ごとの明るさの値を9次元ベクトルとしてそのベクトルの存在する位置を、データ内に現れた全ての9ピクセルについてとると、それらの点は8次元空間上の7次元楕円(7-dimensional ellipsoid)の形になる

 

ということが分かっているらしい*1

 

楕円と言ったら、僕らがアメフトやラグビーや見るあのボールだったり、駅に入ったヴィ・ド・フランスのフランスパンや、木村屋のあんぱんでお馴染みのかたちだ。

 

デジカメの画像を構成している単位が、8次元空間上のフランスパンから取られた「ぱんくず」だったなんて、きっと1900年代以前の人達は誰も知らなかったに違いない*2

 

 

ここまでの話を読んできた方々は思っていることだろう。

 

 

「やたら難しい話をして誤魔化すなよ。

結局、それはなんの役に立つの?」

 

 

正直、数学のアプリケーションを予測することはメチャクチャ難しい。ただ既に、信じられないような応用例は模索されている。たとえば2015年の5月にMITが出したこの論文では、要約すれば2次元画像として記録された人間の顔に対して「もっと明るい顔にして」とか「もうすこし顎を下にして」とか「ヨコを向いて」と言うと、そのような変換を施した顔の画像が生成できるという魔法みたいな方法が報告されている。

 

論文中に載っている、実際に生成された画像を見ればまだまだ基礎の途上段階であることは明確だが、それにしても発想がヤバい。こいつらリアルにケアルとかサンダガを唱えようとし始めていやがる。

 

仮にこの変換精度が人間が目で見ても判別できないレベルまで上がったとしたら、例えば集合写真を取って「シャッター時に目をつぶってしまった3列目の彼の目を開けて」とか言うと、本当に目を開けた写真ができるようになるのかもしれない。

 

こういうことを、7次元上の楕円をコネコネすることで実現させようとしているのが、究極には数学だと僕は思っている(反論は受け付けます)。

 

 

 このような数学の「強力さ」は一般にあまり知られていない(言ってしまえば、中学高校の先生が教えてくれない)。

 

 

だから人々はあとになって言うのである。

「大学時代に線形代数と統計をやっておけば良かった」、と。

 

 

 

 

 

 

 

 

*1:難しくて僕も詳細を理解できていないので、一部説明が違っているかもしれない。

*2:そもそもデジカメがなかった

『戦略がすべて』第2章感想、あるいは分析者は儲ける仕組みに関われるか

これは、まだまだ試論である。

 

「4. 「儲ける仕組み」を手に入れる ーー スター俳優の方程式」の感想

 

大ヒット漫画原作者はなぜ映画の原作者としては高給を提供されないのかを契機として、報酬額の決定要因を追究した章である。

 

先日、数年前にベンチャーを立ち上げて現在非常にイケイケな社長から「コンサルタントの仕事って聞けば聞くほど、あやしいよね。でもわかるな、自分の会社もそうだけど、あやしさがないと儲からないんだよね」という話を聞いた。

 

一瞬はて?コンサルタントというのはそんなグレーなことをしているのか?と思った。

 

だが、よくよく考えれば僕も、企業のデータをゴニャゴニャいじって賃金を貰う、という意味不明なバイトをしているので、人のことは言えないのであった。

 

 

 

その人が言っていた「あやしい」というのは、法律を犯しているという意味ではなく、提供されている付加価値がそれほど大衆化されておらず捉えどころがないうえに、不確実性が高いため本当にそれでリターンに繋がるのか(経験をしてみないと、あるいは数値的にシミュレーションをしてみないと)俄には信じがたい、ということを表していたのではないかと僕は解釈した。

 

そもそも価値があるのかが論点なのに、

手に入るかどうかも確率的にしか定まらない。

金融商品に近い性質を持っている。

 

(ちなみにその人の世界観では、その人の属している業界が特殊だったこともあるが、『戦略がすべて』にも書かれている安全策、すなわち資本装備率の高い大企業で安定的な高給を、という策は、上限が見えてしまうもの、という感覚でハナから選択肢になかったようだ。)

 

 

僕は将来、統計コンサルタント(流行りの言葉で言えばデータサイエンティスト)として仕事をしようと考えているため、その文脈で読んでいた。以下は僕自身の整理のために書いたものであり、細かな出典の確認は行なっていないので了承されたい。

 

統計コンサルタント(という仕事がほんとにあるんですよ、というところからいつも説明しないといけないレベルなのだが…)の付加価値は、依頼者の直面している統計的な問題を解決することにある。

 

なんでソリューションを統計に限るんだ、某cKや某センチュアみたいに戦略や総合力で勝負しろよと思われるかもしれないが、それは実際に使う知識を統計に限るというよりは、むしろ見つけてもらうためのラベリングに近い。実際にはアクションプランを提案することも多いし、システム構築に向かうこともこれから続けていけば何度もあるだろう。

 

統計コンサルタントという、どこか特化し過ぎな名称は、「会社組織に頼むほどではない小さな個別具体的な依頼を、分からないことをなんでも教えてくれる数学の先生のような感覚で受けますよ」というシグナリングなのだと僕は理解している(海外だと、博士課程生の統計手法の妥当性を検証するなどしている人などが多いらしい)。大きな企業ではできない落ち穂拾いをしますよ、という表明なのだと思う。

 

議論が拡散するので、以下では依頼者の問題を解決するためのベストな手法が、ほんとうに統計的なものだったと仮定して話を進める。

 

統計コンサルタント(以下「分析者」)の業務は、依頼者(統計的な問題を抱えており、多くはデータを提供する主体)と協力者と分析者である自分自身を中心に行われる。統計コンサルタントは数理的な理解に特化していることが多いため、協力者としてエンジニアが付くことが多いと理解している。そのほかにも、データの理解に必要な業務知識を依頼者が持っていない場合、協力者としてその分野の専門家が付くこともある。

 

僕が考えてみたいのは、

  • その利害局面において、分析者は『戦略がすべて』に
    出てくるような「儲ける仕組み」に関わっているか?
  • 分析者が関われるとしたら、どう関わるのが最善なのか?

ということである。

 

まず前提として、単純に数理的な問題に矮小化して解く、たとえばニューラルネットワークのパラメータの最適化を通してリコメンドエンジンの予測精度を上げる、と言ったようなことは、同書で指摘されているように学習可能なスキルとして近いうちにコモディティ化することは間違いないだろう

 

現在私は大学で開催されている機械学習の勉強会に参加しているが、「1年前までまったく機械学習やったことないです><」みたいな友人の理系生(地学専攻)が早くも予測精度で参加者内でトップクラスの精度を出しているのを見て、驚いた。本人曰く、金魚を育てるみたいで楽しいらしい。コードを見させてもらったが、今年論文で出たばかりの確率的最適化手法も普通に自分で実装していた。分析者の業務を、単なる(研究レベルではない)数理最適化と捉えると、理系修士学生が1年程度で身につけられるものに等しい。彼らは普段の研究で、それより遥かに多くの労力を投下している。

 

だから、分析者がもし儲ける仕組みに関われるとしたら、そのようなコンビニバイト的コモディティ作業ではないことは確かだ。

 

ただ、ここで少し同書とは異なる現象が生じる。

 

同書では暗黙に「コモディティスキルを磨いても儲ける仕組み側に回ることには役立てにくい(「たいていの学習可能なスキルは高報酬につながらない」、48ページ)」と仮定している。

 

 

だが、分析は性質上、儲ける仕組みに入り込みうる業務である

その顕著な例は、リコメンドエンジンである。

 

リコメンドエンジンは、「口が上手く24時間連続で働ける営業人材を格安で雇う」ようなものなので、言ってみれば儲ける仕組みそのものであるとも言える。固定でリコメンド欄を作っていた時と比べると、その欄からの流入による売上が100%以上増加(しかも元々の絶対金額もかなり大きい)みたいな話も聞いたことがある。RTB(リアルタイムビッディング)などにもその傾向がある。

 

そのような場合、増加量の何%かを分析者の収入に充てると言えば、マジで僕はいまここで大学をイグジットしてもいいんじゃないか説すら出てくる。もう科学はいい。外国で3匹のゴールデンレトリバーに囲まれながら送る余生にゴールしたい。そのような世界線があってもいいじゃないか。エンジンで15億の売上増加があったんなら、8%で1.2億貰ってもいいじゃないか*1

 

 

しかし、そのようなリスク変動型報酬を受けている分析者の話は僕は聞かない。

 

 

それは本人が誰にも言わないからかもしれない。だが、僕は違うと思う。おそらく、汎用リコメンドパッケージという競合の存在のせいだろう機械学習、その破壊的な可能性に気づいていますかみたいな感じの売り文句で会社の受付に登場して、「コピー可能な分析者」で勝負を仕掛けてくるプレイヤーがいるわけだ。優秀な分析者が作ったエンジンと比べると、彼ら汎用パッケージ集団のエンジンはまだまだ弱いし、原理的に言って今後も超えることはないと思っているが、それでも分析者の報酬のベースラインを下げることには多大に貢献しているだろう。手動で作ったときに、パッケージに比べて5%リコメンドCVRが上がったとしても、ボーナス程度の貢献にしかならないだろう。

 

ここまでの検討によると、「分析者は儲かる仕組み(規模の経済など)に無視できない影響量をおよぼすが、しかしコモディティ化の荒波にも侵食されている」とまとめられそうではある。だが、ここまでの書き方からしても分かるように、明らかにサンプル数が足りていない。

 

恐らく分析者の関わり方として宜しいのは、契約条件自体から交渉することだろう。リコメンドエンジンは分析者が関わる業務のごくごく一例に過ぎない。依頼者の状況や、協力者の関係、自身のスキルセットの特質によって、検討の価値はありそうだということまでは示唆が出た。ぼたもち先生がリスク変動型報酬で人生をイグジットして、クーバース犬だけのドッグカフェを作る未来にご期待ください。

 

 

戦略がすべて (新潮新書)

戦略がすべて (新潮新書)

 

 

*1:そんな高い手数料率が成立するわけないだろ、という反論は受け付けません