2017年3月25日土曜日

進学校あるある

ある日突然、先生が挨拶してくれるようになった

あれは忘れもしない。高校3年生の6月だった。
僕の通っていた高校は地元では有数の進学校で、前の週にはとても難易度の高い実力テストが実施された。採点結果がぼちぼち返ってきた。僕の得点は高くなかったが、級友たちの得点は輪をかけて悪かった。そのテストは、国の指導要領改訂を無視して、何年も同じような問題を使うことで、年度ごとの生徒全体の力量を定点観測する特別なもので、まだ習っていない事柄も容赦なく出題されていた。
その日の朝、厳しくて評判の社会の先生とすれ違った時、「おはよう、最近頑張っている西川君!」と勢いよくあいさつされた。その先生が僕の名前を憶えていたことに驚き、へんてこな挨拶に違和感を感じた。
へんてこな挨拶の理由については心当たりがった。先週のテストの僕の得点はちょっと悪かったくらいだったのだが、級友たちの得点は、目も当てられないほどひどかった。100点満点で平均点が30点に届かない科目もあった。僕の得点はいつもの定期テストよりすこし低いくらいだったので、相対的に僕は高得点ということになる。
僕の高校では、昔ながらにテストの席次が張り出される。それまでの僕は最高30位くらいだったのだけど、後日発表された席次は、2位か3位だったように思う。理系科目に絞れば、ダントツにトップだった。大躍進ということで、目立ったのだろう。社会の先生の大袈裟な挨拶は、こういう理由だった。あまりに態度が豹変したので、僕は気持ち悪くなった。

物理の時間はもっとひどかった

物理に関しては、単独のテストでは生涯最高の偏差値100を達成した。その結果、物理の時間、僕は特別待遇になった。先生の代わりに授業しろ、くらいの信頼を得た。物理の先生は新任のとても若い先生だったんだけど、ちょっと怒られたんじゃないかな。というのも、物理の平均点はきわめて低く、20点くらいだったからだ。指導不足と言われても仕方がない点数だ。でも、その先生のせいじゃないんだけどね。その後、僕は先生を超える扱いをされるようになった。
正直言おう。僕は物理の授業に関しては、「できる生徒」では全然なかった。試験前にちょっと復習して、ようやく意味が分かる、という程度で、予習もしないので、授業内容もよくわかっていなかった。でも、僕は、物理の授業では特別扱いになった。吐きそうだった。物理の先生は好きだったけど、物理の時間は嫌いになった。

進学校のいびつさ

進学校では、大学合格実績がすべてだ。現場の先生にはそのプレッシャーが直接のしかかる。テスト範囲を限定しない実力テストは大学入試の形式に近いので、大学合格実績に直結する。定期テストでは平凡なのに、実力テストで突出した成績を収めるタイプの生徒は、学校にとっては思いがけないプレゼントみたいなものだろう。
たった1回のテストの結果で、先生が手のひらを反す、というのが進学校の現実だ。僕の場合は極端だったけど、すべての進学校で同じようなことが今も起こっている。というか、今の方がもっとひどいかもしれない。

こんなことを書こうと思った理由

この思い出に通じる事件が、とりあえずの区切りを迎えた。名古屋大学の学生の事件だ。彼女は高校時代から怪しい言動があったそうだが、周りは黙殺した。僕の経験からすると、進学校において、急に成績が伸びた生徒というのは特別待遇なので、少々の異常な言動には目をつぶるのだ。それが学校で起こったのは、想像に難くない。不幸だったのは、家庭でも起こったらしいことだ。すでに病みはじめていた精神は、さらに病み、歯止めを失い、そして暴走した。
彼女と彼女の周囲では、勉強ができることが絶対的な価値だったのだろう。彼女の異常さは、そんな環境の中ではぐくまれたのだろう。幸か不幸か、彼女は名古屋大学に進学した。名古屋大学レベルの大学では、単に勉強ができるというのは、大した価値と認められない。むしろ、勉強の価値を否定したうえで、多様な価値をはぐくむのが大学だ。大学2年生というは、勉強以外の価値観に対するプレッシャーが最も高まる時期だ。彼女がそのタイミングで、一線を越えたのは完全に説明がつく。彼女にとって勉強以外の唯一の特別な価値観、人を殺すこと、に彼女はしがみついたのだろう。
平凡な学生は、価値観云々なんて想像すらせず、目の前のレールに乗って、何も考えず社会の歯車になる。彼女は、とても頭が良く、賢いのだろう。本来の大学は、彼女のような規格外の人材を多様性として学術の世界に取り込んでゆく装置だ。それが機能しなかったということは、大学人として残念だ。
彼女のようになった可能性は僕にもあっただろうか?高校3年のとき、僕は単一の価値観に基づいた組織(社会)の危うさを感じた。僕はそれを拒絶した。彼女なら、それを嬉々として受け入れ、最大限利用したろう。僕が思うに、そこがPoint of No Returnだった。


2017年3月21日火曜日

作問についての論考

試験を受ける人と作る人

僕は職業柄、試験問題を作ることがあります。大きく分けて、講義の試験問題と、入試の試験問題があります。自分が試験を受ける側だったときは、試験問題というのは、できそうでできないギリギリのラインを突いてくるものだと思っていました。もっと言えば、ゲームの一種だと思っていました。でも、問題を作る側の思いってそれとはずいぶん違うものだと、今は感じています。
試験を受ける側と作る側で大きなギャップがあって、それが教育に良くない影響を与えているんじゃないかと感じています。試験を受ける側が、試験を作る側の意図を理解すれば、勉強の方向性が良い方向に変わると思うのです。だから、試験問題を作る側の心理を吐露することで、何かしらの利益があると僕は思います。
「入試」の画像検索結果

定期試験の問題作成

定期試験の目的は、学習効果の確認です。講義(授業)で言及した事柄をちゃんと理解しているか、あるいは実践しているかを計測します。講義内容には、いくつかのレベルが存在します。すなわち、必ず理解しているべき内容、実践が期待される内容、できたらいいなという内容という具合です。実践が期待される内容というのは、例えば、英作文や数学の式変形などをイメージしてください。日常的な学習では、これらに加えて、日常的な訓練を欠かしていないか、ということも問題になります。例えば、漢字や英単語の学習です。定期試験では、これらの項目をなるべくまんべんなく問うことになります。
概ね60%くらいは「必ず理解しているべき内容」が占めます。問う方法も平易です。この部分の得点率は80%~90%を想定します。そして20%~30%は、「できたらいいなという内容」になります。「できたらいいなという内容」は得点率が50%くらいになるように調整します。すると、定期試験では、平均点が70%~75%になります。「必ず理解しているべき内容」の正答率が低い場合、教える側に問題があると考えるべきで、授業・講義の形式や内容を見直す目安になります。
まとめると、定期試験では、学習目標に沿った問題設問がなされ、学習効果を確認するための内容になっているということです。応用力や対応力を測るために、少し難易度の高い問題も含めますが、それは将来予定される入試に向けて、偏差値を算出するために必要なもの、という扱いです。100点を簡単に取らせないという教育的配慮もあるかもしれません。

センター試験の問題点

入試の場合、得点分布の分散が大きくなるような問題が良いとされています。得点が低すぎると受験生の気持ちが萎えるので、平均点が60点くらいになるように配慮します。また、内容に関する細かな要請はありません。言い換えると、定期試験と違って、ゲームの要素が大きいということです。

単に得点分布を広げるのが目的であれば、運が左右するような設問にするのが一番です。例えば、極めて難しい4問択一とかで正答率が25%だとほぼ乱数なので、得点分布=標準偏差が最大化されます。また、一問間違えるとその後の設問が全滅になる将棋倒しタイプとかは、ちょっとしたミスや運で得点に大きく得点が変化し、連鎖する設問の標準偏差が直和の形になります(通常は、標準偏差の2乗が和の形になる)。運やミスは偶然が支配するので、得点分布は極端に広がります。しかし、それでは得点と受験生の能力の対応が失われ、本来の入試の意味が損なわれます。模試や私立大学の入試は運の要素が多いような気がします。

センター試験は科目によって異なりますが、運の要素を排するための工夫がいくつか見られます。特に顕著なのは、物理です。物理は本来は深い考察が重要な科目です。考察が深いということは、序盤でミスると最後まで到達できないということです。それを避けるため、センター試験ではそもそも序盤・終盤をなくし、比較的シンプルな短い設問を、たくさん出題するように最適化しました。その結果、問題量が極めて多くなり、速読即解ゲームになりました。それはつまり、本来の物理とは全く異なる代物なわけです。
社会科は別の進化を遂げました。歴史などの特定の領域について、段階的に細かな内容を問うようになりました。その結果、難易度が高い設問は、重箱の隅をつつくようなものになりました。また、そういう形式では、問題量が増える傾向にあるため、出題範囲を広くとることができません。すなわち、ヤマが当たるか当たらないかというギャンブルゲームになりました。
現代文では、複雑な論理を問う問題が出題されるようになりました。そのためには、かなり難解な文章を題材にする必要があります。高品質な論説文というのは、問題設定を適切に絞り込むことで、複雑な論理を避け、平易で理解しやすく書かれています。こうした高品位な論説文では、現代文が取り扱いたい複雑な論理が排されています。そのため、現代文では、比較的低品質の論説文を題材にする傾向があるようです。高校生たちには「良い文章」を読ませたいと思うのが親心ですが、実際には「良くない文章」を一心不乱に読ませるという、まったく不毛なことを行っています。
他にも多くの問題点を指摘することができますが、そういうことが積み重なって、センター試験を廃止する、みたいな短絡的な解決に傾いていて、とても心配です。
「大学入試センター」の画像検索結果

2次試験で問われること

僕が携わるのはセンター試験ではなくて、2次試験の方です。2次試験ではセンター試験では測れない能力の測定を目的にする傾向があります。そして、かなりの自由度が与えられます。自由があるということは、その選択に対して責任を持つということです。自分たちの哲学に基づいて、問題作成に取り組むということが求められるのです。

「哲学」なんて難しい言葉を使いましたが、対象が入試ですので、そんなに複雑にはなりません。我々が入試の問題作成をする場合、最初に考えるのは、「何のために入試をするのか」です。結構哲学的でしょ?
もう少し具体的にいうと、「どんな人に合格してほしいか」ということです。これをもっと掘り下げてブレイクダウンすると、「入試で何を測るのか」「それはどうやったら測定できるのか」というのが最終的な問いになります。その答えとして、入試の問題が出来上がります。

どんな人に合格してほしいかというのは、一般論として述べることができます。
「運の良い人」は要りません。
「勤勉さ」はとても重要です。
「正確さ」「集中力」は重視します。
「独創性」は、あった方がよいですね。

勤勉さ・正確さ・集中力・独創性は、大学や学科・分野に応じて重みが変わります。東大は勤勉さを高く評価し、京大は独創性を見逃さないという印象があるかもしれません。

以上に基づいて、具体的に入試の問題作成を考察しましょう。
まず、運の要素を排するには、選択問題を避けるという方法が有効です。また、設問間の依存関係も避けるようにします。
「勤勉さ」とは、どれだけしっかり学習してきたか、と言い換えることができます。例えば、設問で扱う知識範囲を広くとることで、勤勉さを測ることができます。その結果、周辺知識を問う場合が多くなります。また、教科書の通り一遍の知識ではなく、実体験や観察に基づく問いが設定される傾向にあります。例えば、ふつうは色だけ尋ねる場面で、においを考察させるなんてのは、気が利いています。
「正確さ」は計算をさせると簡単に測ることができます。「集中力」は少し複雑な誘導についてこれるかどうかで測ることができます。「独創性」を測るには、数学なんかで別解を複数用意しておくという方法がとられるかもしれません。
さらに、難易度のグラデーションに注意し、受験生の能力と得点が強く相関するように心がけます。受験生の運や記憶が強く反映されるような問題は徹底的に排除されます。

問題作成側がそのように考えるということは、問題を分析すればわかるはずです。であれば、受験生側の戦略として、問題作成者が合格してほしいと望む人物を目指すというのが合理的になるはずだ、というのが、問題作成者の意図するところです。でも、実際のところは、受験生は手っ取り早く得点を上げたいので、小手先の傾向と対策に明け暮れているように思います。

そういう不幸な事態の原因は、我々問題作成者の思いというものを、受験生、高校等の先生、入試関連業界の人々が、ちゃんと理解していないことだと思うのです。問題作成業務というのはトップシークレットで、問題作成者が思いを伝える機会はほとんどありません。しかしながら、そういう状況は受験システムひいては、高校教育に歪みを与えているんじゃないか、と僕は思っています。通常の作問において、作問者は受験生に問いたい明確なテーマを持っています。そのテーマは作問者の良心に基づいており、学校教育に対するメッセージが含まれています。それをきちっと伝えることで、高校等での教育に良い影響があると僕は思っています。

入試をギャンブルにしてはいけない。

問題作成が教育者を鍛える

ある入試の問題作成の会議で、ある先生が「我々は他人の優劣をランキングするという、罪深いことをしようとしている」とおっしゃいました。入試というのは、無い方が良いものなのです。本来は、合格点が取れたら、本学での教育が可能であることが証明されるという、資格試験のようなものであるべきなのです。入学定員というものが設定されているので、相対的に優秀なものを合格として、入学を許すわけです。不合格の人にも、本学で学ぶ能力が十分に認められるのです。だから、皆、一発勝負でギャンブルするのです。それは本来あるべき入試ではないのです。
その言葉を聞いてから、僕なりにいろいろ考えました。その中で、試験をゲームのように考えないということを真剣に実践するようになりました。他人の人生をゲームで決めるなんて、不謹慎この上ないですからね。
そんなわけで、問題作成を厳密な基準に従って行うようになりました。通常の講義の場合には、期末試験で問う基準を自然に超えられるように、講義内容を整理するようになりました。それはつまり、教育の質について、真剣に考えるようになったということです。

大学の講義では、講義内容を自分の裁量で決定し、計画し、わりと自由気ままに講義します。そういういい加減な雰囲気は、講義を受ける側にも伝わります。そういうのはダメですよね。
期末試験である知識の理解度を問いたいとします。でも、なぜ僕はその知識を学生に理解してほしいのでしょう?その知識を理解するとは、どのくらいの深さを想定するのでしょう?なぜその深さが必要なのでしょう?そういうことに一通りの決着をつけたのち、その知識を講義するには、どのような方法が最適でしょう?と問います。すべての知識を深く掘り下げるのは無理です。なので、それぞれの知識について、あるいは知識体系について、学生はどこまで理解すべきか、を細かく設定します。とても骨の折れる作業です。でも、そういうことをしないと、筋の通った講義にはなりません。逆に筋の通った講義をするには、ゲームではない試験本来の姿を追求するという作業が、とても大事だと思っています。ビジネスの言葉で言うなら、アウトプットを常にイメージする、ということです。

逆に、試験問題を作る作業に真剣に取り組むと、教える側の意識もちょっと変わってくる、と思うのです。高校の先生は、「大学入試のために」定期試験をする傾向が少なからずあります。すなわち、「これに関連する内容が入試によく登場するので、定期試験でもテストしとかなきゃ」ということが当たり前のようになっていると思うのです。本来は、「学生(生徒)には、これを知っておいてほしい」ということをテストすべきです。そのためには、それをテストする理由を、教師と生徒で共有している必要があります。そういうコンセンサスに達するには、なぜその科目を勉強するのか、ということに対して、入試対策以外の意味を見出している必要があります。それが、本来の教育だと僕は思います。

理科なんかは、動機づけが簡単です。教えたい知識に関連した事象について、説明を試みると、その知識が不足するために失敗します。そこから、勉強が始まります。化学だったら、酸化還元と錯体の化学の導入の際に、鉄はさびると赤茶色になり、銅はさびると緑色になるという紹介をするだけで、色って何だろう?となります。さらに、古代より、様々な顔料(絵具)が発明されてきて、その多くが金属酸化物であるというのは、一連の勉強の締めくくりにふさわしいエピソードです。あるいは、陶磁器の絵付けの話も面白いと思います。そういう動機づけをしっかり行うというのが教育だと思います。

試験問題を作成する時には、大きな自由があります。自由の裏には、責任があります。つまり、ちゃんとした理由を説明できないへんてこな問題を出題してはいけないのです。逆に、出題に値する問題・知識って何だろう?と問うことになります。そのとき、大学入試対策という、安易な理由を排除してほしいのです。大学入試の問題作成者たちは、大学入試を取り巻くいびつな環境を改善したいと思っているのです。だから、大学入試対策が無駄になるような問題を作成しようと頭をひねっています。高校が、大学入試対策をあきらめない限り、いたちごっこが続きます。この連鎖を断ち切るのは、入試改革ではなく、高校の先生方です。


2017年3月6日月曜日

考える機械

考えるとは何か

ゴリラは考えるか?と言えば、たぶん、イエス。

改めて「考える」とはどういう行為なのかと問われると、なかなか答えるのが難しいと思います。我々は漠然と「考える」という行為を理解しているのですが、「考える」プロセスを明文化しようとすると、普通は戸惑います。

「考える」という行為に僕が興味を持ったのは、コンピュータのプログラミングを始めたばかり、14歳の頃です。プログラミングというのは、処理手順を厳密に記述する行為にほかなりません。何か対象とする操作や処理があったとき、コンピュータに実行させる手順書がプログラムです。対象がコンピュータでなくても、手順書を作成する際には、まず自分がやってみて、それを整理し、明文化するという段階を経ます。コンピュータに対して手順書を書く場合に難しいのは、コンピュータが理解できるように細かな部分まで明文化しないといけない点です。
人間相手の手順書というのは、いろんな部分があいまいでも構いません。手順書を読む人があいまいさを勘案して、うまい具合に調整してくれるからです。でも、コンピュータ相手だとそういういい加減さは許されません。そのため、各処理手順において、普段は検討しないような細かなことまで一つ一つ記述しなければなりません。その際、普段は意識しない判断基準なんかを掘り起こす必要が出てきます。つまり、手順を確認している最中に「今、どういう風に考えたっけ?」と自問するわけです。プログラミングというのはそういう自問の連続です。そういうのを繰り返すうち、「今、どういう風に考えたっけ?」という問いに答えるのが、案外難しいということに気づきました。

僕らは「考える」という行為の大部分をほとんど意識しないレベルで行っています。そのプロセスはかなり複雑で大規模なのです。もしかすると、あまりに複雑すぎて我々の知覚能力を超えているのかもしれません。そのため、意識しようとしてもできないのかもしれません。少なくとも、プログラミングで必要とされるレベルの「考えるプロセスの知覚」ですら、かなりの苦痛を伴います。だから、プログラミングは難しいのです。プログラマは「考えるプロセスを知覚する」というスキルを常に磨くことになります。その点で、普通の人とはちょっと違ってくるのです。
「考えるプロセスを知覚する」のが難しいので、それを明文化するのも困難なわけです。明文化が困難なので、コンピュータに「考えさせる」ことは難しく、その結果、人工知能というものがなかなか実用レベルに至らなかったのだと思います。

僕の個人的なこと

僕にはちょっとした特殊能力があります。それは、その場で答えがでないような難しい課題を、とりあえず記憶しておいて、数か月後に思い出すと、その時には答えがわかる、という能力です。途中、その課題のことはすっかり忘れているのですが、何かのきっかけでその課題が話題になると、頭の中に答えが浮かんでいます。課題の難しさによって、答えが浮かぶまでの期間が違ってきます。一週間程度で思いついている場合も多いですが、数年かかることもあります。まるで、僕の頭の中に、もう一人の僕がいて、代わりにずっと考えてくれているとしか思えないような、魔法のような体験です。この能力のおかげで、いろいろ楽をさせてもらっています。
これはPHPのコードだと思うけど、よくわからない。僕はPHPを使えるんだけどね。

プログラミングの際には、別の特殊能力があります。優秀なプログラマにはよくあるんじゃないかなと思いますが、一瞬で複数のアルゴリズムを思いついて、それぞれの効率の良し悪しを判定できるというものです。同時に知覚できるのは、2、3種類ですが、時間をかけて整理すると、20種類くらいのアルゴリズムを検討した結果、優秀なものを2,3ピックアップした、ということがわかります。数学の問題で、正攻法と別解があって、どっちを答案にしようかと迷う感じに近いです。普通の人は、正攻法を思いついて、面倒そうだなと思った時に、別解がないか検討すると思います。この能力の場合、正攻法と別解を瞬時に思いついてそれぞれの利点と欠点が自動的に理解できる、という感じです。おかげで僕は数学でも楽させてもらいました。
ベテランプログラマになると、たいていのことについてプログラムできることは当たり前で、さらに上のレベル、つまり効率よくプログラムすることが求められます。具体的には、複数の候補の中から最適なものを選び取るというステップが加わります。効率というのは、プログラムのサイズ、処理能力、スピード、拡張性、汎用性などが基準になります。複数の観点がありますので、どれが最適なのかは自明ではありません。つまり、どの基準を優先するかによって、最適なプログラムが変化しうるのです。正しく選び取るには、それぞれのプログラムをシミュレートして検討する必要があり、結構な労力になります。僕の場合、それが一瞬で完了します。おそらく、スーパープログラマと呼ばれる人たちは、みんなそれができます。

なぜそんなことができるかはわかりません。頭の中に自分の分身がいて、いろんな候補をせっせと検討してくれている感覚です。僕が知覚するのは、各候補の概要と検討された項目の結果です。それらの結果を見比べて、与えられた条件に最適なものを選び取るのが、僕の役目です。選び取ったら、その候補に意識を集中するだけで、詳細が知覚されます。あとは、その詳細にしたがって、プログラムを書きます。
プログラミングにおけるこの能力は、最初に述べた特殊能力と本質的に同じだと僕は思っています。プログラミングというのは問題が限定的で、あいまいさが少なく、探索範囲が限定されます。そのため、一瞬で答えが浮かびます。一般の問題になると、多くのあいまいさがあり、必要とされる知識の範囲も限定されません。そのため、一瞬では探索が終わらないのだと思います。そのままバックグランドタスクとなって知覚できないレベルで、こっそり、ゆっくりと探索が進んでいるのでしょう。
木城ゆきと「銃夢」の一場面。脳をチップで置き換えられた人。

重要なのは、ここに述べた僕の特殊能力は、ほとんど自動的だということです。僕の制御をほとんど受け付けません。僕の意識から切り離されて動作するコプロセッサみたいな感じです。僕は、そこにタスクを投げて、ときどき進捗をチェックするわけです。それは僕の一部ではあるのですが、中身は知覚できません。ある種のブラックボックスです。僕はそれを「考える機械」と呼んでいます。
僕は、僕の中の「考える機械」は自動的に四六時中動作していると考えていますが、もしかすると、僕が意識した時だけ動作しているのかもしれません。「考える機械」は様々な知識や要素の無数の組み合わせを瞬時に生成するだけかもしれません。でも、そうすると、最適なアルゴリズムを選択的にかつ瞬時に思いつくという効率の良さを説明できません。また、難しい課題ほど答えを見つけるのに時間がかかるということも説明できません。今のところ、僕の中の「考える機械」は非人間的で不完全だけれども独立した人格だと、思っています。

年をとるにつれて、僕は「考える機械」の使い方を少しずつ開拓しています。僕は職業柄、いろんな人から相談事をされます。自分の本業の研究のことが多いですが、その周辺に関するいろんなことが話題に上ります。その中で、様々な可能性を話すことがあります。その時、「考える機械」を使って検討しています。
最近、日産が発電専用のガソリンエンジンを搭載した自動車を市場に投入しましたが、そのコンセプトは10年くらい前に、自動車の未来に関して相談を受けた際に、最有力候補としてお話したものと同じです。僕の話が日産に伝わったとは思いませんが、先入観なしにいろんなことを検討した結果、それが最も良いということが「わかる」のです。発電専用のエンジンならば、もっと小型でよいはずなので、今後、そういうバランスを採用した自動車が登場するでしょう。そういうのが、雑談のなかで、瞬時に検討できるというのが、僕の強みになっています。
僕の中の「考える機械」は、プログラミングスキルを向上させる過程で形成され、いつの間にか大きく複雑になってきた気がします。
e-POWER型の自動車がこれからもっと流行するはず。

AIは考える機械と言える

僕の中の「考える機械」は、様々な可能性を検討し、評価を与えるという典型的な思考プロセスのひとつを自動化したものだと理解できます。評価関数をどのように設定するかは自明ではありませんが、経験や知識から構築されるようなもののはずで、それは機械学習が得意とする分野です。なので、僕の中の「考える機械」は、最近主流の機械学習型AIに近い気がしています。
機械学習型AIは万能ではありません。機械学習型AIは結局のところ、非常に複雑な評価関数でしかありません。しかも、出力は極めて単純です。プログラムの効率に関して議論したように、現実の問題では、評価の観点がたくさんあり、ケースバイケースで観点の重みが変わってきます。そういう柔軟性を持たせつつ、万能な評価関数が構築できれば、とても素晴らしいことです。
万能な評価関数というのは、平たく言うと「価値観」と言えます。人間の個性は価値観の違いに基づくわけですから、人間の数だけ「価値観」があります。そういう多様性はAIには難しいんじゃないかな、って僕は思います。

さて、僕の中の「考える機械」は、プログラミングの問題においては、すでに出来合いの評価関数を持つはずで、だから一瞬で答えが出てきます。一方、一般の問題に対しては、
評価関数を自分自身で構築するところから行いますから、時間がかかります。もちろん、評価関数のひな型はあるはずです。それは、サイエンスの方法論だったり、論理学だったりするかもしれません。あるいは、勉強しているうちに構築された論理体系かもしれません。「考える機械」の部分は、僕の一部でありますが、僕自身では中身を知覚できないのです。ある候補を入れると、ぼんっと答えが出る、そういうブラックボックスのように感じるのです。
人工知能は人間の知性に似て非なるもの。

「考える機械」がAI的だと思うと、AIの限界が見えてくる気がします。例えば、動機づけが外的要因に頼っているのは、弱点だと言えます。あらゆる可能性を網羅的に探索するので、効率面では改善の余地があります。答えが正しいかどうかということは二の次になることも問題かもしれません。単なる評価関数なわけですから、何かしら数値のようなものが結果になります。それがベストかどうかは、別の問題なのです。

多くの人が指摘するように、動機づけが通常の人間の価値観から逸脱するかもしれない点は、AIの欠点です。AIの中に動機づけを含ませることも原理的に可能です。しかし、肉体の制約を持たないAIは人間の価値観に本質的にそぐわないことを注意すべきです。極めて限定的な指標(数値)で評価を決するという構造的な問題はAIについて回るでしょう。
こうしたAIの欠点はすなわち「考える機械」の欠点でもあります。それは非人間的で不完全な印象を与える原因になっています。僕の場合、「考える機械」以外の普通の人間の部分が「考える機械」を制御することで、良いバランスが保たれています。この構造はAIにも適用可能なはずです。ある種の良心に基づくモチベーションによって、AIが健全に運営される、そういうソリューションがあるはずです。良心に基づくモチベーションというのは、直接人間が担うべき役割なのかもしれません。結局のところ、AIであっても、使うのは人間だ、ということなんでしょう。

考えるプロセスの一般論

もう一つ話題があります。普通の意味での「考える」という行為の分析です。何かを「考える」というとき、我々はどのような処理を頭の中で行っているでしょうか?

「考える」にもいろいろあるので、例えば、数学の問題を想定しましょう。大学入試くらいになると、かなり難しい問題もありますが、そういう一部の例外を除くと、出題パターンは限られます。50種類もあれば、90%をカバーするでしょう。なので、典型的な出題パターンとの類似性を検討し、当てはめる、ということが「考える」ということになります。
つまり、データベース化された出題パターンを「検索」して、「当てはめる」という2つの段階があるわけです。検索の際の判断基準は、類似性になります。当てはめるというのは、類似性を解析して、解答例を修正するという作業です。類似性が高ければ、当てはめが可能なので、もっとも類似のパターンを探し出すという部分に最も時間がかかります。

実のところ、大学入試レベルの「考える」というのは、ほとんどが「勉強したことの検索」に尽きます。なので、ぼやっと生きていると、「考える」=「検索」と短絡しているかもしれません。しかしながら、何か新しいパターンの課題に対しては、この方法は無力です。また、「検索」ならコンピュータの方が早くて正確で、人間はかないません。「考える」というのが脳内検索にとどまるレベルでは、お話になりません。

ブレインストーミングというのは、一人のアイデアマンの成果をみんなで奪い合うゲームと言える。

次に、アイデア出しにおける「考える」を考察してみましょう。ブレインストーミング(BS)というやつです。BSでは、キーワードから連想される項目をとにかくあげつらいます。それはすなわち「脳内検索」そのものです。通常の検索では、評価関数をうまく設定して候補を絞り込むというのが重要になりますが、BSでは評価関数を甘くして、なるべく多くの候補をひっかけるということを行います。しかし、普通はあんまりうまくいきません。脳内で検索対象となる項目は、せいぜい1000個くらいです。実際に言葉で挙げようとすると、100個くらいから苦しくなるものです。全体の1%くらいがヒットあるいは脈ありとすると、BSで採用できるのはたったの10個程度となります。
BSで活躍する人を観察すると、ある特徴があるはずです。それは、組み合わせです。基本要素が100でも、2個組み合わせると1万通りになります。ヒット率が同様に1%とすると、100の候補が得られます。もし、3個の組み合わせなら、爆発的に候補が出てきます。つまり、それはアイデアが豊富ということです。
この事例からわかるのは、「脳内検索」だけでなく、「組み合わせの検討」が「考える」という行為に加わっているということです。実のところ、組み合わせこそが、「考える」という行為の本質だと、僕は思っています。

「考える」達人への道

まとめると、「考える」行為の本質は、①要素を列挙し、②組み合わせを考え、③それぞれを評価する、ということになります。そうすると、「考える」というプロセスを最適化するには、要素を増やし、網羅的な組み合わせを検討し、最適な評価法を構築する、の3つを実現すればよいでしょう。
要素を増やすということは、情報のインプットを増やすということです。いろんな勉強をし、いろんな刺激を受け、いろんな体験をする、という積み重ねが大事です。一人では限界があるので、BSではこの段階を皆で行うわけです。
つぎは、得られた候補にに関して、網羅的な組み合わせを検討します。方法論を理解すれば、機械的な作業です。なので、これが最も簡単です。BSの後の検討会ではこれを皆で行うべきところです。しかし、形式的なBSだと、その次の段階である評価ばかりやってしまいます。だからBSはうまくいかないのだと思います。最後のポイントは、評価法の最適化ですが、これが最も自由度があります。というか、それこそ多様性の問題になります。一般の問題において、答えが唯一に定まらない理由です。

評価の結果、ランキング上位を結果として取り出すことを、「検索」と呼びます。そのとき大事なのは、評価の方法で、Googleは稀に評価法を変更するので、それがニュースになります。「考える」ことが究極のアルゴリズムだとするならば、要素の列挙や網羅的な組み合わせは、実はコンピュータの得意とするところです。最後の評価のところをどのくらい柔軟性を持たせて最適化するかというのが、究極のアルゴリズムに向けての勝負どころであることがわかります。だからこそ、評価法の変更は重大事なのです。
現在、評価法として最有力なのが、機械学習です。機械学習は厳密にはAIではなく、単なる評価法です。データを入力すると、評価値としての結果が出力される、そういう装置です。中身の演算には無数の隠れパラメータが存在し、あらゆる評価法を模倣することができます。この機械学習に、要素の組み合わせを網羅的に入力し、検索することで、「考える機械」が完成するという仕組みです。こうして出来上がった人工知能に、人間が勝てる見込みは極めて少ないと言えます。これがシンギュラリティ2045年問題の本質です。
人工知能がすべての人間の知性を置き換えると考えるのは、単純に過ぎる。
もし、人工知能のような巨大な集合知性が効率的なら、生物はそのように進化したはずだ。

5なぜ運動

いやいや、「考える」ってのはそんなに単純じゃないよ、という意見もあります。反論として挙げられるのが、「5なぜ運動」です。「5なぜ運動」はトヨタの社員教育で提案され、完成されました。何かの問題・課題があったときに、とりあえず「答え」が見つかったとします。でもその「答え」に満足せず、なぜその「答え」に至ったのか、その「答え」が意味することは何なのか、と次に問います。「答え」に対する問いにたいして「答え」見つけたならば、さらにその「答えの答え」に対して問いを設定します。そのようにして、5回ぐらい掘り下げると、「真の答え」にたどり着く、という経験則があり、それゆえ、「最初の答え」に満足せず、5回くらい掘り下げよ、という方法論が「5なぜ運動」です。

前節までは、一つの「答え」にたどり着くためのプロセスのことを「考える」としていました。その「答え」では満足すべきでないというのが「5なぜ運動」です。5なぜ運動は効果がありますし、真の理解に至るにはとても良い方法論です。なので、これを取り込むと良いでしょう。それは簡単に見えます。
しかしながら、実際に5なぜ運動を実行するのは結構難しいのです。難しい理由は、とりあえず見つかった「答え」に対して、適切な問いを設定するのが難しいからです。これを行うには訓練が必要です。形式的には5回の問いかけを繰り返すわけですが、もちろん5回より多くても少なくても構いません。深い思考では、無数のなぜを繰り返すというのが理想です。しかし、問いかけを重ねてゆくほど、問いの設定が困難になります。ふつうの人は5回くらいで限界じゃね?というのが「5なぜ運動」の示す経験則です。

要素の組み合わせを網羅的に評価する基本の「考える」プロセスを何度も繰り返すというのが「考える」達人に至る道のような気がします。単純な繰り返しなら、コンピュータの得意とする分野であり、人間に勝ち目はありません。でも「なぜ」の繰り返しにおいて、「適切な問い」を設定し続けるという手順があり、それが難しいということがわかります。実際のところ、「適切な問い」というのが、極めてあいまいな問題として残っているのです。あいまいということは、いろんな可能性があるということです。それはつまり、評価法が定まっていないということです。もっと言うと、多様性が存在するということです。その多様性こそ、人工知能が不得手とし、100億にも届こうという人類が持つ最大の利点なのです。さて、今、「5なぜ運動」やりましたよ!
なぜなぜ分析
僕はトヨタは好きじゃないですけど、なぜなぜ分析は方法論として正しいと思います。

人工知能は究極の「考える」達人になりえるか

我々が「考える」達人に至るために、長い時間をかけて訓練すべきなのは、「問いかける能力」だと僕は思います。それはつまり、問いを発するモチベーションだと、喝破します。人工知能は、肉体的制約がないため、自己保存という生物が本質的に持つモチベーションを持ちません。単にそういうモチベーションを持たないというだけでなく、実のところ、一切のモチベーションを持たないのです。

映画「ターミネーター」で描かれたディストピアでは、人類の存続のためには、地球の保全が必要で、そのためには人類の数を減らす必要がある、という論理で大量殺戮が生じるという設定です。人類の存続という短絡的なモチベーションを持つと、人工知能が極端な結論に至るというのは十分にあり得ます。

アイザックアシモフは、ロボット三原則において、人を傷つけないという原則だけでは不十分であることに気づいて3つの原則を設定しました。
(第一条)ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない。
(第二条)ロボットは人間にあたえられた命令に服従しなければならない。ただし、あたえられた命令が、第一条に反する場合は、この限りでない。
(第三条)ロボットは、前掲第一条および第二条に反するおそれのないかぎり、自己をまもらなければならない。
この原則に従うと矛盾が生じるシチュエーションがあり、アシモフはそれについて、多くの物語を書いています。さらに、ロボットの能力が「人類」全体より高い場合には、ロボット三原則の「人間」を「人類」に読み替えることが理論的に可能であるということにアシモフは気づきます。つまりアシモフはシンギュラリティの存在に気づいたのです。そのアイデアを熟成させ、ロボット三原則の書かれた1963年の「われはロボット」から20年以上経って、1986年の「ファウンデーションと地球」において、ロボット三原則第0条を発表しました。
第0条は条文としては存在しませんが、作中に登場するロボットのセリフで語られます。「人類全体に対する危害を阻止することは、特定の個人に対する危害の阻止に優先すると考える」

このテーマは、多くのSFで繰り返し登場します。その一つが「ターミネーター」ですし、「マトリックス」でも扱われています。
I, robot
映画「I, Robot」より。ロボットのようなスタンドアローンシステムでは自己保存圧力が働くかもしれない。

でも人間はそのように考えません。それは我々が肉をまとった生物であるからです。哲学者たちは人間の肉の部分と精神とを分離し、純粋な精神を追及してきました。しかしながら、それはまだまだ自己満足です。肉から精神を分離できたかもしれません。でも生から精神を分離できていません。まだまだ純粋な精神からは程遠いのです。しかし、それは人間が望むものではないと僕は思います。人工知能は、生まれながらに肉をまとわず、生と死から解放されています。哲学者たちが渇望する純粋な精神と言えるはずです。しかしながら、それは人類が理想とするものとは全く違います。

早晩、人工知能がある種の万能性を獲得するでしょう。でもその万能性は人間のそれとは違うものでしょう。1960年代にアシモフが思い描いたコンピュータ(ロボットの陽電子頭脳)は極めて人間的なものでしたが、現実のコンピュータの能力は限定的なものであることを我々は知っています。それと同じように、現在我々が思い描く人工知能は人間のほとんどの能力を置き換えるものだと思われています。もちろん、人間の多くの能力を人工知能が置き換えるでしょう。しかし、利用が進むにつれ、人工知能は人間を完全に置き換えるものではないということがだんだんとわかるでしょう。

人工知能は「問い」を発しません。モチベーションが内在しないからです。デカルトの「我思うゆえに我あり」は人間の根本的なモチベーションが自己存在の肯定であることを意味しています。人工知能には自己存在を問う理由がないので、「我思うゆえに我あり」は真だと答えますが、そのような問いを発し、それに特別の意味を見出すことはないでしょう。
僕の中の「考える機械」は近い将来登場する万能型人工知能に極めて近いものだと思っています。僕の自我が「問い」を作成し、「考える機械」が推論するという役割分担は、人類が人工知能とうまく付き合ってゆくためのモデルケースなんだろうな、と漠然と思っています。
デカルト
デカルトが現代に生きていれば、人工知能のことを考慮して、違う言葉を考え出すかもしれない。

2017年3月1日水曜日

数学的センスは測定できるか?

この記事は、facebookのノートという機能を使って作成した記事の転載です。

モチベーション

2015年11月末に行われた京都大学特色入試では、一風変わった問題が出題されました。それを検討し、出題者の意図を考察したいと思います。まず、問題を示し、僕の考える模範解答を示したのち、ちょっと掘り下げます。
ちなみに、僕は数学者じゃないし、数学の専門教育を受けたこともありません。でも、試験問題を作る機会もあるので、作問者の視点というのがあって、そういう視点で見ると興味深いのです。

問題

n枚のコインを用いて一人で以下のゲームを行う。
・まず、ゲームの初期状態として、n枚のコインを円周上に等間隔に並べる。各コインは表または裏である。
・以下の操作を何回か繰り返す。
操作…並べたコインから連続するk枚を選び、選んだコインを全てひっくり返す。
・この操作を何回か行った結果、すべてのコインを表にすることができれば、ゲームは終了する。

初期配置の図


(1)n=7、k=3とする。初期状態が図1のとき、このゲームを終了させることができることを示せ。また、すべてのコインを表にするまでに必要な操作の最小回数を求めよ。
(2)n=6、k=3とする。初期状態が図2のとき、このゲームを終了させることができないことを示せ。
(3)どのような初期状態であっても必ずこのゲームを狩猟させることができるための、n、kに関する必要十分条件を求めよ。

答案概要

まずは、答案を作ろう。僕が予想する模範解答の概要は以下のようなものだ。

m番目のコインからk枚のコインを裏返す操作は、(可換)かつ(相殺)であるので、組み合わせで実現できる「簡約」な操作を考えることができる。簡約操作の総数はコインの状態の総数と一致するので、簡約操作に重複がない場合には、操作と状態が1対1写像になる。それは、任意の1枚のコインを裏返す操作が存在し、パズルが可解であることと同値である。

答案

定義 特にことわりのない限り、mを1~nまでの任意の整数とする。また、答案中に使われる文字変数はすべて整数である。
定義 m番目のコインからk枚のコインを裏返す操作をKmと書くことにする。また、Km=K(m)と書いてもよいとする。例えば、k=3のときは、3(1)のように書くことにする。
定理1 n枚のコインの表裏で決まる状態の種類は、2のn乗である。
証明 自明なので省略
定理2 (逆元・相殺)同じ操作を2回くらい返すと、元に戻る。すなわち、Km Km =φ。ただし、φは操作なしを意味する。
証明 自明なので省略
定理3 (可換)a, b=1 … n として、Ka Kb = Kb Kaである。
証明 ほとんど自明なんだけど、いちおうやっとく。
本系では、コインが円環状に配置されているので、a=1かつa<bとしても一般性を失わない。a+m≤bのとき、KaとKbはオーバーラップを持たないので、命題は自明。
a<b<a+kのとき、b番目から、a+k-1番目まで、オーバーラップがあることになるが、オーバーラップ域は、コインが2度反転して元に戻るだけ。これは順序が入れ替わっても同じ。なので、命題が成立する。
定理4 操作Kmを組み合わせて実現できるすべての操作の総数は2のn乗である。
証明 Kmの組み合わせは、Π(i=1…) K(1…nのいずれか)であらわされるが、定理3によって、操作順序を入れ替えることができるので、K1^Q1 K2^Q2 K3^Q3 …. Kn^Qn と書くことができる。ただし、Qiは正の整数。
さらに、定理2より、Qiは2の法とすることができるので、
Π(i=1…n) Ki^(Qi mod 2)=Π(i=1…n) Ki^(0 or 1)
つまり、n種類のKiのそれぞれについて、使うか使わないかという組み合わせ=可能な操作、となる。このようにKmの重複をなくした操作のことを簡約操作と呼ぶことにする。可能な簡約操作の組み合わせは、あきらかに、2のn乗である。
定理4’ 簡約操作は、特定のコインの状態に対応させることができる。
説明 Kmはコインの状態だけを変化させる操作である。したがって、任意の状態のコインに対し、あらゆるKmの操作とその組み合わせを適用することで、コインの状態が変化するものの、コイン以外の状態が変化することはない。例えば、すべて裏の状態を初期状態と仮定すれば、簡約操作のそれぞれは、何らかのコインの状態に対応付けることができる。数学用語で、「閉じている」という状態である。逆に、2つ以上の簡約操作が同じコインの状態に対応付けられるとき、重複していると言い、それらの簡約操作は等しいと言う。
定理5 n枚のコインの任意の1枚をひっくり返す操作が存在することの必要十分条件は、Kmの組み合わせで実現できる2^n個の簡約操作のすべてに重複がないことである。
証明 任意の一枚をひっくり返すことができれば、それを繰り返すことで、あらゆるコインの状態を実現できることは自明である。
定理4’により、コインの状態と簡約操作が対応し、定理1、定理4により、コインの状態と操作の総数が同じなので、重複があると、コインの状態数と操作の総数が対応しなくなり、すべてのコインの状態を作り出すことは不可能。任意の1枚のコインをひっくり返せるということと矛盾する。したがって、命題は正しい。
定理6 p、rを正の整数とし、n=pk+rのようにp、rを決める。このとき、Kmの組み合わせによって、~Rmを作ることができる。ただし、~は全コインの反転を表す。すなわち、~Rmはm番目からr枚のコインを残してすべて裏返す操作である。
証明 ほとんど自明。
~Rm=K(m+r) K(m+r+k) … K(m+r+(p-1)k)である。
定理7 kが奇数の時、全コインの反転~φ=Π(i=1…n) Kiである。
証明 ほとんど自明。
Π(i=1…n) Kiにおいて、すべてのコインは、k回の(裏返し)操作を受ける。kが奇数であれば、反転することになる。
定理7’ kが偶数の時、1(m)の操作をつくることができない。
証明 定理7と同様に、Π(i=1…n) Kiで、各コインはk回の操作を受ける。kは偶数であるので、Π(i=1…n) Ki=φとなる。簡約操作に重複があることになるので、定理4によって、任意の1枚のコインをひっくり返す操作1(m)は存在しない。
定理8 nとkが割り切れるとき、1(m)の操作をつくることができない。
証明 pを自然数として、n=pkとする。k=1のときはゲーム自体が成立しないので、除外できるため、kは2以上を考える。
2つの簡約操作Π(i=1, 1+k, … 1+(p-1)k)KiとΠ(i=2, 2+k, …, 2+(p-1)k) Kiを考える。これらの操作では、ともに、すべてコインが1回の反転操作を受ける。すなわち、
Π(i=1, 1+k, … 1+(p-1)k)Ki=Π(i=2, 2+k, …, (p-1)k) Ki=~φ
簡約操作に重複があるので、定理4によって、任意の1枚のコインをひっくり返す操作1(m)は存在しない。
定理9 定理6において、~φが存在するとき、Rm=~φ ~Rmである。
証明 自明
定理10 定理6において、k<rかつk=tr+sかつs=( k mod r)としたとき、Sm=Km R(m+s) R(m+s+r)…R(m+s+(t-1)r)である。
証明 ほとんど自明。
Kmで裏返したコインのうち、s枚を残してそれ以外のコインを1回あるいは複数回のR(m’)の操作によって再び裏返す。これにより、s枚のコインだけを裏返す操作Smを作ることができる。この操作を式で表すと、定理10となる。

(1) n=7、k=3
7=2×3+1なので、定理6において、p=2、r=1とすることができる。定理9によって、1m=~φ3(m+1)3(m+4)である。(ちなみに、1mの簡約操作は5回の操作で構成されるので、この表示の方がわかりやすいし、あとの計算が楽になる。)
コインの表を○、裏を●で表わし、コインの配置を○●○●●○●とする。左から、1…7の番号を割り当てる。裏返すコインは、2番4番5番7番の4枚になるので、1(2) 1(4) 1(5) 1(7)の操作を行えばよい。

1(2) 1(4) 1(5) 1(7)=(~φ)^4 3(3) 3(6)  3(5)  3(8-7)  3(6)  3(9-7) 3(8-7) 3(11-7) = 3(3) 3(6) 3(5) 3(1) 3(6) 3(2) 3(1) 3(4) = 3(2) 3(3) 3(4) 3(5)

この操作は簡約である。定理5より、任意の1枚をひっくり返す操作が存在するときには、簡約操作とコインの状態が1対1に対応する。したがって、この4回の操作が最小回数である。
補足 1mの操作があるときには、簡約操作に重複がないので、この簡約操作以外に図1の状態を全て表にする簡約操作は存在しない。とまで言及するのは蛇足か?あるいは、それを言わないとこの操作が最小手順であることを示したことにはならないか?

(2) n=6、k=3
前問と同様に、コインの配置を○●○○●●とし、左から1…6の番号を割り当てる。
3(4) 3(2)の操作を行うと、
○●○○●● 3(4) 3(2) =○●○●○○ 3(2) =○○●○○○
3番のコインだけ、裏となり、すべてを表にするには、1(3)の操作が必要になる。
n=6がk=3の場合、nがkで割り切れるので、定理8より、任意の1枚を裏返す操作は存在しない。したがって、1(3)の操作を作ることができない。ゆえに、解はない。

(3) パズルに解が存在する条件
任意の1枚をひっくり返せる場合、すなわち、1mが存在するには、パズルに必ず解があるのは自明である。逆に、任意の1枚だけをひっくり返した状態からスタートした場合、必ず1mが必要になるので、1mがない場合には、解けない場合が生じる。以上より、パズルに解が存在する必要十分条件は、1mの操作が存在することと結論できる。
定理10は、sをrに読み替えて、繰り返し適用することができる。定理6において、0≦r<nとすると、rはnをkで割った時の余りになる。すると定理6⇒定理10はnとkを対象にしたユークリッドの互除法になっていることがわかる。ユークリッドの互除法のあまりが最終的に1になれば、定理9によって、1mを作ることができるのは自明である。ユークリッドの互除法で、あまり1になるのは、nとkの最大公約数が1であるということである。普通には、nとkは既約と呼ばれる。
また、定理8より、kが偶数の時には1mを作ることができないので、これを除かなければならない。
まとめると、パズルに解が存在する必要十分条件は、kが奇数かつnとkが既約あること、である。

Discussion

この問題は明らかに、数学者としての「センス」を試すために作られている。高校までの数学は計算に大きなウェイトがあり、計算の手法を熟知し、自由に組み合わせる能力が高いほど、有利になっている。斯く言う僕も、ごく最近まで、数学=計算と思っていた。その意味では、数学というより算数と呼ぶことを好んでいた。その最近、ある本を読んで、現代数学というのは、数字を取り扱うことが目的じゃなくて、様々な事象に数学的構造を見出し、その構造を明らかにすることが本来の目的で、数というのはいろんな数学的構造のモデルを作り出すためのツールなんだ、ということを学んだ。それはまさしく、算数と数学の違いだ。大学では、本当の意味での数学をやっていかないといけないわけで、その素養を見たいというのはよく理解できる。ちなみに、そういうことをちゃんと説明してもらえなかったので、僕は学生の時に数学を完全に放棄した。

数学に対する一般の認識を受けて、大学入試では、計算の組み合わせに長けた人=数学に向いている人となっており、本当の意味での数学者の卵を選抜する仕組みになっていない、というのが大学側のジレンマとしてあったのだろう。その思いが、この問題から感じ取れる。Webで見ると、7x7や6x6の行列をつかった力技の解法が示されているが、いくらmod 2の系であっても、そんなに高次の逆行列を手計算で求めるのは大変だし、高校では高次の行列を扱わない。というか、最近は行列をやらない。行列を用いた解法は将来の受験生に対する誤ったメッセージになってしまうので、出題者側は避けるはずだ。代数的方法でパズルを解くと、このパズル自体の代数的構造をスルーしちゃうので、数学にならない。だから、出題者は、僕の答案のようなアプローチを期待してたと思う。

このコインのパズルは、典型的な群になっている。単位元φが存在し、逆元は同形で、可換で、というちょっと特殊だけど、立派な数体系(群)だ。その数体系を探り、性質を明らかにし、境界を見極めるという、数学の本来のありかたを比較的短い時間で達成できるように練られている。n=7のつぎにn=6を持ってきて系を単純化させて、解なしを導かせるのは、かなりのヒントになっている。これがn=5からn=6だと、ダメなのだ。このコインのパズルに数学的構造が存在することが、n=7によってピンとくるようになっている。というか、n=7をパズルとして解こうとするとちょっと難しい。n=7だと、必勝法を見つけなくてはならないと感じる。n=7だと、必勝法は比較的容易に見つかる。それは、任意の1枚をひっくり返す操作である。でもそれを組み合わせても最適解にはならない。最適解にするにはどうしたらよいか?すると、コインを反転する操作の性質(可換・逆元)を見つける。その性質を使って、公理系を構築することで、解の最適化に到達する。
最適化された解が、最少手数なのかどうかを証明するためには、もうひと山超えないといけないが、自前の演算系を構築し、運用できるセンスがあれば、超えることができると踏んだのだろう。そこを超えれば、あっという間に最後まで到達する。僕は3分だった。ただ、細部を詰めるには、数時間かかった。制限時間内で完全な答案を作成するのは僕には無理だ。

さて、高校生がこの問題を解けるか?と考えたとき、ちょっと難しいように思う。この問題は典型的な有限群で、操作に制限があって、対称性があるときとないときを議論するように設定されている。専門レベルの数学を知らない状態でアドリブで解けるなら、Abel級の才能かもしれない。出題者は明らかにそれを狙っているが、それは虫が良すぎるかもしれない。
こうしたパズルに数学的構造を見出すのはよくあることだ。このコインの話を一般化するとルービックキューブに近いものを作ることができる。1面3x3のルービックキューブは制限のついた単一の操作と有限の状態数で構成されたパズルで、今回のコインパズルに通じる。ただ、ルービックキューブを見て、数学的構造を解析する高校生は多分いない。でも出題者はそういう感性を持った人を望んでいるのだろう。成功したのかどうか、気になる。

ちなみに、京大数学科では、大学院は2種類あるそうだ。学者を目指すコースと、修士卒で民間に就職するコースだ。昨今、理系は修士卒じゃないとダメらしく、数学科も修士卒に対応しているらしい。従来、京大数学科の大学院は学者養成を目的としていて、ほとんど人を取らないことで有名だった。入試問題も強烈で、試験時間は4時間だったか5時間だったかで、とりあえずたっぷり与える。数問出題されるけど、1問完答できれば、文句なしで合格というものだ。ちょうど、今回の特色入試と似ている。というか、試験が数学オンリーな点も含めて、特色入試は数学科の学者コースの青田刈りなんだろう。それを思うと、今回の問題は高校生用にかなり調整されている。院試では、より抽象的で、解けるか解けないかギリギリな感じの問題が出題されると聞いている。もちろん、ノーヒントで。それを思うと、このコインの問題は簡単だと言える。だって、僕が数分で方針を立てられるんだから。

京大数学科の大学院の2つのコースは、数学を作る人と、使う人の差だと理解できる。このコインの問題は、数学を「作る能力」が試される。群論の知識なしでそれができるのなら、数学を作る能力が証明されることになる。ただ、数学マニアが受験することを考慮すると、もしかすると、僕のレベルの初等の群論は「知っている」可能性がある。「知っている」のと「使える」のにはかなりの差があるとはいえ、スレた数学マニアは排除したいというのが出題側の思いだろう。数学マニアが背伸びして及第というレベルは願い下げのはずだ。余裕ぶっこくくらいの人材が欲しいはず。ふれ込み通りなら、1題完答で合格なんで、このコインの問題だけでも解ければ合格になるはず。理学部は募集5名に対して、5名の合格者を出したので、1題完答では合格になっていない可能性が高い。スレた数学マニアが合格した可能性があって、残念なことにならないか心配だ。

追記:追跡調査のインタビュー記事で、部分点だけでの合格者が存在することが明らかになっている。というか、出題者が意図した完答はなかったのかもしれない。この試験後、難易度の高さが問題となり、次の年の試験では、かなり凡庸な問題が出題された。

さて、どのくらいの数学的厳密さを答案では要求するのだろう。僕は、自明と思えることにもかなり丁寧に説明を加えたけど、どのあたりで手を打つかは難しいところだ。現答案ですら、厳密さにおいては、いろいろ不足している。本当に完全な答案は、ほとんど論文になるだろう。だって、特定の数体系を解き明かすわけだから、それが新しければ、立派な論文だ。高校生たちにとっては、きっと「新しい」ので、論文作成と大差ないだろう。そういうレベルを入試で要求するとは思えない。採点基準は、アプローチのセンスの良さで決めるんだろうな。(3)は数学者としては重要なんだけど、それは厳密さが要求されるので、表現が難しい。僕は数学の専門教育を受けていないので、書き方がさっぱりわからない。(3)のゴールが見え見えなのもよくない。であれば、必勝法を少し一般化させて、n=7p+3、k=7の時に2mのあるなしを議論させるなんていうのも面白いかも。

僕の答案だと、最初に山ほど定理をつくって、設問は、ほぼ自明というパターンだけど、もし、作問者がこんな答案を候補に考えていたとするとちょっと違和感がある。それは、高校で一般的な数学の答案とは形式が大きく異なるからだ。それに、答案の一番のポイントは定理4と定理5で、ここでほとんどクライマックスだ。これを超えるとあとは作業でしかない。(1)はちょっと面白いけど、(2)は定理8で証明しちゃってます。(3)に到達しようとすると、定理8は必要なんだよね。そういうことを考えると、道具を全て作って本丸に攻め入るという典型的な数学の論文の体裁が効率的なわけです。それを高校生にやらせるのはちょっとどうなのかな、とも思う。
それよりも、定理5の山を越えてからが長いというのは問題だ。能力の測定は、定理5の時点で可能だ。それ以後の作業は試験時間の無駄にしかならない。能力を測定するという観点からは効率が悪い。
(3)の別解として、n、kが既約でない場合は、qn=pk(ただし、p、qは自然数で、p<n)となるp、qがあって、その場合にはk個の重複操作を簡単に見つけることができるので、1mが否定される、簡単に書くこともできる。ただし、nとkが既約の場合に1mができることを肯定しないので、別途1mの存在を証明しなくてはいけない。僕はユークリッドの互除法に類似の必勝法を提示したが、群表の性質を知っていれば、nとkが規約のときに、qn=pk+1となるp、qが見つかるのは自明で、それを使えば、必勝法をかなり簡単に作ることができる。僕は群論はちょっとしか知らない(ちゃんと勉強したことがない)ので、群表の性質をよく知らないし、その知識を高校生に求めるのはどうかと思う。

数学的構造に気づき、モデリングし、適切な介入(定理作成)を行う、というのは数学の作法だから、それができないとプロとしてやれませんよ、ということで良いと思う。僕の答案では、一見関係なさそうな手順を踏みながら、最後にバサバサ切り込んでゆく感じが数学チックで、僕は確かに楽しかった。
特に面白いのは、全反転操作の有無が重要だという点だ。そして、kが奇数の場合に作った全反転操作が、kが偶数の場合には全反転ではなく、無操作と重複するという点で、とっても面白い。それだけを見ると無味乾燥だが、1対1写像の場合には、1m操作の否定に結びつくというのが意外だ。多分、そういうのに、面白さを感じない人は、数学をやっちゃダメなんだと思うな。

僕は数学のプロパーではないので、もっと素晴らしい解法がある可能性を否定できない。しかしながら、(1)の計算はとても気持ちが良いもので、捨てがたい。いくつか思いついたとしても、この計算を答案に書かないという選択肢はないだろう。

設問を見ると、部分点を稼げる形になっている。すなわち、(1)は純粋なパズルなので、正解の4手順を見つけられるかもしれない。ただ、それが最小手順かどうかを示すことはできない。それに部分点を与えるのか?
(2)はコインの表裏の数の差の偶奇性からも証明できる。でもそれは発展性がない。部分点を与えても良いかもしれないが、それは計測したい能力とはほとんど無関係だ。特色入試は部分点で合否判定するような入試ではなかったはず。
(3)は必要十分条件を示すという点でちょっと難易度が高い。僕は1mの存在が必要十分条件で、それは簡約操作に重複がないことと同値だということをあらかじめ示したので、比較的簡単に証明できているけど、必要条件と十分条件を別々に示すのは、ちょっと難しい。結局、僕はそれが難しいと踏んで、たくさんの補題と代数的構造を調べることにした。(1)と(2)は捨てて、(3)だけを証明し、そのついでに(1)と(2)を解答するという形になっているのは、結構回り道した結果だ。そういう回り道できる能力を試すのなら良いが、時間の限られた試験という形式で、そのような判断を迫るのは理不尽だし、それを短時間で判断する能力は、数学的能力とはあんまり関係がない。

また、答案が長くなりすぎるのも問題だ。僕は「解けた」と確信するまでには数分だったけど、細部を詰めた答案作成には数時間かかった。問題の構造からして、定理5までできたら、ほぼ終わりだ。しかも、定理5まではほとんど自明。定理6は自明ではないけど、そこから先は作業でしかない。でもそこから詰めるのが大変だ。完全な答案を1時間程度で作成する能力は、数学的能力とは別物だ。特に、証明等の記述能力は大学生になってから磨けばよいものだと思う。入試の時点でそれを測る形式になっているのは良くない。何とか数学的な発想力だけを測定するうまい方法はないものか。