このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

カタヅケ主義者と昔風の関数、それとコミュ障

自分はかなり徹底したカタヅケ主義者だなー、と思います。整理整頓が得意なわけじゃないですよ。むしろ苦手でして、いつも散らかっています。カタヅケは、型理論の意味での型付け(タイピング)です。

通常「型なし」と呼ばれる状況は、実は単一の型でシッカリと型付けされているので、カタヅケ主義者として何の問題もありません。しかし、型がハッキリしないとフラストレーションを感じて疲弊してしまいます。最近、疲弊してますよ、統計のお勉強とかしているので。

内容:

  1. 今風と昔風の「変数と関数」
  2. カタヅケ主義者とは
  3. 激しいオーバーロード
  4. コミュニケーションと文化と慣れ

今風と昔風の「変数と関数」

統計の基本中の基本をハッキリさせる」で、統計で出てくる「変数」は関数だ、と言いました。「「確率変数」と言うのはやめよう」では、「確率変数」も関数(可測写像)を意味する、と述べました。関数を変数と呼ぶのはやめて欲しいけど、そんなこと言ってもどうにもならないので、混乱しないように注意しましょう、といった話です。

昔は、関数を変数と呼ぶのは普通のことだったと思います。関数の定義は次のようだったかと; 変数yが別な変数xに依存して変わるとき、yをxの関数と呼ぶ。関数は変数の一種という扱い。xが独立変数で、yが従属変数だとも言ってました。y = y(x) とか書いていたし。今でもこういう言葉や記法は使います。

域(domain)Xと余域(codomain)Yをハッキリと決めて、関数(写像) f:X→Y という書き方をするようになったのは割と最近でしょう。ここ50年くらいか? 50年以上前は知らないですが、僕が生きてきた期間では、「y = y(x)」方式を避けて「f:X→Y」方式が推奨される傾向があったと思います。僕は特に「f:X→Y」方式の影響が強かったかも知れません。そのせいで、「y = y(x)」方式がすごく苦手です。

「y = y(x)」方式が苦手でも困ることはそれほど多くはないのですが、統計の「変数」には閉口します。ただひとつの単語の問題ではなくて、いたる所で「関数を変数と呼ぶ」的な用語法/記号法が使われているのです。

カタヅケ主義者とは

カタヅケ主義者の主義主張とは次のようなことです。

  • 変数の型は、明示的な宣言、または型推論によりハッキリさせる。
  • 関数の引数型(入力の型)と戻り値型(出力の型)もハッキリさせる。

y = y(x) や、y = y(y) が無意味とは限りませんが、意味を持たせるなら合理的な根拠を示せ、ということになります。通常、y = y(x) のような記法は、正確な意味を定義して使っているわけではなくて、単なる略記です。

もし、y = y(x) に型の整合性を求めたら、どうなるでしょうか。x:X という型宣言(型コンテキスト)から出発するとして、y(x) が型を持つためには、y:X→Z、y(x):Z が必要です。等号の左右の型は一致すべきなので、型として X→Z = Z が成立します。型(領域と解釈する)Xが与えられたとして、Z = F(Z) (F(Z) := X→Z) という領域不動点方程式を解かなくてはなりません。

いや待て待て、領域不動点方程式なんて解きたくねーよ、となるでしょうね、ふつー。するとカタヅケ主義者は、「だったら、y = y(x) なんて書くんじゃねーよ」と文句をたれるわけです。

こういう発想と反応は、一種のコミュニケーションの障害なのではないか、という気もします。コミュニケーション障害の症状のなかに次のようなものがあります(http://www.tsubasa.kitaq-src.jp/2/hatttatushougaitoha.html より引用)。

  • 文字通りの解釈をしてしまう。
  • 言葉の裏の意味が分からない。
  • 人の気持ちを想像することが難しい。

カタヅケ主義者である僕が、「はぁーーー!? なんで関数を変数と呼ぶんだよ、分かるわっけねえだろう」とか言っているのは、どうも上記症状に合致しているような。

激しいオーバーロード

「y = y(x)」方式が普通に使われるような状況では、記号のオーバーロードが激しく使われます。

f:X→Y、g:Y→Z があるとき、関数fは変数yで代用され、関数gは変数zで代用されます。y = y(x), z = z(y) です。fとgの結合(合成)f;g は、z = z(y) = z(y(x)) = z(x) のように、z(x) で代用します。「f:X→Y」方式だと、x, y, z, f, g, f;g という6つの記号が必要なところ、「y = y(x)」方式だと、x, y, z の3つでこと足ります。

zという記号に注目すると、文脈により次の解釈があり得ます。

  1. z:Z である変数
  2. z:Y→Z という関数
  3. z:X→Z という関数

記号zのオーバーロード解決には文脈を意識することになり、ハイコンテキストなコミュニケーションに対する解釈スキルが要求されます。

実際にはもっと記号の節約がされることがあります。f:X→Y に対して、F:Xn→Yn は F = map(f) と定義されているとします。より具体的には、タプル <x1, ..., xn> に対して、F(<x1, ..., xn>) := map(f)(<x1, ..., xn>) = <f(x1), ..., f(xn)> 。他に、g:Yn→Z があるとき、yとzだけ(xさえ使わない)で済ますことがあります。

y:X→Y、y:Xn→Yn、z:Yn→Z、z:Xn→Z とオーバーロードします。xを使わないのは、Xを表面に出さずに y:Y であるかのように扱うからです。統計の変数(と呼ばれる関数)に関しては、この程度のオーバーロードがされます。詳細はそのうち愚痴るかも。

コミュニケーションと文化と慣れ

比較的カジュアルな統計の入門書を読んでいて、こんなことを感じ/考えたのです。その本の「確率変数」の定義は「どのような値を取るかが理論的に確率で決まっている変数」です。「t分布はt値が分布したもの」と説明されています。

そんな本じゃなくて、もっと厳密なシッカリした本を読め、と言われそうですが、それだとコミュニケーション・スキルが付かないと思うんですよ。「カジュアルな」とは言いながら、大学の教科書にも使われている本です。他の同種の本を眺めた感じでは、特別に酷いわけではないようです。現実にそのような表現・語り方でコミュニケーションがされているのだと思います。それを避けていては、“コミュニケーション障害”を克服できないでしょう。

「標本を無作為抽出した場合の平均が分布する」とか「χ2値は分布しているため幅を持つ」とか、ほんとに何を言いたいのかサッパリわからんのですが、「文字通りの解釈」をやめて、「言葉の裏の意味」を推測し、「人の気持ちを想像する」と何か見えてくるのでしょう。慣れの問題なのだろうと想像します。