2018年5月31日木曜日

成長は変化。最終的に元に戻ったとしてもそれも成長だ

『成長』の概念への再考 ~新しい認識に向かって~ | METHOD NETWORK【メソード ネットワーク】:

 今回はブログサークルで互いに切磋琢磨させて頂いているトニーマサキ氏の記事を元に、成長とは何かという話題です。自己実現とか成長というのは人生における大きな目標で、昨日の自分よりも今日の自分、今日の自分よりも明日の自分が成長できるようみんな毎日を懸命に生きています。

 そんななかでトニーマサキ氏の言われているのは、成長は一概に「プラス」だけだとは限らないんじゃないかということです。「昨日の自分+α=今日の自分」というように、プラスアルファをどんどん付け加えていくことがすなわち「成長」だというのはなんだか違うんじゃないかと。

 元記事を読ませて頂いて、自分は「マイナス」することが「成長」というケースもあるんじゃないかと考えました。例えば、禅とか宗教的な修行の世界。煩悩を断ち切ったり、余計な考えをそぎ落としていくことで高みに登っていこうという精神世界があります。他にも例えば、デザインの世界。余計な装飾をそぎ落として、シンプルさを追求していくことでスタイリッシュさを獲得する。必ずしもプラスすることだけが「成長」ではなく、マイナスすることが「成長」という世界はたくさんあると思います。そういう意味では、「変化」こそ成長ではないかと。プラス方向なのかマイナス方向なのか分かりませんが、成長とは昨日と同じ場所に止まらず歩みを進めること、それこそが成長だと思います。

 しかしトニーマサキ氏の記事は、さらに先を行きます。「プラス・マイナスという成長の尺度ではなく、『ただ、そこに在る自分』を感じ取れること」が大切だと。そうです、自分の考えではプラスかマイナスかはあるにしてもどちらかの方向に進むことが成長だと考えていましたが、トニーマサキ氏はその場で動かないこともまた重要なんだと。言葉を借りるなら「幸せを求めて長い間旅をしてきた。幸せを探し求めて遠い旅に出た。ところが、幸せは、自分のポケットの中に既に入ってあった」。

 世界中を旅した人が「やっぱり日本が一番だった」と言ったり、そこまでの経験でなくても、旅先から帰った時に「やっぱりうちが一番だ」と言う一言が漏れたり。そんな経験は誰にもあると思います。しかし、それはじっと日本にとどまっていたら、じっと家の中にとどまっていたら、出てこなかった感想じゃないかと思うのです。世界中を見聞きしてきて、旅先を楽しんできたからこそ、それとの比較で実は自分の元の場所はとても素晴らしかったんだと気づく。これも成長だと思うんです。つまり、実は「その場で動かないこと」ではなく、「動いた結果として元の場所に戻ってきた」ということもまた成長ではないかと。

2018年5月29日火曜日

人間もこの世界も誰かのシミュレーションかも知れない

現実世界はシミュレーションに過ぎないという「シミュレーション仮説」とは? - GIGAZINE:

 前回「数学的に『神が存在する』ことを証明しよう」という記事の中で、神が存在することよりも複数の神が存在することよりも、もっと確率が高いのは、「シミュレーション仮説」と呼ばれる、我々が誰かのシミュレーションのなかの登場人物だとする仮説だという話を書きました。今回はその「シミュレーション仮説」について、アニメーションムービー「Is Reality Real? The Simulation Argument」で解説されていましたので、紹介したいと思います(↓)。


 「シミュレーション仮説」というのは、私たち人間や私たちが生きているこの世界は、実は高度な文明をもつ宇宙人によってシミュレートされた世界ではないか、という仮説です。あのイーロン・マスク氏もこの説を支持しているのだとか。

 シミュレーション仮説に関する確たる方法論はないのですが、もしこの世界がシミュレーションだと仮定すれば、一体どういうことになるのかを考えてみましょう。ムービーで前提となっているのは、ニック・ボストロム氏の出した仮説で、それを元に5つの仮定を考えてみましょう。

(1)意識はシミュレートできる
 人間の持つ意識。人間の仕事を奪ってしまうと言われる人工知能(弱いAI)ですら持つことがないと考えられている「意識」。しかし、一体「意識」とは何でしょうか。「意識」を正しく定義できる人はいないのではないかと思います。それならば、外から見て「意識」がそこに存在すると見えるならば、それは「意識」を持っているとみなせるという立場に立ってみましょう。外から見て「意識」があるように見せることは、十分にコンピュータでもシミュレートできるでしょう。
 コンピュータで人間の脳をシミュレートして、意識があると外部に見せようと考えると、脳のシナプス間のやりとりは1秒間に1垓(10の20乗)回ですので、歴史上のすべての人間の意識をすべてシミュレートしようとすると、平均1人当たり50年間生きるとして、3000万秒/年×50年×のべ2000億人×1垓回/人・秒=3e+40=3正の計算が必要ということになります。(いやー「正」なんて単位は初めて見ましたね。それでも不可思議(e+64)、無量大数(e+68)といったところに比べれば、多すぎて手に負えないとまでは行かないでしょう...)
 ただし注意しなければならないのは、これは人間の脳の中の事象だけをシミュレートした時の計算回数ですので、この世界を構成するすべての要素をシミュレートしようとしたら、やはりとんでもない回数になるはずです。

(2)技術の進歩はすぐには止まらない
 これまでも人間はとてつもない技術の進歩を遂げてきました。自分が子供の頃は夢のまた夢だった人工知能(AI)も、あっという間にチェスや囲碁では人間を凌駕するまでになりました。この勢いでいけば、人間はいずれ神の領域にも達してしまうかもしれません。
 (1)で試算した「意識」をシミュレートする計算回数も、実行可能なコンピュータを発明してしまう可能性は十分にあります。(注目を集めている、量子コンピュータも大きなブレークスルーでしたし、今後も同じようなブレークスルーが起きるでしょう)

(3)高度に進化した文明は自滅を免れる
 アトランティスやムーのように、文明が高度に発展すると必ず滅びてしまうというなら、(2)の技術進歩が究極的なところに至ることはできません。文明が高度に進化して「Great Filters」と呼ばれるバリアを築くことで、核戦争や隕石の衝突・気候変動などのインパクトにも耐えられる世界が作れるでしょう。

(4)高度に発展した文明はシミュレーションを求める
 人類はこれまでも自らよりも下等な動物に対して、様々な分析やシミュレーションをしてきました。人類が高度に進化した先の存在「ポストヒューマン」なら、今の人類のレベルをシミュレーションしようという動機は十分かもしれません。

(5)大量のシミュレーションがあるならば、その中の一つに人類が住む可能性がある
 ポストヒューマンが際限のないコンピューターの力を手にし、数百万もの宇宙をシミュレートすれば、その中には数十億の意識ある(ように見える)生き物が存在することになり、その中は我々が含まれている可能性は十分にあるでしょう。

 ニック・ボストロム氏のこれらの仮説は、現時点で正しさを証明できない多くの仮定にもとづいていています。逆に言えば誤りを証明することもできない仮定ですから、「正しいとも間違っているとも判断できない」「可能性としてはあり得る」というのが自分の思うところです。もちろん、ここにリアルに存在する自分というものも、リアルに感じる太陽の光もそよぐ風も全てがシミュレーションなんだと言われると、感情的には違和感アリアリですけどね。

2018年5月28日月曜日

「神が存在する」ことを数学的に証明しよう

「神が存在する」と数学的に論理展開できるか? - GIGAZINE:

 今回はなんだか途方も無い命題ですが、「神が存在する」ということを数学的に証明してみようという試みをYouTubeで見つけたので、紹介させていただこうと思います。この動画は、YouTubeチャンネル「AsapSCIENCE」によるものです(↓)。
 

 「神は存在するか」。それは、宗教や思想・道徳といった世界の命題で、数学や科学・物理といった世界とは対極に位置するように思えます。しかしこの命題に誰もが納得のいく形で、論理的な答えが与えられたことは無いのではないかと思います。この動画で説明されているところも、そういう意味では本当に誰もが納得行くには至っていませんが、できるだけ論理的で冷静な態度で説明しようとしたというスタンスだと思います。

 論理は「背理法(あるいは帰謬法)」と呼ばれる証明方法です。前提となる条件「神はいない」を真とするならば、人間が現在の形で存在できるはずがない。現に私たち人間が存在している事実があるのだから、その前提条件は偽である...という論法です。これは次のような説明の方法もあるでしょう。神が存在するかどうか、人間が存在するかどうか、という2つの事象を2×2のマトリクスにします(↓)。しかし、現に人間は存在していますので、上半分は除外されます。左下の事象「神は存在しないが人間は存在する」と考えた場合、それはとんでもない偶然の代物ということになります。一方で右下の事象「神が存在し人間も存在する」と考えた場合、神が人間を創造するかどうか分かりませんが、少なくとも先ほどよりは確率が高いと考えられそうです。


 しかしこの論法は、大きな欠点があります。それは、存在するかしないかという二項対立で考えていることで、実際には存在するとしてもその存在の仕方は何通りも考えられるかもしれません。例えば、日本には八百万の神という考え方があって、それは唯一の神が存在するのではなくありとあらゆるところに神が宿るという考え方です。数学者のジョーダン・エレンバーグ氏によれば、「唯一の神を想定する場合に人間が存在する確率」は数10億分の1〜数10兆分の1という確率であるのに対し、「複数の神々を想定する場合に人間が存在する確率」は約40万分の1なのだそうです。いったいこの数字の根拠はなんなんだろうと思いますが、神が多ければ多いほど人間を創造しようという "変わり者" の神がいる確率が上がると考えれば、一応は納得できる考えです。二項対立ではなく三項で考えれば、複数の神が存在するという項目が一番もっともらしいということになります(↓)。


 しかしもっと突き詰めて考えれば、三項どころか四項も五項も、いやもっともっと出てくるかもしれません。例えば「シミュレーション仮説」という考え方です。ここに現に存在していると思い込んでいる私たち人間もこの世界も、実はもっと高度な文明を持つ存在(例えば宇宙人!?)がコンピュータでシミュレーションしている世界なんだという考え方です。例えば私たちがテレビゲームの中でロールプレイングゲームをするとき、そのゲームに登場するキャラクターたちは自分が誰かのシミュレーションの世界に生きているとは気づかないでしょう。同じように、我々が誰かのシミュレーションの中の存在だとしても、それを気づくことはありません。実はシミュレーション仮説については、一度この山ちゃんウェブログでも取り上げたことがあります。シミュレーション仮説を否定する人はいますが、否定派の根拠が納得性に乏しく、否定はできないという立場です(もちろん肯定するための証拠があるわけではありませんので、肯定も否定もできず可能性としてはあり得るというスタンス)。

 つまり、数学的な論理展開から「神が存在しない」よりは「神が存在する」確率の方が高いということは説明されます。しかしまた同様に、「唯一の神が存在する」よりも「複数の神が存在する」確率の方が高く、それよりもさらに「我々の存在や世界は誰かのシミュレーションである」確率の方がもっと高いということになるでしょう(↓)。もちろん、現在の私たちの考えが及びもつかない、もっともっと高い確率の前提が存在するのかもしれません。

2018年5月26日土曜日

「日大アメフト問題」で思い出す「星野君の二塁打」

 今回は旬の後半に差し掛かっている「日大アメフト問題」と、そこから思い出した、小学校の道徳の授業で使われる教材「星野君の二塁打」について。今さら言うまでもないですが、日大アメフト問題と言っているのは、5月6日の日本大学対関西学院大学のアメリカンフットボールの定期戦で、日大の宮川泰介選手が関西学院大学のクォーターバックの選手へ危険タックルした問題で、にわかに世間の話題となりました(↓)。宮川泰介選手が1人で開いた記者会見で「指示された」と名前をあげた日大の内田前監督と井上奨前コーチは、会見で宮川選手の証言を否定。「指示はしていない」「怪我をさせろとは言っていない」などと弁明し、お互いの主張が対立しています。


 ここで思い出すのは、今回元記事として挙げている「星野君の二塁打」という道徳教材です。今年の4月から小学校で道徳が教科化され、これまでは教科外の活動として成績評価の対象外でしたが、2015年の学校教育法施行規則改正を受けて、道徳は「特別の教科」に格上げされました。その道徳教材で、意見が真っ二つに分かれる「星野君の二塁打」。青空文庫の元記事を要約すると、こんなストーリーです。

 予選大会でバッターボックスに立つ星野君に対し、監督はバントの指示をします。星野君は今回は打てそうだから打たせてくれと監督に言いますが、監督は聞く耳を持ちません。星野君は、バントすることなくバットを振り、打球は伸びて二塁打に。この一打がチームを勝利に導き、選手権大会出場を決めました。しかし翌日、監督は選手を集めて重々しい口調で語ります。チームの作戦として決めたことは絶対に守ってほしいという監督と選手間の約束を持ち出し、みんなの前で星野君の行動を咎めます。「ティームの作戰としてきめたことは、これに服從してもらわなければならない」「自分勝手なわがままは許されない。ギセイの精神のわからない人間は、社會へ出たつて、社會を益することはできはしないぞ」と語り、星野君の本大会への出場禁止を告げます。(一部旧仮名遣いや旧字体は原文ママ)

 個人プレーとチームプレーのどちらを優先すべきか。なかなか悩ましいテーマですが、教材では迷うことなく前者を断罪しています。確かに、選手が監督の「作戰」を無視して、てんでバラバラにプレーしだすと、強いチームを作ることはできないでしょう。しかし「ティームの作戰」とは言ってはいますが、元記事を確認すれば、その「作戰」は選手みんなで決めたものではなく監督の一方的な指示です。ちょっと論理の飛躍はありますが、じゃあ監督がタックルで相手選手に怪我をさせろと言ったら、選手は危険プレーをすべきなのでしょうか。

 GREENY 隠さん氏のブログ記事では、「キャプテン翼」の中の似た話題としてロベルトが翼に自分の判断を大切にしていいと教えているシーンが紹介されています(↓)。


 教育の現場でもある学生スポーツという場であることを考えると、この問題は2つとも正解ではないかと思うのです。小学生の子どもを持つ親としては、星野君の二塁打のようなチームプレーの重要性も学び、同時にキャプテン翼のような「上の人に絶対服従ではなく自分の考えをしっかり持つ」ということの重要性も学んで欲しい。つまりは「多様性」。道徳の授業としては、どちらかが一方的を正解として押し付けるのではなく、両方の考えを持ちながら臨機応変に使い分けられるよう指導してもらいたいなあと思います。

2018年5月25日金曜日

もうJavaアプレットは使えない。Java8も11に移行しなきゃ

もうJavaアプレットは使えない、移行が急務に | 日経 xTECH(クロステック):

 先日、人気プログラム言語ランキングで、PythonがJavaを抜いて一位になったという話題について書きました。自分が入社した時まだ新興勢力だったJavaですが、自分はそこに明らかな勢いを感じて、これからの時代はC++じゃなくてJavaなんだなんて言っていたものです。その後、見立て通りにエンタープライズ系・Web系、最近ではAndroidスマホなど適用範囲が広がり、長年首位の座を守ってきたJavaですが、ついにその座を明け渡す時が来ました。その原因として、人工知能やデータサイエンス分野で人気のPythonの勢いもそうですが、一方でJavaの方も大きな転換点を迎えているようです。今回は大森敏行氏と安藤正芳氏の記事を元に、そんな話題を。

 Javaをもともと開発したのは米Sun Microsystems社でしたが、その後米Oracleに吸収合併され、現在はOracle社としてメンテナンスや継続開発が行われています。Javaの開発実行環境はJava SE(Java Platform, Standard Edition)と言いますが、今現在で最も長くサポート期間が残っているのは、Java SE 8と呼ばれるバージョンです。無償サポートは2019年1月、有償サポートは2025年3月までです。基本的には、この期間が過ぎると、セキュリティホールが見つかっても対策してもらえないということになります。

 その後の2つのバージョンJava SE 9と10は、残念ながらサポート期間は短いので、普通にJava SE 8から乗り換えようとすると、LTS(Long Term Support)のバージョンJava SE 11が最有力候補になります。このバージョンは、2018年9月にリリースして2026年9月まで有償サポートが提供される見込みです。少し複雑なのですが、Oracleが提供するJavaは有償サポートになりますが、基本的には同じ環境がオープンソースのOpenJDKとしても提供され、同じ環境が有償版と無償版の2種類あることになります。厳密には違いますが、ちょうどRed Hat Enterprise Linux(RHEL)とCentOSのような関係と理解しておけば、大きく外していないでしょう。そして、オープンソース版OpenJDKのJDK 11も、有償版と同じ期間サポートが提供される見込みです。

 なんだ、これまで無料だからJavaを使っていたのに、急にサポートが切られて有償版に移行せよと言われるのかと思ったら、ちゃんと無償版も準備されているじゃないか、これで一安心...だと思ったら実は大間違いだ、というのが大森氏と安藤氏の記事の主旨なのです。実はJava SE 8からJava SE 11(OpenJDKのJDK 11)へ移行するには、2つの大きな非互換性があるのです。それは「既存のライブラリやフレームワークが動作しなくなる可能性」と「JavaアプレットとJava Web Startの廃止」です。

 まず「既存のライブラリやフレームワークが動作しなくなる」という問題ですが、この問題を解く鍵は実はJava SE 9にあります。サポートが短いからとスキップしたこのバージョンで、実はモジュールシステムという大きな機能が追加されました。この機能は、あるアプリに必要最低限の機能だけを組み合わせた実行環境を作ることができるというもので、それに伴い「内部API」が使えなくなったのです。内部APIというのは普通のユーザープログラムが直接使うことはありませんが、仮想マシンやメモリーなどを直接操作できるAPI群のことです。ユーザープログラムが使うことがないならいいじゃないかと思うかもしれませんが、Javaプログラムは、Java SEとユーザープログラムだけで動いていることは滅多にありません。通常は、サードパーティ製の豊富なライブラリやフレームワークを組合わせ、ユーザープログラムはライブラリやフレームワークありきで作られています。そして、そういった便利なライブラリやフレームワークこそ、「内部API」がたくさん使用されています。大森氏と安藤氏の具体例によれば、Spring BootとWebSphere Application Server Libertyは少なくともJava SE 9で動かなくなったそうです。継続的に開発が続いているライブラリやフレームワークであれば、その対策版が出てくるので、我々があまり心配する必要はないかもしれません。しかし、問題は開発が終了してしまったようなライブラリやフレームワークです。そういったものは、今回のJava SE 11への移行で軒並み動かなくなってしまう可能性があるのです。

 そして、2つ目の「JavaアプレットとJava Web Startの廃止」です。JavaアプレットはもともとJavaの人気のきっかけになった技術で、ブラウザ上でJavaのUIプログラムを動作させられる技術です。FlashやSilverlightと同列の技術ですが、HTML5とJavascriptに取って代わられました。Java Web Startは、アプレットが廃れた後に出てきた技術で、JavaのGUIプログラムをユーザーに配布する技術でしたが、イマイチ広がらなかた気がします。このJavaアプレットとJava Web Startの廃止は、自分には大きなショックでした。自分がこれまで関わってきた製品の中にJavaアプレットを採用したシステムがあり、すでにその製品は他社に移管されてしまっているのですが、ちゃんと移管先でHTMLとJavascriptに移行計画が作られているかどうか心配なところです。

 ひとくちにJavaと言っても、アプレットやサーバーサイドJava、各種フレームワークやライブラリにスマホ上や組込み系で動くJavaなど、非常に広範囲にわたっています。これほど世界の隅々にまで行き渡ってしまったJavaが、Oracleというどちらかというとユーザに優しくない(失礼!偏見かもしれません)企業に持たれていることは、若干の不安を煽ります。実は自分はしばらくJavaの世界から遠のいていたのですが(Java SE 8までは追いかけていました)、その間にこんなにもドラスティックな変化が起こっていようとは。薄々聞いてはいましたが、いざ詳しく聞いてみると、その行く末が少し心配なところですね。

2018年5月22日火曜日

1÷0 は本当にルール違反なのか

Why can't you divide by zero? - TED-Ed - YouTube:

 今回はYouTubeの動画から、0で割れないという数学の特殊ルールについて。0というのは不思議な数字で、今のわれわれには当たり前に存在する数字ですが、古代インドで数としての「0」の概念が確立されたのは5世紀頃と言われています。それまで0が存在しなかったかといえば実はそうでもなく、紀元前500年頃のメソポタミア文明では例えば楔形文字で502のような数字を表すとき、十の位は専用の楔を書くことで52と502を区別していました。しかし、数としてのゼロ(0、何もなし)は、5世紀のインドまで確立していませんでした。

 数学の世界では、奇妙で不自然だとしてもそう定義してしまうことで論理がうまく展開できるという理屈で存在するモノがいくつかあります。例えば「虚数」。二乗して負の数になるという現実にはあり得ない数ですが、そういう数が仮にあるとすれば様々なことがうまく説明できる、そんな場合に、もうそういう数があるものとしてしまう。0という数はある意味これに近い出自かもしれません

 そして、0という数の特殊性は、0で割算することができないという特殊ルールがあることで際立っています。ようやく本題ですが、今回ご紹介する動画は、この「0で割れないワケ」を分かりやすく説明しています。


 例えば、 10÷1=10, 10÷2=5, 10÷5=2, 10÷10=1 のように割る数を大きくしていくと、答えはどんどん小さくなって行きます。この流れでいけば、0で割れば「無限大∞」になる、ということにすればうまく行きそうな気がしませんか。そもそも0も∞も本当にある数ではなく概念なんだと思えば、0で割れば∞、∞で割れば0 と "定義" してしまえば良さそうです。しかし、残念ながらその定義は、その後の論理に破綻をきたします。

 ある数で割るということは、その数の逆数を掛けるということです。つまり「1 ÷ 0 = ∞」とすれば、それはこういうことです(↓)。
この式は
  0 × ∞ = 1 …(1)
と変形でき、さらに同じ式を2つ足せば
  ( 0 × ∞ ) + ( 0 × ∞ ) = 1 + 1
  ( 0 + 0 ) × ∞ = 2
  0 × ∞ = 2 …(2)
と変形できてしまい、(1)と(2)から
  1 = 2 …(3)
が導き出されてしまい、これは明らかな矛盾です。「0で割ると∞」と仮定したところ矛盾が起きるのでその仮定は間違いだとする、「背理法」と呼ばれる論法です。

 この式の展開で、(3)は明らかな矛盾だと切り捨ててしまいましたが、現実の数学者はもっと深く考えるようです。(3)は本当に間違いなのか、(3)を間違いとするのは我々の自然数学の中ではそうですが、特殊な数学の世界観の中では正しいかもしれない...と。そして、そんな特殊な数学の世界が「リーマン球面」(↓)です。無限遠点を一点追加して複素平面を拡張する手法で、リーマン球面の考え方においては、無限遠点
  1 ÷ 0 = ∞
は、整合的で有用なのだそうです。

なんだか小難しい「リーマン球面」の世界では「0で割ると∞」という定義が意味をなしますが、普通の我々の世界ではこの定義は矛盾を導き出してしまう仮定ですので、0で割ると言うことそのものをルール違反とするのが都合がいいわけです。つまりは「ご都合主義」なんです。

 動画でも言っていますが、0で割ることは有用ではないので、0で割れないというルールは守るべきなのです。しかし、もし0で割れたらどうなるのだろうか、そこにはどんな世界があるのだろうか、という想像力は持ち続けたほうがいいのかもしれません。我々の日常生活でも当たり前だと思ってきたことをちょっと疑ってみる、当然こうだと思ってきたことがもし崩れたらどんな世界が広がっているだろうかと想像してみる。そんな自由な思考ができると素晴らしいですね。

2018年5月19日土曜日

PythonがJavaを抜いて初の首位に!

PYPL PopularitY of Programming Language index:

 今回はプログラミング言語に関する話題ですが、なんと、ついに、PythonがJavaを抜いたという話題です。元記事は、PYPL(PopularitY of Programming Language)の統計記事ですが、これはGoogleの検索エンジンでプログラミング言語のチュートリアルが検索された回数を元に、各言語がどれくらい話題になっているかを集計した結果です(↓)。

 もちろん、Googleの検索だけがプログラミング言語の人気を表しているわけではありませんし、他の調査では多少異なる順位を出しているものもあります。しかし、この調査結果からどの言語がホットなのか、傾向くらいはつかめるでしょう。そして今回、ついにPythonがJavaを抜いて首位に立ったそうです。これまでも、Pythonは右肩上がり、Javaは減少傾向だったので、やがて順位が入れ替わるのは時間の問題と言われていたわけですが、いざJavaがPythonに抜かれたことを目の当たりにすると、なんだか感慨深い気がします。

 Javaは、もともとブラウザ上で動くアプレット(Applet)という仕組みが注目を集めましたが、一部の計測系システムで使用されたもののあまり流行ることなく、やがてWebサーバー上で動く「サーバーサイドJava」と呼ばれる仕組みが一世を風靡しました。エンタープライズ系システムでは、今でも最もよく使用されている言語の一つですし、自分が仕事で使うメインの言語でもあります。一方、Pythonは、科学技術系や数学系を中心に発展してきた言語で、何と言っても人工知能(AI)の目覚ましい発展がこの言語の人気を支えています。GoogleのTensor FlowとかオープンソースのChainerやCaffeなど、AIの実装はだいたいPythonから使うことがきます。機械学習やディープラーニングで多用されるベクトルやテンソル(行列)の計算に長けたNumpy(ナムパイ)や簡単にグラフを描いてくれるMatplotlibなどのライブラリが揃っているのが強みです。

 実際、自分もディープラーニングのプログラムをJavaとPythonでゼロから作ってみたことがあるのですが、Javaで実装しようとすると、簡単なA・B(行列の内積)計算ですらfor文を使わなくてはならないのに対して、Pythonだと「numpy.dot(A, B);」と書くだけ。プログラムの見た目もスッキリするだけでなく、Numptyの内部は実はネイティブ言語で最適化されているので、コンパイル型のJavaよりもインタープリタ型のPythonの方が計算が早かったことを覚えています。

 プログラム言語の流行り廃りは、テクノロジーの変遷を反映しているような気がします。自分が会社に入った2000年前後は、Javaはまだ生まれたばかりでしたが、これからはJavaの時代だという気運がみなぎっていました。AIが3度目のブームを迎えた2015年〜16年ごろも、やはり今後はPythonという気運がみなぎっていました。ついに首位の座に立ったPython。今回のAIブームはもうしばらく続きそうな気がしますね。

2018年5月17日木曜日

KPIってナンだ!?

論理的なアプローチでビジネスを成功に導く――KPI設計の実践 - Insight for D:

 今回は昨年(株)ブレインパッドの佐藤洋行氏によって行なわれたYahoo! JAPANのセミナー報告記事を元に、「KPI(Key Performance Indicator)ってナンだ」という話題です。実は最近とみにKPIという言葉を聞くようになりました。KPIを可視化しろとかアクションプランにはKPIを添えろ、とか当たり前のようにKPIという言葉が出てくるようになりました。しかし自分のKPIの理解は、単に「成果を定量的に数値化できる指標」という程度の理解だったので、少しホントのところを調べてみようと思ったわけです。

 のっけから知らなかったことですが、KPIの前にはKGI(Key Goal Indicator)というのがあるそうです。KGIは、最終亭な目標(ゴール)がどの程度達成されているかを定量的に示す指標のことで、KPIよりも先にあるべき概念です。ここで「もし東京五輪日本選手団の強化責任者に任命され『よい成績を残せ』と命ぜられた場合」という佐藤氏のうまい例を引用させて頂きましょう。そうするとまずは「良い成績とはナンだ」ということになります。ここでは単純に「メダル獲得数を多くする」ことと考えると、「成績=メダル獲得数」ということになり、KGIはメダル獲得数としてしまいそうです。

 しかし佐藤氏によれば、KGIの設計手順は
(1)誰が、どのような最終目標を設定するか考える
(2)最重要指標を考える
(3)最重要制約条件を考える
というやり方をします。まず(1)ですが、先の考えではすぐに「メダル獲得数」にジャンプしましたが、ビジネス的にもう少し前の段階「支援団体が喜ぶ結果を出し、今後も資金援助してもらうこと」を最終目標としましょう。そして(2)ではこの最終目標をどうやって計測するかと考え、「メダル獲得数」へたどり着きます。そして自分はこれをそのままKGIとしてしまいそうだったのですが、佐藤氏の模範解答は(3)の概念を入れたものです。「制約事項」はビジネスの世界では、ヒト・モノ・カネのことだと考えればだいたい合っています。ここでは「カネ」、つまり費用が最重要の制約条件ということにしてみましょう。すると、KGIは
と表すことができます。ポイントは、実際のビジネスの場で制約がないシチュエーションはありませんので、制約事項との比の形で表すことでしょう。

 そして、目標の達成度合いは上記のKGIの数値を最大化することに置きかわります。KGIを最大化するためには、当たり前ですが分子を最大化し分母を最小化することです。この分子・分母の部分も立派なKPIで、KPIというのはKGIを達成するための中間的な目標指標ということになります。

 理想的で典型的なケースは、この図(↓)のように全てのKPIを組み合わせるとKGIになる、KGIをモレなくダブりなく分解すると個々のKPIになるというモノです。ちなみに、モレなくダブりなくというのは、ビジネスの世界ではMECE(読み方はミーシーかミッシー、Mutually Exclusive and Collectively Exhaustive)と言われます。しかし実際は全てをMECEに分解することはできませんし、たとえ分解できても全てを計測するのもバカげているので、こうやって分解された要素の中からKPIとして相応しい要素(KGIに大きな影響を与える項目、かつ意思決定者の意思を表す項目)をKPIと設定します。

 この分解の方法について、佐藤氏は3種類のロジックツリーで考えることを推奨されています。それは
(1)Howツリー
(2)Whyツリー
(3)Whatツリー
です。(1)は施策を導き出すとき、(2)は真の課題を浮かび上がらせるシチュエーションで有用ですが、ここでは(3)を考えてみましょう。先のKGIの分子・分母がそれぞれ「何」で構成されているかを考えます。ポイントは、分解後の要素を足したり掛けたりすることで分解前の要素になるかどうか(つまりMECEになっているか)です。佐藤氏のWhatツリーの正解例はこんな感じです(↓)。


 「1名あたり」とか「1種目あたり」という項目がありますが、これは先に述べたポイントであるMECEを守るため、掛け算で1つ上の要素になるように作り出された項目だと理解できます。そしてこのWhatツリーを見ると、同じ項目が上と下のツリーにそれぞれ登場するケースがあることに気づきます。この例では「種目数」「選手数」「1種目当たりの平均出場選手数」というのは、分母にも分子にも影響を与えるのですから、数値が上がればメダル獲得の期待も高まりますが同時に費用もかさむという「ジレンマ」の項目です。そして、「1名当たりの平均出場種目数」と「1種目当たりの平均出場選手数」は、別の項目に見えて実は逆数の関係になっていますので、深い関連があることになります。もう一つ、制約条件にも着目する必要があります。例えば「1種目当たりの平均メダル獲得数」はどう頑張ったって金・銀・銅の3つが上限ですし、1名当たりの平均出場種目数も体力や日程・種目の特殊性を考えると、無条件に数を増やせるものではありません。

 残念ながら元記事からは、これら
(1)最重要指標と最重要制約条件に共通している要素
(2)要素間にある重要な関連
(3)各要素の制約条件
について考慮する必要があるとは言われていますが、具体的にどう扱うかは少しブラックボックスです。これらを考慮した上で、どの要素をKPIと定めるかは「責任者の意思決定」だとされています。置かれているシチュエーションから最重要指標と最重要制約事項の「重み」を考え、例えばカネはいくら掛かってもいいから参加する種目数を増やすという判断もアリです。

 そしてKPIとする項目を決めたら、その数字をどう定義するかという問題が残ります。やりがちなのは「前回の実績を上回る」というものですが、佐藤氏はこの定義方法はオススメしないそうです。確かに自分が以前、省エネシステムの開発に関わった時、前年の「電力使用量を下回る」というKPIを設定したことがありました(当時はKPIという言い方はあまりしませんでしたが)。しかし前年が「冷夏」、その年は「猛暑」だったので、冷房エネルギーのベースが大きく異なってしまって、このKPIはとても高いハードルになってしまいました。佐藤氏のオススメは、「相対評価」です。国際大会の場合は「他国を上回る実績を残す」というような定義の仕方が良いのだそうです。

 KGIそしてKPIの設定方法を、シンプルで例を元に勉強してみました。実際の現場では、こんなにシンプルに考えられるケースは少ないでしょう。最近自分は、仕事上のKPIを定義しないといけない状況で、元記事のような本来あるべき設定法は許されれず、とにかく「カネをどれだけ稼いでくるか」という視点だけで定義しなければならないという枷がかけられて困ったことがあります。自分のような設計開発部署はいわゆるコストセンター(経費部門)なので、プロフィット(利益)をKPIにせよと言われても、どう定義すれば良いのか途方に暮れました。自分のケースはそもそも上層部がKPIを正しく認識できていない、レベルの低いケースですが... 実際の運用にそのまま適用できるわけではないかもしれませんが、あるべきKPIの定義方法として覚えておくと良さそうですね。

2018年5月12日土曜日

最先端ロボットは不気味の谷を越えたか

(610) Getting some air, Atlas? - YouTube:

 今回はロボットの最前線の動画がYouTubeで公開されていたので、その動画のご紹介と「不気味の谷」は見た目に対して厳しくても動きに対しては寛容なのかもという話題です。そのロボットとは、以前、足で蹴られても転ばない四足歩行のロボットに対して、「かわいそう」なんていう的外れなクレームが出ているという文脈でご紹介したことがある、あのBoston Dynamics社が開発するAtlasです。

 2日前に公開されたその動画がこちら(↓)。「二足歩行」どころか、もはや「二足走行」ですよ!

 モーションキャプチャって技術があるじゃないですか。こんなやつ(↓)。人間が走っているところとAtlasが走っているところのモーションキャプチャ動画を見比べても、もしかしたら専門家でも見分けつかないんじゃないかとすら思えてきます。もはや「見た目」がロボットロボットしていること以外は、人間そのものの動きじゃないかとすら思えます。

 しかしあえて言うなら、途中で丸太をジャンプするところは、少しロボット然とした動きになっている気がします。それでも、昔見た映画「ロボコップ」の動きとも十分に渡り合えるくらいじゃないでしょうか。(2014年のリメイク版じゃなくて、オリジナルの1987年版の方の動きですよ)

 そして同時に公開された四足歩行ロボットの動画の方はこちら(↓)。階段を降りるときに後ろ向きになるところがなかなかキュートですね。こちらのロボットの動きは、犬や猫の動きに寄せるというよりも、もっと実用性を追求してのものに見えます。経路を逐一プログラムするのではなく、目的地を告げればそこへ行ってくれる、そんな産業向けか介護とか人間の補助にも適用できそうですよね。

 ロボットをどんどん人間に似ていくと、それを見る人の中にはある時点で違和感・恐怖感・嫌悪感・薄気味悪さのような負の感情が生まれます。そこのとを「不気味の谷」と言って、これまでこの山ちゃんウェブログでも何度かご紹介してきました。

 今回は「見た目」ではなく「動き」を人間に寄せてきているロボットですが、「見た目」を寄せたときに感じる不気味の谷よりも、「動き」を寄せたときの不気味の谷の方が「低い」気がします。つまり、見た目が人間に似ているロボットを見るとついつい粗探しをしてしまいますが、動きが人間に似ているロボットを見ても寛容な感情に包まれやすいんじゃないかと。見た目が人間に似ていると、認知においてこれは人間なのかロボットなのかはっきりせず不安になるので、ロボットだとはっきりさせようとバイアスがかかる。それに対して、動きが人間に似ていても見た目がロボットだと、認知の中ではロボットだと断定されるので、その安心感から寛容な気分になれるのかもしれない、なんて思います。

2018年5月9日水曜日

スマホに毒された世界

思わず「ドキッ!」とする社会風刺画14選。 | TABI LABO:

 今回の元記事は2年以上も前なのですが、Jean Jullien氏による社会風刺画を小川真吾氏が投稿されていた記事です。テクノロジーに依存した社会がモチーフとされていますが、実際は見事にスマホ関係のネタばかり。2年前の時点で、すでにスマホ全盛の世界になっていたことがわかります。そんな中から、今回は自分のお気に入り5枚をご紹介したいと思います。

 最初はこの写真。Jullien氏はフランス人イラストレーターなので、おそらくフランスの電車がモチーフなのでしょうが、日本の通勤電車だともっと酷く、ぎゅうぎゅうに押されながらも目の前にスマホを見ている人のなんと多いことか。実はこの前、スマホを家に忘れてそのまま電車に乗ったのですが、あまりの手持ち無沙汰ぶりにびっくりしました。そんなつもりでなくても、自分もスマホに毒されているんだなあと。

 次も同じ方向性の風刺画で、タイトルをつけるとしたら「現代版家族団らん」といったところでしょうか。自分が子供の頃、食事時にテレビを見るのはやめようとか、食事時くらいはお互いの顔を見て食べましょうなんて言われたものですが、現代版は究極的にパーソナライズされたスマホ(やタブレット)がその槍玉に上がるのでしょう。

 次もやっぱりスマホ関係。これまでとは逆に、現代における「真の自由」とは「スマホを持たないこと」だというパラドックス。スマホを持っているだけで常に誰かと繋がっている気がしますが、そういったものから解き放たれて誰とも断絶された孤独こそ「自由」とは、現代人の闇の深さを感じませんか。

 「インスタ映え」なんて言葉が一世を風靡しましたが、食べ物を「食べる対象」としてではなく「撮影して世界中に見せる対象」と捉える人がいます。ネットでは彼ら(女性の方が多いという話もあるので「彼女ら」と言う方がいいかもしれませんが)を、揶揄を込めて「インスタ蝿」なんて呼ばれますが、本人たちはいたって本気です。美味しく食べるよりも綺麗な写真が優先、目の前の人に「美味しいね」と言うより顔の見えない誰かに「いいね」と言われる方が優先とは。

 最後はこちら。最近は少しこの傾向は少なくなった印象ですが、せっかくのライブパフォーマンスをスマホのレンズ越しに見る人々が描かれています。画面のなかのパフォーマンスで満足なら、今時ならYouTubeで十分でしょう。コレとはちょっと違いますが、自分の場合、子どもの運動会とかお遊戯会で、ついつい撮影に夢中でカメラのレンズ越しになってしまうことがあります。記録と記憶。例えば、子どもたちが大人になって夫婦2人だけになった時に、一体どちらが思い出話に花を咲かせられるのか。意外にも、記録の方かもしれませんが。

いかがでしたか。もはやスマホなしでは生きられないと言う人も多いんじゃないでしょうか。かく言う自分も、スマホでモバイルSuicaを登録してしまったので、もはやスマホなしで電車に乗ることはないでしょう。人のライフスタイルを大きく変えてしまうテクノロジー。これからはその主役が、人工知能(AI)やIoT(Internet of Things)などに移っていくのかもしれません。

2018年5月7日月曜日

AIさまの言う通り

『AIさまの言う通り』みらいのつぶやき 1分で読める少し不思議なショートショート 7 【毎週水曜日に更新中!】 | TABI LABO:

 今回は「TABI LABO」の「みらいのつぶやきプロジェクト」から、つちやみ氏の原作・マッチロ氏のイラストによる記事を2つご紹介したいと思います。「みらいのつぶやきプロジェクト」はその名の通り、将来こんなつぶやきがされるのかなぁという内容を、つちやみ氏のどきっとするショートショートとマッチロ氏のイラストで楽しめるようになっている記事で、最近の自分のお気に入りです。今回は元記事の文章の会話文を抜き出して、そのエッセンスを感じてみましょう。

1)「AIさまの言う通り


「おい、進路宣告、どうだった?」
「自分は営業マンと判定されたよ。人に対する興味の値が、高いらしい」
「すごいじゃないか。おれなんて、歌唱能力が、少し高いと言われたくらい」
「しかし、自分がなりたいのは、機械技師。なんとかこの道を選べないものか」
「なんだって。判定の結果に逆らうつもりかい。自分の浅はかな考えより、あらゆるデータから導き出された、宣告に従うべきなのは、当然じゃないか」

 人工知能(AI)の適用先として意外にマッチするのが、人事評価や採用などの分野だと言われています。実際、採用面接をAIがやってくれる「SHaiN」というサービスが注目を集めたり、ヒューマンリソース(人材)業務を効率化する「HRテック」という言葉が生まれたりしています。近い将来、人事部長はAIなんてことも十分にありえそうです。

 その先には、つちやみ氏のつぶやきのように、人の将来の適性を見極めるという分野への応用は十分に可能に思えます。入社後の配属先だとか、高校や大学の進路相談とか。早いうちに人の適性が正しく判断されれば、「適材適所」にとってこんないいことはありません。能力もないのにプロ野球選手を目指したり、適性もないのに勉強を頑張ったりする必要がなくなるわけです。しかし、勉強・スポーツ・芸術のどれにも適性がないと、幼少時代に判定されてしまうリスクもありそうです。適性が正しく判断されることは、「可能性」という言葉で曖昧にしてきた将来を灰色にしてしまうかもしれません。

2)「ママ、僕、労働で生きていく!


「ママ、僕、労働で生きていく!」
「何言ってるの、労働でなんて生きていける訳ないじゃない。なんでも機械がやってくれるこの時代に、労働で生きていける人なんて、ほんの一握りよ。私たち普通の人は、歌を歌ったり、絵を描いて、暮らしていくしかないの。分かったら、お歌の練習してらっしゃい」

 シンギュラリティという言葉とともに、AIによって人間の仕事が奪われていくというストーリーが語られることがあります。この山ちゃんウェブログでも、AIと仕事についてのテーマで何度も記事を書いてきました。従来はいわゆる肉体労働は機械にとって代わられ、頭脳系労働のうちでも単純なものがコンピュータに取って代わられてきました。そして、今後は頭脳系労働のうち「頭の良さ」を必要とする複雑で高度な仕事もAIに取って代わられようとしています。

 確かに現在のところAIのコストパフォーマンスは高いとは言えません。しかし確実にその弱点を克服しようという研究開発は進むはずで、やがては人間に残される仕事は芸術系かホスピタリティのような分野だけかもしれません。あるいは、もはや労働をする必要は無くなってしまい、面白おかしく「暇つぶし」をするだけの人生になってしまうのかもしれません。労働から解放されたいと願った人類の行き着く先が、虚無の楽園かもしれない、なんてことを考えさせられます。

2018年5月3日木曜日

人工知能(AI)の致命的な弱点

消費電力1万2000人分 弱点克服できるか (AIと世界) :日本経済新聞:

 この山ちゃんウェブログでは、人工知能(AI)に関する記事をいくつも書いて来ました。自分自身はAIに直接携わっているわけではありませんが、IoT(Internet of Things)関連の仕事の中で間接的に関わって来ていて、自分がAIのテクノロジーに強く惹かれるのは、社会が大きく変えられる可能性を持っている一方で、確率論による「コントローラブルでない」「不確実性」のような部分があって、報じられる万能性に不安感や不気味さが付きまとう二面性があるためです。

 今回の元記事は約1年前に書かれた日経新聞の記事なのですが、米Google傘下Deep Mind社のAI「アルファ碁」がトップ棋士である柯潔(か・けつ)九段に勝利して「AI万能論」が言われていた中、2つの弱点について指摘している面白い記事です。とは言っても、最初に述べた「AIの不確実性」のような部分の弱点ではなく、現時点のAIが抱えているもっと現実的で泥臭い部分の弱点です。

 AIの一つ目の弱点は、消費電力とコストの問題です。数字だけで言えば、人間の脳は思考時で21ワットのエネルギーを消費しているのに対して、アルファ碁の消費電力は25万ワットです。つまり、アルファ碁は1万2千人分のエネルギーを消費しており、エネルギー効率で言えば、トップ棋士の方に軍配が上がるのです。現在、開発と実証試験が進められている自動運転車も、従来型の半導体では住宅を上回りかねないほどの電力を消費してしまいます。「自動化」によって人間のタスクを肩代わりするという、AI万能論やAIが人間の仕事を奪ってしまうという文脈の中で、AIのエネルギー効率がこれほど人間より劣っていることは、大きな弱点になりかねません。

 このエネルギー効率の悪さを考えると、AIが人間の仕事を軒並み奪ってしまうというよりも、まずは「コスト度外視」の領域での適用が進んでいくという予想が現実的なところでしょう。元記事で紹介されている、韓国の仁川市の嘉泉大学ギル病院は、肺がんなどの診断に米IBM製のAI「Watson」を導入しましたが、クラウド使用料だけで年間10億ウォン(約1億円)もの費用をIBMに支払っており、医師の平均年収1億6500万ウォンの6人分に当たります。これに電力使用や運用コストを考えると、経済的には見合っていないというのが実情のようです。「コスト度外視」が認められる領域だからこそ、適用が進んでいる領域でしょう。

 そして2つ目の弱点は、データに含まれる「不純物」です。現在主流の人工知能は、深層学習などの機械学習がベースになっています。平たく言えばニューラルネットワークと同じ仕組みで、たくさんのデータを元にパラメータを調整していくことで「学習」を行ない、新たな入力に対して正しそうな答えを出すことができるわけです。逆に言えば、「学習」に使用されるデータが「正しい」データでなければ(間違ったデータを学習してしまうと)、正しい答えを出せなくなってしまいます。そして、学習には大量のデータが必要ですので、人間がそのデータの正しさを検証していくことは本末転倒であるばかりか、現実的なことではありません。

 元記事で言われている例では、人の細胞を送るとAIで遺伝病リスクを分析してくれるサービスで、愛犬の細胞を送る人が続出して分析に深刻な影響を与えているという、驚きの事実がありました。危うくオオカミ人間の遺伝子分析をしそうになった、などと揶揄されていますが、笑いごとではありません。SNSで誰しも発信者になれる現代、トランプ大統領が好んで使う「フェイク・ニュース」という言葉に代表されるように、正しい情報と虚偽の情報が混在しています。その中から「正しい」情報だけを選択して学習させるというのは、人間が力技でやるにはボリュームがありすぎるのです。

 実際にAIを導入し運用しようとすれば、今回ご紹介したエネルギー効率の悪さと学習データから不純物を除く手間を考えると、よほどコスト度外視の領域にしか適用できなさそうです。現状ではまだ人間の方がコストパフォーマンスが高く、AIによる自動化が広く進むためには、コスト面でのブレークスルーが必要かもしれません。