torch.distributionsにおける負の二項分布 (negative binomial)
負の二項分布には複数の定義があります。そのうちどれが torch.distribution
で採用されているか忘れがちなのでまとめました。
負の二項分布
結果が成功か失敗かの2択になるような確率的試行をBernoulli試行と呼びます。
Bernoulli試行を何度も行う場合を考えます。成功確率を
これを負の二項分布 (negative binomial distribution) と呼びます。確率変数とパラメータはそれぞれ,
- 確率変数:
, 試行を止めるまでの成功回数k \in \{0, 1, 2, \cdots\} - パラメータ:
-
, 試行を止めるまでの失敗回数r \in \mathbb{N} -
, 成功確率p \in [0, 1]
-
となります。torch.distributions
の実装 (torch.distributions.negative_binomial.NegativeBinomial
) はこの定義です。
複数の定義
上記の定義における成功回数と失敗回数は、文献により逆になる場合があります。即ち、試行を止めるまでの成功回数をパラメータ
例えば、pytorchや日本語版Wikipediaでは前者、英語版Wikipediaでは後者の定義が紹介されています。
Gamma関数を用いた定義
ガンマ関数
となるため、確率質量関数は
と書けます。これを用いると、パラメータ
torch.distributionsにおける実装
torch.distributions.negative_binomial.NegativeBinomial
は, 以下の3つの引数を受け取ります。
-
total_count
: , 試行を止めるまでの失敗回数r \geqq 0 -
probs
: , 成功確率p \in [0, 1) -
logits
:\mathrm{logit}(p) \in \mathbb{R}
- 平均
\mathbb{E}[k] = \dfrac{rp}{1-p} = r e^\alpha - 分散
\mathbb{V}[k] = \dfrac{rp}{(1-p)^2} = \dfrac{r e^\alpha}{\sigma(-\alpha)}
と表記できます。torch.distributions
におけるmean
及びvariance
も上式で計算されています。
また、対数尤度log_prob
は以下のように計算されます。
torch.lgamma
, torch.nn.functional.logsigmoid
が存在します。
その他のparametarization
回帰モデルを作る場合は、平均や分散に基づくパラメータを用いた方が何かと便利です。
そこでパラメータ
平均は
(
と表せます。このパラメータを用いてtorch.distributions
のインスタンスを作る場合は以下のように設定します。
-
total_count
:\theta -
logits
:\ln \mu - \ln \theta
Discussion