StatsBeginner: 初学者の統計学習ノート

統計学およびR、Pythonでのプログラミングの勉強の過程をメモっていくノート。たまにMacの話題。

Power Pointのスライドマスタ設定が分かりにくいのでメモ

 統計学習とは関係ない話です。

パワポのスライドマスタ機能は分かりにくい

 会社でパワポの資料を作るときは、会社の公式のスライドマスタを使うんですが、スライド番号とかconfidentialとか日付の表示について、微妙にマスタをいじることがあります。表示するページとしないページがあるとかですね。


 ところが、スライドマスタの仕様は単純ではなくて、理解できていなくて困ったことがあります。困っている人が多いから、スライドマスタまわりの機能はあまり活用されていないような気もします。


 今はWindows 7でPower Point 2010を使っているので、その前提で、気づいたことをメモしておきます。というか、仕事中にメモしていたことを貼りつけただけです。
 以下はとくに、スライド番号の表示を制御する場合の話です。パワポをよく見たら「マスタ」ではなく「マスター」になっていたので、以下「マスター」に統一します。
 
 

3階層の仕組みになっている

 パワーポイントの設定は、「マスター」「レイアウト」「スライド」という3つの階層でそれぞれ定義されているようです。
 この3階層の構造が頭に入っていないと、スライドマスターを使いこなすことは不可能。ところが、マスターとレイアウトの違いについても、考えたこと自体ないという人は多いと思います。
 最も上位の(包括的な)階層は「マスター」であり、マスターに「レイアウト」がぶら下がり、レイアウトに各「スライド」がぶら下がっている。逆にいうと、複数のスライドに適用される共通デザインが「レイアウト」に定義されており、複数のレイアウトに適用される共通デザインが「マスター」に定義されているということです。
 ちなみにマスターは、1つのファイル上に複数作成できます。


f:id:midnightseminar:20161228165501p:plain


 一番大きな単位である「マスター」に全体的な設定をして、このマスターの基本的な設定を引き継ぎつつバリエーションを持たせた「レイアウト」を作成します。それで「スライド」を1ページ新規に追加したとき、このスライドにどのマスタのどのレイアウトを適用するかを選択するわけです。


f:id:midnightseminar:20161228165522p:plain


 この3階層構造の存在や、何がどう継承されるかのルールを知らなかったり、後述の「コピペ等による例外」が起きることによって、スライド番号関係ではよく混乱が発生します。


 以下具体的に、スライド番号の表示に関する設定がどのように行われるのかをみていきます。
 
 

第一階層:マスターレベルでの定義

  1. 「表示」タブから「スライドマスター」を選択してマスター表示に切り替える
  2. 左のペイン(枠)のマスターを1つ選択し右クリック
  3. 「マスターのレイアウト」をクリック
  4. 「スライド番号」にチェックして「OK」
  5. スライド番号のプレースホルダが表示されるので、好きなように書式設定する


なお、

  • チェックを外すことはできない。プレースホルダを削除すると、上記チェックも自動的に外れるという仕様。
  • スライド番号が表示されている別のマスタからスライド番号のプレースホルダをコピペすると、自動的にチェックが入る。


f:id:midnightseminar:20161228165606p:plain
 
  

第二階層:レイアウトレベルでの定義

 第一階層の「マスター」においてスライド番号を表示する設定になっていることを前提として……

  1. スライドマスターを表示
  2. 左ペインからレイアウトを選択
  3. スライドマスタータブの「フッター」にチェック
  4. スライド番号のプレースホルダが表示されるので好きなように書式設定


なお、

  • スライド番号が表示されている別のレイアウトからスライド番号のプレースホルダをコピペすると、自動的にチェックが入る。(ただしスライド番号が設定されているマスタの配下のレイアウトの場合のみ。)
  • 若干謎仕様だが、マスターにぶら下がるレイアウトの並びの中で先頭にあるものが「タイトルスライド」用レイアウトとして認識される(後で出てくる)

 
 

第三階層:スライドレベルでの定義

  1. マスター表示ではなく普通にスライドを表示している状態で、左ペインのスライド一覧からスライドを選択し、右クリックして「レイアウト」を選択
  2. スライド番号が設定されたレイアウトを選択
  3. 「挿入」タブの「スライド番号」メニューをクリック
  4. 「スライド番号」にチェックを入れる


なお、

  • 左ペインのスライド一覧から複数のスライドをまとめて選択し、まとめてスライド番号を挿入することもできる。
  • 「タイトルスライドに表示しない」にチェックしている場合、タイトルレイアウトが適用されたスライドには表示されない。(表紙のページだけ番号を表示しないケースはよくあり、その場合はスライド番号の開始番号を0にしたりして、2枚目が1ページになるようにする。)
  • そこでいう「タイトルスライド」は、前述の、「マスタ配下で先頭に置いたレイアウト」が適用されているスライドということになる。
  • スライド番号が表示されている別のスライドからスライド番号のプレースホルダをコピペすると、自動的にチェックが入る。(ただしスライド番号が設定されているレイアウトを選択している場合のみ)


 タイトルスライドとは何ぞやというのを理解するのに苦労しました。昔のパワポでは、タイトル用か否かという設定値があったみたいですが、PowerPoint 2010では、「先頭のレイアウト」がタイトル用ということになるみたいです。
 
 

書式の設定

 スライド番号の数字の書式設定について。大きさとかフォントとか色とかのことです。
マスター>レイアウト>スライドの階層構造において上位階層から引き継がれるのは、

  • スライド番号の有無
  • デフォルトの書式


のみです。スライド番号を新たに表示したばあい、そのデフォルト書式として上位階層の書式が引き継がれるわけです。
 下位階層の書式を変更したり削除したりしても、上位階層に反映されないのはもちろん、同一階層の別のレイアウト or スライドにも反映されません。だから、あるマスターにぶら下がるレイアウトの全てに関してスライド番号の書式を共通で変更したいときは、必ず「マスター」をいじることになります。
 また、下位階層でスライド番号の書式を自分で変更した場合、その後に上位階層の書式を変更したとしても、自分で設定を変更していたレイアウト or スライドにおける書式には反映されません。デフォルト設定のまま表示しているものだけが変更されます。
 
 

ややこしい例外:上位階層と下位階層の矛盾

 ややこしい例外があります。
 例外と言っても、これによる混乱はけっこう頻繁に起きます。

  • 例外発生の第1パターン:レイアウト又はスライドに関して、上位階層の設定によりスライド番号が非表示になっているときに、別のレイアウト又はスライドからスライド番号のプレースホルダをコピペしてきた場合、スライド番号として表示はされる。
  • ところがこの場合、表示有無のところのチェックは入らない。つまり、「表示のチェックが入っていないのにスライド番号が表示されている」という、矛盾した状態になる。
  • この場合、スライド番号の書式が、急に黒字で大きめサイズのフォントになったりする。フォントの種類については、「スタイル」の「フォントパターン」で設定されている日本語の本文用フォントが適用されているのだが、サイズと色が何から継承されているのかは分からなかった。私がやると必ず黒で18ptになり、これは固定なのかもしれない。
  • 例外発生の第2パターン:下位階層にスライド番号が表示されているときに、上位階層のスライド番号を消した(非表示に変えた)場合、下位階層のスライド番号は消えるのではなく、第2パターンと同じく18ptの黒フォントに変わる。この場合も、表示のチェックが入っていないのにスライド番号が表示されている状態になる。


f:id:midnightseminar:20161228171220p:plain


 なお、第三階層の「スライド」までスライド番号が表示されているときに、第一階層の「マスター」のスライド番号を削除すると、上述のとおり第二階層の「レイアウト」上のスライド番号は18pt黒色のフォントに替わるのですが、なぜか、第三階層のスライド上のスライド番号は書式が変わりません。
 ややこしいですね。この他、細かくいえば色々なパターンがあると思われ、全て試したわけではないです。

教訓

 以上を踏まえると、パワーポイントのスライドマスタ機能でスライド番号の表示を制御するに当たっては、

  • マスター>レイアウト>スライドという3層の階層構造を理解しておく。
  • スライド番号の書式を変えたり削除したりする場合は、上位階層を分けて上位階層で設定するようにしておかないと、自分で個別設定した部分だけ上位階層による制御が効かなくなる。
  • スライド番号のオブジェクト(プレースホルダ)を、ページをまたいでコピペするのはやめたほうが良い。コピペ元とコピペ先で別のレイアウトが適用されている場合、上記の例外が生じる。
  • マスターやレイアウト上でスライド番号の表示を消す時、下位階層ですでに表示されている部分については消えてくれず、18pt黒字に変わって残るので、下位階層においてそれが適用されていた範囲をしっかり確認してから消さなければならない。


 デフォルトのフォントやカラーセットを指定する「テーマ」というものもあってけっこうややこしいですが、これについてはまだよく理解していないです。

R での多項分布に従う乱数の発生(単なるメモ)

 エントリを起こすほどのことでもない単なるメモですが、ちょっとググった感じでは日本語でrmultinom()関数の使い方がぱっと分かるように書かれたページがぱっとは見つからなかったので、一応書いておきます。ヘルプをみればぱっと分かりますが。
 スプラトゥーンで弱い味方と連続でマッチングすることが多いので(言い訳)、「不公平なモデル」と「公平なモデル」の挙動をみて自分を精神的に納得させるためにシミュレーションしようと考えていて、パーツとして使い方を確認したものです。


 引数はn、size、probとあり、

  • nには試行回数(サンプルサイズ)を入れる。
  • sizeには、1回の試行における頻度の総数を入れる。
  • probに入れるベクトルが、クラス数と、各クラスの実現確率を表す。確率は足して1になってなくても自動的に正規化される。


 すると、行がクラス、列が各回の試行、値は各試行時の各クラスの頻度になっている行列が帰ってきます。
 Rのヘルプにも、「単に見るだけなら転置したほうが見やすいよね」と書いてあるので、転置させた表示もしておきます。

> d <- rmultinom(n=30, size = 50, prob = c(0.1,0.5,3,1))  # 乱数を発生
> print(d)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21]
[1,]    1    2    1    2    0    1    1    1    0     0     0     2     2     2     1     0     1     1     0     2     1
[2,]    5    6    6    5    9    6    4    5    3     4     7     2     3     9     5     5     4     5     4     7     8
[3,]   33   34   32   34   29   36   36   36   30    33    34    35    36    28    36    30    35    35    36    32    30
[4,]   11    8   11    9   12    7    9    8   17    13     9    11     9    11     8    15    10     9    10     9    11
     [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30]
[1,]     1     0     2     0     1     3     0     1     0
[2,]     7     3     5     3     8     9     3     5     8
[3,]    36    32    28    33    30    27    34    36    35
[4,]     6    15    15    14    11    11    13     8     7
> print(t(d))  # 転置して表示
      [,1] [,2] [,3] [,4]
 [1,]    1    5   33   11
 [2,]    2    6   34    8
 [3,]    1    6   32   11
 [4,]    2    5   34    9
 [5,]    0    9   29   12
 [6,]    1    6   36    7
 [7,]    1    4   36    9
 [8,]    1    5   36    8
 [9,]    0    3   30   17
[10,]    0    4   33   13
[11,]    0    7   34    9
[12,]    2    2   35   11
[13,]    2    3   36    9
[14,]    2    9   28   11
[15,]    1    5   36    8
[16,]    0    5   30   15
[17,]    1    4   35   10
[18,]    1    5   35    9
[19,]    0    4   36   10
[20,]    2    7   32    9
[21,]    1    8   30   11
[22,]    1    7   36    6
[23,]    0    3   32   15
[24,]    2    5   28   15
[25,]    0    3   33   14
[26,]    1    8   30   11
[27,]    3    9   27   11
[28,]    0    3   34   13
[29,]    1    5   36    8
[30,]    0    8   35    7


 当然ですが、sizeを1にすると、probで設定した確率でいずれか1つのクラスが「1」になります。確率に傾斜のある選択を表現するのに便利ですね。

「かけ算の順序」にこだわる教え方を擁護できるかも知れない理屈を一応考えてみる

叩かれる先生たち

 数日前の茂木健一郎氏のブログ記事に限らず、かけ算の順序にこだわった教授法が不毛だとしてネット上で叩かれているのはよくみかける。Wikipediaにもページが設けられているし、この問題について考察した書籍も出ているようだ。


かけ算には順序があるのか (岩波科学ライブラリー)

かけ算には順序があるのか (岩波科学ライブラリー)

  • 作者:高橋 誠
  • 発売日: 2011/05/27
  • メディア: 単行本(ソフトカバー)


 要約すると、日本の小学校ではかけ算を「かけられる数×かける数」「1あたり量×いくつ分」という順序で考えるように教えることになっているらしく、「子どもが6人いて、1人に4個ずつみかんを配ります。みかんは何個必要でしょうか」みたいな問題を解く時に「4×6=24」と書けば正解だが、「6×4=24」だと不正解ということにされてしまい、そういうプリントを見つけた親が「こんなバカなことがあるか」と画像をTwitterでさらして教師を叩くというのが、この季節の風物詩になっているという問題である。季節性があるのは、小2の10月頃からかけ算を教え始めるからだろう。


togetter.com
togetter.com
d.hatena.ne.jp


 中には足し算でも同じ問題が生じているとの記事もある。

togetter.com


擁護できるかどうかを考えてみる

 ネット上では「順序こだわり教育」に反対の声が99%ぐらいを占めており、小学校の先生たちはもっぱら叩かれている。私は叩かれている人をみると擁護してみたくなるほうなので、擁護するロジックはないものかと少し考えてみた。
 すこし考えただけであって、大して調べ物もしていないのだが、とりあえず現時点では、

  • 式を書く順序にいったんこだわることに全く意味がないとも言えない。
  • しかし「6×4=24」という式にバツを付けるのはやっぱり行き過ぎだろう。
  • とは言え、目くじらを立てるほど有害なことなのかもハッキリせず、ネット上の批判は過剰反応な気もする。


 という感じの印象を持った。もっと調べたら印象が変わるかもしれないが、あまり調べる気はない。

欧米でも順序にこだわる人はいるらしい

 まず前提として、かけ算を書く順序にこだわるのは日本の学校だけではなく、欧米でもそういう事例はあるようだ。上で参照したようなかけ算の順序問題についての記事を読んでいくと、欧米では「かける数×かけられる数」の順で書くように指導されているという話がよく紹介されている(よく読んでないのでどの国でというのは知らん)。日本とは逆に教えているわけである。
 欧米人が逆の順序で教えていて大きな問題がないのであれば、日本で採用されている順序に絶対的な意味はないということになる(言語や文化によって、どっち順のほうが理解しやすいというのはあるかもしれないが)。
 と同時に、欧米でも一応順序を気にして教えているケースがあるのだとすると、べつに日本の先生だけが特別おかしいというわけでもないということになる。
 そもそも、PISAの国際学力比較で日本の子どもの数学的リテラシーはべつに低くはないので、全体として日本の算数教育だけがめちゃめちゃ大きく間違っているというわけではないのだと思う。もちろん、だからといって、順序こだわり教育という特定の教授法が効果的であることの証にはならないのだが。

擁護派の代表的な主張

 順序こだわり教育の擁護派の主張として最も代表的なものは、「文章題にでてくる数字を順番に並べて適当に式を書いている子どもがいるから」というもののようだ。(追記:最もなのか確かめてはないが。)
 たしかに、文章に出てくる数字をそのままに並べて適当に記号を書いて計算しても、当たってしまうことはけっこうありそうだから、子どもの理解を確かめるために、「かけられる数×かける数」という概念整理にいったんこだわり、その順で式が表現されていなければ理解の程度を疑ってみるというのは分からなくはない。


 生徒はひょっとしたら、現実の問題をかけ算として処理する概念操作を完全に理解した上で、自分の好みで先生とは逆順に式を書いているだけかもしれない。また、かけ算の概念を理解するための方法として、「かけられる数×かける数」という枠組みは、ある生徒には有益だが別の生徒には有害かもしれない。そもそも、「かけられる数」と「かける数」に区別して考える方法を採るとしても、どっちかを先に書かなければならないと決めつける本質的な理由はない(実際、欧米の学校では「かける数」を先に書くらしいし)。


 しかし先生たちの言い分を勝手に代弁すると、学習の初期に、しかも1人で何十人かの生徒を相手にするような場面では、ひとまずある特定の枠組みに沿って教えざるを得ないとは言えるだろう。また、少なくとも教えた通りに式を書いていないのであれば、ひとまず「コイツ理解してないのでは?」と疑ってみるのは正当なことであろう。
 順序こだわり教育を批判している大人たちは、子どもたちが「現実の問題をかけ算として処理する概念操作を完全に理解した上で、自分の好みで先生とは逆順に式を書いているだけ」だと暗に想定しているのだと思うが、その想定が外れているケースもけっこうありそうには思う。実際、低学年の子供に勉強を教えてみるとわかるのだが、大人からみると「なんで?」と不思議になるような手順でモノを考えていることはよくある。


 もちろん、本質的に重要なのは式を書く順序などではなく、概念の操作が上手くできているかの見極めだから、「6×4=24」と書いたからといって形式的にバツを付けるのは、杓子定規が行き過ぎているとは言えるのだが。

計算ではなく数式化の練習をしているのだと考えてみる

 「4かける6」みたいな単純な計算であれば、書く順番が逆だからといってバツを付けるのはやり過ぎであるように思えるし、そもそも「かける数×かけられる数」という表記が「逆」だというわけですらない。
 しかし大人でも、ある程度複雑なできごとを数式に置き直す際は、頭が混乱しないように数式を書く順番やまとめ方を工夫するはずだ。「数学的に演算内容が同じであればどう書いても問題がない」というわけではなく、「頭が混乱しにくいように書く」スキルというものが存在するわけである。


 小学校における算数の指導が、「頭が混乱しにくいように現実の問題を数式に置き換える練習」でもあるのだとすれば、順序にこだわった教授法にも意味があるのかもしれない。小学校の教材がが扱うのは大人から見れば単純な例だから、大人から見ると「そんなところで順序にこだわっても意味ないだろ」と思ってしまうのだが、複雑な計算において大人が行っていることを、子どものレベルで行っているだけだと考えれば、順序に意味を持たせるのもさほど変な教育というわけではないのではないだろうか。どの書き方が混乱しにくいのかは人によるから、正解不正解とは関係なく指導されるほうが望ましいとは思うが、少なくとも「混乱しにくい順序に整理するよう教育することに意味がない」とは言えない。
 まぁそれでも、繰り返しになるが、バツをつけて順番を守らせることが大事なのではなく、概念の操作がきちんとできているかを確認しないといけないと思うが。

コーディング規約のようなものだと思ってみる

 プログラミングを行う際に「コーディング規約」を定めたりするように、演算内容が同じであっても複数の人間が読みやすいようにロジックを表現するという努力には意味がある場合がある。
 かけ算を、「かけられる数×かける数」「1あたり量×いくつ分」の順で表現することを叩きこむ作業が、単なる計算の訓練ではなく「計算をめぐるコミュニケーション」の訓練も兼ねていると理解すれば、先生が言うとおりの順番で書かなければ不正解という指導にも意味はあるかもしれない。


 そもそも、「計算が合っていればどう書いても良い」という立場をとると、極端にいえば、「4×6=24」と書かずに「4,6,24」とか「24(6・4)」とか書いてあってもマルを付けなければならない。あるいは、子どもが「みかん1個は必ず10の房から成る」と思い込んでおり、まず房単位で数えたあとに9を引いてみかんの個数に直すという変わった考え方をしていて、「10×4×6=240、9×4×6=216、240−216=24」という謎の式を書いていても、結論は合っているからマルを付けなければならない。

 さすがに順序こだわり派じゃない先生もそこまで寛容ではないだろう。では、「6×4=24」にバツを付けるのは、これらのケースと本質的にどう違うのか?
 恐らく本質的にはあまり違わなくて、単に程度の問題ということだろう。理解可能な別の表現で書いているか、見たこともない謎の表現で書いているかの違いである。


 もちろん、「10×4×6=240、9×4×6=216、240−216=24」でも論理的に正解に辿り着いているのだから、余裕があれば「君は面白い考え方をするな」と褒めてやればいいと思う。しかし学校の先生にそこまで求めるのも酷だとは思うので、「私は理解してますよ」ということを先生にわかりやすく伝えるコミュニケーション作法を、生徒にある程度強要するのもやむを得ないというか、それも教育の一環であるとは言えるのではないだろうか。

過剰反応かも(その1)

 ところで、さきほど「ネット上の批判は過剰反応な気もする」と書いたのだが、それはかけ算順序問題について、ひょっとしたら誤解とか誇張もあるかもしれないとも思ったためである。
 私も詳しく調べてはいないので、現時点では「以下のような想像から、ネット上の批判は過剰反応かもしれないと思っているが、この想像は間違っているかもしれない」程度の話として書き留めておく。


 まず1つめ。ネット上で、「最近の子どもはかわいそうだ」「最近は教師が劣化している」みたいなコメントをみかけた気がするのだが、この順序論争は何十年も前からあるらしいので、「最近は〜」と怒っている人はたまたま自分が順序にこだわらない担任に当たったか、自分がどのような教え方をされたかを覚えていないだけだろう。
 実際私は、小2の授業でどんな教え方をされたかなんて、全く覚えてない。かけ算で覚えてるのは、九九のテープ(CDじゃなかった)を聴かされて歌で覚えたということぐらいだ。覚えてないということは、私も「4×6が正解で6×4は不正解」という指導をされていた可能性を否定できないし、「最近の教師は〜」と怒っている人達も、じつはそういう指導のもとでかけ算の文章題に取り組んでいた可能性はある。
 順序こだわり教育を受けても、順序こだわり教育を批判できる人間に育つのであれば、デメリットがあったとしても限られているんじゃないだろうか。また、順序こだわり教育のおかげでかけ算の概念操作に慣れることができ、慣れた結果として次第に自己流の式の書き方ができるようになっていって、慣れる前のことは忘れただけかもしれない。

過剰反応かも(その2)

 また、「6×4」にバツを付けるやり方が行われているのは小2のごく一時期に限られるかも知れない。
 「順序違いの式を不正解にするのは小2の秋〜冬だけであり、高学年になったらどう書いても正解にされている」のと、「高学年や中学生になっても、順序が違えば不正解にされる」のとでは、先生が叩かれるべきか否かの評価は異なるはずである。小2の秋〜冬のかけ算導入期にそういう教え方をしているだけであれば、算数や勉強に限らず何事も最初は先生の流儀を押し付けることによって学習が進む面があるのだから、「バツを付けるのはちょっと杓子定規が行き過ぎているなぁ」程度に思っておけばいいような気はする。
 しかしその辺が、ネット上の論争ではハッキリしていないのでは?
 ひょっとしたら、批判している人たちは、小2の一時期に限って起きている現象を過大に受け止めて怒っている可能性もあるのではないだろうか(高学年でもバツを付けるのが蔓延しているのかもしれないが、私はそれを判断できるほど調べてはない)。

過剰反応かも(その3)

 もう1つ誤解がありそうなのは、学習指導要領や参考書において「かけられる数×かける数」という思想が根強いのが事実であり、Twitterで逆順の式にバツを付けた例がたまに報告されるからと言って、実際にほとんどの先生がバツを付けているのかどうかはよく分からないということ。式にバツを付けて答えにはマルを付けている先生がいるという話もみかけたし、実際にはマルかバツを付けた上で個別に指導しているかもしれないし、順序を気にしない先生も多いかもしれない。
 バツを付けられた子どもの親がTwitterで騒ぎ、裏付けとして別の人が「かけられる数×かける数」の思想が表現された指導マニュアルを引用すると、あたかも「順序が違ったらバツ」という指導が日本中で蔓延しているかのように思えてくるのだが、本当にそうなのかはよく分からない。(調査データがあるのかもしれないが、調べてない。)

効果のある教授法なのか

 色々論争が行われているのだが、結局のところ重要なのは、「交換法則が成り立つので、数学的には順序はどうでもいい」とかいう話ではなく、小学校2年生におけるかけ算の導入初期に、順序にこだわった教授法を採ったほうが概念の理解が進むのか否かだ。順序にこだわったほうが理解が進むという効果が実際にあるのであれば、数学的にどうかとかは関係なく、こだわる意味はあると言える。
 これについては何か調査や実験のデータがありそうな気がするが、私は調べてない。Wikipediaの記事中で紹介されている研究だと、例えば式を逆に書いている生徒であっても絵はちゃんと描けているという報告があり、これは式を逆に書いていても理解に問題はないと取ることも可能だ(報告ではそういう解釈はされてないが)。


 なんかデータとかあったら誰か教えてください。

まとめ

 まとめるとですね、

  • 計算そのものだけではなく、現実の問題をかけ算の処理に置き換えるという概念操作を教えたい。
  • その教え方の枠組は色々あり得るが、とりあえず、文章題を「かけられる数×かける数」「1あたり量×いくつ分」の形に整理するという教授法を採用することとする。
  • その形に整理するように子どもたちに教えたところ、式を逆順で書いている生徒が何人かいた。
  • 逆順で書いている生徒が、かけ算の概念操作は完ペキに理解した上で好みで逆に書いているのか、教えたことを理解してないのかは、この時点ではハッキリ分からない。
  • かけ算に慣れてくれば自己流の計算方法を許してもいいと思うが、最初のうちは、教えたことが伝わってるかをきちんと確認したいから、教えた通りの考え方で式を書いてほしい。
  • だからとりあえず、逆順に書いた生徒の式にはバツをつけて、「1あたり量×いくつ分」の形で書いてね!と指導した。
  • なお、逆順にバツをつけるのはあくまで小2のかけ算導入初期のみであって、高学年になればみんなかけ算の概念操作を理解していると信じられるから、逆順に書いていてもそれは単なる好みだろうとみなしてバツはつけない。
  • 先生によっては、小2のかけ算導入期であっても、バツは付けず生徒に個別に問いかけて、理解の度合いを確かめている。


 というのが実情だった場合、バツをつけるのはやり過ぎ感もあるものの、順序に意味を持たせた教え方には一応理由があるし、「最初ぐらい俺の教えたとおりに書いてくれよ」と思う先生の気持ちも分かるし、実際うるさく言うのは最初だけであってべつに大きな弊害はないわけなので、声を大にして先生を叩くほどのことではないように思える。
 まぁ私がいいたいのは要するに、ネット上(とくにツイッター)では「自分の子供の先生」を叩く人がやけに多くて、先生が気の毒ってことなんですが。ただまぁやはり、理解してるのかも知れないから、バツ付けて放置はかわいそうだと思うが。

追記

出版社が出してる授業ガイドで6年生向けにも順序こだわり教育が推奨されているらしく、交換法則を教えた上でやっているのであれば一貫性がなく、やばみしかない。
http://b.hatena.ne.jp/entry/309247508/comment/uncorrelatedb.hatena.ne.jp
www.anlyznews.com

 

機械翻訳に関する記事を読んで面白いと思ったこと(与太話)

 短いし大したことは言わないし正確に理解もできていないので、ブログ記事にするのもためらわれますが、Twitterの字数では書けないのでここに書きます。
 以下の、機械翻訳の現状に関する記事を読み、大変参考になりました。


rekken.g.hatena.ne.jp


 それで学説史的に興味深いなと感じたのでメモしておきます。与太話です。
 1960年代から70年代にかけて「認知革命」というアカデミアのムーブメントがあったと言われます。心理学、言語学、脳科学、計算機科学とかそういった分野にまたがる運動だったんだけど、心理学の方面から見た時によく言われるのは、「記号(表象)の関係をモデル化する」という研究が推し進められたのが特徴であったということ。それまでは、パブロフとかスキナーといった名前が有名だけど、「行動主義」という考え方があって、心の中身はモデル化することはできないから、外面的に観察できる「刺激」と「反応」のパターンだけを分析しようみたいな話だったらしい。
 行動主義への反動として捉えてしまうと理解が狭くなるとの意見はあってWikipediaにも載ってますが(リンク)、細かいことは知りません。
 面白いと思ったのは、「刺激と反応のパターンをみるだけじゃなくて、記号を媒介にして心のモデルを考えたほうがいろいろ分かるよ」というムーブメントが昔あったのが、今やある意味逆転して、脳の構造ににたニューラルネットワークを構築して入力と出力を大量に与えてやると、処理の中身をモデルとして理解するのは困難だけどとにかく結構正確な対応が得られる的な状態になってしまっておるのだと。
 これを半世紀前の「認知革命」の逆流として学説史を描いてくれるような人がいたら面白いなぁと思った。見方によっては逆流ではない、みたいなのも含めて。
 もちろんそういう理解が正しくなければ、そんな描かれ方はしないわけで、私には判断が付きませんが。


 もう1つ面白いと思うことがあります。ニューラルネットの歴史が語られる時って、「基本構想は1940年代ぐらいからあったもののなかなか性能が出なかった。しかしバックプロパゲーションというブレイクスルーがあり、さらにオートエンコーダによる事前学習が……」みたいな説明がされますよね。それで私はたまたま自分がやってる研究に登場するから名前を知ってるんですが、認知革命期の心理学者でDavid Rumelhart(リンク)という人がおりました。私が読んでいたのは、この人が、人間が「物語」を作ったり理解するときに、文単位における「文法」のような共通の構造があるのではないかという仮説を立てて、「ストーリー・グラマー」というモデルを考案していた研究です。これはだいぶ思いつきめいた研究で、特に深まることもなく人々に忘れられていったのですが、一応同じ研究をしてたThorndykeという人(有名なEdward Thorndikeとは別人のPerry Thorndyke)の実験が今も学部向けの心理学の教科書に載ってたりします。
 ストーリー・グラマー論(理論というほどじゃないので論にしとく)はチョムスキーの生成文法理論の影響を明らかに受けているもので、というか生成文法ブームにのって調子にのって物語の構造分析にも適用できるか試したくなりましたみたいな研究なんですが、物語を理解するときの心の挙動を、記号を媒介にしてモデル化しようとしているという意味で、まさに認知革命的な研究です。
 で、じつはこのRumelhartは計算機科学の分野でも有名で、バックプロパゲーションの手法を提案したことと、並列分散処理のモデルを提案したことで知られてるんですよね。80年代くらいに。彼の研究が、現在のニューラルネットにおけるバックプロパゲーションの処理や、GPGPUなども駆使した並列分散処理においてどれほど貢献しているのかというのは私は全く知りませんし、ほとんど貢献はないのかもしれませんが、なんかすごい奇遇な気がして面白いです。認知革命の権化みたいな心理学者が提案した(のと類似の)技術によって、認知革命的アプローチが不要になってきているのだとすれば。


 「何が面白いの?」と言われたら、単に「俺が別々に知ってた話が予想外のつながり方をしてて面白い」っていう個人的な話なので、この記事にディープな意味合いは何もないと思っていただければと思います。
 昼休みに思いつきで書きなぐってるので、あとで消すかもしれません。今から仕事します。

Pythonの入門書としても使える『言語処理のためのプログラミング入門』

Python及びテキストマイニングの超初心者向け入門書として

 友人と週1回ペースで行っている統計&プログラミングの勉強会で、以前、Pythonの入門書は何がいいだろうかと考えて本書を取り上げました。当時ブログにはまとめていなかったのでまとめておきます。


言語研究のためのプログラミング入門: Pythonを活用したテキスト処理

言語研究のためのプログラミング入門: Pythonを活用したテキスト処理


 本書はほんとにプログラミングというものに全く触れたことがない人向けのものなので、内容はちょっと簡単すぎた感もあるのですが、勉強会ではRばかりやってきてPythonには皆慣れているわけではないし、テキストマイニングの入門という意味もこめて一応やりました。初心者でもすぐ理解できる内容なのでさっさと終わらせようと思い、1回2章ずつのペースで進めました。


 著者は言語学者で、本書は「言語学の研究をしてる(しようとしてる)学生のみなさん、プログラムが書けると研究がとても捗るのでちょっと勉強してみませんか」みたいなノリで書かれているものです。なんというか、「プログラムを書いて何かをやる」ということ自体イメージできない人、というかむしろそういうのにアレルギー反応を示す学生を読者として想定している感じですね。
 コーディングの内容は単純なものばかりで、初心者でも直観的に理解できる書き方しか出てきません。なので、本書を一冊やったぐらいでは得られる知識は限られていますが、Pythonやプログラミングの知識ゼロからでも読めるようになっているので、「Pythonの勉強のために、最初に読む本」としてもけっこう良いかなと思いました。
 もちろんテキストマイニングの入門としても、単語の登場頻度を集計するとか、テキスト全体をまず形態素解析してから統計的・文法的な分析を行う流れとかの基本が分かるので役に立ちます。初歩の初歩ですけどね。


 各章のテーマを並べてみると、


第1章:言語研究とプログラミング(言語研究者がプログラミングを学ぶことの必要性)
第2章:テキストデータに親しもう(テキストファイル、テキストエディタの基本)
第3章:正規表現(正規表現の基本)
第4章:Pythonに触れてみよう(インストール、基本操作)
第5章:Pythonでファイルの内容を表示してみよう(プログラムの書き方、実行の仕方)
第6章:Pythonで検索しよう:条件分岐(inとかifとかの条件式で検索ロジックを書く)
第7章:繰り返し処理を覚えようループ処理(for文の練習)
第8章:単語の一覧表を作ろう:リスト(リスト型データを使う練習)
第9章:頻度表を作ろう:ディクショナリ(辞書型を使う練習と、辞書型を用いた単語の使用頻度集計)
第10章:ファイル操作
第11章:Pythonで正規表現を使ってみよう(3章より実践的な使用)
第12章:形態素解析プログラムを活用しよう(MeCab等を用いた形態素解析)
第13章:Pythonで日本語を扱おう(文字コード問題等)
第14章:PythonでKWICを作ろう(テキストファイルから、指定した語を前後の文脈とともに抽出)
第15章:コロケーション検索を作ろう(「〜にくい」「〜すぎる」などの語がどんな単語にくっつきやすいかの分析)


 となっており、ページ数が少ない割にはけっこう盛りだくさんとも言えます。
 7章まではプログラミング入門、8章以降はテキストマイニング入門という感じですね。


 以下、章ごとに概要をまとめておきます。また、各章に章末問題があって「こういうプログラムを書け」みたいな課題が出るのですが、回答例が教科書には載っておらず、著者の先生にメールで問合せたところ「特に作ってない」とのことだったので、私の回答例を全部載せておきます。問題文を完全に転記はしておらず、本書を読んでいない人は見ても意味がわからないと思うので、無視してください。
 なお私はプログラミング初心者なので、回答例といっても「良いコード」が書けてるわけでは全くなく、一応動くものが書けたというだけですので、そこは注意してください! 

 
 あと、本書中にはコードの誤植等がいくつかあり(オライリーの技術書とかでもコード自体が間違っていることがあるので珍しいことではない)、公式サイトに正誤表(リンク)がありますので、本書を読む方は必ず読み始める前にチェックしたほうがいいと思います。いくつかは私が発見して先生に連絡したものです。


 まとめはとても長くなったので、各章のまとめは省略表示してます。↓の「続きを読む」(Read more)のリンクをクリックしたら続きが表示されます。スマホだと最初から全文が表示されてる気もしますが。

続きを読む

数学を勉強しても役に立たないが、「数学化」を学ぶことは役に立つ?――フロイデンタールの数学教育論

数学は役に立つのか

 数学は何の役に立つのか?という、よくある疑問についてのエントリを読みました。


「数学は役に立つ/立たない」について思うこと - 34歳からの数学博士

「数学が何の役に立つ?」と疑っている人でも、数学が本当に何の役にも立ってないとは思ってないはずです。科学者や技術者が数学を使ってることは知っているだろうし、現代の生活を支える技術に何かしら数学が関わっていることも想像できるはず。


 というのはそのとおりで、大人が「数学は役に立たない」とか言ってる場合、それはほとんど「私個人が日常生活を送る上では、三角関数や微積分の知識を必要とするような課題を、私自身が解くことはない」というだけの話です。
 しかし子どもが「数学を勉強して何の役に立つの?」と聞いてきた場合はけっこう厄介ですね。上記のエントリでは

「数学は役に立つ」というと、その知識が直接仕事に使えなければならないような気になりますが、その狭い意味において数学が役に立つ仕事は限られています。より広い意味での「役に立つ」については、数学に限らず、何かを深く学んだ経験全てについて言えることなんだろうと思います。


 と書かれてますが、要するに直接的な役立て方と間接的な役立て方があるということで、子どもの場合は将来的に、いずれの役立て方も経験する可能性があります。
 子どもが理解するかはともかくとして、学校でなぜ数学が教えられるかといえば、3つぐらいのレベルがあって、直接的な役立ち感が高い順に、


「生徒の一部は、将来、数学の理論を実際に利用する技術者等になる可能性があるから」
「数学的なモデルが、比喩として、間接的に物事の理解を助けることがけっこうあるから」
「数学を通じた思考のトレーニングによって頭がよくなるから」


 みたいな話になるんでしょう。
 
 

フロイデンタールの数学教育論

 数学が「広い意味」で「役に立つ」ことについて論じられたものとして、数学者であり数学教育学者でもあるフロイデンタールという人の、"Why to teach mathematics so as to be useful"という講演があります。1968年に行われた数学教育に関する国際的なカンファレンスの基調講演か何かで、フロイデンタールは数学教育の現状が「役に立つ」からかけ離れたものであることの問題を語っています。


WHY TO TEACH MATHEMATICS SO AS TO BE USEFUL


 有料なので、概要を以下に書いておきます。

  • 数学は、非常に小さな量の知識でありながら多くの状況に適用されるという点で、他の教育科目と大きく異なる。また現代の数学研究は、この知識をさらにシンプルにし、フレキシブルにする営みであるとも言える。
  • 数学の最大の特徴はその柔軟性(flexibility)にあるのだが、生徒に教える上ではジレンマがある。最も抽象的な数学理論こそが最も柔軟である(応用範囲が広い)と言えるのであるが、多くの人はその柔軟性を活用する能力を持ってはいない。一方、具体的なコンテクストに即して数学を教えようとすると、数学の柔軟性が犠牲になってしまうのである。
  • 数学教育には2つの極端な立場があり得る。一つは、数学理論は教えるがその「応用」はすべて生徒に任せるという立場。もう一つは、具体的なコンテクストに即して「役に立つ数学」を教えるという立場。
  • ほとんどの生徒は数学理論を自分の力で応用することなどできないから、前者は非現実的である。一方「役に立つ数学」は、具体的なコンテクストが固定されていて変わらなければ完璧に教えることができるだろうが、数学の真の価値はコンテクストを乗り越えて繰り返し利用可能な形式の知識を作り上げる点にあるのだから、本末転倒である。
  • これら2つの立場を折衷して、「純粋な数学理論を教えた後に、その応用を教える」ということが考えられるかもしれないが、これはたいていうまくいかない。この順序ではダメなのだ。
  • 足し算引き算みたいな初歩的な算数を教えるときは、先生は「私は10マーブル持っています。3マーブル使うと何マーブル残るでしょうか」みたいな具体的な例からまず始めて、その後も繰り返し具体的な例に戻ってくる。しかし分数を教えるあたりから、なぜか具体的なコンテクストをまじえなくなる。たぶん先生も、具体的なコンテクストにおける分数というものを知らないからだろう。そしてそれは、その他の数学の大部分についても言えることだ。
  • 先生が数学の知識を具体的なコンテクストに応用できるとしても、なぜそんな応用ができるかを彼自身が理解しているとは限らないし、それを人に教えられるとも限らない。
  • またやっかいな問題として、数学の教科書はまったく、役に立てることを目指して書かれていない。もともと算術や幾何学は「現実世界を数学化すること」(mathematizing reality)から始まったはずだが、古典ギリシア時代ぐらいから、数学そのものが数学化の対象となって、理論がどんどん発展していったのである。
  • 数学はもともとは「現実を数学化」する営みであり、ほとんどの人にとってそれこそが数学を学ぶ最終目的でもあるのだが、一部の人々は数学そのものの数学化を推し進めていって、非常に洗練された体系を作り上げた。
  • 「体系化」は数学のすばらしい美点(virtue)であり、学生はそれを学ぶべきであるが、重要なのは体系化の「活動」そのものであって、「結果」ではない
  • 体系化の結果は美しい閉じたシステムで、入口も出口もない。完成度の高いシステムは、機械によって処理することすらできる。しかし機械が扱えるのであれば、もはやそれは人間が学ぶ必要はない。人間が学ぶべきなのは、閉じたシステムとしての数学ではなく、現実を数学化する(そしてできれば数学をも数学化する)活動やプロセスなのである


 ついでに、上記の話を解説した日本語の記事を見つけたので貼っておきます。
 Hans Freudenthal と Hyman Bass の 数学教育について


 考えてみると、統計学やプログラミングの勉強も同じようなものかもしれないですね。理論やアルゴリズムを知ること自体にはあまり意味はなく(それが目的化すると単なる趣味になる)、現実の問題を、統計モデリングや仮説検定や機械学習の問題に変換することこそが生産的な営みだと思う人は多いでしょう。
 そして、「理論を学ぶこと」と「現実を理論化するノウハウを身につけること」、「計算すること」と「計算化すること」は、確かにある程度別モノな気がします。


 しかし、「数学の体系」ではなく「数学化」や「体系化」のプロセスを教えるのだというのは、言いたいことは分かりますが、けっこう難しいんじゃないでしょうか。「純粋理論を教えた後に、その応用を教える」という方法も、だめなのかというと、それしかないような気もします。
 まぁでも、数学教育学者として、とにかくそのあたりに大きな課題があるということを指摘するのは大事なことだったんでしょう。
 私は数学の勉強をほとんどしていませんので何も偉そうなことは言えませんが、我々が受けてきた高校以降の教育は「抽象理論としての数学を学び、その後に、というかそれとは別に、その応用を学ぶ」という風にになってる感じがします。「数学化」に重点を置いた教育というのは、そんなに追究されてなくて、なんかうまくやれば別世界の数学教育があるのかもしれません。

統計メモ:因子分析で斜交回転を行っても、共通性の値は変わらない

 2年ぐらい前にブログに書こうと思って、下書きしたまま放置してたネタを見つけました。
 今となっては単なる思い出なのですが、せっかくなのでエントリにしておきます。
 
 当時、因子分析における「共通性」の扱いについて勘違いをしていました。
 プロマックス回転など斜交回転を行った因子分析の結果を報告する際に、寄与率と共通性を報告している例をみかけたんですが、それらの値は斜交回転の場合も算出可能なのか?報告する意味あるのか?と疑問に思っていました。
 復習しておくと、各共通因子について、全ての観測変数との相関係数(因子が直交している場合は因子負荷に一致)の二乗和を計算したものが因子寄与で、これを観測変数の数(=総分散)で割ったものが寄与率となり、「その因子が観測変数の情報量の何%ぐらいを説明できているのか」が分かる。また共通性は、各因子が直交する場合は、各観測変数について全ての因子に対する負荷量の二乗和を計算したもので、「その観測変数の情報量は、共通因子によって何%ぐらい説明できているのか」が分かるものです。
 
 それでたとえばこのサイトでは、寄与率も共通性も、斜交回転の場合は報告しないでよいと書いてあります。
 心理データ解析第8回(3)

プロマックス回転のような斜交回転の場合,寄与率を計算することができないので,出力されない。

プロマックス回転のTableに必要な情報は,項目,因子パターンに示された負荷量,因子間相関である。共通性や因子寄与は記入しなくてもよい。

 
 寄与率の方は分かりやすくて、斜交回転を行うということは因子間相関を認めるわけで、各因子が説明する情報が直交分解できてない(重複して説明している)ということになるので、寄与率を計算しても意味がないということになると思います。(そう思うんですが、『心理学研究』でプロマックス回転を行って寄与率を報告している論文をいくつか見たことがあるので、なんか意味があるのかもしれないけど……あるの?)

 
 で、当時よくわかってなかったのが共通性の扱いで、斜交回転した場合は報告する意味ないんじゃないの?と思ったのですが、これは勘違いでした。
 南風原朝和著『心理統計学の基礎』では、斜交回転時の共通性について、観測変数と共通因子のベクトルの関係から説明する記述がありました。また、豊田秀樹著『因子分析入門 Rで学ぶ最新データ解析』という本をみると、斜交回転を行っても共通性の値は(直交回転を行った時と)変わらないとも書いてありました。
 
 ただその理由が分からなくて当時悩んでいたのですが、考えてみたらこれは単純な話でした。
 以下の図は、『心理統計学の基礎』に出てくる図に私が赤字を追記したものです。共通性というのは、「共通因子で表される部分」のベクトルの長さに当たるのですが、そもそも初期解を求める時点で共通性と独自性に分解されており、因子軸の回転というのは、この図でいうと共通因子が乗っかっている平面上で共通因子のベクトルを回転させるという話なので、観測変数の共通性と独自性への分解とは関係ないということになりますね。
 
 
f:id:midnightseminar:20160831001407p:plain
 
 
 あとついでに、これも当時調べたことなんですが、Rに標準で組み込まれているfactanal()関数による因子分析と、Psychパッケージのfa()関数による因子分析の出力を比較すると、扱っている数字が微妙に違うようでした。
 以下の画像はあるデータを両関数で因子分析(プロマックス回転)した結果をエクセルにまとめたものなんですが、fa()関数の場合「SS loadings」の欄には回転前の因子負荷量の二乗和(=因子寄与)が入っている一方、factanal()関数の場合は回転後の因子負荷量の二乗和が表示されています(途中の数字を省略してしまってるのでこの図からは計算できないですが)。
 「Proportion Var」の欄はそれらの値を観測変数の個数で割ったものです(という説明がよくされるのですが、観測変数の個数というより、観測変数の分散の総和と言うべきですね。標準化してるので観測変数の個数と一致します)。「Cumulative Var」の欄は、左から順に足していった累積の値です。
 
 
f:id:midnightseminar:20160831001504p:plain