ゆくゆくは有へと

おかゆ/彼ノ∅有生 の雑記

ベイズの公式の「事後確率」について

はじめに

最近、ベイズ的なアレを色々調べているのだけど、結構面白い。

ただ、少し気になることがあり、かつ、それがあまりウェブに記載がなかったので、メモがてら書いておくことにした。

統計モデリングと「ベイズの公式」

フラットな立場でいえば「統計モデリング」や「確率モデリング」、少し匂いをつけると「ベイズモデリング」は、データ解析者がなんかしらのパラメータを内部にもつ確率モデルを設定し、そのパラメータを観測されたデータに基づいて適宜更新していく一連のプロセスによって成り立つ。

それで、どのようにして確率モデルを更新していくか?というと、「ベイズモデリング」の名の通り、かの有名な「ベイズの公式」を用いる。よく言われるのは「原因」と「結果」の関係だが、もう少しフラットに説明する。

ある対象がどんな状態なのかを、その対象が呈する表現から推測する。対象への理解として、一般的な知識や経験に基づいて、どれくらいの確率で各状態になるのかが分かっている($P(State)$が既知)。さらに、その対象が或る状態だったときに、注目している表現を呈する確率も知っている($P(Expression | State)$が既知)。このとき、ある表現が観測されたときの、各状態でありうる確率を求める。

今回の文脈では、対象とは解析者が措定した確率モデルのことにほかならず、「状態」として、確率モデルのパラメータを $\theta$, 「表現」として、観測されうるデータを $Data$ とすれば:

$$ P(\theta | Data) = \frac{P(Data | \theta)P(\theta)}{P(Data)} = \frac{P(Data | \theta)P(\theta)}{\sum_{i} P(Data|\theta_i)P(\theta_i)} $$

ベイズの公式となる。この式は、繰り返しになるが、「今の確率モデル($\theta$をパラメータとするモデル)のもとで、仮に $Data$ が観測されたときに、確率モデルのパラメータ として $\theta$ が、より正確である(現実に即している)確率」を表している。

この時点では、$Data$ はまだ「実際に観測されたデータ」ではなく「観測されうるデータ」として、つまり、「もしも話」だということに留意しておく。

世の中的には広く、これの左辺($P(\theta | Data)$)を事後分布と呼び、一方で右辺の $P(\theta)$ のことを事前分布と読んでいる。

おかゆは、この状態で「事後確率」と呼ぼうとするのはちょっと早漏なんちゃうかな?と思っている、というのがこの記事のメイン。

「モデルの更新」をきちんと書く

「事前確率 → 事後確率」という「更新」のプロセスが、ベイズの公式に含まれているかと言われると甚だ怪しい。上述したように、ベイズの公式が述べるのは「もしも話」であって、「実際に云々のデータが観測され、更新した後の $\theta$ の確率」それ自体を語っているわけではない。非常に雑にいうと、モデルをどう更新するのかは完全に人為的な営みであり、ベイズの公式が提示してくる $P(\theta | Data)$ は更新方針のいち材料でしかない。……という立場を取ると、$P(\theta | Data)$ のことを「事後確率」と呼ぶのは、ベイズの公式の時点では早計だというように思うわけです。

モデルの更新は、ベイズの公式ではなく、人の手によって行われるというのが、まず1つ目のメモです。

つまるところ、$P^{\rm{new}}(\theta)$ をどうやって決定しようかという話です。これはある種、アルゴリズム的な話でもありますが、確率論的な裏付けがほしいです。というわけで:

$$ P^{\rm{new}}(\theta) = \sum_{i} P(\theta | data_i) P(data_i) $$

によって更新することにします。「云々のデータがこれくらいの確率で出る」という情報と、ちょうど先ほどベイズの公式で求めた「云々のデータが出たときの、パラメータ $\theta$ の当たり具合」という情報を用いれば、なるほど、モデルは更新できそうです。

さて、データの観測を一発勝負にします。一度だけ観測し、あるデータ $data_k$ が得られた場合、その確率分布は:

$$ P(Data = data_i) = \Delta_{i, k} $$

とできるはずです。ここで、今は簡単のために離散分布を考えているので、$\Delta_{i, k}$はクロネッカーのデルタです。連続分布を考えるなら、ディラックのデルタにしてください。

今まさにそのサンプリングによって得られるデータの確率は、実際の観測によって収束した、という風に考えたわけです。

得られるデータの確率分布(というか、$data_k$ が得られたという事実)、および、ベイズの公式の左辺項を用いて、結果的に更新後の確率モデルパラメータの分布は:

$$
P^{\rm{new}}(\theta) = \sum{i} P(\theta | data_i)P(data_i) = \sum{i} P(\theta | data_i) \Delta_{i, k} = P(\theta | data_k)
$$

となり、結果的に、$P(\theta | data_k)$ が確かに「事後確率」として採用できることが示せました。

まとめ

モデルの更新は、ベイズの公式ではなく、人の手によって行われるものであるはずです。そこで、いわゆる「ベイズ更新」を用いる際のその手の動かし方をきちんと書くことで、確かにふつう「事後確率」と呼ばれるものが、更新後の分布として採用されることを示しました。

このプロセスを経ると、確かにベイズの公式の左辺項は「事後確率」と呼んでいいですが、ベイズの公式を「事後確率を算出するための式」として権威づけるのは、ちょっとやりすぎな感じはしますよね。

おまけ

計算生物学におけるカーネル法(数学者のための分子生物学入門,研究会報告) - 国立国会図書館デジタルコレクション


計算生物学におけるカーネル法(数学者のための分子生物学入門,研究会報告) - 国立国会図書館デジタルコレクション

人工言語って虚無じゃないですか(お気持ち創作論)

にわかに流行っているので、おかゆも書きたくなりました。

【参考】

kakuyomu.jp

zaslon.info

note.com

一本の筋に載せて長文かける気がしないので、小さなコラム単位で色々書いていこう、と思って1編書いたんですが、なんか微妙だったんでやっぱり一本の筋で載せれるところだけ書きます。

の前に:誰?

おかゆって何してたんかなっていうのを書いておいたほうがいい気がしたので書きます。

cogas.github.io

いちばん最初の発端はエスペラントで、本格的にはロジバンにドハマリして人工言語の世界にやってきました。その頃はあまりちゃんとした日本語での学習リソースもなく、一方で英語圏ではようやく初学者向けの分かりよいロジバン講座ができたのもあって、おかゆはその日本語訳から始まり、日本の人工言語界の文化も踏襲して「はじめてのロジバン」を書き下ろしました。第2版を書いている途中で数億年の月日が経ちましたが、関係者のみなさまには多大なるご迷惑をおかけしております。誰か続き書いてくれんかな。

基本的には「ロジバンの人」として佇んでおりましたが、自作の言語もいくつか作ろうとしてて、ログに残ってるものとしては、xaana palaadiとか、縁語やその派生のエニシキ、ロジバンmodとしてのiugbanなどがあると思います。中でも一番有名なのは「アラズ語」ですね。今でもたまにツイッターで言及されているのを見かけるし、なぜか細く長く愛されていますね。ありがたいです。

あと、同時に、分析哲学言語哲学)も非常に関心があって、「言語ってなんだろう」というところから興味があることが多いです。アラズ語はまさに「人工言語とは何なんだろうな」というような問いから出てきたかもしれません(覚えてません)。

ここたくさん書いても仕方ないか。次行きますね。

長いので消しました。

人工言語って虚無じゃないですか

本題です。

人工言語(実際、言語がそうかもね)は本質的に虚無です。虚無なので、最終的に目標は「いかにして他人にその存在を錯覚させるか」ということになってきます。他人にはいわゆる自分ももちろん含まれますが、殊に自分に対してはピンポイントに統合失調を引き起こせば解決します。

本質的に虚無なので、我々はそれを支持する別存在、世界背景や文化、小説、音声や動画といったコンテンツにやがて執着していくわけです。とはいえ、まずその言語を「あるかも」と思わせる最初の道具は、やっぱり文法書と辞書になると思います。逆に言えば、文法書と辞書だけがその人工言語の所在を知っているわけで、その有り様(書きザマやその形態もちろん含まれます)はその言語の「鏡」です。言い方を変えると、「文法書」や「辞書」は、人工言語においてはそれ自体が既に作品として曝されてるんですよね。

おかゆは度々「人工言語はフィールドワーク的に作ったほうがいい」という風に言っていますが、これは「人工言語は開発する」ものではなく「探索する」ものだという意味あいです。少なくとも第三者への見せ方としては。「開発」という言葉遣いは、もうその時点で既に「その言語は虚無です」と言ってしまっているようなものなので、自ら、その虚構性を認めてしまっています。どうせなら錯覚させませんか?既にあなたの頭には「ある」んですから。

アラズ語は、虚無自体に言語っぽい名前とそれらしい説明をつけただけなんですが、みんな面白おかしく「言語」のひとつとして受け入れてしまってくれていますね。みなさんお気づきでないかもしれませんが、実はアラズ語というのは、無なんですよ!あれのどこが【言語】なんですか?でもやっぱり言語なんですよね。人工言語ってそういうものなんだろうなというのがおかゆの考えです。

人工言語ってマジで無いんですよ。だから「うまい表し方」があるだけです。じゃあその「うまい表し方」ってなんなんでしょうね?それはたぶん付喪神の憑かせ方と同じで、いかに執着して愛着するか、というのが現状の最良の答えです。

とはいえ、冷たい目でみれば、どんなに情熱や執念をもったところで、出来上がるのは「無いものをあるように見せるための一連のテキスト」です。これってハッキングできそうじゃないですか。おかゆ人工言語自動作成に関心があるのは、まさにこの「中国人の部屋」に関してです。本質が虚無だからこそ、インターフェースがすべての意味をなす。そのインターフェースを模倣するようなアルゴリズムが作れたら、もうそれって「執念と情熱を費やした人工言語」なんじゃないかと思うんですけど、どう思います?「表層から内実を覗く」という構図を本質的にもつ人工言語は必ずいつかこの危機に曝されると思います。ドキドキしますね。

工学言語畑にいながら、求める人工言語の姿は結構ファンシーだなと書きながら思いました。工学言語畑にいたからこそかもしれません。ハッキングしてぜんぶ滅ぼしたいと思う一方で、滅ぼせない領域にまで人工言語の追求が及んでいてほしいという気持ちもあります。少なくともくだらんハックに惑わされないように、きちんと人工言語の根っこを掴んでいたいよね。そのためには既存の言語学的なフレームワークから抜け出して、人間というか想定話者というか、そういった対象の意識の傾向を掴まないといけないと思います。

飽きてきたので終わります。ばいばい

ドレミファソラシドの間

めちゃくちゃ久しぶりに書く割にクソどうでもいい話

黒鍵の音、いい読み名ないんか?

www.covez.jp

ドデレリミファフィソサラチシ

個人的には

  • ド# ダ
  • レ♭ ル
  • レ# リ
  • ミ♭ モ
  • ファ# フィ
  • ソ♭ ス
  • ソ# サ
  • ラ♭ ロ
  • ラ# リャ
  • シ♭ ショ

な感じしますよね。

6W2Hについて考える

子供の頃は5W1Hときいて、新入社員のときは5W2Hときいて、最近は6W2Hというらしい。

  • what
  • who
  • whom
  • when
  • where
  • why
  • how
  • how much

無理やり「コスト」のこと考えさせようとするのがいかにも社会人らしい標語ではある

さておき、これらは事象の基本的な枠組みを形成しているように思われる。who, what, whomがあるので SVOはカバーしてるし。

しかし、「6W2H」という言葉だけを覚えているだけで、とりあえず使おうとして頓珍漢な事象分析をしてしまうケースもよく見てきた。

なんで頓珍漢になるんだろ?と疑問に思っていたが、このフレームワークには複数のタイプがあって、同じ項目を携えてはいるものの、その相互関係や役割がタイプによって微妙にちがうように思う。そこを一緒くたにしてしまうと頓珍漢な事象分析になってしまう。

という仮説をもって、それでは「どんなタイプがあるのか」を考えなければならない。それを体系化することで、ひとつの思考ツールになりそうだ。

そういうカテゴリです。これは。

考えながら書いてるので無茶苦茶かもしれない。許してください。

以下面倒くさくなってきたので、単に「WHフレームワーク」と呼ぶことにする。

さて、どういったタイプがあるのかを考えよう。今思いついているものとしては

  • タスク型
  • 現状型
  • プロジェクト型

それぞれどういうものか簡単に書き留める

タスク型

「達成すべき事象」を把握するときに使う。一番よく使われるはず。「何々やっといて~」ってやつ。

和音ってなんなんだろな

厳密には「コードシンボルってなんなんだろな」だが。

まあでも元をたどれば、トライアド(三和音)の名付けの仕方に到達するので、「和音ってなんなんだ」でも変わらんな。

トライアド、まずルートがあって、そこから第三音と第五音を決めるという感じだが、

だからといってルートが最低音である必要はなく(!)、いわゆるその転回形もまた同じ和音として扱われる。

もっと言うと、オクターブ上の音も、音高が同じであれば、いくらそこに加えても(厳密にはちょっと違うっぽいけど)同じ種の和音である。

となると、「ルート」と、他の音の「ルートからの度数」、という要素は和音を生成する最小条件ではあるが、

これが、あるひとつのコードネームで表される和音すべてを網羅している、というわけではなさそうだ。

つまり、十分条件を探したい。

以下はメモ。

結局、ヴォイシングの話である。「ルート」と、他の音の「ルートからの度数」というのはあくまでヴォイシングの1つのやり方であって、

確かにそれによって和音を決定することはできるんだが、他のヴォイシングによる同等の和音について触れることができていないでいる。

じゃあ、和音 C とはなんなのかと言うと。

ドとミとソからなる。

・・・でもいいんだが、これに加えて音の響きを表す(つまり、何度と何度と…)風に言うと

f:id:waraby0ginger:20190729003931p:plain

よりモダンに、クロマチックで書けば、

f:id:waraby0ginger:20190729003936p:plain

のスキームに従うヴォイシングでできあがる和音のことを、「メジャー」と呼ぶ、というわけである。

で。このヴォイシングスキームに名前をつけるにあたって、なんかしらの忖度を行うことで、(ドミソの場合)「C」とするわけだ。

まあしかし、和音というのは難儀な話で、単に「音の響き」だけを意味しているのではなく、

「他の和音とのつながり」、つまり「コード進行」ありきで命名されているんだろう、というところがまたうざったい話である。

・・・ミス

f:id:waraby0ginger:20190729005243p:plain

自身のオクターブ上への移行を忘れてた。

さて、一周するとオクターブになるので、+12n になるはずだ。外回りは +12, 内回りは +24 に確かになっている。

さらに、「行って戻ってくる」を行うことでもオクターブ上にならざるをえないので、同じノード間をつなぐ2つの矢印の和は +12 になる。

となれば、まず、内回りの矢印の大きさは、外回りのそれぞれの矢印の大きさに完全に依存する: x + y = 12 それに加えて、外回りの矢印も、1周すれば +12 になるので、構成音よりも自由度は1つ少ない。

…当たり前ながら、トライアドの場合は、(相対しない)矢印の大きさを 2つ決めてやれば、和音が決定する。

かつ、そのふたつの矢印

結局自作エフェクター用のどの電子部品をどこで買うのがいいのかを列挙したリストをつくりたい

ですね。

論点は、

の3点かなあ。「とりあえずブツがほしい!」っていうんなら、プライム会員ならAmazonが一番安い気がする。