ベルヌーイ分布とは?期待値・分散・エントロピーまでわかりやすく解説

コインを1回投げて表が出るか裏が出るか。広告を1回表示してクリックされるかされないか。1通のメールが迷惑メールか正規メールか。世の中には「2つのうちどちらが起きたか」だけを問う場面が驚くほどたくさんあります。こうした 「0か1か」の試行を1回だけ行ったとき の確率を表すのが、ベルヌーイ分布(Bernoulli distribution) です。

ベルヌーイ分布はおそらく確率論で最もシンプルな分布です。パラメータはたった1つ、成功確率 $p$ だけ。それなのに、この分布は驚くほど多くの場所に顔を出します。コインを $N$ 回投げた成功回数を数えれば 二項分布 になり、その成功確率にベイズ的な信念を持たせれば ベータ分布 が事前分布として自然に現れます。説明変数から成功確率を予測すれば ロジスティック回帰 になり、観測データから $p$ を推定すれば 最尤推定 の最も簡単な実例になります。さらに、ベルヌーイ分布は 指数型分布族 の代表選手でもあり、機械学習の理論で繰り返し登場します。

つまりベルヌーイ分布は、確率分布・推定・ベイズ統計・機械学習という4本の柱がすべて交わる「玄関口」なのです。ここをきちんと押さえておくと、その先の学習が一気に楽になります。本記事では、定義から各統計量の導出、推定、そして発展的な関係までを、数式を省略せず・図を交えながら丁寧にたどっていきます。

本記事の内容

  • ベルヌーイ分布の直感的な意味と確率質量関数の定義
  • 期待値 $p$・分散 $p(1-p)$・エントロピーの導出(省略なし)
  • 最尤推定による $p$ の推定と、二項分布・ベータ分布・ロジスティック回帰・指数型分布族とのつながり
  • Pythonによる可視化・サンプリング・推定の実装

前提知識

この記事を読む前に、以下を押さえておくと理解が深まります。とはいえ初学者でも読めるように書いていますので、知らない用語が出てきたら都度補足を読めば十分です。

ベルヌーイ分布の直感 — コインを1回投げる

まず難しい式を見る前に、頭の中でコインを1枚投げてみましょう。出るのは「表」か「裏」のどちらかだけ。3番目の結果はありません。ここで表を $1$、裏を $0$ と数値で表すことにします。すると1回のコイン投げの結果は、必ず $0$ か $1$ のどちらかの数になります。

このとき、表が出る確率を $p$ とすれば、裏が出る確率は残りの $1-p$ です。公平なコインなら $p = 0.5$ ですが、わざと表が出やすく細工したコインなら $p = 0.7$ のように偏ることもあります。「1回の試行」「結果は0か1」「成功確率は $p$」 という3点セットがそろった状況を数式で表したもの、それがベルヌーイ分布です。

下の図は、成功確率 $p$ をいくつか変えたときの確率の出方を棒グラフにしたものです。

p別のベルヌーイ分布の確率質量関数

この図を見ると、$p$ が大きいほど右側($x=1$、成功)の棒が高くなり、$p$ が小さいほど左側($x=0$、失敗)の棒が高くなることがわかります。2本の棒の高さの合計は必ず $1$ です。これは「表か裏のどちらかは必ず出る」という当たり前の事実が、確率の合計が1になる性質として表れているわけです。

このシンプルな絵を数式に落とし込むと、次のような美しい1本の式にまとまります。次節でその定義を見ていきましょう。

ベルヌーイ分布の確率質量関数の定義

「表なら確率 $p$、裏なら確率 $1-p$」という場合分けを、1つの式で書けると便利です。ベルヌーイ分布の定義式は、この場合分けを指数のトリックで1本にまとめたものになっています。

ベルヌーイ分布は、1つのパラメータ $p \in (0, 1)$ をとる離散確率分布で、次のように定義されます。

$$ \begin{equation} \mathrm{Bern}(x \mid p) = p^{x}\,(1-p)^{1-x}, \qquad x \in \{0, 1\} \end{equation} $$

確率変数 $x$ がとりうる値は $0$ か $1$ だけです。なお、パラメータを $\mu$ と書く流儀(PRMLなど)もありますが、本記事では成功確率を直感的にイメージしやすい $p$ で統一します。

この式が場合分けと一致することを確かめてみましょう。指数の肩に $x$ が乗っているのがポイントです。

$x = 1$(成功)を代入すると、

$$ \mathrm{Bern}(1 \mid p) = p^{1}\,(1-p)^{1-1} = p^{1}\,(1-p)^{0} = p $$

$x = 0$(失敗)を代入すると、

$$ \mathrm{Bern}(0 \mid p) = p^{0}\,(1-p)^{1-0} = 1 \cdot (1-p)^{1} = 1 – p $$

このように、$x$ を $0$ にすると $p$ の項が消え、$x$ を $1$ にすると $(1-p)$ の項が消えます。「肩の指数で項のオン・オフを切り替える」という仕掛けによって、場合分けが1本の式にまとまっているわけです。成功確率 $p$、失敗確率 $1-p$ という表に整理すると次のようになります。

$x$ $0$(失敗・裏) $1$(成功・表)
$P(X = x)$ $1 – p$ $p$

定義式を手に入れたので、次は「これがちゃんと確率分布として成立しているか(合計が1か)」を確認しておきましょう。

正規化の確認

確率分布である以上、すべての起こりうる値について確率を足し合わせると $1$ にならなければなりません。これを 正規化(normalization) と呼びます。ベルヌーイ分布がとりうる値は $0$ と $1$ の2つだけなので、その2つの確率を足してみます。

$$ \sum_{x \in \{0, 1\}} \mathrm{Bern}(x \mid p) = \mathrm{Bern}(0 \mid p) + \mathrm{Bern}(1 \mid p) = (1 – p) + p = 1 $$

きちんと $1$ になりました。$p$ がいくつであっても(細工したコインでも)、成功と失敗の確率を足せば必ず $1$ になる。これは「1回投げれば必ずどちらかの結果が出る」という現実と完全に対応しています。

定義と正規化が確認できたので、分布の「形」を数値で測る統計量に進みましょう。まずは最も基本的な期待値(平均)です。

ベルヌーイ分布の期待値

期待値とは、その確率変数を何度も観測したときの「平均的な値」のことです。コインを大量に投げて、表を1点・裏を0点として平均得点を計算すれば、それが期待値の実感です。

結論を先に言うと、ベルヌーイ分布の期待値は次のようにとてもシンプルです。

$$ \begin{equation} E[X] = p \end{equation} $$

公平なコイン($p=0.5$)なら期待値は $0.5$。表を1・裏を0と数えて平均すると、ちょうど真ん中の $0.5$ になるという直感とぴったり合います。

期待値の証明

離散確率分布の期待値は「値 × その値が出る確率」の総和で定義されます。ベルヌーイ分布の場合、値は $0$ と $1$ の2つだけなので、和は2項で済みます。

$$ \begin{equation} \begin{split} E[X] &= \sum_{x \in \{0,1\}} x \cdot P(X = x) \\ &= 0 \cdot (1 – p) + 1 \cdot p \\ &= p \end{split} \end{equation} $$

途中で、$x = 0$ の項は $x$ そのものがゼロなので消え、$x = 1$ の項だけが残ることに注意してください。残った項の確率が $p$ なので、期待値は $p$ そのものになります。

期待値が $p$ という分布の「中心」を表すのに対し、分布の「広がり(ばらつき)」を測るのが分散です。次に分散を導出します。

ベルヌーイ分布の分散

分散は、結果が期待値からどれくらいばらつくかを表します。コインで言えば「結果がどれくらい予測しづらいか」の指標です。結論はこちらです。

$$ \begin{equation} \mathrm{Var}[X] = p(1 – p) \end{equation} $$

この $p(1-p)$ という形は、確率・統計のいたるところで顔を出す重要な量です。期待値 $p$ と一緒にグラフにすると次のようになります。

ベルヌーイ分布の期待値と分散

このグラフから2つのことが読み取れます。第一に、期待値(赤線)は $p$ に対してまっすぐ増える直線です。第二に、分散(緑線)は上に凸の放物線で、$p = 0.5$ のとき最大値 $0.25$ をとり、$p = 0$ や $p = 1$ では $0$ になります。「結果が確実($p=0$ か $p=1$)ならばらつきはゼロ、五分五分のとき最もばらつく」という直感どおりの振る舞いです。この分散最大の意味については後ほど専用のセクションで掘り下げます。

分散の証明1 — 期待値の関係式から

分散を定義どおり計算してもよいのですが、まずは便利な関係式を使った計算を紹介します。分散は次のように、$X^2$ の期待値と $X$ の期待値の2乗の差で書けます(頻出の公式)。

$$ \begin{equation} \mathrm{Var}[X] = E[X^2] – (E[X])^2 \end{equation} $$

この式を使うには $E[X^2]$ が必要です。ベルヌーイ分布では $x \in \{0,1\}$ なので、$x^2$ も $0$ か $1$ にしかなりません($0^2 = 0$, $1^2 = 1$)。つまり $X^2$ も実は $X$ と同じ値しかとらないので、期待値も同じになります。

$$ \begin{split} E[X^2] &= \sum_{x \in \{0,1\}} x^2 \cdot P(X = x) \\ &= 0^2 \cdot (1 – p) + 1^2 \cdot p \\ &= p \end{split} $$

これを(6)式に代入します。$E[X] = p$ なので $(E[X])^2 = p^2$ です。

$$ \begin{split} \mathrm{Var}[X] &= E[X^2] – (E[X])^2 \\ &= p – p^2 \\ &= p(1 – p) \end{split} $$

最後に $p$ でくくると $p(1-p)$ が得られました。(5)式と一致しています。

分散の証明2 — 定義式から

念のため、分散の定義式からも導いておきましょう。分散は「各値と期待値の差の2乗」の期待値です。

$$ \mathrm{Var}[X] = \sum_{x \in \{0,1\}} (x – E[X])^2 \cdot P(X = x) $$

$E[X] = p$ を代入し、$x = 0$ と $x = 1$ の2項に分けて書き下します。

$$ \begin{split} \mathrm{Var}[X] &= (0 – p)^2 \cdot (1 – p) + (1 – p)^2 \cdot p \\ &= p^2 (1 – p) + (1 – 2p + p^2)\, p \end{split} $$

ここで $(1-p)^2 = 1 – 2p + p^2$ と展開しました。続いて各項を展開して整理します。

$$ \begin{split} \mathrm{Var}[X] &= p^2 – p^3 + p – 2p^2 + p^3 \\ &= p – p^2 \\ &= p(1 – p) \end{split} $$

$p^3$ の項が打ち消し合い、$p^2$ の項がまとまって、結局 $p(1-p)$ に戻りました。2通りの方法で同じ答えにたどり着いたので安心です。

分散は「ばらつき」を測りましたが、もう一歩進んで「不確実さそのもの」を測る量があります。それがエントロピーです。

ベルヌーイ分布のエントロピー

エントロピーは、結果がどれくらい「予測しづらいか(不確実か)」を表す情報理論の量です。表ばかり出るインチキコイン($p=0.99$)は結果がほぼ予測できるので不確実性は小さく、公平なコイン($p=0.5$)は最も予測しづらいので不確実性が最大になります。エントロピーはこの「予測しづらさ」を数値化します。

エントロピーの定義は次のとおりです(ここでは自然対数で書きます。底を $2$ にすると単位がビットになります)。

$$ H[X] = -\sum_{x \in \{0,1\}} P(X = x) \ln P(X = x) $$

ベルヌーイ分布に当てはめてみましょう。確率は $P(X=0) = 1-p$ と $P(X=1) = p$ の2つだけなので、和は2項です。

$$ \begin{split} H[X] &= -\big\{ (1 – p)\ln(1 – p) + p\ln p \big\} \\ &= -p\ln p – (1 – p)\ln(1 – p) \end{split} $$

この関数を $p$ の関数としてプロットすると、特徴的な釣鐘型になります。

ベルヌーイ分布のエントロピー

このグラフから読み取れることは明快です。エントロピーは $p = 0.5$ のときに最大値(自然対数なら $\ln 2 \approx 0.693$、ビット単位なら $1$ ビット)をとり、$p$ が $0$ または $1$ に近づくほど $0$ に落ちていきます。$p=0$ や $p=1$ では結果が確定しているので「知るべき情報はゼロ」、五分五分のときは「結果を知って初めて1ビットの情報を得る」という情報理論の直感と一致しています。

エントロピーは2値の符号化や決定木の分割基準(情報利得)など、機械学習でも頻繁に使われます。ここまでで分布の性質はそろったので、次は実データから $p$ を推定する話に移りましょう。

ベルヌーイ分布の最尤推定

ここまでは「$p$ がわかっている」前提で分布の性質を調べてきました。しかし現実では逆で、コインを何回か投げた観測結果から「このコインの $p$ はいくつか?」を推定したい場面がほとんどです。この推定の最も標準的な方法が 最尤推定(Maximum Likelihood Estimation, MLE) です。

直感はシンプルです。「観測されたデータが最も起こりやすくなるような $p$ を選ぶ」。たとえば10回投げて7回表が出たなら、$p$ は $0.7$ あたりが一番もっともらしい、という考え方です。

$N$ 回の独立な試行で、結果が $x_1, x_2, \dots, x_N$(各 $x_i \in \{0,1\}$)だったとします。独立なので、これらが同時に起こる確率(尤度)は各確率の積になります。

$$ L(p) = \prod_{i=1}^{N} \mathrm{Bern}(x_i \mid p) = \prod_{i=1}^{N} p^{x_i}(1-p)^{1-x_i} $$

積のまま最大化するのは大変なので、対数をとって積を和に変えます(対数は単調増加なので、最大点は変わりません)。これが 対数尤度 です。

$$ \ell(p) = \ln L(p) = \sum_{i=1}^{N} \big\{ x_i \ln p + (1 – x_i)\ln(1 – p) \big\} $$

ここで成功回数を $m = \sum_{i=1}^N x_i$ と置くと、$\sum x_i = m$、$\sum (1 – x_i) = N – m$ なので、和がすっきりまとまります。

$$ \ell(p) = m \ln p + (N – m)\ln(1 – p) $$

この $\ell(p)$ を最大にする $p$ を求めるため、$p$ で微分して $0$ と置きます。

$$ \frac{d\ell}{dp} = \frac{m}{p} – \frac{N – m}{1 – p} = 0 $$

両辺に $p(1-p)$ を掛けて分母を払うと、

$$ m(1 – p) – (N – m)p = 0 $$

左辺を展開して整理します。$p$ の項をまとめると、

$$ m – mp – Np + mp = 0 \;\Longrightarrow\; m – Np = 0 $$

$mp$ の項が打ち消し合いました。最後に $p$ について解くと、最尤推定値が得られます。

$$ \begin{equation} \hat{p} = \frac{m}{N} \end{equation} $$

つまり最尤推定値は「成功回数 ÷ 試行回数」、すなわち単純な成功比率です。10回中7回成功なら $\hat{p} = 0.7$。最初の直感どおりの結果が、きちんと数式から出てきました。対数尤度の形を図で見ると、推定値で確かに山の頂点になっていることがわかります。

ベルヌーイ分布の最尤推定

この図から、対数尤度 $\ell(p)$ は上に凸な曲線で、その頂点がちょうど $\hat{p} = m/N$ にあることが見て取れます。観測比率を境に、それより小さい $p$ でも大きい $p$ でも尤度は下がります。なお、最尤推定のより詳しい議論や注意点(少数試行での過適合など)は別記事で深掘りしています。

最尤推定は「1点」で $p$ を当てる方法でした。ところで、ベルヌーイ試行を何回も束ねて「合計何回成功したか」を確率変数にすると、それは別の有名な分布になります。次に見てみましょう。

二項分布への一般化

コインを1回投げるのがベルヌーイ分布なら、「コインを $N$ 回投げて、合計何回表が出るか」を考えると何が起きるでしょうか。これがベルヌーイ分布の最も自然な拡張、二項分布(binomial distribution) です。

$N$ 個の独立なベルヌーイ確率変数 $X_1, \dots, X_N$(すべて成功確率 $p$)の和

$$ Y = \sum_{i=1}^{N} X_i $$

がとる分布が二項分布で、ちょうど $k$ 回成功する確率は次で与えられます。

$$ P(Y = k) = \binom{N}{k} p^{k}(1-p)^{N-k}, \qquad k = 0, 1, \dots, N $$

二項係数 $\binom{N}{k}$ は「$N$ 回のうちどの $k$ 回が成功だったか」という組み合わせの数です。$N = 1$ を代入すると $\binom{1}{0} = \binom{1}{1} = 1$ なので、$P(Y=0) = 1-p$、$P(Y=1) = p$ となり、まさにベルヌーイ分布に一致します。ベルヌーイ分布は二項分布の $N=1$ の特別な場合 なのです。

期待値と分散も、和の性質から簡単に求まります。独立な確率変数の和では、期待値も分散もそのまま足し算できるので、

$$ E[Y] = N p, \qquad \mathrm{Var}[Y] = N p(1 – p) $$

となります。1回あたり $p$・$p(1-p)$ だったものが、$N$ 回ぶんで $N$ 倍になっているわけです。$N$ を増やしたときに分布がどう変わるかを図で見てみましょう。

ベルヌーイ分布から二項分布への拡張

この図では $p = 0.4$ を固定して $N$ を $1, 3, 10, 30$ と増やしています。$N=1$ はベルヌーイ分布そのもので2本の棒だけですが、$N$ を増やすと山が右に動き(中心 $Np$ が大きくなる)、形が左右対称の釣鐘型に近づいていきます。実は $N$ を十分大きくすると二項分布は正規分布で近似でき、これは中心極限定理の最も身近な例になっています。

二項分布は「$p$ が既知のときに成功回数の確率を計算する」道具でした。逆に「成功回数を観測して $p$ について学ぶ」ベイズ的な立場では、$p$ 自体に分布を持たせます。そこで活躍するのがベータ分布です。

ベータ分布との共役性

最尤推定では $p$ を1つの値に決めましたが、データが少ないとその推定は不安定です(2回投げて2回表なら $\hat{p}=1$ になってしまう)。ベイズ統計では $p$ を確率変数とみなし、「$p$ はこのあたりだろう」という信念を 事前分布 として持ち込みます。ベルヌーイ・二項分布の成功確率 $p$ に対する事前分布として、数学的に最も相性がよいのが ベータ分布 です。

ベータ分布は $[0,1]$ 上で定義され、2つのパラメータ $\alpha, \beta$ をもちます。

$$ \mathrm{Beta}(p \mid \alpha, \beta) \propto p^{\alpha – 1}(1 – p)^{\beta – 1} $$

ここで $\alpha$ を「成功の擬似カウント」、$\beta$ を「失敗の擬似カウント」と思うと直感的です。さて、この事前分布のもとで $N$ 回中 $m$ 回成功というデータを観測したとします。ベイズの定理より、事後分布は「尤度 × 事前分布」に比例します。尤度は二項分布(定数の二項係数は比例の前で無視できます)なので、

$$ \begin{split} p(p \mid \text{データ}) &\propto \underbrace{p^{m}(1-p)^{N-m}}_{\text{尤度}} \cdot \underbrace{p^{\alpha-1}(1-p)^{\beta-1}}_{\text{事前}} \\ &= p^{\,m + \alpha – 1}(1-p)^{\,N – m + \beta – 1} \end{split} $$

指数の肩の同じ底どうしを足し合わせただけです。よく見ると、この最後の式は またベータ分布の形 をしています。具体的には、

$$ p(p \mid \text{データ}) = \mathrm{Beta}(p \mid \alpha + m,\ \beta + N – m) $$

事前分布がベータ分布なら、事後分布もまたベータ分布になる。このように「事前と事後が同じ分布族になる」性質を 共役性(conjugacy) と呼び、このときの事前分布を 共役事前分布 といいます。ベータ分布はベルヌーイ・二項分布に対する共役事前分布です。共役性のおかげで、ベイズ更新は積分計算を一切せず「パラメータに成功回数 $m$ と失敗回数 $N-m$ を足すだけ」で完結します。

ベータ事前との共役更新

この図は、$\mathrm{Beta}(2,2)$(成功・失敗を2回ずつ仮定した、ゆるやかに $p=0.5$ を信じる事前)から出発し、「10回中7回成功」を観測したあとの事後 $\mathrm{Beta}(9,5)$ を重ねたものです。事後分布は観測比率 $m/N = 0.7$(オレンジの破線)寄りに移動し、かつ事前より鋭く尖っています。データを見たことで信念が更新され、不確実性が減った様子がそのまま表れています。共役性の詳しい導出やA/Bテストへの応用は、ベータ分布の記事で扱っています。

ここまでは「$p$ をどう推定・更新するか」でした。視点を変えて「$p$ を説明変数から予測する」と、機械学習でおなじみのモデルにつながります。

ロジスティック回帰との関係

メールの単語の出現頻度から「迷惑メールである確率」を予測したい。年齢や年収から「ローンを返済する確率」を予測したい。こうした「特徴量から成功確率を予測する」問題の土台になっているのが、ベルヌーイ分布です。

予測したいラベル $y \in \{0, 1\}$ が成功確率 $p$ のベルヌーイ分布に従うと考えます。問題は、この $p$ を特徴量 $\boldsymbol{x}$ からどう作るかです。素朴に線形結合 $z = \boldsymbol{w}^{\top}\boldsymbol{x} + b$ をそのまま $p$ にすると、$z$ は $(-\infty, \infty)$ の値をとるのに対し $p$ は $[0,1]$ でなければならず、はみ出してしまいます。

そこで、$(-\infty,\infty)$ を $(0,1)$ に押し込める シグモイド関数 を使います。

$$ p = \sigma(z) = \frac{1}{1 + e^{-z}}, \qquad z = \boldsymbol{w}^{\top}\boldsymbol{x} + b $$

これが ロジスティック回帰 です。図で見ると、線形予測子 $z$ をなめらかに確率へ変換している様子がわかります。

ロジスティック回帰のシグモイドリンク

この図から、$z = 0$ のとき $p = 0.5$(判断の境界)、$z$ が大きくなれば $p \to 1$、小さくなれば $p \to 0$ に滑らかに近づくことが読み取れます。ロジスティック回帰の学習は、各データ点のラベル $y_i$ がベルヌーイ分布 $\mathrm{Bern}(y_i \mid p_i)$ に従うとして、その対数尤度を最大化する(=交差エントロピー損失を最小化する)操作にほかなりません。

実際、ベルヌーイ分布の対数尤度 $y \ln p + (1-y)\ln(1-p)$ の符号を反転したものが、分類でおなじみの 二値交差エントロピー損失 です。つまりロジスティック回帰の損失関数は、ベルヌーイ分布の最尤推定から自然に導かれているのです。なぜシグモイドという特定の関数が出てくるのか——その必然性は、ベルヌーイ分布が指数型分布族であることから説明できます。次節で見ていきましょう。

指数型分布族としての表現

シグモイド関数がロジスティック回帰に「なんとなく」使われているわけではないことを、最後に見ておきます。ベルヌーイ分布は 指数型分布族(exponential family) という大きなクラスに属しており、この視点に立つとシグモイドが必然的に現れます。

指数型分布族とは、確率分布を次の形に書けるもの全体のことです。

$$ p(x \mid \eta) = h(x)\exp\big\{ \eta\, T(x) – A(\eta) \big\} $$

ここで $\eta$ を 自然パラメータ、$T(x)$ を 十分統計量、$A(\eta)$ を 対数分配関数 と呼びます。正規分布・ポアソン分布・二項分布など、よく使う分布の多くがこの形にまとまります。ベルヌーイ分布もそうです。定義式を指数と対数で書き換えてみましょう。

$$ \mathrm{Bern}(x \mid p) = p^{x}(1-p)^{1-x} = \exp\big\{ x \ln p + (1-x)\ln(1-p) \big\} $$

指数の肩を $x$ について整理します。$\ln(1-p)$ の項を $x$ を含む部分と含まない部分に分けると、

$$ = \exp\left\{ x\,\ln\frac{p}{1-p} + \ln(1-p) \right\} $$

ここで対数の差 $\ln p – \ln(1-p) = \ln\frac{p}{1-p}$ をまとめました。これを指数型分布族の標準形と見比べると、自然パラメータ・十分統計量・対数分配関数が読み取れます。

$$ \eta = \ln\frac{p}{1 – p}, \qquad T(x) = x, \qquad A(\eta) = -\ln(1 – p) $$

自然パラメータ $\eta = \ln\frac{p}{1-p}$ は ロジット(対数オッズ) そのものです。この関係を $p$ について解き直してみましょう。$e^{\eta} = \frac{p}{1-p}$ から、

$$ p = \frac{e^{\eta}}{1 + e^{\eta}} = \frac{1}{1 + e^{-\eta}} = \sigma(\eta) $$

なんと、自然パラメータから成功確率への変換が シグモイド関数そのもの になりました。ロジスティック回帰でシグモイドを使うのは恣意的な選択ではなく、ベルヌーイ分布の自然パラメータ(ロジット)を線形モデル $\eta = \boldsymbol{w}^{\top}\boldsymbol{x}+b$ で表現した結果として必然的に出てくるものだったのです。

また、対数分配関数は $A(\eta) = \ln(1 + e^{\eta})$ と書けます($1 – p = \frac{1}{1+e^\eta}$ より)。この $A(\eta)$ は ソフトプラス関数 と呼ばれ、$\eta$ で微分すると $A'(\eta) = \sigma(\eta) = p = E[X]$、すなわち期待値が得られるという指数型分布族の一般的な性質も成り立っています。

ベルヌーイ分布の指数型分布族表現

左の図は自然パラメータ $\eta = \mathrm{logit}(p)$ を、右の図はその逆変換 $p = \sigma(\eta)$ と対数分配関数 $A(\eta)$ を描いたものです。$p = 0.5$ がちょうど $\eta = 0$ に対応し、$p$ が $0$ や $1$ に近づくと $\eta$ が発散することがわかります。指数型分布族の枠組みは、一般化線形モデル(GLM)や変分推論など機械学習の理論で繰り返し登場するので、ベルヌーイ分布を通じてその入り口に触れられたことになります。

理論的なつながりが見えたところで、これらの性質を実際にPythonで確かめてみましょう。

分散が最大になるのは p=0.5

実装に入る前に、先ほど後回しにした「分散最大」の意味をもう一度確認しておきます。これはベルヌーイ分布を語るうえで外せない直感だからです。

分散 $\mathrm{Var}[X] = p(1-p)$ を $p$ で微分して $0$ と置くと、極値の位置がわかります。

$$ \frac{d}{dp}\,p(1-p) = 1 – 2p = 0 \;\Longrightarrow\; p = \frac{1}{2} $$

このとき分散は $\frac{1}{2}\cdot\frac{1}{2} = \frac{1}{4} = 0.25$ で最大です。

ベルヌーイ分布の分散が最大になるのはp=0.5

この図が伝えるのは、「結果が最も予測しづらいのは五分五分のとき」という事実です。$p=0$ や $p=1$ では結果が確定しているのでばらつき(分散)はゼロ。$p$ が $0.5$ に近づくほど結果が読めなくなり、分散は最大の $0.25$ に達します。これはエントロピーが $p=0.5$ で最大になったのと同じ「不確実性は五分五分で最大」という直感の、分散版の表現です。公平なコインが「一番ギャンブルとして盛り上がる」のは、まさにこの性質によります。

それでは、ここまでの理論をPythonで実装して確かめていきましょう。

Pythonでの実装

理論を式で追うだけでなく、実際にコードで動かすと理解が定着します。まずはベルヌーイ分布からのサンプリングと、その確率質量関数の可視化から始めます。

サンプリングと確率質量関数

scipy.stats.bernoulli を使うと、ベルヌーイ分布から簡単にサンプルを生成できます。成功確率 $p = 0.7$ のコインを100回投げてみましょう。

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

np.random.seed(0)

p = 0.7
dist = stats.bernoulli(p)

# 100回サンプリングして 0/1 の頻度を数える
samples = dist.rvs(100)
labels = [0, 1]
freq = np.array([np.sum(samples == 0), np.sum(samples == 1)])

plt.figure(figsize=(6, 4))
plt.bar(labels, freq, color=["#888888", "#1f77b4"])
plt.xticks(labels)
plt.xlabel("x (0=裏, 1=表)")
plt.ylabel("頻度")
plt.title(f"ベルヌーイ分布からのサンプリング (p={p}, N=100)")
plt.show()

print("理論確率 :", [1 - p, p])
print("標本頻度 :", freq / freq.sum())

実行すると、$x=1$(成功)の棒が $x=0$ より高くなり、おおむね $70:30$ の比率になります。出力される標本頻度は理論確率 $[0.3, 0.7]$ に近い値(このseedでは [0.23, 0.77])になります。試行回数が100回と少ないため多少のずれはありますが、$p=0.7$ という設定がきちんと反映されていることが確認できます。試行回数を増やせばこのずれは小さくなります(後述)。

期待値・分散・エントロピーの数値確認

次に、導出した期待値 $p$・分散 $p(1-p)$・エントロピーが、実際のサンプルや理論式と合うかを確かめます。

import numpy as np
import scipy.stats as stats

p = 0.7
dist = stats.bernoulli(p)

# 理論値
print("理論 期待値 :", dist.mean(), " (= p)")
print("理論 分散   :", dist.var(),  " (= p(1-p) =", p * (1 - p), ")")
print("理論 エントロピー(nat):", dist.entropy())

# 大量サンプルで経験的に確認
rng = np.random.default_rng(0)
x = (rng.random(100000) < p).astype(int)
print("標本 平均   :", x.mean())
print("標本 分散   :", x.var())

# エントロピーを定義式から計算(自然対数)
H = -p * np.log(p) - (1 - p) * np.log(1 - p)
print("定義式 エントロピー(nat):", H)

出力では、理論期待値 0.7・理論分散 0.21($= 0.7 \times 0.3$)に対し、10万サンプルの標本平均・標本分散がそれぞれ 0.70 前後・0.21 前後とほぼ一致します。また dist.entropy() と定義式から計算したエントロピーが同じ値(約 0.611 nat)になり、導出が正しいことが数値的に裏づけられます。サンプル数が多いほど標本統計量が理論値に収束していく様子は、次の図でより鮮明に見えます。

コイン投げのサンプリング頻度と理論確率

この図は $p=0.7$ のコインを $N = 10, 100, 1000, 10000$ 回投げたときの標本頻度(棒)と理論確率(赤い点)を比べたものです。$N=10$ では棒と点が大きくずれることもありますが、$N$ を増やすと標本頻度が理論確率にぴたりと張り付いていきます。これは大数の法則の最も素朴な実例で、「たくさん観測すれば真の確率に近づく」という最尤推定の妥当性そのものを示しています。

最尤推定をコードで確認

最後に、観測データから最尤推定値 $\hat{p} = m/N$ を計算し、対数尤度が確かにそこで最大になることを確かめます。

import numpy as np

rng = np.random.default_rng(1)
true_p = 0.4
N = 200

# 真の確率 0.4 でデータを生成
data = (rng.random(N) < true_p).astype(int)
m = data.sum()

# 最尤推定値は単なる成功比率
p_hat = m / N
print(f"観測: N={N}, 成功 m={m}")
print(f"最尤推定値 p_hat = m/N = {p_hat:.3f} (真値 {true_p})")

# 対数尤度を p の格子上で評価して最大点を確認
ps = np.linspace(0.01, 0.99, 99)
loglik = m * np.log(ps) + (N - m) * np.log(1 - ps)
print("格子上で尤度最大の p :", ps[np.argmax(loglik)].round(3))

実行すると、最尤推定値 $\hat{p}$ が真の値 $0.4$ に近い値($N=200$ なら 0.40 前後)になり、対数尤度を格子上で評価して求めた最大点も $\hat{p}$ とほぼ一致します。理論で導いた「最尤推定値は成功比率」という結論が、データ生成からの一連の流れで確認できました。

これらの実装を通じて、定義・統計量・推定がすべて一貫していることが体感できたはずです。最後に全体を振り返りましょう。

まとめ

本記事では、最もシンプルな確率分布であるベルヌーイ分布を、定義から発展的なつながりまで一気通貫で解説しました。要点を振り返ります。

  • 定義: ベルヌーイ分布は $\mathrm{Bern}(x \mid p) = p^{x}(1-p)^{1-x}$ で、$0$ か $1$ の2値をとる1パラメータの離散分布
  • 統計量: 期待値は $p$、分散は $p(1-p)$、エントロピーは $-p\ln p-(1-p)\ln(1-p)$。分散もエントロピーも $p=0.5$ で最大
  • 推定: 最尤推定値は単純な成功比率 $\hat{p} = m/N$
  • 拡張: $N$ 個の和は二項分布、$N=1$ がベルヌーイ。ベータ分布は共役事前分布で、ベイズ更新がパラメータの足し算で済む
  • 機械学習との接続: ロジスティック回帰の確率モデルそのもので、シグモイドはベルヌーイの自然パラメータ(ロジット)から必然的に現れる。指数型分布族の代表例

ベルヌーイ分布は単純ですが、ここで学んだ「定義 → 期待値・分散 → 最尤推定 → 一般化 → ベイズ・機械学習への接続」という流れは、あらゆる確率分布を学ぶときの型になります。この型を一度体得しておくと、正規分布でも多項分布でも同じ手順で理解を進められます。

次のステップとして、以下の記事も参考にしてください。