時間という悪魔について

 苦役に服すとき、時計を見てはならない。

 30分経ったと思っても、実際には時計は10分しか進んでいない。

 そして次に見たときに進んでいるのは5分である。

 時計を見るたびに時間が流れる速さは次第に遅くなっていき、永久にその空間に追放されてしまう。

 猶予された休暇が与えられたとき、カレンダーを見なくてはならない。

 時計も見る必要がある。

 私達がカレンダーや時計を見張っていないと、何者かが勝手に時間を進めている。

 時間の速さを変えている存在はたしかにそこにいる。

 それは苦しい時間を長くして楽な時間を短くすることで私達を困らせる。

 私はその存在を悪魔と呼ぶ。

 あるいは、時間そのものが悪魔なのかもしれない。

 時間自体が自由自在に変形して、私達に苦痛をもたらすのだ。

ChatGPTに指示して詩を作ってもらい、手作業で加工しました。

ヴィネラル形式(19行2韻詩)で作ったらしいですが、手作業で加工したので19行2韻ではありません。

VSCodeのvimで空行のインデントが解除されないようにしたい

vimVSCodevimでは挿入モードからノーマルモードに移るときに空行のインデントが解除されてしまいます。 具体的には次のとおりです。

  • 挿入モード
some text
    |
    ^カーソル
some text
_
^カーソル

これをツイートしたところ、私のフォロワーが解決方法を教えてくれました。

VSCodevimに特有の挙動かと思ったら、本家のvimでも同じ挙動みたいです。

stackoverflow.com

これによるとvimでは.vimrcに次の通りに書くと空行のインデントが保持されるみたいです。

inoremap <CR> <CR>x<BS>
nnoremap o ox<BS>
nnoremap O Ox<BS>

VSCodevimの場合はsettings.jsonに次の通り書き込むと期待した動作をしてくれました。

    "vim.insertModeKeyBindingsNonRecursive": [
        {
            "before": ["<CR>"],
            "after": ["<CR>", "x", "<BS>"]
        },
    ],
    "vim.normalModeKeyBindingsNonRecursive": [
        {
            "before": ["o"],
            "after": ["o", "x", "<BS>"]
        },
        {
            "before": ["O"],
            "after": ["O", "x", "<BS>"]
        },
    ]

VSCodevimではinoremap"vim.insertModeKeyBindingsNonRecursive"で、nnoremap"vim.normalModeKeyBindingsNonRecursive"で設定できます。

これで快適なコーディングライフが送れます。

独立性を仮定せずにナイーブベイズぽく同時確率を求めたい

初投稿です。雰囲気で書いてる部分あり

 

P(X), P(Y), P(Z), P(X, Y), P(Y, Z), P(Z, X)

上のものを使ってなるべく下に近いものを求めたい

P(Y, Z |X)

 

どうしよう?まずベイズの定理は以下

P(A, B) = P(A|B) P(B) = P(B|A) P(A)

 

あとナイーブベイズ

P(A)とP(B)は独立と仮定する。このときP(A, B) = P(A) P(B)

 

なんとなく思い浮かんだ下の(1)が近そう(弱い仮定のもとで近似式が等式として成り立つ)で(2)はもっと近そうな気がする

 

(1)

P(Y, Z |X) ≒ P(Y|X) P(Z|X)

                 = P(X, Y) P(X, Z) / P(X)^2 

 

(2)

 P(Y, Z |X) ≒ P(Y|X) P(Z|X) P(Y, Z) / (P(Y), P(Z))

                  = P(X, Y) P(Y, Z) P(Z, X) / (P(X)^2 P(Y) P(Z))

 

 

(1)については

ナイーブベイズのようにP(Y|X) と P(Z|X)が独立(ただしP(X)とP(Y)、P(X)とP(Z)は独立でなくてもよい)と仮定すると、

P(Y, Z|X) = P(Y|X) P(Z|X)

これをベイズの定理で変形すれば(1)の近似式を等式に置き換えたものになる。

 

(2)について

まずP(A)とP(B)の相互作用の度合い(私が勝手に考えたもの)*1 ))を下のようにおいてみる。AとBが独立なら相互作用度は常に1になる。

P(A, B) / (P(A) P(B))

(2)は(1)をP(Y)とP(Z)の相互作用度で割ったもの

うまく説明できないが割ったほうが(1)より良い気がする。

 

(2)は「P(Y|X)とP(Z|X)の相互作用度がP(Y)とP(Z)の相互作用度が等しい」を仮定したものだ。この仮定のもとでは(2)の近似式は等式として成り立つ。

これは(1)の条件よりゆるい気がする。なぜなら

P(Y|X)とP(Z|X)が独立 ⇛ P(Y)とP(Z)が独立

っぽくて、このとき

P(Y|X)とP(Z|X)が独立 ⇛ これらの相互作用度が常に1

P(Y)とP(Z)が独立 ⇛ これらの相互作用度が常に1

で相互作用度が等しくなるから。

 

 

あと(2)を変形すると下の通り対称式になるから(2)は妥当っぽいんだよね。。

P(X, Y, Z) ≒ P(X, Y) P(Y, Z) P(Z, X) / (P(X) P(Y) P(Z))

 

 

tex使う気力がなかった…

*1:相関係数相互情報量に似ている。相互情報量はこの相互作用度の対数の期待値だし、相関係数はσ(x, y)^2 / (σ(x) σ(y