مدل پنهان مارکف

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
مثالی از پارامترهای احتمالاتی یک مدل پنهان مارکوف
x — حالت‌ها
y — مشاهده‌های ممکن
a — احتمال‌های انتقال بین حالت‌ها
b — احتمال‌های خروجی‌ها

مدل پنهان مارکوف (به انگلیسی: Hidden Markov model) یک مدل مارکوف آماری است که در آن سیستم مدل شده به صورت یک فرایند مارکوف با حالت‌های مشاهده نشده (پنهان) فرض می‌شود. یک مدل پنهان مارکوف می‌تواند به عنوان ساده‌ترین شبکه بیزی پویا در نظر گرفته شود.

در مدل عادی مارکوف، حالت به طور مستقیم توسط ناظر قابل مشاهده‌است و بنابراین احتمال‌های انتقال بین حالت‌ها تنها پارامترهای موجود است. در یک مدل پنهان مارکوف، حالت به طور مستقیم قابل مشاهده نیست، اما خروجی، بسته به حالت، قابل مشاهده‌است. هر حالت یک توزیع احتمال روی سمبل‌های خروجی ممکن دارد. بنابراین دنبالهٔ سمبل‌های تولید شده توسط یک مدل پنهان مارکوف اطلاعاتی دربارهٔ دنبالهٔ حالت‌ها می‌دهد. توجه داشته باشید که صفت 'پنهان' به دنبالهٔ حالت‌هایی که مدل از آن‌ها عبور می‌کند اشاره دارد، نه به پارامترهای مدل؛ حتی اگر پارامترهای مدل به طور دقیق مشخص باشند، مدل همچنان 'پنهان' است.

مدل‌های پنهان مارکوف بیشتر به خاطر کاربردشان در بازشناخت الگو مانند تشخیص صدا و دست خط، تشخیص اشاره و حرکت، برچسب گذاری ادات سخن، بیوانفورماتیک و... شناخته شده هستند.

شرح از نظر مسائل ظرف‌ها[ویرایش]

مدل پنهان مارکوف در حالت گسسته جز خانوادهٔ مسائل ظرف‌ها قرار می‌گیرد. به طور مثال از ربینر ۱۹۸۹: ظروف x1،x2،x3... و توپهای رنگی y1,y2,y3… را در نظر می‌گیریم، که نفر مقابل دنباله‌ای از توپها را مشاهده کرده ولی اطلاعی از دنبالهٔ ظرف‌هایی که توپ‌ها از آنها انتخاب شده ندارد. ظرف n ام با احتمالی وابسته به ظرف n-1 ام انتخاب می‌شود و چون به انتخاب ظرف‌های خیلی قبل تر وابسته نیست یک فرایند مارکوف است.

معماری مدل پنهان مارکوف[ویرایش]

شکل زیر معماری کلی یک نمونه HMM را نشان می‌دهد. هر شکل بیضی یک متغیر تصادفی است که می‌تواند هر عددی از مقادیر را انتخاب کند. متغیر تصادفی x(t) یک حالت پنهان در زمان t و متغیر تصادفی y(t) مشاهده در زمانt است. فلش‌ها به معنای وابستگی‌های شرطی می‌باشند. از شکل مشخص است که توزیع احتمال شرطی متغیر پنهان x(t)، در همهٔ زمان هایt مقداری را برایx ارائه می‌دهد که فقط به مقدار متغیر پنهان x(t-1) وابسته‌است:مقادیر در زمان‌های t-2و قبل تر از آن هیچ اثری ندارند. این مشخصهٔ مارکو نامیده می‌شود. به طور مشابه، مقدار متغیر مشاهده‌ایy(t) تنها به مقدار متغیر پنهانx(t) (هر دو در زمان خاص t) بستگی دارد. در حالت استاندارد مدل پنهان مارکوف که در اینجا در نظر گرفته شده‌است، فضای حالت متغیرهای پنهان گسسته‌است. در حالی که متغیرهای مشاهده‌ای می‌توانند گسسته یا پیوسته (از توزیع گوسین) باشند.

در مدل پنهان مارکوف دو نوع پارامتر وجود دارد:احتمال جابجایی‌ها (بین حالات) و احتمال خروجی‌ها (یا مشاهدات). احتمال جابجایی نحوهٔ انتقال از حالت t-1به t را کنترل می‌کند.

فضای حالت پنهان شامل N مقدار ممکن برای حالات است. متغیر پنهان در زمان t می‌تواند هر یک از این مقادیر را اختیار کند. احتمال جابجایی احتمال این است که در زمان t در حالت k (یکی از حالات ممکن) و در زمان t+1 در حالت k1 باشیم. بنابرین در کل N^2احتمال جابجایی وجود دارد.(مجموع احتمالات جابجایی از یک حالت به تمام حالتهای دیگر ۱ است)

احتمال خروجی، احتمال رخ دادن هر یک از اعضای مجموعهٔ مشاهده‌ای را برای هر حالت پنهان ممکنه مشخص می‌سازد که می‌تواند از یک توزیع احتمال پیروی کند. تعداد اعضای مجموعهٔ مشاهده‌ای بستگی به طبیعت متغیر مشاهده‌ای دارد.

اگر تعداد اعضای مجموعهٔ متغیرهای مشاهده‌ای برابر M باشد، بنابراین مجموع تعداد احتمالات خروجی NM می‌باشد/

Temporal evolution of a hidden Markov model

مسایلی که به کمک مدل پنهان مارکوف حل می‌شود[ویرایش]

با توجه به پارامترهای مدل پنهان مارکوف، می‌توانیم مسایلی به صورت زیر را حل کنیم.

  • Annotation: مدل را داریم به این معنی که احتمالات مربوط به انتقال از حالتی به حالت دیگر و همینطور احتمال تولید الفبا در هر حالت معلوم است. توالی از مشاهدات داده شده، می‌خواهیم محتمل‌ترین مسیری(توالی حالات) که توالی را تولید می‌کند را پیدا کنیم. الگوریتم viterbi می‌تواند اینگونه مسایل را به صورت پویا (Dynamic) حل کند.
  • classification: مدل را داریم، توالی از مشاهدات داده شده‌است، می‌خواهیم احتمال (کل) تولید شدن این توالی توسط این مدل را (جمع احتمالات تمامی مسیرهایی که این توالی را تولید می‌کنند) حساب کنیم. الگوریتم forward
  • Consensus: مدل را داریم، می‌خواهیم بدانیم محتمل‌ترین توالی که توسط این مدل تولید می‌شود (توالی که بیشترین احتمال را داراست) چیست. الگوریتم Backward
  • Training: ساختار مدل را داریم به این معنی که تعداد حالات و الفبای تولیدی در هر حالت معلوم است، تعدادی توالی داریم (داده‌های آموزش) می‌خواهیم احتمال انتقال بین حالات و همینطور احتمال تولید الفبا در هر حالت را محاسبه کنیم. الگوریتم Baum-Welch

یادگیری[ویرایش]

وظیفه یادگیری در HMM، یافتن بهترین احتمالات جابجایی‌ها و خروجی‌ها بر اساس یک دنباله و یا دنباله‌هایی از خروجی هاست. معمولاً این پارامترها به وسیله متد maximum likelihood بر اساس خروجی داده شده تخمین زده می‌شوند. هیچ الگوریتم قطعی برای حل این مساله وجود ندارد ولی برای پیدا کردن maximum likelihood محلی می‌توان از الگوریتم‌های کارایی مانند Baum-welch algorithmو یا Baldi-chauvin algorithmاستفاده کرد. الگوریتم Baum-Welch نمونه‌ای از الگوریتم forward-backwardو به صورت خاص موردی از الگوریتم exception-maximization می‌باشد.

یک مثال ملموس[ویرایش]

دو دوست به نام‌های آلیس و باب را در نظر بگیرید. آنها دور از هم زندگی کرده و هر روز دربارهٔ کارهای روزمره‌شان با هم تلفنی صحبت می‌کنند. فعالیت‌های باب شامل "قدم زدن در پارک"،"خرید کردن" و "تمیز کردن آپارتمان" می‌شود. انتخاب اینکه هر روز کدام کار را انجام دهد منحصراً بستگی به هوای همان روز دارد. آلیس اطلاع دقیقی از هوای محل زندگی باب نداشته ولی از تمایلات کلی وی آگاه‌است (بنا به نوع هوا چه کاری را دوست دارد انجام دهد). بر اساس گفته‌های باب در پایان هر روز آلیس سعی می‌کند هوای آن روز را حدس بزند. آلیس هوا را یک زنجیره گسسته مارکوف می‌پندارد که دو حالت "بارانی" و "آفتابی" دارد. اما به طور مستقیم هوا را مشاهده نمی‌کند. بنابرین حالات هوا بر او مخفی است. در هر روز احتمال اینکه باب به "قدم زدن"،"خرید کردن" و "تمیز کردن"بپردازد بستگی به هوا داشته و دارای یک احتمال مشخص است. مشاهدات مساله شرح فعالیت‌هایی است که باب در انتهای هر روز به آلیس می‌گوید.

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

 
states = ('Rainy', 'Sunny')
 
observations = ('walk', 'shop', 'clean')
 
	start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
 
transition_probability = {
   'Rainy': {'Rainy': 0.7, 'Sunny': 0.3},
   'Sunny': {'Rainy': 0.4, 'Sunny': 0.6},
  }
 
emission_probability = {
   'Rainy': {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
   'Sunny': {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
  }

در این کد start_probability نمایانگر احتمال رخ دادن هر یک از حالات HMM (بارانی یا آفتابی) در روز اولی که باب با آلیس صحبت می‌کند می‌باشد.transition_probability نمایانگر تغییر هوا بر اساس قواعد زنجیرهٔ مارکو است. به طور مثال اگر امروز بارانی باشد به احتمال ۳۰%فردا آفتابی است.emition_probability نمایانگر این است که باب علاقه دارد که در هر هوایی چه کار کند به طور مثال در هوای بارانی با احتمال ۵۰% آپارتمانش را تمیز کرده و یا در هوای آفتابی با احتمال ۶۰%در پارک قدم می‌زند.

HMMGraph.svg

کاربردهای مدل پنهان مارکوف[ویرایش]

تاریخچه[ویرایش]

مدل پنهان مارکوف برای اولین بار در سری مقالات آماری leonard E.Baum و سایر نویسندگان در نیمه دوم دهه ۱۹۶۰ توضیح داده شد. یکی از اولین کاربردهای HMM تشخیص گفتار بوده که در اواسط دهه ۱۹۷۰ شروع شد.HMM در نیمه دوم ۱۹۸۰ وارد حوزهٔ آنالیز دنباله‌های بیولوژیکی، به طور خاص DNA شد. از آن پس کاربرد آن در بیوانفورماتیک گسترش یافت.

انواع مدل پنهان مارکوف[ویرایش]

مدل پنهان مارکوف می‌تواند فرایندهای پیچیده مارکوف را که حالتها بر اساس توزیع احتمالی مشاهدات را نتیجه می‌دهند، مدل کند. به طور مثال اگر توزیع احتمال گوسین باشد در چنین مدل مارکوف پنهان خروجی حالتها نیز از توزیع گوسین تبعیت می‌کنند. علاوه بر این مدل پنهان مارکوف می‌تواند رفتارهای پیچیده تر را نیز مدل کند. جایی که خروجی حالتها از ترکیب دو یا چند توزیع گوسین پیروی کند که در این حالت احتمال تولید یک مشاهده از حاصلضرب گوسین انتخاب شدهٔ اولی در احتمال تولید مشاهده از گوسین دیگر به دست می‌اید.

فرایند مارکوف گسسته[ویرایش]

یک سیستم مانند شکل زیر را که در هر لحظه در یکی از حالت متمایز S1,... ,SN است در نظر بگیرید. در زماهای گسسته و با فواصل منظم، حالت سیستم با توجه به مجموعه‌ای از احتمالات تغییر می‌کند. برای زمان‌های... ,t=1,2 حالت در لحظه t را با qt نشان می‌دهیم. برای یک توصیف مناسب از سیستم فعلی نیاز به دانستن حالت فعلی در کنار تمام حالات قبلی می‌باشد. برای یک حالت خاص از زنجیره مارکوف مرتبه اول، توصیف احتمالاتی تنها با حالت فعلی و حالت قبلی مشخص می‌شود.

Add caption here

\ P(q_t=S_j|q_{t-1}=S_i,q_{t-2}=S_k,...)=

\ P(q_t=S_j|q_{t-1}=S_i)

حال تنها فرایندهایی را در نظر می‌گیریم که در آن‌ها سمت راست رابطه فوق مستقل از زمان است و به همین دلیل ما مجموعه‌ای از احتمالات انتقال بین حالت‌ها را خواهیم داشت.

\ a_{ij}=P(q_t=S_j|q_{t-1}=S_i)\qquad i\ge 1,N\ge j

که در آن احتمال انتقال بین حالات دارای خواص زیر است.

a_{ij}\ge0
\sum_{j=1}^N a_{ij} = 1

فرایند تصادفی فوق را مدل مارکوف قابل مشاهده می‌گویند زیرا خروجی مدل مجموعه‌ای از حالات است که قرار گرفتن در آن‌ها متناظر با یک مشاهده می‌باشد. ما می‌توانیم دنباله مشاهدات مورد انتظار خود را تولید کنیم و احتمال وقوع آن در زنجیره مارکوف را محاسبه نماییم. برای مثال با داشتن دنباله مشاهدات \ O={q_1,... ,q_t}احتمال وقوع آن به صورت زیر بیان می‌شود.

\ P(O|Model)=P({q_1,q_2,... ,q_2}|Model)

\ P(q_1).P(q_2|q_1).P(q_3|q_2)...P(q_t|q_{t-1})

یکی دیگر از مواردی که مطرح می‌شود این است که اگر سیستم در حالت \ q_i باشد با چه احتمالی به حالت \ q_j می‌رود و با چه احتمالی در همان حالت \ q_i باقی می‌ماند.

مرتبه مدل مارکوف[ویرایش]

1- مدل مارکوف مرتبه صفر[ویرایش]

یک مدل مارکوف از مرتبه صفر هیچ حافظه‌ای ندارد و برای هر t و t' در دنباله سمبل‌ها، \ pr(X_t=S_i)=pr(X_{t'}=S_i) خواهد بود. مدل مارکوف از مرتبه صفر مانند یک توزیع احتمال چند جمله‌ای می‌باشد.

2- مدل مارکوف مرتبه اول[ویرایش]

یک مدل مارکوف مرتبه اول دارای حافظه‌ای با طول ۱ می‌باشد. توزیع احتمال در این مدل به صورت زیر مشخص می‌شود.

\  pr(X_t=S_i|X_{t-1}=S_j),for i=1..k , j=1..k
تعریف فوق مانند این است که k مدل مارکوف در مرتبه صفر برای هر \ S_j داشته باشیم.
3- مدل مارکوف مرتبه m ام[ویرایش]

مرتبه یک مدل مارکوف برابر است با طول حافظه‌ای که مقادیر احتمال ممکن برای حالت بعدی به کمک آن محاسبه می‌شود. برای مثال، حالت بعدی در یک مدل مارکوف از درجه ۲ (مدل مارکوف مرتبه دوم) به دو حالت قبلی آن بستگی دارد.

مثال ۱: برای مثال اگر یک سکه معیوب A داشته باشیم که احتمالات شیر یا خط آمدن برای آن یکسان نباشد، می‌توان آن را با یک مدل مارکوف درجه صفر با استفاده از احتمالات (pr(H و (pr(H توصیف نمود.
pr(H)=0.6, pr(T)=۰٫۴
مثال ۲: حال فرض کنید که سه سکه با شرایط فوق در اختیار داریم. سکه‌ها را با اسامی B، A و C نام گذاری می‌نماییم. آنگاه برای توصیف روال زیر به یک مدل مارکوف مرتبه اول نیاز داریم:

1) فرض کنید سکه X یکی از سکه‌های A و یا B باشد.

۲) مراحل زیر را تکرار می‌کنیم.

a) سکه X را پرتاب می‌کنیم و نتیجه را می‌نویسیم.

b) سکه C را نیز پرتاب می‌کنیم.

c) اگر سکه C خط آمد، آنگاه سکه X را تغییر می‌دهیم (A را با B یا B را با A جایگزین می‌کنیم.) و در غیر این صورت تغییری در سکه‌ها نمی‌دهیم.

انجام روال فوق مدل مارکوف مرتبه اول زیر را نتیجه خواهد داد.
Add caption here

یک پردازش مارکوفی مانند نمونه فوق در طول پیمایش احتمالات، یک خروجی نیز خواهد داشت. یک خروجی نمونه برای پردازش فوق می‌تواند به شکل HTHHTHHttthtttHHTHHHHtthtthttht باشد.

Add caption here

مدل مارکوف فوق را می‌توان به صورت نموداری از حالات و انتقال‌ها نیز نشان داد. کاملاً مشخص است که این‌گونه بازنمایی از مدل مارکوف مانند بازنمایی یک ماشین انتقال حالت محدود است که هر انتقال با یک احتمال همراه می‌باشد

مدل مخفی مارکوف (HMM)[ویرایش]

تا اینجا ما مدل مارکوف، که در آن هر حالت متناظر با یک رویداد قابل مشاهده بود را معرفی نمودیم. در این بخش تعریف فوق را گسترش می‌دهیم، به این صورت که در آن، مشاهدات توابع احتمالاتی از حالتها هستند. در این صورت مدل حاصل یک مدل تصادفی با یک فرایند تصادفی زیرین است که مخفی است و تنها توسط مجموعه‌ای از فرایندهای تصادفی که دنباله مشاهدات را تولید می‌کنند قابل مشاهده‌است.

برای مثال فرض کنید که شما در یک اتاق هستید و در اتاق مجاور آن فرد دیگری سکه‌هایی را به هوا پرتاب می‌کند و بدون اینکه به شما بگوید این کار را چگونه انجام می‌دهد و تنها نتایج را به اطلاع شما می‌رساند. در این حالت شما با فرایند مخفی انداختن سکه‌ها و با دنباله‌ای از مشاهدات شیر یا خط مواجه هستید. مساله‌ای که اینجا مطرح می‌شود چگونگی ساختن مدل مارکوف به منظور بیان این فرایند تصادفی است. برای مثال اگر تنها مشاهدات حاصل از انداختن یک سکه باشد، می توان با یک مدل دو حالته مساله را بررسی نمود. یک مدل مخفی مارکوف را می توان با تعیین پارامترهای زیر ایجاد نمود:

تعداد حالات ممکن: تعداد حالتها در موفقیت مدل نقش به سزایی دارد و در یک مدل مخفی مارکوف هر حالت با یک رویداد متناظر است. برای اتصال حالتها روشهای متفاوتی وجود دارد که در عمومی ترین شکل تمام حالتها به یکدیگر متصل می‌شوند و از یکدیگر قابل دسترسی می‌باشند. تعداد مشاهدات در هر حالت: تعداد مشاهدات برابر است با تعداد خروجیهایی که سیستم مدل شده خواهد داشت.

N تعداد حالتهای مدل M تعداد سمبلهای مشاهده در الفبا، اگر مشاهدات گسسته باشند آنگاه M یک مقدار نا محدود خواهد داشت.

\ A={a_{ij}}

\ A=[a_{ij}] ماتریس انتقال حالت:یک مجموعه از احتمالات در بین حالت‌ها

\ a_{ij}=p(q_{t+1}=j|q_{t}=i),\qquad i\ge 1,N\ge j

که در آن \ q_{t} بیانگر حالت فعلی می‌باشد. احتمالات انتقال باید محدودیتها طبیعی یک توزیع احتمال تصادفی را برآورده نمایند. این محدودیتها شامل موارد زیر می‌گردند

\ a_{ij}\ge 0,\qquad i\ge 1,N\ge j

\sum_{j=1}^N a_{ij} = 1,\qquad 1\le i\le N

برای حالات مدل ارگودیک برای تمامi وjها مقدار\ a_{ij} بزرگتر از صفر است و در موردی که اتصالی بین حالات وجود ندارد\ a_{ij}=0 است.

توزیع احتمال مشاهدات: یک توزیع احتمال برای هر یک از حالتها

\ B={b_{j}(k)}

\ b_{j}(k)=p{o_{t}=v_{k}|q_{t}=j},\qquad 1\le j\le N,\qquad 1\le k\le M

که در آن \ v_{k} بیانگرth"k"سمبل مشاهده شده در الفبا است و\ o_{t} بیانگر بردار پارامترهای ورودی فعلی می‌باشد. در مورد مقادیر احتمال حالتها نیز شرایط موجود در نظریه احتمال باید رعایت گردند.

\ b_{j}(k)\qquad 1\le j\le N,\qquad 1\le K\le M

\sum_{K=1}^M b_{j}(k) = 1,\qquad 1\le j\le N

اگر مشاهدات به صورت پیوسته باشند، باید به جای احتمالهای گسسته از یک تابع چگالی احتمال پیوسته استفاده شود. معمولاً چگالی احتمال به کمک یک مجموع وزندار از M توزیع نرمال μ تخمین زده می‌شود.

\ b_{j}(o_{t})=\Sigma_{m=1}^M c_{jm}\mu(\mu_{jm},\Sigma_{jm},o_{t})

که در آن \ \mu_{jm}،>,\ C_{jm},\ \Sigma_{jm},

به ترتیب ضریب بردار میانگین، ضریب وزندهی و ماتریس کواریانس می‌باشند. در رابطه فوق مقادیر\ c_{jm} باید شرایط زیر را ارضا نماید:

\ c_{jm},\qquad 1\le j\le N,\qquad 1\le m\le M

\sum_{m=1}^M c_{jm}(k) = 1,\qquad j\ge 1,N\ge j

توزیع احتمال حالت آغازین

\ \pi=(\pi_{i}) که در آن

\ \pi_{i}=p(q_{1}=i),\qquad 1\le i\le N

به این ترتیب ما می‌توانیم یک مدل مخفی مارکوف با توزیع احتمال گسسته را با استفاده از سه گانه زیر مشخص نماییم.

\ \lambda=(\Alpha,\Beta,\pi)
همچنین یک مدل مخفی مارکوف با توزیع احتمال پیوسته به صورت زیر نشان داده می‌شود.
\ \lambda=(\Alpha,C_{jm},\mu_{jm},\Sigma_{jm},\pi)

انواع مدلهای مخفی مارکوف و HMM پیوسته[ویرایش]

همانطور که گفته شد نوع خاصی از HMM وجود دارد که در آن تمام حالات موجود با یکدیگر متصل هستند. لیکن مدل مخفی مارکوف از لحاظ ساختار و اصطلاحاً توپولوژی انواع مختلف دارد. همانطور که گفته شد برای مدل ارگودیک برای تمام i و jها \ a_{ij}>0 است و ساختار مدل مثل یک گفتار کامل است که راسها در آن دارای اتصالات بازگشتی نیز می‌باشند. لیکن برای کاربردهای متفاوت و با توجه به پیچیدگی فرایند نیاز به ساختار متفاوتی وجود دارد. از جمله این ساختارها که به شکل گسترده‌ای در کاربردهای شناسایی گفتار مبتنی بر واج و شناسایی گوینده مورد استفاده قرار می‌گیرد، مدل چپ به راست یا مدل بکیس است. این مدل که ساختار آن را در شکل ۲ نیز می‌بینید، دارای اتصالات چپ به راست است و برای مدل کردن سیگنالهایی که خواص آنها با زمان تغییر می‌کند مورد استفاده قرار می‌گیرد. در مدل چپ به راست تنها یک حالت ورودی وجود دارد که همان حالت اول است و به این ترتیب:

\pi_t=\begin{cases} 0,&\, i\neq 1 \\ 1,&\, i\neq 1 \end{cases}

مدلهای ارگودیک و چپ به راست مدلهای HMM پایه هستند و در پردازش گفتار نیز بیشترین کاربرد را دارا می‌باشند. هرچند می توان با اتصال چندین مدل و یا تغییر در ساختار اتصالات آن مدلهایی با انعطاف پذیری بیشتری ایجاد نمود. شکل ۲-ج یک نمونه از مدل موازی چپ به راست، که شامل دو مدل چپ به راست است، را نشان می‌دهد.
Add caption here

در قسمتهای قبل مدلهای HMM برای مجموعه مشاهدات گسسته را مورد بررسی قرار دادیم. اگر چه می توان با چندی سازی تمام فرایندهای پیوسته را به فرایندهای با دنباله مشاهدات گسسته تبدیل نمود، اما این کار ممکن است باعث افت مدل شود. در مدل HMM پیوسته احتمال قرار گرفتن مشاهدات در یک حالت را با توابع چگالی احتمال نشان می‌دهند. در این شرایط برای هر حالت i و ورودی O، احتمال مشاهده \ b_t(O) به صورت یک توزیع شامل M مخلوط نشان داده می‌شود:

\ b_t(O)=\sum_{m=1}^M c_{im}R(O,\mu_{im},U_{im})

\ c_{im}\ge 0 ,1\le i\le N ,1\le m\le M

مدل مخلوط گاوسی[ویرایش]

مدل مخلوط گوسی یکی از مهمترین روشهای مدل کردن سیگنال است که در واقع شبیه یک HMM یک حالته‌است که تابع چگالی احتمال آن حالت دارای چندین مخلوط نرمال می‌باشد. احتمال تعلق بردار آزمایشیd به یک مدل مخلوط گاوسی دارای M مخلوط به شکل زیر بیان می‌شود:

P(x|GMM)=\sum_{t=1}^M c_t.N(\mu_t,\Sigma_t),

که در آن \ c_t وزن مخلوط \mu_t و \Sigma_t به ترتیب بردار میانگین و ماتریس کوواریانس توزیع نرمال هستند. ماتریس کوواریانس مدل GMM معمولاً به صورت قطری در نظر گرفته می­شود، گرچه امکان استفاده از ماتریس کامل نیز وجود دارد.

برای بدست آوردن پارامترهای مدل GMM، شامل وزن مخلوطهای گاوسی و میانگین وکواریانس توزیعها، از الگوریتم ماکزیمم نمودن امید ریاضی(EM)استفاده می‌شود. باید توجه داشت که تعداد مخلوطهای گاوسی با تعداد نمونه‌های موجود آموزشی رابطه مستقیم دارند و نمی توان با مجموعه داده‌ای ناچیز یک مدل GMM دارای تعداد بیش از حد از مخلوطها را آموزش داد. در تشکیل و آموزش مدل GMM مانند تمام روشهای تشکیل مدل رعایت نسبت میزان پیچیدگی مدل و نمونه‌های آموزشی الزامی می‌باشد.

فرضیات تئوری مدل مخفی مارکوف[ویرایش]

برای اینکه مدل مخفی مارکوف از لحاظ ریاضی و محاسباتی قابل بیان باشد فرضهای زیر در مورد آن در نظر گرفته می‌شود.

۱- فرض مارکوف

با داشتن یک مدل مخفی مارکوف، احتمال انتقال از حالت i به حالت j به صورت زیر تعریف می‌شود:

\ a_{ij}=p(q_{t+1}|q_{t}=i)
به بیان دیگر فرض می‌شود که حالت بعدی تنها به حالت فعلی بستگی دارد. مدل حاصل از فرض مارکوف یک مدل HMM مرتبه صفر می‌باشد.
در حالت کلی، حالت بعدی می‌تواند با k حالت قبلی وابسته باشد. این مدل که مدل HMM مرتبه k ام گفته می‌شود، با استفاده از احتمالات انتقال به صورت زیر تعریف می‌گردد.
\ a_{i1}a_{i2}a_{i3}a{i4}... =p(q_{t+1}=j|q_{t}=i_{1},q_{t-1}=i_{2}.... ,q_{t-k+1}=i_{k} ,1\le i_{1},i_{2},...i_{k},j\le N))
به نظر می‌رسد که یک مدل HMM از مرتبه بالاتر باعث افزایش پیچیدگی مدل می‌شود. علی‌رغم اینکه مدل HMM مرتبه اول متداول ترین مدل است، برخی تلاشها برای استفاده از مدلهای دارای مرتبه بالاتر نیز در حال انجام می‌باشد.

2 -فرض ایستایی(stationarity)

در اینجا فرض می‌شود که احتمال انتقال در بین حالات از زمان واقعی رخداد انتقال مستقل است. در این صورت می توان برا ی هر}}math>\ t_{۱},t_{۲}</math> نوشت

\ p(q_{t_{1}+1}=j|q_{t_{1}}=i)=p(q_{t_{2}+1}=j|q_{t_{2}}=i

۳ -فرض استقلال خروجی

در این حالت فرض می‌شود که خروجی (مشاهدات) فعلی به صورت آماری از خروجی قبلی مستقل است. می توان این فرض را با داشتن دنباله‌ای از خروجی‌ها مانند بیان نمود:

\ O=o_{1},o_{2},....o_{T}
آنگاه مطابق با این فرض برای مدل HMM با نام\ \lambda خواهیم داشت:
\ p(O|q_{1},q_{2},..q_{T},\lambda)=\begin{matrix} \prod_{t=1}^T p(O_{t}|q_{t},\lambda)\end{matrix}
اگر چه بر خلاف دو فرض دیگر این فرض اعتبار کمتری دارد. در برخی حالات این فرضیه چندان معتبر نیست و موجب می‌شود که مدل HMM با ضعفهای عمده‌ای مواجه گردد.

مساله ارزیابی و الگوریتم پیشرو (forward)[ویرایش]

در این حالت مساله این است که با داشتن مدل \lambda=(A,B,\pi) و دنباله مشاهدات O=\{O_1,O_2,... ,O_T\} باید مقدار \ P(O|\lambda) را پیدا نماییم. می‌توانیم این مقدار را با روشهای آماری مبتنی بر پارامترها محاسبه نماییم. البته این کار به محاسباتی با پیچیدگی \ O(N^T) احتیاج دارد. این تعداد محاسبات حتی برای مقادیر متوسط t نیز بسیار بزرگ است. به همین دلیل لازم است که راه دیگری برای این محاسبات پیدا نماییم. خوشبختانه روشی ارائه شده‌است که پیچیدگی محاسباتی کمی دارد و از متغیر کمکی \ a_t(i) با نام متغیر پیشرو استفاده می‌کند.>

متغیر پیشرو به صورت یک حتمال از دنباله مشاهدات O=\{O_1,O_2,... ,O_t\} تعریف می‌شود که در حالت i خاتمه می‌یابد. به بیان ریاضی:

\alpha_t(i)=p\{O_1,O_2,... ,O_t,q_t=i|\lambda\}

آنگاه به سادگی مشاهده می‌شود که رابطه بازگشتی زیر برقرار است.

\ a_{t+1}(j)=b_j(O_{t+1}\sum_{i=1}^N)a_t(i)a_{ij}, 1\le j\le N, 1\le t\le T-1

که در آن

\ a_1(j)=\pi_j b_j (O_1), 1\le j\le N

Add caption here

با داشتن این رابطه بازگشتی می‌توانیم مقدار زیر را محاسبه نماییم.

\ a_T(i),1\le i\le N

و آنگاه احتمال \ P(O|\lambda) به صورت زیر محاسبه خواهد شد:

p\{O|\lambda\}=\sum_{i=1}^N a_T(i)

پیچیدگی محاسباتی روش فوق که به الگوریتم پیشرو معروف است برابر با \ O(N^2T) است، که در مقایسه با حالت محاسبه مستقیم که قبلاً گفته شد، و دارای پیچیدگی نمایی بود، بسیار سریعتر است.

روشی مشابه روش فوق را می توان با تعیین متغیر پسرو، \beta_t(i)، به عنوان احتمال جزئی دنباله مشاهدات O=\{O_{t+1},O_{t+2},... ,O_T\} در حالت i تعریف نمود. متغیر پیشرو را می توان به شکل زیر نمایش داد.

\beta_t(i)=p\{O_{t+1},O_{t+2},... ,O_T|q_t=i,\lambda\}

مانند روش پیشرو یک رابطه بازگشتی به شکل زیر برای محاسبه \beta_t(i) وجود دارد.

\beta_t(i)=\sum_{i=1}^N \beta_{t+1}(j)a_{ij}b_j(O_{t+1}), 1\le i\le N, 1\le t\le T-1

Add caption here
که در آن

\beta_t(i)=1,  1\le i\le N

می توان ثابت کرد که

\ a_t(i)\beta_t(i)=p\{O,q_t=i|\lambda\}, 1\le i\le N, 1\le t\le T

آنگاه می توان با کمک هر دو روش پیشرو و پسرو مقدار احتمال \ P(O|\lambda) را محاسبه نمود.

p\{O|\lambda\}=\sum_{i=1}^N p\{O,q_t=i|\lambda\}=\sum_{i=1}^N a_t(i)\beta_t(i)

رابطه فوق بسیار مهم و مفید است و بخصوص برای استخراج روابط آموزش مبتنی بر گرادیان لازم می‌باشد.

مساله کد گشایی و الگوریتم ویتربی (Viterbi Algorithm)[ویرایش]

در این حالت می‌خواهیم با داشتن دنباله مشاهدات O=\{O_1,... ,O_t\} و مدل lambda=\{A,B,\pi\} دنباله حالات بهینه Q=\{q_1,... ,q_t\} برای تولید O=\{O_1,... ,O_t\} را بدست آوریم.

یک راه حل این است که محتمل ترین حالت در لحظه t را بدست آوریم و تمام حالات را به این شکل برای دنباله ورودی بدست آوریم. اما برخی مواقع این روش به ما یک دنباله معتبر و با معنا از حالات را نمی‌دهد به همین دلیل باید راهی پیدا نمود که یک چنین مشکلی نداشته باشد.

در یکی از این روشها که با نام الگوریتم Viterbi شناخته می‌شود، دنباله حالات کامل با بیشترین مقدار نسبت شباهت پیدا می‌شود. در این روش برای ساده کردن محاسبات متغیر کمکی زیر را تعریف می‌نماییم.

\delta_t(i)=max p\{q_1,q_2,... ,q_{t-1},q_t=t,o_1,o_2,... ,o_{t-1}|\lambda\}

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

\delta_{t+1}(j)=b_j(o_{t+1})[max \delta_t(i)a_{ij}],\qquad 1\le i\le N,\qquad 1\le t\le T-1

که در آن

\delta_1(j)=\pi_j b_j (o_1),\qquad 1\le i\le N

به همین دلیل روال پیدا کردن دنباله حالات با بیشترین احتمال از محاسبه مقدار \delta_j(i), i\le j\le N و با کمک رابطه فوق شروع می‌شود. در این روش در هر زمان یک اشاره گر به حالت برنده قبلی خواهیم داشت. در نهایت حالت \ j^* را با داشتن شرط زیر بدست می‌آوریم.

\ j^*=arg  max \delta_T(i),

و با شروع از حالت \ j^*، دنباله حالات به شکل بازگشت به عقب و با دنبال کردن اشاره گر به حالات قبلی بدست می‌آید. با استفاده از این روش می توان مجموعه حالات مورد نظر را بدست آورد. این الگوریتم را می توان به صورت یک جستجو در گراف که نودهای آن برابر با حالتها مدل HMM در هر لحظه از زمان می‌باشند نیز تفسیر نمود

مساله یادگیری[ویرایش]

به طور کلی مساله یادگیری به این موضوع می‌پردازد که چگونه می توان پارامترهای مدل HMM را تخمین زد تا مجموعه داده‌های آموزشی به بهترین نحو به کمک مدل HMM برای یک کاربرد مشخص بازنمایی شوند. به همین دلیل می توان نتیجه گرفت که میزان بهینه بودن مدل HMM برای کاربردهای مختلف، متفاوت است. به بیان دیگر می توان از چندین معیار بهینه سازی متفاوت استفاده نمود، که از این بین یکی برای کاربرد مورد نظر مناسب تر است. دو معیار بهینه سازی مختلف برای آموزش مدل HMM وجود دارد که شامل معیار بیشترین شباهت (ML) و معیار ماکزیمم اطلاعات متقابل (Maximum Mutual Information (MMI)) می‌باشند. آموزش به کمک هر یک از این معیارها در ادامه توضیح داده شده‌است.

معیار بیشترین شباهت((Maximum Likelihood (ML)[ویرایش]

در معیار ML ما سعی داریم که احتمال یک دنباله ورودی \ O^w که به کلاس w تعلق دارد را با داشتن مدل HMM همان کلاس بدست آوریم. این میزان احتمال برابر با نسبت شباهت کلی دنباله مشاهدات است و به صورت زیر محاسبه می‌شود.

\ L_{tot}=p\{O^w|\lambda_w\}

با توجه به رابطه فوق در حالت کلی معیار ML به صورت زیر تعریف می‌شود.

\ L_{tot}=p\{O|\lambda\}

اگر چه هیچ راه حل تحلیلی مناسبی برای مدل \lambda=\{A,B,\pi\} وجود ندارد که مقدار \ L_{tot} را ماکزیمم نماید، لیکن می‌توانیم با استفاده از یک روال بازگشتی پارامترهای مدل را به شکلی انتخاب کنیم که مقدار ماکزیمم بدست آید. روش Baum-Welch و یا روش مبتنی بر گرادیان از جمله این روشها هستند.

الگوریتم بام- ولش[ویرایش]

این روش را می توان به سادگی و با محاسبه احتمال رخداد پارامترها و یا با محاسبه حداکثر رابطه زیر بر روی \bar \lambda تعریف نمود.

\ Q(\lambda,\bar \lambda)=\sum_q p\{q|O,\lambda\}log[p\{O,q,\bar \lambda\}]

یکی از ویژگیهای مخصوص این الگوریتم این است که همگرایی در آن تضمین شده‌است. برای توصیف این الگوریتم که به الگوریتم پیشرو- پسرو نیز معروف است، باید علاوه بر متغیرهای کمکی پیشرو و پسرو که قبلاً تعریف شده‌اند، متغیرهای کمکی بیشتری تعریف شود. البته می توان این متغیرها را در قالب متغیرهای پیشرو و پسرو نیز تعریف نمود.

اولین متغیر از این دست احتمال بودن در حالت i در زمان t و در حالت j در زمان t+1 است، که بصورت زیر تعریف می‌شود.

\xi_t(i,j)=p\{{q_t}=i,q_{t+1}=j|O,\lambda\}

این تعریف با تعریف زیر معادل است.

\xi_t(i,j)=\frac{p\{q_t=i,q_{t+1}=j,O|\lambda\}}{p\{O|\lambda\}}

می توان این متغیر را با استفاده از متغیرهای پیشرو و پسرو به صورت زیر تعریف نمود.

\xi_t(i,j)=\frac{\alpha_t(i)a_{ij}\beta_{t+1}(j)b_j(o_{t+1})}{\sum_{i=1}^N\sum_{j=1}^N \alpha_t(i)a_{ij}\beta_{t+1}(j)b_j(o_{t+1})}

Add caption here

متغیر دوم بیانگر احتمال پسین حالت i با داشتن دنباله مشاهدات و مدل مخفی مارکوف می‌باشد و به صورت زیر بیان می‌شود.

\gamma_t(i)=p\{q_t=i|O,\lambda\}

این متغیر را نیز می توان در قالب متغیرهای پیشرو و پسرو تعریف نمود.

\gamma_t(i)=\left[\frac{\alpha_t(i)\beta_t(i)}{\sum_{i=1}^N \alpha_t(i)\beta_t(i)}\right]

رابطه بین دو متغیر فوق بصورت زیر بیان می‌شود.

\gamma_t(i)=\sum_{i=1}^N \xi_t(i,j),\qquad 1\le i\le N,\qquad 1\le t\le M

اکنون می توان الگوریتم آموزش بام – ولش را با ماکزیمم کردن مقدار بدست آورد. اگر مدل اولیه ما باشد، می‌توانیم متغیرهای پسرو و پیشرو و متغیرهای \xi و \gamma را تعریف نمود. مرحله بعدی این است که پارامترهای مدل را با توجه به روابط بازتخمین زیر بروزرسانی نماییم.

\bar \pi_i=\gamma_1(i),\qquad 1\le i\le N

\bar a_{ij}=\frac{\sum_{t=1}^{T-1} \xi_t(i,j)}{\sum_{t=1}^{T-1} \gamma_t(i)},\qquad 1\le i\le N,\qquad 1\le j\le N

\bar b_j(k)=\frac{\sum_{t=1}^T\gamma_t(j)}{\sum_{t=1}^T\gamma_t(j)},\qquad 1\le j\le N,\qquad 1\le k\le M

فرمولهای باز تخمین را می توان به راحتی به شکلی تغییر داد که با توابع چگالی پیوسته نیز قابل استفاده باشند.

الگوریتم حداکثر سازی امید ریاضی (Expectation Maximization)[ویرایش]

الگوریتم حداکثر سازی امید ریاضی یا EM به عنوان یک نمونه از الگوریتم بام – ولش در آموزش مدلهای HMM مورد استفاده قرار می‌گیرد. الگوریتم EM دارای دو فاز تحت عنوان Expectation و Maximization است. مراحل آموزش مدل در الگوریتم EM بصورت زیر است.

۱) مرحله مقدار دهی اولیه: پارامترهای اولیه مدل \lambda را تعیین می‌نماییم.

۲) مرحله امید ریاضی(Expectation): برای مدل \lambda موارد زیر را محاسبه می‌کنیم.

  • \alphaمقادیر با استفاده از الگوریتم پیشرو
  • مقادیر \beta و \gamma با استفاده از الگوریتم پسرو

۳) مرحله ماکزیمم سازی (Maximization): مدل \lambda را با استفاده از الگوریتم باز تخمین محاسبه می‌نماییم.

۴) مرحله بروز رسانی \lambda\leftarrow \acute{\lambda}

۵) بازگشت به مرحله امید ریاضی

روال فوق تا زمانی که میزان نسبت شباهت نسبت به مرحله قبل بهبود مناسبی داشته باشد ادامه می‌یابد.

روش مبتنی بر گرادیان[ویرایش]

در روش مبتنی بر گرادیان هر پارامتر\ \Theta از مدل \ \lambdaبا توجه به رابطه زیر تغییر داده می‌شود.

\ \Theta^{new}=\Theta^{old}- \eta \left [ \frac{\partial j}{\partial \Theta} \right ]

که در آن مقدار J با ید مینیمم شود. در این حالت خواهیم داشت.

\ J = E_{ML}= -\log (P {O|\lambda}) = -\log L_{tot}

از آنجا که مینیمم کردن J معادل است با مینیمم کردن\ L_{tot}نیاز است است تا معیار ML بهینه بدست آید. آنگاه مساله، یافتن مقدار مشتق\ \left (\frac{\partial J}{\partial \Theta} \right) برای تمام پارامترهای\ \Thetaاز مدل است. این کار را می توان به سادگی با استفاده از مقدار\ L_{tot}

\ L_{tot} = \sum_{i=1}^{N} p (O,q_{t} =i|\lambda) = \sum_{i=1}^{N} \alpha_{t}(i) \Beta_{t} (i)

با مشتق گرفتن از رابطهٔ قبل به این نتیجه دست میابیم:

\ \left (\frac{\partial J}{\partial \Theta} \right)= - \left (\frac{1}{L_{tot}} \right)\left (\frac{\partial L_{tot}}{{\partial \Theta}} \right)

از آنجا که در رابطهٔ فوق مقدار \ \left (\frac{\partial J}{\partial \Theta} \right) بر حسب \ \left (\frac{\partial L_{tot}}{\partial \Theta} \right) بدست می‌آید، می‌توان رابطه \ \left (\frac{\partial J}{\partial \Theta} \right) بدست آورد.

در روش مبتنی بر گرادیان، مقدار \ \left (\frac{\partial L_{tot}}{\partial \Theta} \right) را باید برای پارامترهای \ a_{g} (احتمال انتقال) و \ b_{g} (ااحتمال مشاهدات) بدست آورد.

استفاده از مدل HMM در شناسایی گفتار[ویرایش]

بحث شناسایی اتوماتیک گفتار را می توان از دو جنبه مورد بررسی قرار داد.

۱-از جنبه تولید گفتار

۲-از جنبه فهم و دریافت گفتار

مدل مخفی مارکوف (HMM) تلاشی است برای مدل سازی آماری دستگاه تولید گفتار و به همین دلیل به اولین دسته از روشهای شناسایی گفتار تعلق دارد. در طول چندین سال گذشته این روش به عنوان موفقترین روش در شناسایی گفتار مورد استفاده قرار گرفته‌است. دلیل اصلی این مساله این است که مدل HMM قادر است به شکل بسیار خوبی خصوصیات سیگنال گفتار را در یک قالب ریاضی قابل فهم تعریف نماید.

در یک سیستم ASR مبتنی بر HMM قبل از آموزش HMM یک مرحله استخراج ویژگیها انجام می‌گردد. به این ترتیب ورودی HMM یک دنباله گسسته از پارامترهای برداری است. بردارهای ویژگی می‌تواند به یکی از دو طریق بردارهای چندی سازی شده یا مقادیر پیوسته به مدل HMM آموزش داده شوند. می توان مدل HMM را به گونه‌ای طراحی نمود که هر یک از این انواع ورودیها را دریافت نماید. مساله مهم این است که مدل HMM چگونه با طبیعت تصادفی مقادیر بردار ویژگی سازگاری پیدا خواهد کرد.

استفاده از HMM در شناسایی کلمات جداگانه[ویرایش]

در حالت کلی شناسایی واحدهای گفتاری جدا از هم به کاربردی اطلاق می‌شود که در آن یک کلمه، یک زیر کلمه یا دنباله‌ای از کلمات به صورت جداگانه و به تنهایی شناسایی شود. باید توجه داشت که این تعریف با مساله شناسایی گفتار گسسته که در آن گفتار به صورت گسسته بیان می‌شود متفاوت است. در این بین شناسایی کلمات جداگانه کاربرد بیشتری به نسبت دو مورد دیگر دارد و دو مورد دیگر بیشتر در عرصه مطالعات تئوری مورد بررسی قرار می‌گیرند. برای این کاربرد راه حلهای مختلفی وجود دارد زیرا معیارهای بهینه سازی متفاوتی را برای این منظور معرفی شده‌است و الگوریتمهای پیاده سازی شده مختلفی نیز برای هر معیار موجود است. این مساله را از دو جنبه آموزش و شناسایی مورد بررسی قرار می‌دهیم.

آموزش[ویرایش]

فرض می‌کنیم که فاز پیش پردازش سیستم دنباله مشاهدات زیر را تولید نماید:

\ O=(o_{1},o_{2},.... ,o_{N})

پارامترهای اولیه تمام مدلهای HMM را با یک مجموعه از مقادیر مشخص مقدار دهی می‌نماییم.

\ \lambda_{i},  1\le i\le N

در آغاز این مساله را برای حالت clamped در نظر بگیرید. از آنجایی که ما برای هر کلاس از واحدها یک HMM داریم، می‌توانیم مدل\ \lambda_{i}از کلاس l را که دنباله مشاهدات فعلی به آن مربوط می‌شود، را انتخاب نماییم.

\ L_{tot}^{clamped}=\sum_{i \in \lambda_{i}} \alpha_{t} (i) \Beta_{t} (i) =\sum_{i \in \lambda_{i}} \alpha_{T}(i)

برای حالت free نیز به مانند حالت قبل می توان مقدار نسبت شباهت را بدست آورد.

\ L_{tot}^{free}= \sum_{m=1}^{N} L_{m}^{I}= \sum_{m=1}^{N}[\sum_{i \in \lambda_{m}} \alpha_{t} (i) \Beta_{t} (i)] \sum_{m=1}^{N} \sum_{i \in \lambda_{i}} \alpha_{T}(i)

که در آن \ L_{m}^{I}بیانگر میزان شباهت دنباله مشاهدات فعلی به کلاس l در مدل\ \lambda_{m}است.

شناسایی[ویرایش]
در مقایسه با آموزش، روال شناسایی بسیار ساده تر است.

الگوریتم دنباله مشاهدات مورد نظر را دریافت می‌کند.

\ I^*\ \arg  max  L_{m} ^{I}

\ 1\le m\le N

در این حالت نرخ شناسایی بصورت نسبت بین واحدهای شناسایی صحیح به کل واحدهای آموزشی حساب می‌شود.

منابع[ویرایش]

مشارکت‌کنندگان ویکی‌پدیا، «Hidden Markov model»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲۷ ژوئن ۲۰۱۱).