確率的プログラミングの汎用性

  • 資料はこちら
  • Haskellで確率的プログラミング、ということで調べ物をしている
  • 確率事象を扱うために以下のような特徴があることがよい、という話
  • 逆に言うと確率的プログラミングは以下のような取り扱いをするものだ、ということで、それがさらりとできるハスケルが便利だ、とそういう話
    • List monadが事象空間を表せて
    • 事象とDoubleとのペアのリストになったモナドを作ると、確率密度を表せて
    • 一部のモナド要素に、「値なし」を持たせる(Maybeモナド)とすることで、条件付確率が表せて
    • 乱数サンプリングをlazy評価で後回しにして
    • 無限を扱えて
    • 評価しないから、While loopも扱える
  • と、こういうのがHaskellのできることだ、という話になっている
  • 翻って、その他の確率事象を用いたプログラミングだと
    • Bayesian networkが確率変数に離散的なそれしかもてなかったり、Directed Acyclic Graphしか使えなかったりという制約があること
    • Discrete Time Markov Chainはwhile loopが使えるが、それもProbabilistic Programmingの特徴であり、よいのはよいが、ハスケルみたいな作りもよいよ、と言う