蛍光ペンの交差点

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

この単語を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の値が直線より大きくなるような変動が、高次元ではより非直感的なレベルで起きるということのようだ。

p値とAIC(赤池情報量基準)の関係について

現段階での理解をまとめる。

間違った記述があれば、読者諸氏からのご指摘を頂きたい。

 

(p値を使うNeyman-Pearsonの)検定によるモデル選択と、AICによるモデル選択を比較した図として、管見では以下が最も整理されていた。薄緑の付箋と黄色のハイライトは私が追加したものである。

 

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

(『データ解析のための統計モデリング入門』、久保拓弥、96ページ、2014年7月第10刷より引用)

 

前掲書の文脈において、この図の主張は以下である。

 

  • モデル推定の文脈では、モデルの説明変数の係数に対する検定は「係数=0としたモデル(=説明変数が1つ少ないモデル)が真のモデルである」という帰無仮説を棄却するものである。そして、図では(見解が統計学者によって恐らく分かれるので恐らく意図的に)記載されていないが、「帰無仮説を棄却したときに対立仮説(=説明変数が1つ多いモデル)を採択する」という論証を踏むことになる。ただしこのときの対立仮説で主張される係数値は、後述するように、「0ではない係数」や「0より大きい係数」という非常に弱い主張でしかない。具体的な数値を指定してはいない。

  • AICは、「予測確度の高い」モデルを選ぶための数値指標である。AICが最小(=最良)だからといって、「現在の手持ちのデータに対して最も当てはまりがよい(最も尤もらしい)」とは限らない。むしろ「現在の手持ちのデータに対して最も当てはまりがよい」モデルは、尤度でいうと平均して(最尤推定を行った回数)ぶんだけ偏った未来予測になっている、という認識のもとに数値指標が作られている。久保本4章参照。

 

 

このような理解の上で、以下の問に答えてみる。

 

 

 

「重回帰分析を複数回行い、複数の異なる重回帰式 (以下では重回帰モデルと呼ぶ) を得た。この中から「いちばんよい」重回帰モデルを一つだけ選びたい(モデル選択の問題)。

モデル選択としては、RのstepAIC関数(引数不明)によって、AICが最良(最小)のモデルを選択した。

しかし、それぞれの説明変数の「係数」に対して行ったt検定について、p値がいくつか有意水準(0.05と仮定)を上回る変数群XがあったXを全て除くべきだろうか?」

 

 

 

僕の主張としては、AIC「のみを」意思決定の基準としてモデル選択を行っているならば、除く必要は一切ない。ただし、そのような基準を採用しているケースは、実はそれほど多くない

その選ばれたモデルの係数群の値を見て、以下が観測された場合には、その最良のモデルよりも多少AICが低かったとしても、解析者もしくは解析依頼者の解析目的に照らして納得の行くモデルを選ぶべきである。つまり単純にstepAICのアルゴリズムに頼るのではなく、自分の定性的な判断も含めて選択過程のアルゴリズムを実行するべきである。

 

  • 不合理な符号(身長が上がると体重が減るとか。多重共線性を参照)
  • 不適切に大きい/小さい値
  • 人間の理解に沿っていない説明変数(論理的なつながりが見られない変数)
  • Rのcoefplotパッケージでlm()の結果を図で表示させてみたときの、おかしな点
  • というかつまり、何か腑に落ちなかったら、さりげなくみんなAICより自分の感覚を優先させている(その「自分の感覚」を、解析している問題分野固有の解釈や、データ分布の可視化結果ではなく、画面上に表示されたp値や決定係数R^2に頼りがちなのが問題なのだが、AIC以外の基準も複合的に含めてモデル選択を行っているのが実は常である)

 

 

除く必要がない理由は以下である。以下、「p値」とは、「AIC最小で選ばれたモデルの」「各説明変数の係数に対するt検定の」p値(複数)を指すものとする。すなわち、今回の議論では、重回帰モデル全体に大して適用されるF検定のp値は検討対象外とする。

 

  • それらのt検定から出したp値は、「各係数が0だった場合の回帰式」というモデル( = 帰無仮説)を棄却するかの判断材料に過ぎない。これらのp値が、事前に、ココロにこれと決めた「ゆーい水準」よりも低ければ、「こんなに珍しいことは起きない」と帰無仮説を棄却する。

    実は、ここから対立仮説の採択に移らない立場もある(Fisherの立場。棄却されたことで判断が終わった、と考えるらしい。末尾の『統計学入門』12章も参照)。
    For all the P value's apparent precision, Fisher intended it to be just one part of a fluid, non-numerical process that blended data and background knowledge to lead to scientific conclusions.But it soon got swept into a movement to make evidence-based decision-making as rigorous and objective as possible.

    拙訳(かなり自信がないが): p値ははっきりとして正確だったために、フィッシャーは(それまでの)非定型で、数字に立脚せず、データが語ることと元々の背景知識が混ざった推論プロセスに取り込もうと意図していた。しかしむしろ、(当時の)可能な限り厳密で客観的な証拠に基づく意思決定の確立を目指すムーブメントに、p値はすぐに取り込まれることになった。
    (引用元:Natureの記事)
  • フィッシャーがなぜその立場を取ったのか、理由は上のリンク先記事からするとそもそもp値による帰無仮説の棄却だけでカタを付けるような議論を想定していなかったからだということだろうが、それから考えてみると、実はさらに「帰無仮説を棄却する」と「対立仮説を採択する」の間には、非常に大きな論理の飛躍があるのだと思う。ここはあとで無理やり接合された議論だと言ってもいいのではないだろうか。少なくとも上の記事からは、フィッシャーは棄却のあとは対立仮説の採択ではなく、背景知識の援用などで議論を定性的に進めようとしていたように僕には読める。*1

  • そして更にもう一つの飛躍がその先の論証手順にある。

    そもそも、「0である」が棄却されたこの流れで、「係数は0でない」とする対立仮説ぐらいなら採択しても自然だろうが、「係数は推定された値である」まで持っていくのは、あまりに不自然で恣意的な論法である*2。係数値の推定estimation (検定testではない)は、上掲の図にもあるように「最尤推定」に基いて行っており、検定testの枠組みには関係がない。たとえば係数=5と推定estimationされた後に、「係数=0」の検定testをやることが、意義を持つケースはどれぐらいあるだろうか?*3

  • よって僕の意見は、AICでモデル選択をしたあとのp値は、よほど「係数値が0に近くてリアルに係数=0の検定が重要」な上に「その説明変数が被説明変数と関連しているか定性的には不明」な場合を除いて、実はさほど統計学的には意義がないので、無視して構わない(この結論、かなり怪しいので、有識者の反論を待ちたい)

  • だが、Rの出力で整然と横に並んでいるし、学会とかがみんな載せることを求めるために、なんとなく載っているというのが現状ではないだろうか。


  • 多重比較の問題もある。説明変数が仮に10コあった場合、おなじ有意水準α = 0.05 (有意水準とはType I Errorを起こす確率)で10コの係数全てに対してt検定を行った場合、Type I Errorを一回以上起こす確率は1 - (1-0.05) ^ 10 > 40 %以上にもなる。この場合、検定を行う回数10回で最終的に満たしたい有意水準を割った値0.05/10 = 0.005が、それぞれの検定で必要な有意水準となる(ボンフェローニの補正)。0.5%が目安ということだ。しかし10コの係数が全てそんなに厳しい有意水準を満たすなんてことは解析の現状としてありえるだろうか。Type I Errorを5%以下に抑えることはそれほどまで優先すべき目的だったのだろうか?

    Type II Errorを抑える検定力は多重比較をするとどう変動しているのか、検定の基礎的な枠組みでしか学んでいない僕には、まだイメージすら理解できていない。他の目的を見失っていないだろうか?なお、久保氏も検定が本当に必要なのかという資料をネットに上げている。

まとめると、「将来のデータに対してもよいあてはまりを見せる」ことを設計思想においたAICを使っている時には、「Type I Errorを起こす確率をある一定以下に制御する」ことを主眼におく検定の枠組みは、大して補強(「このモデルはもっともらしい!」)にも反論(「AICで選ばれたこのモデルより、この説明変数を除いたモデルのほうが優れている!」)にもなっていないので、無視すればよいと思う。

 

 

 

統計学をある程度学んできて感じるのは、古典的な検定(Neyman-Pearsonの検定)の枠組みで(つまりは検定統計量のp値で)自説を補強して主張するのは、p-hackingがかなり蔓延しているしメタアナリシスでデータの恣意的な操作がバレる現代では、かなり厳しいということである。

ぶっちゃけ、学部生の卒論に使ったら、一刻も早く別の論証手順を採用したほうがいいのではないかと感じる(実際には学会の暗黙な指定とかがあるのだろうけど)。それぐらいに、検定だけで論証が出来ると思っていると、効果量とか、検定力とか、予測確度とか、損失関数(※損失関数は機械学習の用語か?)の形状とか、レバレッジとか、多くの論点を見逃しているはずだ。ベイズ的な論証を知ったあとは、今回使った最尤推定より、MAP推定のほうが解析の目的に沿う機会も見つけられるはずだ。

 

ただ、おそらく上記のような重回帰係数の推定/検定のあいだにおける飛躍が未だにRの出力として表示されつづけていることからすると、科学的に誤差を評価する上で(少なくとも係数一つレベルのミクロに注目すると)なかなか代替する枠組みがないということなのだろう。もしくは惰性だ。自分だって、「表示されているから」と使っている瞬間はある。その姿勢は、authorityを「誰も分からなくて反論できない指標」に求める最悪の態度まで、あと数歩だ。


そこに論理的な根拠は薄弱である*4。Fisherがp値を提案してから約90年。これは本当に「歴史ある伝統」として片付けて良い類のものか?

 

p値を大量に利用する方法は、「任意時点での打ち切りによる恣意的なp値の操作」や「多重比較によるType I Errorの可能性の飛躍的な増大」などを学ぶにつれ、現代における有効性が(他のAICや交差検証法などに頼って予測確度を評価する手法に比べて)低い手法であると結論するに至った。


(ただし、私は検定全てを否定したい訳ではない。農学試験などでは、適切な結論を導き出せる利用チャンスもあるはずだろうと思っている。一方で、重回帰係数の推定の補強として検定を使うという利用チャンスが、どれほどの妥当性があるのか疑念を抱きながら使い続けている、ということである)

 

 

AICも標本数無限で証明されているから小標本ではAICcの方がいいというし、世の中なにを自説のエビデンスとして提示するかは、査読者の統計リテラシーに依存するのではないでしょうか

 

 

 

参考にした文献

 

統計学入門 (基礎統計学)

統計学入門 (基礎統計学)

 

 『統計学入門』はすばらしくよくまとまった名著で、頻繁に参照しているが、書き方が非常に分かりにくい。これ一冊で理解するのは不可能に近いだろう。たとえば、12章の冒頭。

推定の考え方は数学的には単純なものであるが、仮説検定も人間の論証感覚を定式化したもので、ごく自然で理解しやすい.

(同書、東京大学出版会、p.233)

これはミスリーディングすぎる表現である。なぜならば…次の本からの引用に任せる。

 

 もし仮にP>=αとなった場合には、どのように結論すればよいのでしょうか.その場合には,「帰無仮説は棄却できない(fail to reject)」と結論します.これは「帰無仮説が正しい」という意味ではありません.帰無仮説・対立仮説のどちらも正しいとも正しくないともいえない,つまり判断を保留するということです.

(上掲書, 久保, p.108)

 

 こんな留保は日常感覚ではないからである。

 

 

 

以下追記

 

Wikipediaに、そのものズバリな説明があった。

The concept of a null hypothesis is used differently in two approaches to statistical inference. In the significance testing approach of Ronald Fisher, a null hypothesis is potentially rejected or disproved on the basis of data that is significant under its assumption, but the null hypothesis is never accepted or proved. In the hypothesis testing approach of Jerzy Neyman and Egon Pearson, a null hypothesis is contrasted with an alternative hypothesis, and the two hypotheses are distinguished on the basis of data, with certain error rates.
Proponents of each approach criticize the other approach. Nowadays, though, a hybrid approach is widely practiced and presented in textbooks. The hybrid is in turn criticized as incorrect and incoherent—for details, see Statistical hypothesis testing.
Statistical inference can be done without a null hypothesis, thus avoiding the criticisms under debate. An approach to statistical inference that does not involve a null hypothesis is the following: for each candidate hypothesis, specify a statistical model that corresponds to the hypothesis; then, use model selection techniques to choose the most appropriate model.[2] (The most common selection techniques are based on either Akaike information criterion or Bayes factor.)

 

( https://en.wikipedia.org/wiki/Null_hypothesis )

 

 

 

*1:WikipediaのNull hypothesisの項目に、やはりフィッシャーは対立仮説を考えていなかったとある。

*2:「それらの各係数が推定値である(と推論できる)モデル」を帰無仮説において(つまり各係数 = 推定値とおいて)、わざと棄却しなければ自然な論法で示せるんじゃないの?と考える人が居るかもしれない。だが残念ながら、「帰無仮説を棄却しなかった場合に帰無仮説を採択する」という論法はNeyman-Pearsonのわくぐみでは不可能らしい。この「検定の非対称性」については、久保本の5章を参照。 

*3:『「推定された係数値」の「標準誤差」』との関係の話なので、数理統計学の教科書などを漁れば出てきそうだが、今回は未調査である

*4:みんなが使っているから、というのはヤバいことが歴史的に示唆されている。SPSSの歴史からすると、因子分析の回転方法は、かつては当時のマシンでは計算時間がかかりすぎるからというだけで、最善でない方法が選ばれていたという噂を聞いたことがある。今だって計算時間の関係でその種の妥協はしょっちゅう行われている。

東京大学は二流の大学である

(この記事は、以下の大学職員の呟きに触発されて書いている。)

 

 

 

多くの人たちは、
東京大学は一流の大学だと思っているが、
真実はそうではない。
東京大学は、二流の大学である。

 

それは、東京大学に一流の人間がいないということではない。
一流の人間は東大にゴロゴロ居る。一流の資材や制度も無数に存在する。


問題は、三流以下で価値を出せていない人間や制度が、
それよりも比べ物にならないほど大量にのさばっているせいで、
大学全体の平均値として二流程度になっていることである。

 

まともに機能していない必修授業やカリキュラム、
大学教員の指示も伝わらないほど低い一部学生の英語力、
歴史的に形成されたという理由だけで残存している不合理な制度、
教員による雑用など比較優位の原則はどうしたといった感じの慣習の多さなど、
この組織体が抱える問題は多い。

 

だが大衆の意見の逆が、そのまま真実になるというワケではない。

 

東大が世界の大学に比較して二流の大学であるということは、
東大の未来は絶望的であるという主張も、
世界的インパクトが世界の一流大学のそれを超えないという主張も含まない。

 

そもそも、そう考えること自体が、「1位や入賞以外には価値がない」とする競争や、「合格点を満たしていなければ価値がない」とする採用の狭い価値観に染まっている。

 

社会は、どんなサイズのものであれ、
一位や上位のものだけで提供されているわけでは決してない。
チームの作業成果は、チームメンバー各人のアウトプットを
どれだけ最大化できたかの総和や積で決まる。

 

いつまでも理想を追い求めてドアの前で嘆くより、
手元のカードで最善の結果を出すほうがよっぽどいい。

実際そのようなものが、Linuxであり、QWERTYであり、
とても会社名は出せないが、無数の会社であったわけだ。
どれも社会に対するインパクトは大きかった。

 


強力なカードは既にいくつか揃っている。

どの大陸を見渡そうが、どの相手も持っていないほど強力なカードが。

「**学部は大学2年の冬がピーク」とも言われる
半ば形骸化したカリキュラムをものともせず、
勝手に強くなった優秀な人たちが。

 

将棋の歩は素人が思っているより役に立つ。

適切なタイミングで、適切なポジションに居るならば。
役に立った局面で歩を責める人は居ない。
むしろ、歩であることが賞賛される。ちっぽけな歩であることが。
そのときに、歩を内心で馬鹿にしている悪者は存在しない。
そこにあるのが本当の賞賛である。

 

そのような状態が正常であり、
一位のみが生き残る社会より現実的であり、
実現性と多様性の観点から理想であると、
どうして私たちは教えられてこなかったのか?

 

 

二流の大学で育った人間が考えるべきことは、

どうすれば一流の人間になれるか?ではない。

 


それは、どうしたら一流の歩になれるか?である。

 

 

我々の強力なカードの中に、いま、ほんとうに歩は入っているだろうか?

 

 

 

(参考文献 : 

瀧本哲史氏セミナー:「人を動かす最大の武器は魅力的なビジョンである」 

「キーパーソン」の意味に着目して読もう )