الگوریتم امید ریاضی–بیشینه کردن

**الگوریتم امید ریاضی-بیشینه‌سازی** (EM) یک روش تکرارشونده (iterative) است که به دنبال یافتن برآوردی با بیشترین درست نمایی برای پارامترهای یک توزیع پارامتری است. این الگوریتم روش متداول برای زمانهایی است که برخی از متغیرهای تصادفی پنهان هستند.

## شرح الگوریتم
فرض کنید که مشاهدات x_1, x_2, ..., x_n را با d نمایش دهیم، متغیرهای پنهان h_1, h_2, ..., h_n را با h و همهٔ پارامترهای توزیع را نیز با \theta. در این صورت لگاریتم درست نمایی کل داده‌ها (پنهان و نمایان=مشاهدات) برابر خواهد بود با:
:\mathcal{L}(\theta) = \log{p(d;\theta)} = \log{\sum_h{p(d,h;\theta)}}

از آنجا که لگاریتم تابع اکیداً صعودی است، می‌توان لگاریتم درست نمایی کل داده‌ها را نسبت به \theta بیشینه کرد. هرچند، آرگومان لگاریتم یک مجموع است و نمی‌توان به سادگی پاسخ تحلیلی برای \theta یافت. از این رو، الگوریتم EM ترفندی را برای بیشینه کردن *حد پایین* لگاریتم درست نمایی بکار می‌برد. این حد پایین از نابرابری ینسن بدست می‌آید.
بر اساس نابرابری ینسن که از کوژ بودن تابع لگاریتم استفاده می‌کند برای هر دسته kتایی از t_iها و w_iها اگر t_i>0 و \sum{w_i}=1، خواهیم داشت:

:\sum_{i=1}^k{w_i\log{t_i}} \le \log{\sum_{i=1}^k{w_it_i}}

اکنون \mathcal{L} را به صورت زیر باز می‌نویسیم

:\mathcal{L}(\theta) = \log{\sum_h{q(h)\frac{p(d,h;\theta)}{q(h)}}} \ge \sum_h{q(h)\log{\frac{p(d,h;\theta)}{q(h)}}} = \mathcal{J}(q,\theta)

با گزینش q\left(h\right)=p\left(h;d,\theta\right) نابرابری بالا تنگ می‌شود. این به معنای آن است که نابرابری به برابری تبدیل می‌شود. این گام الگوریتم همانند بیشینه کردن حدپایین درست نمایی (\mathcal{J}) نسبت به q است. در نتیجه روش کار الگوریتم امید ریاضی-بیشینه کردن به صورت زیر است:
# پارامترها را مقدار آغازین \theta^{(0)} می‌دهیم.
# تا زمان همگرایی به بیشینه محلی ادامه می‌دهیم:
## گام E (امید ریاضی): q^{(t)}=\arg\max_q{\mathcal{J}(q, \theta^{(t)})}
## گام M (بیشینه کردن): \theta^{(t+1)}=\arg\max_\theta{\mathcal{J}(q^{(t)}, \theta)}
# مقادیر نهایی \theta و q را باز گردان

این دیدگاه نسبت به الگوریتم امید ریاضی-بیشینه کردن متعلق به نیل و هینتون است.

بدین ترتیب در هر گام الگوریتم، حد پایین درست نمایی کل داده‌ها افزایش می‌یابد تا آنجا که در یک بیشینه محلی همگرا شود. برای رهایی از بیشینه‌های محلی، این الگوریتم را معمولاً چندین بار با شرایط آغازین متفاوت اجرا می‌کنند.

## نمونه

### مدل مخلوط گوسی

اگر \mathbf{x} = (\mathbf{x}_1,\mathbf{x}_2,\ldots,\mathbf{x}_n) ، n داده مستقل از یک توزیع مخلوط گاوسی با بُعد d باشد و  \mathbf{z} = (z_1,z_2,\ldots,z_n) متغیرهای پنهانِ مسئله باشد که نشان می‌دهد هر بار داده از کدام یک از توزیع‌های گاوسی آمده است، آنگاه رابطه \mathbf{x_i} با \mathbf{z_i} به این شکل خواهد بود (برای سادگی کار تعداد توزیع‌های مخلوط گاوسی دو در نظر گرفته شده):

X_i |(Z_i = 1) \sim \mathcal{N}_d(\boldsymbol{\mu}_1,\Sigma_1) و X_i |(Z_i = 2) \sim \mathcal{N}_d(\boldsymbol{\mu}_2,\Sigma_2) و \operatorname{P} (Z_i = 1 ) = \tau_1 \,  و \operatorname{P} (Z_i=2) = \tau_2 = 1-\tau_1

هدف یادگیری پارامترهای این دو توزیع و نحوه مخلوط کردن آنهاست یعنی \theta = \big( \boldsymbol{\tau},\boldsymbol{\mu}_1,\boldsymbol{\mu}_2,\Sigma_1,\Sigma_2 \big)، تابع درست نمایی برابر است با L(\theta;\mathbf{x}) =  \prod_{i=1}^n \sum_{j=1}^2 \tau_j \ f(\mathbf{x}_i;\boldsymbol{\mu}_j,\Sigma_j).

حال اگر مقادیر متغیرهای پنهان مشخص بود تابع درست نمایی با عبارت پایین برابر می‌شد:

L(\theta;\mathbf{x},\mathbf{z}) = p(\mathbf{x},\mathbf{z} \vert \theta) = \prod_{i=1}^n  \prod_{j=1}^2  \ [f(\mathbf{x}_i;\boldsymbol{\mu}_j,\Sigma_j) \tau_j] ^{\mathbb{I}(z_i=j)} 

و اگر این عبارت را بسط دهیم به این معادله می‌رسیم:

L(\theta;\mathbf{x},\mathbf{z}) = \exp \left\{ \sum_{i=1}^n \sum_{j=1}^2 \mathbb{I}(z_i=j) \big[ \log \tau_j -\tfrac{1}{2} \log |\Sigma_j| -\tfrac{1}{2}(\mathbf{x}_i-\boldsymbol{\mu}_j)^\top\Sigma_j^{-1} (\mathbf{x}_i-\boldsymbol{\mu}_j) -\tfrac{d}{2} \log(2\pi) \big] \right\} 

f تابع چگالی احتمال توزیع گاوس است و \mathbb{I} تابع مشخصه است. در معادله خط قبلی برای هر i  دقیقا یک تابع مشخصه یک است و دیگری صفر، یعنی دقیقا برای یکی از j ها \mathbb{I}(z_i=j)   برابر با یک خواهد بود.


#### مرحله امید ریاضی (E)
طبق قضیه بیز \theta^{(t)}  که همان احتمال شرطی Z_i  است به این شکل محاسبه می‌شود:  T_{j,i}^{(t)} := \operatorname{P}(Z_i=j | X_i=\mathbf{x}_i ;\theta^{(t)}) = \frac{\tau_j^{(t)} \ f(\mathbf{x}_i;\boldsymbol{\mu}_j^{(t)},\Sigma_j^{(t)})}{\tau_1^{(t)} \ f(\mathbf{x}_i;\boldsymbol{\mu}_1^{(t)},\Sigma_1^{(t)}) + \tau_2^{(t)} \ f(\mathbf{x}_i;\boldsymbol{\mu}_2^{(t)},\Sigma_2^{(t)})} 

همچنین تابع Q  الگوریتم به شکل ذیل بدست می‌آید:

\begin{align}Q(\theta|\theta^{(t)})
&= \operatorname{E}_{\mathbf{Z}|\mathbf{X},\mathbf{\theta}^{(t)}} [\log L(\theta;\mathbf{x},\mathbf{Z}) ] \\
&= \operatorname{E}_{\mathbf{Z}|\mathbf{X},\mathbf{\theta}^{(t)}} [\log \prod_{i=1}^{n}L(\theta;\mathbf{x}_i,\mathbf{z}_i) ] \\
&= \operatorname{E}_{\mathbf{Z}|\mathbf{X},\mathbf{\theta}^{(t)}} [\sum_{i=1}^n \log L(\theta;\mathbf{x}_i,\mathbf{z}_i) ] \\
&= \sum_{i=1}^n\operatorname{E}_{\mathbf{Z_i}|\mathbf{X};\mathbf{\theta}^{(t)}} [\log L(\theta;\mathbf{x}_i,\mathbf{z}_i) ] \\
&= \sum_{i=1}^n \sum_{j=1}^2 P(Z_i =j | X_i = \mathbf{x}_i; \theta^{(t)}) \log L(\theta_j;\mathbf{x}_i,\mathbf{z}_i) \\
&= \sum_{i=1}^n \sum_{j=1}^2 T_{j,i}^{(t)} \big[ \log \tau_j  -\tfrac{1}{2} \log |\Sigma_j| -\tfrac{1}{2}(\mathbf{x}_i-\boldsymbol{\mu}_j)^\top\Sigma_j^{-1} (\mathbf{x}_i-\boldsymbol{\mu}_j) -\tfrac{d}{2} \log(2\pi) \big]
\end{align}

امید ریاضی \log L(\theta;\mathbf{x}_i,\mathbf{z}_i) در معادله بالا نسبت به توزیع احتمال مشروط Z_i یعنی P(Z_i | X_i = \mathbf{x}_i; \theta^{(t)}) گرفته می شود. این احتمال برای هر \mathbf{x}_i می‌تواند مقداری متفاوت داشته باشد.

#### مرحله بیشینه‌سازی (M)
\begin{align}\boldsymbol{\tau}^{(t+1)}
&= \underset{\boldsymbol{\tau}} {\operatorname{arg\,max}}\  Q(\theta | \theta^{(t)} ) \\
&= \underset{\boldsymbol{\tau}} {\operatorname{arg\,max}} \ \left\{ \left[  \sum_{i=1}^n T_{1,i}^{(t)} \right] \log \tau_1 + \left[  \sum_{i=1}^n T_{2,i}^{(t)} \right] \log \tau_2  \right\}
\end{align}

\tau^{(t+1)}_j = \frac{\sum_{i=1}^n T_{j,i}^{(t)}}{\sum_{i=1}^n (T_{1,i}^{(t)} + T_{2,i}^{(t)} ) } = \frac{1}{n} \sum_{i=1}^n T_{j,i}^{(t)}

:\begin{align}(\boldsymbol{\mu}_1^{(t+1)},\Sigma_1^{(t+1)})
&= \underset{\boldsymbol{\mu}_1,\Sigma_1} {\operatorname{arg\,max}}\  Q(\theta | \theta^{(t)} ) \\
&= \underset{\boldsymbol{\mu}_1,\Sigma_1} {\operatorname{arg\,max}}\  \sum_{i=1}^n T_{1,i}^{(t)} \left\{ -\tfrac{1}{2} \log |\Sigma_1| -\tfrac{1}{2}(\mathbf{x}_i-\boldsymbol{\mu}_1)^\top\Sigma_1^{-1} (\mathbf{x}_i-\boldsymbol{\mu}_1) \right\}
\end{align}

بر طبق برآورد درست نمایی بیشنه توزیع گاوسی، مقادیر میانگین و کوواریانس را به این شکل محاسبه می‌کنیم:

\boldsymbol{\mu}_1^{(t+1)} = \frac{\sum_{i=1}^n T_{1,i}^{(t)} \mathbf{x}_i}{\sum_{i=1}^n T_{1,i}^{(t)}}  و  \Sigma_1^{(t+1)} = \frac{\sum_{i=1}^n T_{1,i}^{(t)} (\mathbf{x}_i - \boldsymbol{\mu}_1^{(t+1)}) (\mathbf{x}_i - \boldsymbol{\mu}_1^{(t+1)})^\top }{\sum_{i=1}^n T_{1,i}^{(t)}}  و  \boldsymbol{\mu}_2^{(t+1)} = \frac{\sum_{i=1}^n T_{2,i}^{(t)} \mathbf{x}_i}{\sum_{i=1}^n T_{2,i}^{(t)}}  و \Sigma_2^{(t+1)} = \frac{\sum_{i=1}^n T_{2,i}^{(t)} (\mathbf{x}_i - \boldsymbol{\mu}_2^{(t+1)}) (\mathbf{x}_i - \boldsymbol{\mu}_2^{(t+1)})^\top }{\sum_{i=1}^n T_{2,i}^{(t)}} 

#### پایان الگوریتم
مراحل E و M را به‌صورت متناوب آنقدر اجرا میکنیم تا جایی که میزان افزایش تابع امید ریاضی مشروط از یک حد از پیش تعیین شده‌ای مانند  \epsilon  بیشتر نشود، به زبان ریاضی یعنی زمانی که نابرابری پایین صدق کند.

 E_{Z|\theta^{(t)},\mathbf{x}}[\log L(\theta^{(t)};\mathbf{x},\mathbf{Z})] \leq E_{Z|\theta^{(t-1)},\mathbf{x}}[\log L(\theta^{(t-1)};\mathbf{x},\mathbf{Z})] + \epsilon

## تاریخچه
این الگوریتم چندین بار به صورت جداگانه توسط افراد مختلف ابداع شده‌است. برای نمونه پیش از اینکه نام آن بیشنه کردن-امید ریاضی باشد، به نام الگوریتم باوم-ولچ شناخته می‌شد. نمونه امروزی آن را عموماً مربوط به مقاله ای در سال ۱۹۷۷ توسط دمپستر، لرد و روبین می‌دانند.

## منابع

## پیوند به بیرون
* کتاب ویکی انگلیسی در این رابطه

رده:الگوریتم‌های آماری
رده:الگوریتم‌های یادگیری ماشین
رده:روش‌های بهینه‌سازی
رده:روش‌های خوشه‌بندی
رده:نظریه برآورد