この記事は「UEC Advent Calendar 2025」2日目の記事です(遅刻してすみません)。
https://adventar.org/calendars/11571
1日目の記事はolffさんの「電通大将棋部の1年」でした。将棋部ってどのような活動をしているのかあまり知らなかったのですが、楽しく読ませていただきました。
https://note.com/olff/n/n0499b34418a0
はじめに
TANという多値分類モデルでは、教師データから事象の起こりうる確率または条件付き確率を計算し、その結果を利用して未知のデータに対して分類の予測を行うといったことをします。その確率を計算する際に「ラプラススムージング」と呼ばれるテクニックをよく用います。これは、データからある事象Aの確率を以下の式にしたがって求めるテクニックです。
P(A) = \frac{N_A + 1}{N + n}
ここで、Nをデータの数、N_Aをデータのうち事象Aが起こっている数、nをすべての事象の数としています。このように確率を求めるときに、単純に算術平均\frac{N_A}{N}を求めるのではなく、分子に1を、分母にnを足すだけで精度が良くなることが知られています。
実は、この式の裏側にはベイズ統計が隠れています。この記事では、ラプラススムージングの背後に隠れているベイズ統計について言及するとともに、なぜこのような操作を行うことで予測結果が良くなるのかということを説明していこうと思います。
ベイズ統計の基本知識
まず、ラプラススムージングについて知るために必要なベイズ統計の知識を述べていきます。
尤度
ベイズ統計を知るにあたっては尤度について知っておくとよいので紹介します。なぜなら、ベイズ統計とはこの尤度という考えを拡張したものになっているからです。
尤度とは一言でいうと、あるデータに対して、確率分布のパラメータの尤もらしさを表すものです。これだけだと分かりにくいので、数式を使いながら具体的に説明していきます。
パラメータを\bm{\theta}とする確率分布f(x|\bm{\theta})に従うデータ\bm{X} = (x_1, \cdots, x_n)が得られたとします。このとき、尤度は次の式で定義されます。
L(\bm{\theta}) = P(\bm{X} | \bm{\theta}) = \prod_{i = 1}^{n} f(x_i | \bm{\theta})
注目してほしいのは、引数がパラメータ\bm{\theta}になっているところです。式を見ると、パラメータ\bm{\theta}に対して、そのときにデータ\bm{X}が得られる確率を返していることが分かります。
さて、今データ\bm{X}が得られているということは、そのデータが得られる確率が大きくなってほしいと思うのが自然だと思います。ですから、2つのパラメータ\bm{\theta}_1, \bm{\theta}_2に対してどちらのパラメータが良いかを比べる一つの指標として、パラメータを与えたときのデータ\bm{X}が得られる確率f(x | \bm{\theta})を用いればよいと考えられます。これこそがL(\bm{\theta})が尤度(もっともらしさの度合い)と呼ばれる所以となっています。いままでの議論からわかるように、尤度というのは変数として取るものをデータからパラメータに変更したものになっています。そして、わざわざ「確率」ではなく「尤度」と言っているのは、このように変数を変えたときに確率の公理を満たすことを約束できないからなのです。
なお、これを応用して尤度を最大化する点\hat{\bm{\theta}}を推定量としようといった手法を「最尤推定」と言って、推定量のことを「最尤推定量」と言ったりします。
ベイズの定理
ベイズ統計のすべての基礎となっている定理です。
ベイズの定理は、事象Bが条件として与えられたときに事象Aが起こる確率を次の式で求めることができるというものです。
P(A | B) = \frac{P(B | A)P(A)}{P(B)}
この定理において、各因数はそれぞれ以下のように呼ばれています。
-
P(A): 事前分布
-
P(B | A): 尤度
-
P(B): 周辺尤度
-
P(A | B): 事後分布
ここでも尤度という言葉が出てきました。なぜ尤度がここにも出てくるのか、機械学習での使われ方を例にして見ていきましょう。
機械学習への応用と因子の意味
機械学習においては、教師データから分布のパラメータを推定することが重要な問題になってきます。パラメータを求める方法の一つには、先程ちらっとでてきた最尤推定法があります。もちろんこの最尤推定法を用いてパラメータを推定することも可能です。しかし、この推定方法ではあくまでパラメータの推定量\hat{\bm{\theta}}を1点で推定しているに過ぎません。すなわち、ランダム性を含めた推定というものができていないのです。そこで、ランダム性というのを取り入れて推定しようというのがベイズ統計を用いた機械学習の考え方です。
具体的に見ていきましょう。ランダム性を含めるというのはすなわち、パラメータの確率分布をデータ\bm{X}から考えるということです。これはデータ\bm{X}を条件としたときに分布のパラメータが\bm{\theta}となる条件付き確率P(\bm{\theta} | \bm{X})を求めることにほかなりません。さて、これは条件付き確率ですからベイズの定理を用いることができます。ベイズの定理を使用すると、条件付き確率は次のように変形することができます。
P(\bm{\theta} | \bm{X}) = \frac{P(\bm{X} | \bm{\theta})P(\bm{\theta})}{P(\bm{X})}
ここで右辺に注目すると、右辺の分子にはP(\bm{X} | \bm{\theta})という因子が出てきています。この式に見覚えがある人はそのとおりで、これは尤度の定義そのものになっています。したがってP(B | A)という因子が尤度と呼ばれているのです。
さらに事前分布、事後分布について言及してみましょう。P(A) = P(\bm{\theta})はデータ\bm{X}を条件としていません。つまり、データを取得する前のパラメータの確率分布となっているわけです。よって事前分布と呼ばれています。同様にP(A | B) = P(\bm{\theta} | \bm{X})はデータを取得した後のパラメータの確率分布となっているため、事後分布と言っています。
最後にP(B) = P(\bm{X})に注目すると、これは尤度P(\bm{X} | \bm{\theta})を\bm{\theta}について積分する周辺化という操作を行ったものであるため周辺尤度と言われています(この周辺尤度は単なる定数のため詳細な説明は割愛します)。
以上がベイスの定理に出てくる因子の意味でした。
共役事前分布
このセクションの最後に事前分布の話をしていきたいと思います。先程から何度も出てきている事前分布ですが、勘の良い読者は「どうやって事前分布を決めれば良いのだろうか」という疑問が湧いていると思います。その解答として極端なことをいうと「あなたが思う分布を自由に決めれば良い」です。これこそがベイズ統計の最大の特徴であると言えます。ベイズ統計的な言い方をすれば「信念」というのですが、これはモデルの作成者がパラメータがどのような確率分布に従っているかを、作成者が思っている通りに設計して良いということです。つまり、あなたが一様分布だと思うなら一様分布にすればいいし、正規分布だと思うなら正規分布にすればよいのです。そして、得られたデータからパラメータの分布を修正していけば良いのです。
...と自由に決めればよいと言いましたが、その中でも望ましい決め方というのがあります。それが「共役事前分布」です。この共役事前分布は「事前分布と事後分布で、分布の大まかな形はかわらないだろう」という考えを反映して作られた事前分布です。
数式を用いて説明しましょう。事前分布としてf(\bm{\theta})を設定し、データ\bm{X}が得られたときの事後分布がベイズの定理からg(\bm{\theta}')と求まったとしましょう。このとき、事前分布f(\bm{\theta})が共役事前分布であるとは、2つの確率密度関数gとfの形が定数倍の違いを除いて一致するというものです。つまり、もとの事前分布の確率密度関数が\expなら事後分布の確率密度関数も\expになるし、事前分布が二項分布なら事後分布も二項分布になるというものです。
この共役事前分布は尤度によって変わるため必ずしも求めることができるものではありませんが、共役事前分布が求められている場合はそれを事前分布として設定することが一般的です。
TANとラプラススムージング
では実際にTANのベイズ統計を用いたパラメータ推定を通してラプラススムージングを理解していきましょう。TANでは尤度関数として多項分布が用いられます。多項分布とは以下の式で表される分布のことです。
L(\bm{p}) = f(\bm{X} | \bm{p}) = \frac{n!}{x_1! \cdots x_n!}p_1^{x_1} \cdots p_n^{x_n}
ただし\sum p_i = 1, \sum x_i = nという条件が課されています。この分布は二項分布の拡張版と捉えることができます。さて、この尤度関数に対して共役になる事前分布として「ディリクレ分布」が知られています。ディリクレ分布とは以下の形をした関数のことです。
f(\bm{X}) = \frac{\Gamma(\sum \alpha_i)}{\Gamma(\sum_{i = 1}^n \alpha_i)}x_1^{\alpha_1 - 1} \cdots x_n^{\alpha_n - 1}
ただし\sum x_i = 1という条件が課されます。ここで出てきた\alphaというのはハイパーパラメータと呼ばれるもので、学習時に自分で設定するものになります(この自分で設定すると言ったあたりにベイズっぽさが出ていますね)。
さて、ここでベイズ推定の一つであるEAP推定を行いましょう。大層な名前が出ましたが、要するに事後分布の期待値をそのパラメータの推定量としましょうというだけの話です。計算は複雑なので割愛しますが、求めると次のように推定量が求まります。
\hat{p_i} = \frac{N_i + \alpha_i}{N + \sum \alpha_i}
どうやらラプラススムージングに似た形の式が出てきました。そうです、ラプラススムージングとはディリクレ分布のハイパーパラメータをすべて1に設定したときのEAP推定量に他ならなかったのです。
終わりに
よくある記事では「ラプラススムージングはゼロ頻度問題を解決するためにある」と言われています。たしかにその説明も間違ってはいません。ですが、それだけではなぜ分子に1を足すのか、分母にnを足すのかといったより本質に迫った部分が解決されていません。この記事が少しでもラプラススムージングの理解の助けになれば幸いです。
さて、3日目ykm11さんによる記事です。ぜひお楽しみに!
参考文献
http://www.ai.lab.uec.ac.jp/wp-content/uploads/2025/10/text_2025_ver2.pdf
https://note.com/outlifest/n/nfd0cc6b4409f
Discussion