蛍光ペンの交差点

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

知能とは何だろう

 

知能の定義について

 

 Intelligence is really not going to be something that we ever succeed in defining in a succinct and singular way. It's really this whole constellation of different capabilities that, um, you know, all kind of, are beautifully orchestrated and working together.

(拙訳:知能は、私たち人間が簡潔かつ一意に定義することができるようなものではなかったし、これからもそうだろう。知能とは、「さまざまな」能力の集合が ... いや、もっと踏み込んで言えば ... 「あらゆる種類の」能力が、美しく組み合わさって働くことだ。)

(Googleのプロモーションビデオより引用)

 

 

人工知能について面白い事実のひとつは、作ろうとしている「知能」とは何なのかが正確に定義されていないことだ。 正確に把握していないのに人工的に作成を目指す。はじまりからして実に大きな論点を抱えたプロジェクトなわけである。

 

これは、別に揶揄をしているわけではない。正確に把握していなければ作ってはいけないという固定観念や先入観こそが、むしろ人々の考える妨げとなっている。年配のとある人工知能研究者によれば、かつてはコンパイラ*1すら人工知能として呼ばれ、研究されていたらしい。そのことを踏まえると、人工知能とは、それぞれの時代時代の人々が成し遂げて欲しいと夢見る希望のなかで、それを成し遂げるだろう知的な存在のイメージの総称なのかもしれない。

 

だから、必然的に人工知能には、あらゆるひとびとが妄想した好き放題の夢が集まってくることになる。Deep Learningを使って売上を2倍に伸ばしたい、自分では思いつかない良いアイデアをアイデア生成システムに出して欲しい、プログラマを雇うのはカネがかかるから自動生成する人工知能を作って欲しい。その多くはいつまでも体現されることなく夢のままで終わる。

 

このような視点から考えると、人工知能という存在は、コンサルタントの人たちが重視するような「地頭」や「賢さ」とはまるで異なる文脈に存在することになる。類義語ではないのだ。「地頭」や「賢さ」は決して夢の掃き溜めではなく、アナログな計算機としての希少なスペックを意味する。理解力、表現力、交渉力、決断力、企画力、発想力などと「力(大きさとして表される一種のスカラー値)」で総称されるそれは、いまのところまだ人工知能にdisruptionされる可能性はまずない。あくまでもビジネスや生活を効率的にしたり楽しくしたりしてくれる、資源の一つである。

 

以下では「人間の知能の特質」について考えるが、僕は脳科学について全く知識がなく、構成的理解(実際に作ってみて動いたら、その原理が他の同じ動作をするものにもある程度共通すると判断すること)を信奉している人間である。なのでNeural Networkに対する理解を、人間の脳の理解に結びつけているアレなきらいがある。

 

 

 

 

人間の知能の特質について

 

ある人工知能研究者が、人間の「意識」について面白い意見を述べていた。

 

「私の考えでは、特徴量を生成していく段階で思考する必要があり、その中で自分自身の状態を再帰的に認識すること、つまり自分が考えているということを自分でわかっているという「入れ子構造」が無限に続くこと、その際、それを「意識」と読んでもいいような状態が出現するのではないかと思う。」

(『人工知能は人間を超えるか』、松尾豊、2014、location 589 / 2665 )

 

この意見を踏まえたうえで、人間が理解することについて書かれた以下の記述を読むと、すこし考える時間が欲しくなる。

 

If you're still having trouble, skip ahead to examples. This may contradict what you have been told -- that mathematics is sequential, and that you must understand each sentence  before going on to the next. In reality, although mathematical writing is necessarily sequential, mathematical understanding is not: you (and the experts) never understand perfectly up to some point and not at all beyond. The "beyond", where understanding is only partial, is an essential part of the motivation and the conceptual background of the "here and now." You may often (perhaps usually) find that when you return to something you left half-understood, it will have become clear in the light of the further things you have studied, even though the further things are themselves obscure.

Many students are very uncomfortable in this state of partial understanding, like a beginning rock climber who wants to be in stable equillibrium at all times. To learn effectively one must be willing to leave the cocoon of equillibrium. So if you don't understand something perfectly, go on ahead and then circle back.

 

(意訳:もし(定理が)理解できなかったら、まず例を見よう。この戦略は先生が今までしていた指示と違うかもしれない。先生は、「数学というのは仮定と結論の記述が一列に並んでいるものだ。したがって、ひとつのセンテンスを理解するまで、次のセンテンスに進んではならない」と言っていただろう。

 

 残念ながら、実際には、書かれている数式はそのような並びになっているが、その数式をどの順番で理解するかはそんな風に綺麗な一列になっているわけではない。すなわち、あなたも専門家も、0%の理解をしている部分を100%の理解をした部分にしていく、という風には決して読み進めていないのだ。「理解が100%でない部分」がある状態であるために、あなたは読み進める動機を持つ。そしてその状態は、今現在のあなたが数学の概念に対して備えている知識の様子を表している。

 

 あなたは「なんとなく理解したままで放っておいた内容が、別の難しい内容を踏まえて読みなおすと、よりクリアに理解できる」、ということを、10回に6回、あるいは10回に8回くらいの頻度で経験したことがあるだろう。難しい内容のほうは未だ意味不明であるにも関わらず、だ。 

 

 多くの学生は、このような微妙にしか理解していない状態を嫌う。まるで、ロッククライミングの初心者が、常に安定した姿勢を保持したいと思っているかのようだ。効率的に学ぶためには、そのような平衡状態という繭から脱け出す必要がある。何かを完璧には理解できなかったら、前に進んだあとで、戻ってきなさい。)

 

("Vector Calculus, Linear Algebra, and Differential Forms", Hubbard et al. , 2002, pp. 1- 2)

 

数学という、順次アクセスで論理的には完全理解が可能なはずの構造が、人間にはそうは理解できないというのはtrivialな話ではなく、「そもそも我々の知能の実現方法は事後的に逐次でない」というファクトを示唆している。

 

電子計算機と比較した場合の人間の知能の特質として、同じはずのデータ(記憶)に何度もアクセスするとそのデータが変質すること(忘却、誤認、合理化、再解釈、他のものと結びつけての理解など)が挙げられると思う。これは、Neural Networkとの比較で言えば、層間結合の強さを表す重みwが(生体的な機構によるバイアス付きで)更新されていくことに近い。誤差関数値を最小化する以外の目的でも、更新が行われているのだろう。

 

となると、人間が「自分がやりたいけど(生体的に、物理的に)できない夢」を託した人工知能が、再帰的で類似する構造にその機能を託すのは、ある種自然なことのように思えてくる。

 

 

もし知能を定義するなら、何を解いているのか?

 

以上の二点を踏まえて知能とは計算である(intelligence is computation)と僕は判断している。

 

人間が達成を願うものの多くは、何らかの関数の最小化問題に定式化できる(物流コストの最小化、生活満足度を考慮したうえでの内臓脂肪の最小化など)。

 

それらは1次元スカラー値の最小化問題と考えると、xy平面に表せるくらいに単純だが、少なくとも最小化している値は同時に無数にある。また、人間はそこまで最小化に意義を求めない(内臓脂肪が0.0000000000000001%や0.0000000000000002%ズレていてもどうでもいい)ため、少なくとも最適化は(寿命を定義域として)途中で止まっている。あるいは、その最小化する関数自体が、時間に応じて別のものに更新されている(交際相手との良い関係を願っていた人が心変わりするなど)。最小化を実現するための機構も、最初に述べたように、簡潔に述べられるようなものではない。

 

いつか計算する機構が我々を実現したとき、我々人間の存在意義というのは、再現する前に動いていたこと、その一点に尽きるのではないだろうか。その意味で人間の生活というものは、不合理が一杯あって、単なる定式化された問題より豊かであると思う。ただ、その豊かさにいちいち付き合いたくはないとも思う。

*1:プログラミング言語を一意に解釈するプログラム。機械にやってほしいことを人間が明確に指示して、機械がそれを理解するために必要な道具

專攻分野が決まらない高校生への計算機科学のすすめ

 

この記事は、「自分が気になることは、どの学問も同じくらい扱っている気がして、專攻を決められない」と悩んでいる高校3年生の男の子と話した内容を基に書かれました。

とても長いので、1回で読み切ろうとしないほうが良いかもしれません。

 

ポイントを4つにまとめると、以下のことを言っています:

・大学で学ぶべきは、実際に役立つ知識である。
・知識に基づいた実行の成果量によって、どれだけ役立ったかが決まる
・成果量の向上の出発点として、圧倒的に強力な道具であるコンピュータを專攻するのが最も妥当である
・…と、文系から情報系に転向して3年が経った今では後輩には薦められる。それは自己正当化のためかもしれないので、判断は自分でしてほしい 

 

1.大学という研究機関の意義

 


"Science is a system for accumulating reliable knowledge."
(科学とは、信頼できる知識を蓄積するための体系だ)

("Writing for Computer Science", p.1, Justin Zobel, springer)

 

 

高校生のときに学校の先生は教えてくれなかったでしょうが、
大学は研究というものを行うための施設(研究施設)です。

 

たぶん正しいと思われる知識(法則や体系など)を新しく増やしていく行為のことを、大学では学術研究、略して研究と呼んでいます。学術研究は、「夏休みの研究」と言ったときの「研究(何回も観察したり調べたりすること)」とは意味が違うので、注意してください。新しい知識を発見することが目的でなければ、それは大学においては研究(学術研究)ではないと言えるでしょう。学術研究をする人のことを、研究者と言います。

 

研究がいくつか行われた結果として、間違っていそうな知識が外されて、正しそうな知識が再選される過程まで含めると、ふつうは科学と言います。科学とは、誤りの「無い」真理は手に入りそうもないけれど、少しでも誤りの「少ない」知識に手を伸ばす動作、とも言い換えられます。

 

大学は研究者が活動する研究機関なのに、研究者になるつもりではない人もたくさん入学します。そのような人たちは、本人の意図はどうにせよ研究や科学の二次的な恩恵を受けに来ていると言えるでしょう。大学の授業で講師が話す内容や使うテキストは、将来の研究者を育てるために選びぬかれたものなので、科学の成果が凝縮された大切な1片だと言えます。たまに企業の人が来てウチの会社はすごいんだと宣伝していくだけの授業もありますが、テレビ番組におけるCMのようなものなので、気にしないでください。

 

科学で扱われる内容は、何の検閲もされていないネットメディアや、何となく日常で過ごしてたら発見できる眉唾ものの法則と違い、誤りが少ないので、優先順位からすると知る価値が高いと言えます。大学生たちは、研究者になるつもりではない人も含めて、正しそうなことをできるだけ早く知ることによって、この不確実な世界における支えを手に入れようとしています。

 

一言で言えば、大学は、研究者になる人にもならない人にも、価値ある知識を与えることに成功しています。

 


2.大学の限界

 

Human knowledge and human power meet in one; for where the cause is not known the effect cannot be produced. Nature to be commanded must be obeyed; and that which in contemplation is as the cause is in operation as the rule."
(人間の知識が、支配力と全く同じものに変容する瞬間がある、というのも発生原理を知らなければ結果は再生産できないから。自然は、これに従うことによってしか従わせることのできないものであり、認識された「発生原理」をうまく制御することで、ほぼ思い通りに動かせる。)
(帰納法の先駆者であるフランシス・ベーコンの著書より)

 

 

知識は蓄積することだけが目的ではありません。それは大学にとっても、それぞれの学生にとってもそうです。知識の目的は、それを使って何か決定を下すこと、下した決定に沿って実行することにあります。信頼できる(=現実で使っても矛盾しない)知識を獲得したことの威力は、実際に実行してみて、ビックリするほど思い通りに対象が動きだしたときに、初めて感じられます。

 

上述したとおり、大学は正しい知識の伝授という点においては一流ですが、それらの知識を活用した、いちばん良い意思決定の仕方や、実行の仕方についてはあまり体験できません。

 

社会や団体レベルの実行は、政策や規則の施行(増税や救急機器の設置義務化)、あるいは規則的な現象を起こす物体の設置(新国立競技場の建設やリニアモーターカーの敷設など)というかたちで、個人レベルの実行は、具体的な行動のかたち(雇用契約の締結や、有識者への売り込みなど)を取ります。

 

しかし、大学が知識蓄積を本義とする組織であるのだとしたら、どうやって上に書いたような個人/団体/社会レベルの意思決定や実行に取り組んでいけばよいのでしょうか。

一つのアプローチは、実行については実行力を持つ企業や政府と、すなわち産官学で協力する、というものです。

 

このような背景によって、研究者にならず就職した学生だけでなく、研究者として就職した学生も、最終的には企業と関わることになっています。

 


3.成果の普及インパク

 

"The future is already here — it's just not very evenly distributed."
(未来は既に現在に存在するーー普及していないだけだ。)
(SF作家であるウィリアム・ギブソンの警句)

 

2014年に年間で数兆回の検索を実行しているIT企業Googleは、創業者ラリー・ペイジが大学院生だったころに書いた1998年の論文の技術を基盤にしています。彼は執筆の同年に大学を休学し、Googleを創業しました。

 

2006年にジェフリー・ヒントンという大学教授によって書かれたとある人工知能の論文は、大して注目されることもなく知識の山の中に埋もれました。しかし2012年、彼の技術を利用したプログラムが、画像認識の世界大会で、常識から考えたらありえないほどのぶっちぎりで優勝したことで、論文に記述されたその技術が一躍脚光を浴びることになりました。同年に彼は会社を立ち上げ、その翌年の3月にはGoogleに買収されました。現在、その技術はAndroid携帯の音声検索に用いられています。

 

これらの2つのニュースが示唆しているのは、大学という研究機関単体では実行まで完了できないという事実、大規模な社会での成果は企業体による応用に任せられているという事実です。あなたが研究者にならないとしても、研究機関で獲得した知識は企業でこそ最大に活きるはずだということです(枯れた技術の水平思考ということばも存在するくらいです)。

ヒントンが所属していたトロント大学は、06年に既に技術を手にしていたはずなのに、その可能性に12年まで気付かなかった。のちに10億台のAndroid携帯に搭載されるような技術に。もっと歴史を遡れば、06年に発見されたアイデアに近いような論文は1979年時点で既に記録されてはいます。

 

知識を蓄積するだけの時代は、もう終わっています。
研究成果が世界のどこまで普及するのか、その一点に意義が集中しています。

 

一番ひどい例になると、ある種の学問(学問の方法論)は知識をただ蓄積するだけで、何の決定も実行もしません。どんなことでも、実際にやってみると思っていたのとは違った、ということはありますが、その「ある種の学問」は実際にやってみることすらしないのです。実際にやってみたら、貯めてきた知識が全否定されることがあってもおかしくないのに、そんなリスクを想像することすらなく、ただただ知識を深めていくだけの学問というのが、現在の大学には存在します。多くの企業や研究機関の注目が集まる分野の論文ですら、応用を実際にやってみせるまで6年間埋もれ続けていたことを忘れてはいけないと思います。況や他分野をや。

 

実際にはその研究がやっていることは新しくも何ともなかったり、その研究の成果とされていることは実際に現実で運用してみるとまったく効果を発揮しなかったりするのに、「この知識には価値がある、ある、ある」と勘違いして、熱意と勢いと伝統だけで研究しているように見せかける、追放すべき絶対悪です。
 2015年の現在には、研究というのは思いついても「既に誰かがやっている」ことが大半です。ましてや、2,3言語程度でしか情報にアクセスしていない学部生がちょっと考えて出したぐらいのアイデアなんて、とっくの昔に研究され尽くされているか、実際には動きません。

 

かつては、思想を広めることが大きなインパクトを持っていた時代がありました。
時代の思想に従い、制度を定めた国もありました。

 

嗜好が多様化した現代においては、全人類が同じプロパガンダを持つことは考えにくいです。無印良品を通してブランドの思想に馴染んでいく、それは確かにあるでしょうが、その人数が決してマスの規模に辿り着くことはないでしょう。世の中は、本当にこんな考えが好きな人がいるのか、という人たちでバラバラになっています。

 

Android携帯への「思想」のインストールは短時間で済み、それらは完全に同一です。そして、Androidは命令した通りに動きます。

 

 

4.電子計算機の普及後の、資本主義での人間観

 

"就職して1年くらいすると,僕はプログラムが書けるものですから,エクセルとかでもマクロを組んで,自分の仕事のかなりの部分を自動化していました。他の先輩が2~3日かけてやる仕事を,僕はボタンをポチって押したら終わるみたいな。で,余った時間で何してたらええんや!と持てあましてたので,業務時間中にこっそりとゲームライブラリを書き始めたんです"
(プロ棋士に勝った将棋プログラムの作者の対談記事より)

 

 

コンピュータは、「昔からある研究」の価値をまるっきり変えてしまいました。

 

昔は、中国の歴史書に出てくる「塩」という字を時系列で追う研究は、何年かけても研究になりました。現在その類の研究は30秒もあれば終了します。

 

もちろん、実際にはテキストを電子化したり、内容を解釈する時間があるので、そんな単純には行きません。しかし、どれだけ少なく見積もっても研究のスピード感は少なくとも10倍は早くなり、結果として研究のコストパフォーマンスはまるで変わってしまいました。現代にそのような研究で数年間ぶんの研究費を獲得するのは、ほぼ不可能といってよいでしょう。そのような研究をやりたければ、検索用のソフトウェアを企業に外注して、数ヶ月規模の研究としてプランを組むのではないでしょうか。

 

そして、研究に必要な道具も驚くほど変わってしまいました。テキストの電子化の際にはハイパーテキストを学ぶ(実際、文学部でXMLファイル形式について講義しているのを見たことがあります)、電子化困難な写本は画像にしてiPadで閲覧する、文章の特徴を推定する際にも電子テキストに対する統計的手法が役立つ、授業中はアプリ辞書で用例をチェックするといった具合です。

 

政治学科では、政策の効果を分析するために仮説検定や重回帰分析による統計解析を行います。経済学部では、取引の9割がコンピュータによる自動取引だとも噂される株価の形成過程について仮説を立てて検証しているのではないでしょうか(こちらは詳しくないのであくまで想像です)。その際に計算機によるシミュレーションを使うこともあるでしょう。僕の友人は排出ガス規制を定めた国際条約における「公平」を調べるために、C言語数値計算をしていました。

 

これらの計算をする際にコンピュータは実質不可欠です。

 

この話は、研究(新しい知識の発見)に限らず、あらゆる労働にとってあてはまります
私たちは実際のところ、図式的には、どの作業をコンピュータに任せることができるかというのを各自が判断して、任せられない部分をブツブツ言いながらこなすアナログ計算機の役割を果たしています。


コンピュータに任せられることをたくさん知っている人は、それを力にして、うまくなまけることができています。
コンピュータに任せられないことのうち、高給な仕事を知っている人は、それを力にして、ほかの仕事と大して変わらない業務内容でたくさんの給料を貰っています。

 

あなたはアナログ計算機であり、電子計算機ができない処理を行う存在です。
その上で、コンピュータにどの仕事を任せられるのか判断に自信が持てない場合は、
計算機科学(情報科学)を専攻するか、せめて專攻する友達を作ることを強くお勧めします。

 

私は別に、計算機科学者になるべきだと言っているわけではありません。第二次世界大戦中に急に登場して1世紀以内に何もかも変えた計算機の「科学」を開始点として、もう一度自分がやりたいことを見なおして欲しいということです。

 

(最終章)5.学部教育による世界観の固定化

 

 

「率直に言って、一流の小学校、中学、高校、大学、大学院に行った方が良いです。初期に配られるカードが全く違うので。大人は、これははっきり教えた方が親切だと思います。すでにカードが配られている人に逆転の可能性を説くのはそれはそれで意味がありますが、これからの人に誤解を与えるのは罪です」

(京都大学客員准教授の瀧本哲史bot、2013年11月4日)

 

 

計算機科学なんて全く関わらずとも社会的に成功した人は山ほどいます。
でもだからといってこのカードをこれからの人に配らないのは罪です。
一流のツールと一流の思考法に出会うチャンスを、初めから潰しています。

 

学部教育は、あなたの意思決定に生涯影響を持ち続ける価値観の形成に、重大な影響を及ぼします。私がこんな記事を書いていることがその証左です。

 

私は、他国の言語をたくさん学ぼうと思って大学に入学しました。
文学部志望でした。

 

2年間の一般教養で考えるところがあり、賭ける思いでコンピュータ科学に專攻を変えました。数学は苦手でした。プログラミングは素人でした。

 

理系からストレートで計算機科学をやってきた子は、こんな記事を書きません。
彼らは文系に比べて自分たちが遥かに強力な、知識をあっという間に力に変えられるという意味で強力な、一流の知識の束を学び、実際にプログラムを書くという形で意思決定し、実行しているということを、ふつうのことだと思っているからです。むしろ宿題に忙殺されていて、それどころではありません。

 

コンピュータをうまく使えない後輩など、問題の数に入りません。

 

 

信頼できる知識をいちばん蓄積しやすい計算機科学における知識の増加スピードは、世界全体で見ても個人の頭のなかで見ても他の比ではありません。作業スピードが10倍になるようなツールを1つ知っただけで満足なのに、そのようなツールが次々に現れてきます。2013年のある論文では数日かかっていた計算について、同じ年の終わりには2時間以内に終わる方法が見つかって別の論文で報告されていました

 

 

 

時間がかかるはずだった作業を手早く済ませられるようになった。
空き時間ができた。
ではこの時間で、人々や自分を悩ませているどの問題なら解けるだろうか。

どの問題なら計算機で解けて、どの問題は人手が必要だろうか、…?

 

 

 …

 


以上が、文系から情報系に転向して3年経った学部生である私が、
後輩に向けて伝えられる意見です。

 

ここで述べられた意見を説得力のあるものだとみなすか、キャリアの自己正当化のために書かれた視野の狭い誤解だらけの偏見だとみなすかは、專攻を決めるみなさん自身が判断して下さい。

 

 

 

 


参考動画
ハーバード大学における、文系向けComputer Scienceの入門授業であるCS50。日本ではコンピュータ・サイエンスはダサい・暗い・チマいといったイメージが強いように思いますが、こんな現代的なノリの文化も海外にはあります)

 



この単語を2年間忘れないでいられるだろうか?: 学校が教えてくれない英単語の暗記法について

 

(この記事は、科学的な発見ではなく、僕が英語学習者として採用している現実的な戦略について記述しています。そのため各所が雑ですが、この程度の雑さでも高校での暗記戦略を遥かに凌駕していることが何より重要なことだと思います。僕はこの雑な戦略を2年続けて、確かにこれは続けられそうだと結論しました。)

 

 

多くの人は、新しく英単語を覚えることが難しいと思っていますが、違います。
ほんとうに難しいのは、覚えることではなく、忘れないことです。

 

そんな一般的な言説は聞き飽きているでしょうね。
もっと心が辛くなる表現に言い換えてみましょう。

 

本当に難しいのは、いまあなたが単語帳や文章で目にしている単語に、いまから2年後に出会ったときも本当にいま感じている「よし、覚えてるぞ」という手応えを感じられるか、ということです。

 

uxorious ( /ʌksɔ́ːriəs/ 、アクソリアス) という単語があります。語義は「妻に甘い」です。面白い形容詞もあるものですね。

印象的で、すぐに覚えてしまえそうです。

でも、2年後にuxoriousを見たときに、あなたは正答できる自信があるでしょうか。

 

 

僕がこの記事で伝えたい主張はただ1つです。「記憶の信頼性」をエピソードの強さや先天的な記憶傾向(エピソードだと覚えやすいとか、音を聞くと覚えやすいとか)だけに頼るのは誤っています。忘却曲線に基づく間隔学習法を取り入れた、Ankiなどの信頼できる暗記システムによる学習方略に一生涯を通して切替えるべきです。

 

本当の信頼性は、根拠の無い自信ではなく、信頼できるシステムによって確保すべきです。

 

 

日本人が英単語を覚えにくい理由の根本は、日本の高校までの単語学習法が、長くても「約1年後」に答えられればよい、という妥協をしていたことにあると僕は信じています。その結果として、「1年以上持たない試験特化な記憶法」に全てを頼るという、間違った戦略が悪いクセとして染み付いてしまっています。

 

日本の高校までの単語学習は
授業小テスト → 期末テスト → 半年に一度の実力テスト → 本番(複数回
という反復による習得を目指します。正しいアプローチだと思います。問題は、復習スパンが1年を越えた際の対処法について何も経験していないことです。

 

僕がそのような「途中で切れた」アプローチに違和感を覚えるようになったのは、人間の忘却現象を指数関数で近似したエビングハウスの忘却曲線について調べたあとです。

 

エビングハウスのものに限らず、忘却曲線は、人間がどのぐらいのスピードでものを忘れていくのか推測する上で、ひとつの大切な資料だと認識しています*1

 

忘却曲線という名前自体は誰でも知っています。
その名前を聞くと、以下のようなことを思い浮かべるでしょう。

  • 復習をしないと、覚えた事項の大半を忘れる。
  • 一度復習すると、次に忘れるまでの期間は長くなる。
  • だから、覚えたことは、適宜復習したほうがよい。

 

これらは、別にエビングハウスの原著を読まずとも、誰もが実生活の中で実感している経験的な真実です。ですが残念なことに、これらの事実を理解していながらも多くの人は覚えた事項を復習しないことが事実です。

 

そうそう人間って、覚えたいのに復習しようとはしない、怠惰で悲しい生き物だよねーーーそう理解するのは本当に建設的なのでしょうか?

 

覚えたいのに復習しない、という事実を分けると、
確かに「怠惰」も多く入っています。

 

しかし、それとは別に「いつ復習すればよいのか分からない」という問題と、
何を復習すればよいのか分からない」という切実な問題も含まれています。

 

それは、「まだ覚えているものを復習するのは馬鹿らしい、これから毎日uxoriousを復習しろというのか?」という問題です。

 

これらは単にアルゴリズム(書き出せるほど明確な手順)の問題です。X日後に問題Yを出す、それをシステム側に管理させればよいだけの問題です。機械が管理できるアルゴリズムの問題を、人間の判断に任せるのは非合理です。

 

これらの問題を信頼できるシステムに完全に依拠することができて始めて、
あなたは自分の怠惰だけを根本課題として向き合うことができます。

 

ちなみに僕の場合は、「通学中はAnki以外開かない」「定期的にアプリ内部の統計を見て、1ヶ月に何日間起動したかを確認する(土日は通学しないため、実はものすごく頑張り続けたようであっても24/30日起動だったりする)」というルールを定めたら普通に2年間続きました。怠惰なんて、生活習慣の中にうまく忍び込ませてしまえばなんてことはない問題にすぎなかったりします。現在、僕のAnkiアプリは、自作した1900枚強のカードの日程を管理するシステムになっています。英検1級は鬼のように難しい語彙問題を何とか解いて受かりましたし、海外ドラマ見てて最近覚えた単語が出てくることもしばしばです。

 

とある日の電車の中で、正答を数回続けたカードの次の出題時期が「2.2年後」になっていることに気が付きました。Ankiは、自らのアルゴリズムに基づき、僕がそのカードの内容を2.2年後まで覚えていられるかが微妙なラインだと判断したのです。

 

 

 

大学入学以前に、電車の中で紙の単語帳を読んでいた自分の姿が浮かびました。

あのときの自分には、2.2年後の正答確率なんて意識する目線があっただろうか。

 

 

 

このシステムは自分の「暗記」という訓練への意識を、根本的に変えたのだと思います。寿命の長さからしたら明らかに短すぎる1年間というスパンで忘却曲線を打ち切るアプローチから、いつまでも忘却と付き合って、寿命によって忘却曲線を打ち切るアプローチへ。

 

 

なお余談として、エビングハウスが実験によって出した結論のうち、overlearningと呼ばれる現象はあまり知られていません。overlearningとは、「覚えた」「覚えている」ものについても、更に刺激を加えることで、忘れるまでの期間が長くなることを指します。Ankiをやっていて、正答が続いたとしても、それはきちんと役立ってはいそうだということを、覚えておくと少し気が楽になります。

 

以上の認識を踏まえた上で、多くの人が口にする「英語は大学受験のときが一番できていたな〜」というセリフを、どうしてそういうセリフをみんなが口にするのか、忘却曲線という立場から、もう一度考えてみてください。

 

 

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

*1:たとえば、Ankiとはまた別の間隔学習法ソフトであるSuper Memoを作成したPiotr Wozniakは、自身の経験を基にして忘却曲線を構築したように読めます

プログラミング初心者にとってなぜ入門書は難しいのか

ソフトウェアの世界は、日進月歩である。

いや、その慣用句すら生ぬるい。

 

1日は24時間だ。Webアプリケーションフレームワークとして有名なRuby on Railsは、多い日で一日あたり12回の修正が加えられている。この単純な事実を2つ合わせると、ソフトウェアの世界は2時間進日歩と言えるくらい、変化が早い。

 

朝6時に早起きをして、朝食を済ませ歯を磨き、用意を整え朝8時に仕事場に向かう。その間にあなたが知っているオープンソース・ソフトウェアのどれかが進化している。2015年現在は、それぐらいの感覚を持つといい。

 

 

プログラミング言語でも類似の状況だ。Ruby2015年8月12日に15回分のコミットがプッシュされている

 

「無料なら最新版を使うのが当たり前だよね」と最新版のプログラミング言語を使うのは必ずしも最善策ではない。それは必ずしも初心者にとっての「最善」の版ではない。新しいバージョンは、ネット上に答えが記載されていないバグを含むかもしれない。

 

だが、ソースコードはまだいい。

問題は入門書である。

 

第一には、今挙げた速度の問題がある。書籍の修正スピードは、オープンソース・ソフトウェアと比べると新幹線とハイハイぐらいの差がある。2ヶ月で新版を出したとしても、先ほどのなぜか計算しやすい偶数な算出を考慮すると、その間にソフトウェアは多くて60 × 12 = 720回ぐらい修正されていることになる。仮に1ヶ月で新版を出したとしても360回である。なぜか計算しやすい。今日出版された入門書は、2ヶ月後には720コミット分くらい最新の世界からビハインドしているかもしれない

 

だから端的に言って諦める必要がある。

 

 

 

 

(´ ・ω・) < いやいや、いくら初心者でも、僕だって入門書で最新のことが学べるなんて思っていないよ。それくらい諦めてるさ。とりあえず、何でもいいから、きちんとした作品が一つ作れる程度のことを知りたいんだ。

 

     (・ω・ ) < いや、入門書で諦める必要があるのはむしろ、その「きちんとした作品が作れる程度のことを知る」ことだ。

 

 

 

(´ ・ω・) 

 

 

 

 

(´ ・ω・) < えっ

 

 

 

(´ ・ω・) < そんなわけないでしょう。入門書なんだから、ゴールは「きちんとした作品を読者が作れるようにする」ことに決まってる。それを推進する方向に書かれていない入門書なんてあるわけないでしょう?

 

 

 

    (・ω・ ) < そう、そこにこそ真に残念な、ソースコード文化と書籍文化の乖離がある。

 

 

どういうことか?

 

書籍は一定量(あえて「かなり多くの量」と表現する)を越えた内容しか書けない。数ページで終わるプログラミングの本は存在しない。同人誌ではないから、そんなものに数百円の値段は付けられない。

 

プログラミング入門書にとって、むしろこの数百円に足る商用的価値を担保するという制約が致命的に学習者のゴールと相反している。

 

たとえば正直な話、print文一つだけでも「きちんとした作品」は作れる

 

 

 

ソースコード

 

gist2b00faaa9064841b70d3

 

 

実行結果

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

 

 

 

(´ ・ω・) < こ、こんなの「きちんとした作品」に入らないでしょ?

 

     (・ω・ ) < どうして?

 

 

(´ ・ω・) < だってこんなの、「でーたべーす」も使ってないし、「うぇぶ」も関係してないし、要するに何のむずかしい技術も学んでないし、そもそも誰の何の役にも立たないじゃない?

 

 

     (・ω・ ) < むずかしい技術はあとでいくらでも加えられる。何ならやる夫のAA部分はWebから自動取得してくるようにしてもいい。単なるテキストだからね。取ってきたAAをデータベースに格納するようにしたら、それで少し使い方も勉強できるだろう。

 

     (・ω・ ) < 「役に立たない」ことはないと思うよ。友達がなにか口うるさく言ってきた時に手元でそっと実行して見せれば、意図が伝わって、いい。

 

 

(´ ・ω・) < あなたの友達関係はどうやら崩壊しているみたいだけど、それはいいとして、私はWebアプリケーションとかTwitterBotとかクールで実用的なものを作りたいの!

 

     (・ω・ ) < でも、WebアプリケーションだってTwitterBotだって、文字を表示するだろう?

 

(´ ・ω・) < えっ

 

     (・ω・ ) < このプログラムを完成させたあと、君がこのやる夫を二度と表示させなかったとしても、その過程で学んだ「文字列を扱う際の小問題」とその解決策はそれらの「作りたいもの」と共通だ。プログラミング初心者が取り組むべき「きちんとした作品」とは、必ずしも「作りたいもの」それ自体ではなくて、「作りたいもの」と同じ部分要素を持つより小さなプログラムのことだと僕は思うよ。

 

(´ ・ω・) < 確かに、TwitterBotを何も考えずに作り出すと、今回作っていた最中に遭遇したのと同じSyntaxError: Non-ASCII characterが出るわね。日本語で作るときに出るエラーね。解決策は、 # -*- coding: utf-8 -*- と書かれた一行を挿入して、文字コードutf-8にしてあげることだと。

 

 

 

     (・ω・ ) < やる夫で直した経験を思い出せば、原因の特定も早いだろう?それこそが「経験を積む」ということだ。入門書を一字一句読むことと、print文一つでやる夫を一つ作ることは、後者の方がより直接的で、個人的には楽しいアプローチだ。

 

     (・ω・ ) < 冒頭で「早すぎる進歩」の話をした理由は、この「やる夫で使われる文字列処理の関数(replaceなど)」と「作りたい作品で使うことになる文字列処理の関数」は共通で、そして共通だということは世界でどれだけのスピードでコミットが行われていたとしても変わらないということだ。あるビジネスマンは「本質とは時代を通して不変のもののことであり、そういうものこそ学ぶ価値がある」と言っていたが、プログラミングに関してはまさにそうだ。関数名ぐらいは変わるかもしれないけどね。

 

     (・ω・ ) < 以下は僕の意見だけど、あれだけ分厚い書籍を途中で挫折せずに初心者が終えることは無理だと思う。プログラミングは何か一つ躓くと「動かなくなってしまう」。だから、書籍より小さな単位で「きちんとした作品」を作り、技術に囚われないで作品を構成するマインドを育てることが大事だと思うんだ。

 

 

(´ ・ω・) < でも、こんなショボくれたプログラム書いて勉強してます、って何だか恥ずかしい…

 

     (・ω・ ) < TwitterBot書いてても「どうせ誰かの書いたライブラリを利用してるだけだ」と卑下することは可能だし、そんなことはどうでもいい。ある哲学者の本にバスケットボールを揶揄して「あんなのは体育館の床をダムダム言わせてるだけだ」という表現があるが、それは違うだろ?僕らはショボくれたプログラムを書いてるんじゃなくて、ショボくれたプログラムの中にある、処理の世界を見て勉強しているんだ。

 

 

     (・ω・ ) < 自分の書いたプログラムの価値が分からなくなったら、世の中にはSL列車をターミナルに表示させるだけのslっていうプログラムが存在しており、

 


sl command on linux - YouTube

 

     (・ω・ ) < 凄腕のプログラマが、このslコマンドにいかにすれば音を付けてシュポシュポ走るようにできるか詳細な説明記事を上げていることを思い出すといい。

 

(´ ・ω・) < なんという才能の無駄遣い

 

     (・ω・ ) < それもプログラマへの賛美だ。

 

 

まとめ

  • プログラミングの世界は高速に変化する
  • 最善 ≠ 最新
  • 入門書のサイズは、学習者のためのサイズというよりは、流通用のサイズ
  • 入門書が目的とする「きちんとした作品を作れる経験と実力を付ける」を達成するには、書籍よりも遥かに小さな単位の文法事項や作品サイズで習作を作ることが重要

 

 

 

 

(書いてて、文法を縛っているタイプの入門書ももう出てきているんじゃないかな…と思い始めた)

 

 

 

 

参考にした記事

 

デザイナがエンジニアリング(プログラム)を学ぶコツ | fladdict

 

 

 

質問コーナー

 

AAが少しズレてない?

 

 

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

すーがくってなんだろう

いくつか気になったものをメモメモ

 

 

古い時代の数学では「空間」は日常生活において観察される三次元空間の幾何学的抽象化であった。ユークリッド(紀元前300年頃)以来、公理的手法を主要な道具とした研究が行われていた。デカルトにより、座標を用いる方法(解析幾何学)が導入されるのは1637年のことである[1]。このころは幾何学の定理というものは、自然科学における主題同様に、直観と理屈を通して知ることのできる絶対的で実在の真実として扱われていた[2]し、公理というものは定義の言外において疑いようのない事実として扱われていた[3]

 

ユークリッド幾何射影幾何[4]との関係は、数学的対象がその「構造によって」与えられるものではないということを示すものになっている[5]。それどころか、各数学理論は、その対象が持つ「ある種の」性質によって(正確には、それらが満たす理論の基礎となる公理によって)記述される[6]のである。

 

射影幾何の公理には、距離や角度といったものは述べられていないから、従って射影幾何学の定理にそれらが現れることもない。故に「三角形の内角の和はいくらか」という問いはユークリッド幾何学では意味を持つが射影幾何学においてはまったく意味を成さない。

 

19世紀には別な状況が現れる。「三角形内角の和」がきちんと定義できるにもかかわらず、それが古典的な幾何学における値(つまり180度)と異なるような幾何学が出現するのである。そのような幾何学としての双曲的非ユークリッド幾何は、1829年ロバチェフスキーが、1832年ボヤイが(また非公表であったけれども、1816年にガウスが)導入した[4] 幾何で、そこでは三角形の内角の和が180度よりも常に小さくなる。

 

このような発見から、ユークリッド幾何こそが絶対的な真理であるという主張は放棄せざるを得なくなり、幾何学の公理は「疑いようのない事実」でも「定義の含意」でもない、仮説にすぎないことが明らかとなった。つまり、「経験的実在に対応する幾何学の範囲はどのようなものか」という物理学的に重要な問いは数学にとっては何の重要性ももたないものとなったのである。ただし、「幾何学」が経験的実在と対応しないとしても、幾何学の定理は「数学的な真実」であることに変わりはない[3]

 

 1854年、リーマンの有名な就任講演によれば、n 個の実数でパラメータ付けられた任意の数学的対象は、そのような対象全体の成す n-次元空間の点として扱うことができる[12]現代の数学者はこの考え方をごく普通に踏襲し、さらに強力に推し進めて古典幾何学の用語法をほとんどどこにでも用いる[11]

 

この手法の一般性を十分に理解するためには、数学というものが「数や、量あるいはそれらの描像の組み合わせではなく、思考の対象をこそ目的とする、純粋に形式の理論」[details 1]であることに注意する必要がある[5]

 

(Wikipedia、空間(数学)より引用。太字や赤字は僕によるもの) 

 

 

「n次元ベクトル」を元とする線形「空間」を現代の線形代数学では当たり前のように扱うけれど、それは1854年の時点ではそんな感じで新しいことだったようだ。

 

 

第三階層の分類 (third level of classification) は、大まかに言えば(第一階層に準じて意味を成す)問いとして「可能な全て」についての答えを勘案するものである。例えばこの階層で、次元が異なる空間はどれも互いに区別することができるが、二次元ユークリッド平面として扱われる三次元ユークリッド空間内の平面と、やはり二次元ユークリッド平面として扱われる実数の対全体の成す集合とはこの階層で区別することはできない。同様に、同じ非ユークリッド空間の異なるユークリッド模型もこの階層で区別することはできない。

 

(出典同じ)

 

数学は、定理や定義を一つ一つ見ていくと、案外(最初に心に抱いた)イメージと異なる状況を扱っていることが多い、と感じるようになった。(1,2)や(2,3)などの「実数の対」全体の成す集合と、二次元ユークリッド平面は、最初はそんなに同一視できないと個人的には思う。

 

日常で培われたイメージで考えてしまうと、前者は(りんご1個、みかん2個)のようなカウントの全てのパターンの集まり、後者はだだっ広い一枚のシートのように思えてしまって、同一視できない。そのようなイメージを剥ぎとって、集合の元という観点だけからボトムアップ式に考えていく必要がある。

 

  演繹(deduction) 演繹ではない推論(広い意味での帰納 induction)
枚挙的帰納法(狭義の帰納 アナロジー(類推) アブダクション(仮説形成)
<前提1>
 AならばB、である。

<前提2>
 Aである。


<結論>
 Bである。
<前提1>
 a1はPである。

<前提2>
 a2もPである。


<結論>
 (たぶん)全てのaはPである。
<前提1>
 aはPである。

<前提2>
 bはaと似ている。


<結論>
 (たぶん)bはPである。
<前提1>
 aである。

<前提2>
 Hと仮定すると、aがうまく説明される。


<結論>
 (たぶん)Hである。
情報量 増えない。
(結論の内容は全て前提の内容に含まれている)
増える。
(結論は、前提に含まれていた内容を超える内容を持つ)
真理保存性
妥当な演繹的推論は、前提が正しければ(健全であれば)、必ず結論は正しい)
×
(前提が正しくても、結論の正しさは保証されない)

 

 (帰納 - Wikipediaから引用)

 

 

数学において、全てが演繹である、ということの重みを見逃すと、いつまでたってもゲームの性質を掴めない。情報は公理や前提として出されたところから増えないが、定理や式などの、より明示的なかたちで明らかになっていく。こんなことは日常生活、すなわち帰納的な営みの中では通用しないルールだ。

 

生活では経験を積む度に「常識」や「傾向」がどんどん増えていって、多くの「正しいこと」と結構な数の「誤っていること」が蓄積されていく。そして、いろんな証拠でもって、すこしでも誤りを減らしていく。

 

数学はそれとはまったく違うゲームである。帰納的に作ってしまったイメージ、たとえば「空間」などに含まれる誤りを、定理などの証明を一つずつ見ながら少しずつ修正していく点は似ているかもしれない。でも、自分の頭の中からではなく、公理や定義の間から出てくる事実が全て正しいという点は非常に特異だ。

 

 

 

そのほかにきになること

 

  • 群や環、体といった抽象代数学のことばが、これほど取り沙汰されるようになったのは、簡潔な表現力が強いからなのだろうか?
  • 数学における概念表現がどれくらい加速しているのか、調査はあるのだろうか?

 

 

 

Power Lawと明確な楽観主義、あるいは「成功」の考察

Paypal共同創業者の一人、ピーター・ティールによるビジネス書『ゼロトゥワン』の中では、第6章で「テクノロジーに対する明確な楽観主義」、第7章で「ビジネスにおけるべき乗則Power Law)」が扱われる。

 

明確な楽観主義は、「思い描いた未来を築けば成り立つ」。

およそ富に関わる多くの現象は、正規分布ではなく「指数関数的成長」をする。

 

2つを総合すると、以下の信念になる。

「未来を変え、指数関数的成長をすることになるプロダクトを探せ」。

 

これは、起業にも、スタートアップへの就職にも、職業選択にも、

所属するコミュニティの選択にも、使用する道具の決定にも通底する第一法則だ。

 

「当たり前」だろうか?帰納的に導いた経験則はどれもそうだ。あるていど経験を積んだ人は、常識を「当たり前すぎるから」という理由で否定するようになる。だが本当に大事なのは、当たり前のように思える常識の束から、9割の虚構(実現していない現実)と、1割の真実を選り分けることだ

 

ここで関連する虚構はなんだろうか?

僕は以下の様なものを考えている。

 

  1. 直近の伸びがすごいプロダクトは消費者のニーズに沿っている。
  2. 未来は不確かで、いつ起こるかを定められないという意味において「ランダム」で、制御できない。

 

どちらも「いかにも尤もらしそう」な常識だ。でも、帰納的な言説はいつも、再帰的に誤りを含んでいる。

 

1. について

 短期スパンでの変動と、長期スパンでの変動は挙動が異なる。べき乗という、積を何度も繰り返す演算は、積自体が加法を何度も繰り返している演算であることを考えると、常に加速していく。

 

加法と乗法の違いは頻繁に強調される。

乗法とべき乗の違いが強調されないのはなぜだろう?

そこにも多分、隠れた真実が存在している。

 

 

2.について

 

「いつ起こるかを定められない」ランダムという概念は、活字上で有効なだけでなく、本当に現実世界に存在する疑いのない事実だ。投げられたサイコロはいつ1が出るか断言ができない。少年ジャンプの懸賞に応募していつ27型液晶テレビが当選するかは断言ができない。後者はそもそも当選と落選の確率すら分からず、不確かさしか感じられない。

 

サイコロの次の目すら決められないのに、どうしてプロダクトが成功するなんて確信できるのだろう?

 

 

「一つの事象が100%」起きることでしか安心できない人生は、深刻な行動制限を生む。

 

 

なぜなら0 to 1の人生とは、

起きなかった成功を0回以上経由して、成功することだからだ。

 

 

「いつか起きる」ことをできるだけ手元に持ってくる、
形式的には、起きなかったn回の成功のnを減らす、

それがランダムな事象についてデザインが行なっていることだ。

 

 

僕らはいつまで、
「99%の成功と1%の失敗」と
「等確率1/6のサイコロ」を
「ランダム(次が予測できない)だ」
あるいは「運だ」という言葉で
同一視し続けるのだろうか?

 

 

その認知は数理的には間違いではない。

ただ行動原則としては大間違いだ。

 

 

明確な楽観主義は、

高い確率を持つ成功事象

高い確率に持っていける成功事象を、

「(0回以上の失敗のあとに)決定的に起こる成功された未来」として扱う、という思考バイアスの形式を言う。

(成功が失敗になると、明確な悲観主義になる)

 

そしてその成功が、底がいくつのべき乗であるのか、

つまりどれほどの早さで成長するプロダクトなのかは、

観測データが0なので未だ誰も知らない。

airbnbとUberの成功はそれを示唆している。

 

 

 

次元の呪い、あるいは「サクサクメロンパン問題」

超球の体積、すなわち多次元空間における球は、一般的に私たちが観測する3次元の球体の体積とは遥かに異質な性質を示すらしい。 

 

機械学習の有名な教科書によれば、

 Our geometrical intuitions, formed through a life spent in a space of three dimensions, can fail badly when we consider spaces of higher dimensionality.

拙訳: 我々の幾何学に関する直観は、3次元空間の中で過ごした人生の中で形成されたものだが、高次元空間を考えるときには、まるで役立たないことがある。

("パターン認識と機械学習 上", 原書, p.36)

 

... in spaces of high dimensionality, most of the volume of a sphere is concentrated in a thin shell near the surface!

拙訳: ...(中略)... 高次元空間においては、球の体積のほとんどが、球表面近くの薄い「殻」に集中しているのだ!

(同書, p.36)

 

とのことである。一般的には「次元の呪い」と呼ばれる現象だ*1

 

 

 

 

そして、先日この「殻」について、身悶えるほど鮮烈なイメージを与える具体例ツイッター上で観測した。 

 

 

 

 

 

メロンパンの皮。

 

 

確かにメロンパンの皮は、3次元空間では非常に薄っぺらなものでしかない。しかしそのメロンパンの皮の体積はn乗に比例して増加していくため、n次元空間では皮がメロンパンの大半を占めることになる。

 

なんということだ。超球とはメロンパンのことであったのだ。

 

しかし、肝心のこの偉大な事実に関する発見者は、

 

 

 

 

と言ったように、自身の発見がいかに素晴らしく価値のあるものであるか、それに見合った賞賛を受けていない。

 

 

ここでは、@mima_tea氏の発見がいかにヴィヴィッドなものであるかを、R言語による可視化を用いて表現してみたい。作成したコードは記事の末尾に掲載するので、先に出力画像から紹介していく。

 

 

 

まずは、3次元空間において、我々が普段目にしているメロンパンである。

 

 

 

 

 

 

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

 

 

うん。メロンパンだ。

 

 

左図では、茶色がn次元空間(ここではn=3)における皮の体積に、黄色がモチモチ部分の体積に対応するように面積を定めている。体積を面積で表現することで、直観がはたらきやすいように心がけた。3次元空間におけるメロンパンは、非常に美味しそうで、かぶりつけば今にもサクサクという音が耳に聞こえてきそうだ。

 

 

右図は、ヨコ軸が「メロンパンが存在する次元の次元数」、タテ軸が「皮がメロンパン全体に占める割合」を表す。●が左側で表現されたメロンパンが利用しているパラメータであり、ここで次元数が3,皮の割合が0.03なので「3%がサクサク」であると言える。

 

 

 

メロンパンの皮の厚みは、半径に対して1%に設定した。上の図からは、これが一般的なメロンパンの表現になっていることが推察される。以下では、これと同じパラメータを用いて、メロンパンの皮の挙動を調べていく。

 

 

 

 

続いて、30次元空間におけるメロンパンを見てみる。

 

 

 

 

 

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

 

 

 

 

これは…

 

 

 

 

高級なパン屋にいくと、メロンパンの皮部分が厚いクッキー生地で作られており、別々に焼かれて張り付けられていることがある。

 

30次元空間におけるメロンパンは、すなわちそのような高級メロンパンに近くなっていると言える。なんてお得なんだ。単にメロンパンを30次元空間に飛ばすだけで、サクサク感を全体の26%も楽しめる。

 

 

 

 

 

続いて、100次元空間におけるメロンパンを見てみる。

 

 

 

 

 

 

 

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

 

 

 

皮の割合が63%を超え、もはやメロンパンというよりクッキー状態である。
繰り返すが、「皮の厚み」を表す数値は3次元のときから変えていない。

 

半径のわずか1%のままである。それなのに、メロンパン全体に占める割合としては、すでに63%に達してしまっている。高次元空間においては、いかにメロンパンが我々の幾何学的な直観に反する食物になるかが伺いしれるだろう。

 

 

 

そして最後に、500次元空間における500次元メロンパンを見てみよう。

 

 

 

 

 

 

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

 

 

 

 

完全に皮になってしまった…。

これがいわゆる次元の呪い、すなわちサクサクメロンパン問題である。

高次元空間においては、面積が球表面に集まりすぎて、
メロンパンがサクサクになりすぎてしまうのである。 

 

 

おわりに

 

次元の呪いを、メロンパンによって観察することで、高次元空間における面積の挙動について直観を得ることができた。

 

次元の呪いは、MCMCなど近年のサンプリング技術の理解において非常に大事な基礎的事実であるので、このような直感的な説明を提案した@mima_tea氏に尊敬の意を表し、結びの言葉とする。

 

 

いつも心にメロンパン。

 

 

おしまい

 

 

 

使用したソースコード

 

melonpan-like visualization of "curse of dimension ...

 

 

参考文献

 

パターン認識と機械学習 上

パターン認識と機械学習 上

 

 

 

 

質問コーナー

 

しつもん: メロンパンは球ではなく円盤ではないのですか?

こたえ:  君みたいな勘のいいガキは嫌いだよ

*1:1次関数 x と2次関数 x ^2について、 x < 1の部分では直線 x のほうが大きいのに、 x > 1になると急激に放物線x^2の値が直線より大きくなるような変動が、高次元ではより非直感的なレベルで起きるということのようだ。