پردازش معنایی در لب خوانی بازیهای رایانه ای

مقدمه

امروزه لب خوانی 1 و تشخیص گفتار 2 از روی ویدئویی که حرکات لب را ثبت کرده است کاربردهای بسیاری دارد که عموما در راستای حذف فرمان های دستی برای کنترل دستگاه الکترونیکی، به کار میرود .
البته این سیستم در بخش های نظامی ، امنیتی ، توانبخشی به معلولین و... نیز کاربرد دارد.

این فرآیند پیچیده در مرحله اول به تشخیص محل لب و کانتور آن در فریم های ویدئو و تشکیل گراف (معمولا 12 یا 6 نقطه ) نیاز داشته و سپس به تحلیل سیر تغییر نقاط در دنباله ی گراف ها و در نهایت حدس لغت ادا شده می پردازد .

sequences

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

خلاصه مراحل انجام کار

برای تحلیل گفتار از روی حرکات لب، از الگوریتم HMM یا مدل مخفی مارکوف 3 استفاده میشود. سیگنالِ تصویریِ مربوط به گفتارِ هرلغت به صورت سریِ زمانیِ بردارهایِ ویژگی، نمایش داده می شود .بنابراین برای هرلغت یک سری آموزشی وجود دارد که شامل تعدادی تکرار ازآن لغت توسط یک یاچند گوینده می باشد.
مجموعه ی W که راجع به آن خواهیم گفت نتیجه ی همین سری آموزشی ست. یعنی مجموعه لغاتی که پس از یادگیری در دایره ی دانش الگوریتم قرار دارد و هر ورودی ناشناخته از اینجا به بعد، با لغاتِ این مجموعه مقایسه شده و اعلام میکند که لغت ادا شده به کدامیک شبیه تر است!! بعبارتی احتمالات جابه جاییِ دنباله ی تولید شده به کدام مدل HMM نزدیکتر است؟..

1-ساخت مدل های لغت مجزا

اولین قدم،ساخت مدل های لغت مجزااست؛ تاپارامتهای مدل هرلغت به صورت بهینه ای تخمین زده شوند.نهایتأ،هنگامی که مجموعه W مدل HMM طراحی شد،بازشناسی لغت مجهول صورت می گیرد تا باداشتن سری مشاهدات مورد تست، نمره ای به مدل هرلغت داده شود ولغتی که نمره آن ازبقیه بالاتراست انتخاب شود.

برای تشخیص گفتار با استفاده از این مدل (HMM) الگوریتم های متفاوت پیشرو 4 ، پسرو 5 ، الگوریتم ویتربی 6 ، الگوریتم بالم-ولش یا الگوریتم پیشرو-پسرو 7 وهمچنین الگوریتم حداکثر سازی امید ریاضی 8 که نوع خاصی از بام- ولش میباشد و روش مبتنی بر گرادیان وجود دارد.

وظیفه یادگیری در HMM، یافتن بهترین احتمالات جابجایی‌ها بر اساس یک دنباله از خروجی هاست .میزان بهینگی مدل پنهان مارکوف در مرحله یادگیری ، در مسائل مختلف ،متفاوت می باشد . در اینجا معیار بهینگی به وسیله متد "بیشترین شباهت" 9 بر اساس خروجی داده شده تخمین زده می‌شوند .
ما در اینجا برای پیدا کردن maximum likelihood محلی، از الگوریتم پیشرو-پسرو استفاده میکنیم

1.1) ساخت مدل HMM
ابتدا برای هر لغت که قرار است در دایره لغات ما برای تشخیص، جای داشته باشد با الگوریتم Baum-Welch یک مدل HMM ساخته میشود.یعنی سه تایی مرتب\ \lambda=(A,B,\pi)برای هر لغت محاسبه میشود
استفاده از HMM در شناسایی کلمات جداگانه
در این مرحله که مرحله آموزش الگوریتم است فرض می‌کنیم که فاز پیش پردازش سیستم دنباله مشاهدات زیر را تولید نماید:

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

پارامترهای اولیه تمام مدلهای HMM را با یک مجموعه از مقادیر مشخص مقدار دهی می‌نماییم.
\ \lambda_{i}, 1\le i\le N

از آنجایی که ما برای هر کلاس از واحدها(لغات مجموعه ) یک HMM داریم، می‌توانیم مدل\ \lambda_{i}از کلاس l را که دنباله مشاهدات فعلی به آن مربوط می‌شود، را انتخاب نماییم.
\ L_{tot}^{clamped}=\sum_{i \in \lambda_{i}} \alpha_{t} (i)B_{t} (i) =\sum_{i \in \lambda_{i}} \alpha_{T}(i)

که در آن\ L_{m}^{I}بیانگر میزان شباهت دنباله مشاهدات فعلی به کلاس l در مدل\ \lambda_{m}است.
هﺮ ﻳﮏ از ﻣﺪﻟﻬﺎی HMM، ، را ﺑﺎ ﻳﮑﻲ از دو روش ﺗﺼﺎدﻓﻲ ﻳﺎ ﺧﻮﺷﻪ ﺑﻨﺪی K-means ﻣﻘﺪاردهﻲ
اولیه میکنیم.
2.1)محاسبه احتمالات پیشرو -پسرو
ﺑﺎ داﺷﺘﻦ دﻧﺒﺎﻟﻪ ﻣﺸﺎهدات HMM ﻣﻘﺎدﻳﺮ اﺣﺘﻤﺎل پیشرو و ﭘﺴﺮو هﺮ را ﺑﺎ اﺳﺘﻔﺎدﻩ از رواﺑط
\ 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
و
\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
ﻣﺤﺎﺳﺒﻪ ﻣﻲ کنیم.

3.1) محاسبه نسبت شباهت
ﻣﻘﺪار ﻧﺴﺒﺖ ﺷﺒﺎهت را ﺑﺎ اﺳﺘﻔﺎدﻩ از رواﺑﻂ

\ L_{tot}^{clamped}=\sum_{i \in \lambda_{i}} \alpha_{t} (i) \Beta_{t} (i) =\sum_{i \in \lambda_{i}} \alpha_{T}(i)
و
\ 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)
ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﮐنیم.
4.1) به روزرسانی پارامترهای مدل
ﺑﺎ ﮐﻤﮏ راﺑﻄﻪ \ \Theta^{new}=\Theta^{old}- \eta \left [ \frac{\partial j}{\partial \Theta} \right ] ﭘﺎراﻣﺘﺮهﺎی ﻣﺪل را ﺑﺮوز رﺳﺎﻧﻲ ﻣﻲ ﮐنیم.
5.1)اﮔﺮ همه ﻧﻤﻮﻧﻪ هﺎی ﺁﻣﻮزﺷﻲ اﺳﺘﻔﺎدﻩ ﻧﺸﺪﻩ اﻧﺪ ﺑﻪ ﮔﺎم 2 ﺑﺮ ﻣﻲ ﮔﺮدﻳﻢ.

2 – استخراج بردار ویژگی برای لغت ناشناخته و ارزیابی آن

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

\ I^*\ \arg max L_{m} ^{I}
\ 1\le m\le N

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

کارهای مرتبط

حال به جزئیات و مراحل انجام کار میپردازیم

مدل پنهان مارکوف برای هر لغت شامل 3 مؤلفه میباشدکه احتمال بردارهای ویژگی مجموعه آموزشی مربوط به لغت V را بیشینه می نمایند:

ماتریس انتقال حالت:یک مجموعه از احتمالات در بین حالت‌ها \ A={a_{ij}} و \ a_{ij}=p(q_{t+1}=j|q_{t}=i),\qquad i\ge 1,N\ge j
که در آن\ q_{t}بیانگر حالت فعلی می‌باشد .

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

\ 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} بیانگر بردار پارامترهای ورودی فعلی می‌باشد.

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

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

به این ترتیب یک سه تایی مرتب برای HMM، با توزیع احتمال گسسته خواهیم داشت :
\ \lambda=(A,B,\pi)

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

۱- فرض مارکوف

با داشتن یک مدل مخفی مارکوف، احتمال انتقال از حالت 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 -فرض ایستایی

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

\ 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 با ضعفهای
عمده‌ای مواجه گردد.

ﺑﺮای اﻳﻨﮑﻪ ﻣﺪل HMM در دنیای واﻗﻌﻲ ﻗﺎﺑﻞ اﺳﺘﻔﺎدﻩ ﺑﺎﺷﺪ ﺑﺎﻳﺪ ﺳﻪ ﻣﺴﺎﻟﻪ ﻣﻬﻢ ﺣﻞ ﺷﻮد. اﻳﻦ ﺳﻪ ﻣﺴﺎﻟﻪ ﺑﻪ ﻗﺮار زﻳﺮﻧﺪ:

1- ارزﻳﺎﺑﻲ ﻣﺴﺎﻟﻪ 10

ﺑﺎ داﺷﺘﻦ دﻧﺒﺎﻟﻪ ﻣﺸﺎهﺪات\ O=(o_{1},o_{2},.... ,o_{t}) و ﻣﺪل \ \lambda=(A,B,\pi) ﭼﮕﻮﻧﻪp(O|Q,\lambda) ، اﺣﺘﻤﺎل ﺗﻮﻟید دﻧﺒﺎﻟﻪ ﻣﺸﺎهدات ﺗﻮﺳﻂ\lambda را ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎییم

2- ﮐﺪﮔﺸﺎﻳﻲ ﻣﺴﺎﻟﻪ 11

ﺑﺎ داﺷﺘﻦ دﻧﺒﺎﻟﻪ ﻣﺸﺎهﺪات\ O=(o_{1},o_{2},.... ,o_{t}) و ﻣﺪل\ \lambda=(A,B,\pi) ﭼﮕﻮﻧﻪ دﻧﺒﺎﻟﻪ ﺣﺎﻻت بهینه\ Q=(q_{1},q_{2},.... ,q_{t}) ﺑﺮای ﺗﻮلید \ O=(o_{1},o_{2},.... ,o_{t})را ﺑﺪﺳﺖ ﺁورﻳﻢ؟

3-ﺁﻣﻮزش ﻣﺴﺎﻟﻪ 12

ﭼﮕﻮﻧﻪ ﭘﺎراﻣﺘﺮهﺎی ﻣﺪل A,B,\pi را ﺑﺪﺳﺖ ﺁورﻳﻢ؟

ارزیابی

در ﺷﻨﺎﺳﺎﻳﻲ ﮔﻔﺘﺎر، ﻣﺴﺎﻟﻪ ارزﻳﺎبی ﺑﺮای ﺷﻨﺎﺳﺎیی ﮐﻠﻤﺎت ﺟﺪا 13 اﺳﺘﻔﺎدﻩ ﻣﻲ ﺷﻮد و معمولا در آن از رواﻟﻬﺎی پیشرو و ﭘﺴﺮو استفاده میشوﺪ. در اﻳﻦ روش ﺗﻤﺎم دﻧﺒﺎﻟﻪ ﺣﺎﻟﺘﻬﺎی ﺑﺎ ﻃﻮل t در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮد ﺑﺮای ﻣﺜﺎل اﺣﺘﻤﺎل ﺗﻮﻟید "دﻧﺒﺎﻟﻪ ﻣﺸﺎهﺪات"\ O=(o_{1},o_{2},.... ,o_{t}) از "دﻧﺒﺎﻟﻪ ﺣﺎﻻت" \ Q=(q_{1},q_{2},.... ,q_{t}) از ﻣﺪل\lambda ، ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﺷﻮد.

\ p(O|Q_{1},\lambda)=\begin{matrix} \prod_{i=1}^t p(O_{i}|q_{i},\lambda)\end{matrix}

ﮐﻪ ﻣﻲ ﺗﻮان ﺁن را ﺑﻪ ﺷﮑﻞ زﻳﺮ نیز ﻧﻮﺷﺖ:
p(O|Q_{1},\lambda)= b_{q1}(O1),b_{q2}(O2),....,b_{qt}(Ot)

کدگشایی

ﻣﺴﺄﻟﻪ دوم ﮐﻪ ﺑﺪﺳﺖ ﺁوردن رﺷﺘﻪ ﺣﺎﻻت بهینه اﺳﺖ ﺗﻮﺳﻂ اﻟﮕﻮرﻳﺘﻢ ﺟﺴﺘﺠﻮی وﻳﺘﺮﺑﻲ اﻧﺠﺎم ﻣﻲﺷﻮد و در ﻓﺎز ﺑﺎزﺷﻨﺎﺳﻲ ﺑﻜﺎر ﻣﻲﺁﻳﺪ
در این حالت می‌خواهیم با داشتن دنباله مشاهداتO=\{O_1,... ,O_t\} و مدل lambda=\{A,B,\pi\}دنباله حالات بهینهQ=\{q_1,... ,q_t\}برای تولید O=\{O_1,... ,O_t\}را بدست آوریم.
یک راه حل این است که محتمل ترین حالت در لحظه t را بدست آوریم و تمام حالات را به این شکل برای دنباله ورودی بدست آوریم. همانطور که در تجربه دیده میشود این روش در برخی حالات باعث تولید یک دنباله نا معتبر و بدون معنا از حالات را میشود!!!! به همین دلیل باید راهی پیدا نمود که یک چنین مشکلی نداشته باشد.
در اینجا برای تکمیل سیر انجام کار، الگوریتم ویتربی پیشنهاد شده است
در روش الگوریتم ویتربی ، دنباله حالاتِ کامل با بیشترین مقدار نسبت شباهت پیدا می‌شود. در این روش برای ساده کردن محاسبات متغیر کمکی زیر را تعریف می‌نماییم.

\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

تابع viter_recur در کد این کار را انجام میدهد.

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

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

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

ﺷﻨﺎﺳﺎﻳﻲ ﻣﺒﺘﻨﻲ ﺑﺮ اﻟﮕﻮرﻳﺘﻢ وﻳﺘﺮﺑﻲ

در اﻟﮕﻮرﻳﺘﻢ وﻳﺘﺮﺑﻲ، امتیاز وﻳﺘﺮﺑﻲ، ، ﺑﺮای هﻤﻪ ﺣﺎﻟﺘﻬﺎی ﻣﺪل زﺑﺎﻧﻲ در زﻣﺎن t ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﺷﻮد و آنگاه ﻣﺤﺎﺳﺒﻪ امتیاز وﻳﺘﺮﺑﻲ
در زﻣﺎن t+1 ﺑﺎ ﮐﻤﮏ راﺑﻄﻪ زیر اداﻣﻪ ﻣﻲ ﻳﺎﺑﺪ.

\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

اﻳﻦ روال از ﺁن ﺟﻬﺖ ﮐﻪ ﭘﺮدازش را در زﻣﺎن t ﮐﺎﻣﻼ اﻧﺠﺎم ﻣﻲ دهﺪ و ﺁﻧﮕﺎﻩ ﺑﻪ زﻣﺎن t+1 ﻣﻲ رود، ﺗﺤﺖ ﻋﻨﻮان ﺟﺴﺘﺠﻮی وﻳﺘﺮﺑﻲ هﻤﮕﺎم ﺑﺎ زﻣﺎن 14 ﺷﻨﺎﺧﺘﻪ ﻣﻲ ﺷﻮد. در ﻧﻬﺎﻳﺖ ﺑﺮﮔﺸﺖ ﺑﻪ ﻋﻘﺐ در ﺟﻬﺖ ﺣﺎﻟﺘﻬﺎی دارای بیشترﻳﻦ امتیاز، دﻧﺒﺎﻟﻪ ﺣﺎﻻت بهینه را ﻧتیجه ﻣﻲ دهد. اﻟﺒﺘﻪ اﮔﺮ ﺗﻌﺪاد ﺣﺎﻻت زﻳﺎد ﺑﺎﺷﺪ
ﺟﺴﺘﺠﻮی وﻳﺘﺮﺑﻲبسیار ﭘﺮ هﺰﻳﻨﻪ ﺧﻮاهد ﺑﻮد. در اﻳﻦ ﺣﺎﻟﺖ ﺗﻨﻬﺎ ﺗﻌﺪادی از ﺣﺎﻻت ﮐﻪ دارای بیشترﻳﻦ امتیاز هﺴﺘﻨﺪ ﻧﮕﻬﺪاری ﻣﻲ ﺷﻮﻧﺪ و
از ﻧﮕﻬﺪاری بقیه ﺣﺎﻻت ﺻﺮف ﻧﻈﺮ ﻣﻲ ﮔﺮدد. اﻳﻦ روال ﺟﺴﺘﺠﻮ ﺑﺎ ﻧﺎم ﺟﺴﺘﺠﻮی ﭘﺮﺗﻮﻳﻲ 15 نیز نامیده ﻣﻲ ﺷﻮد.

یادگیری

ﻣﺴﺄﻟﻪ ﺳﻮم نیز ﻣﺴﺄﻟﻪ ﺗﺨمین بهینه ﭘﺎراﻣﺘﺮهﺎی ﻣﺪل ﻳﺎ همان ﻣﺴﺄﻟﻪ ﺁﻣﻮزش ﻣﺪل ﻣﺎرکف ﻣﻲﺑﺎﺷﺪ که معمولا ﺑﻪ ﻳﻜﻲ از دو روش وﻳﺘﺮﺑﻲ و ﻳﺎ ﺑﺎم-ولش اﻧﺠﺎم ﻣﻲﮔﺮدد.
وظیفه یادگیری در HMM، یافتن بهترین احتمالات جابجایی‌ها بر اساس یک دنباله از خروجی هاست .میزان بهینگی مدل پنهان مارکوف در مرحله یادگیری ، در مسائل مختلف ،متفاوت می باشد . در اینجا معیار بهینگی به وسیله متد maximum likelihood بر اساس خروجی داده شده تخمین زده می‌شوند .
ما در اینجا برای پیدا کردن maximum likelihood محلی، از الگوریتم Baum-Welch استفاده میکنیم .

در معیار 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})}

متغیر دوم بیانگر احتمال پسین حالت 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
>>>   Pest=Pest+repmat(PAI,1,D).*BETA;    %Since D_{1|T}(m,d) = \PAI(m) P_{m}(d) \Beta_{1}(m,d)
>>> if IterationNo>0            % re-estimate parameters
>>> PAI=GAMMA./sum(GAMMA);
>>> Aest=Aest.*A;   A=Aest./repmat(sum(Aest,2),1,M);
>>> B=Best./repmat(sum(Best,2),1,K);
>>> Pest=Pest.*P;   P=Pest./repmat(sum(Pest,2),1,D);
>>> end

مراجع

  • C. Bregler and Y. Konig, ““Eigenlips” for robust speech recognition
    in Proceedings of IEEE International Conference on
    Acoustics, Speech, and Signal Processing (ICASSP ’94), vol. 2,
    pp. 669–672, Adelaide, SA, Australia, April 1994.

  • A tutorial on hidden Markov models and selected application in speech recognition,lawrence r.rabiner,Fellow,IEE

  • S. and Luettin, J., “Audio-visual speech modeling
    for continuous speech recognition,” IEEE Trans. Multimedia,
    vol.2, no.3, pp.141–151, 2000.

  • Potamianos, G., Neti, C., Gravier, G., Garg, A., Senior, A.: Recent advances in
    the automatic recognition of audiovisual speech. Proceedings of the IEEE 91(9)
    (2003) 1306–1326

  • S. Tamura, K. Iwano, and S. Furui, “Multi-modal speech
    recognition using optical-flow analysis for lip images,” Journal
    of VLSI Signal Processing—Systems for Signal, Image, and
    Video Technology, vol. 36, no. 2-3, pp. 117–124, 2004.

  • T. Yoshinaga, S. Tamura, K. Iwano, and S. Furui, “Audio-visual
    speech recognition using new lip features extracted from sideface
    images,” in Proceedings of COST278 and ISCA Tutorial and
    Research Workshop (ITRW) on Robustness Issues in Conversational
    Interaction (Robust ’04), Norwich, UK, August 2004.

  • C. J. Leggetter and P. C. Woodland, “Maximum likelihood
    linear regression for speaker adaptation of continuous density
    hidden Markov models,” Computer Speech and Language,
    vol. 9, no. 2, pp. 171–185, 1995.

  • G. Potamianos and H. P. Graf, “Discriminative training of
    HMMstream exponents for audio-visual speech recognition,”
    in Proceedings of IEEE International Conference on Acoustics,
    Speech, and Signal Processing (ICASSP ’98), vol. 6, pp. 3733–
    3736, Seattle,Wash, USA, May 1998.


  1. lip syncing

  2. speech recognition

  3. Hidden Markov Model

  4. forward Algorithm

  5. backward Algorithm

  6. Viterbi Algorithm

  7. Baum-Welch Algorithm

  8. Expectation Maximization

  9. Maximum Likelihood

  10. Evaluation Problem

  11. Decoding problem

  12. Learning problem

  13. isolated word recognition

  14. time synchronous Viterbi search

  15. beam search

محمد غضنفری

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

رد شده

درتوضییحات مربوط به مقدمه انتخاب مناسب پروژه کار درستی بوده است که مسئله را اشکار تر میکند
در قسمت مربوط به مراجع مقالات زیادی ذکرشده است
کد مربوط به پروژه دیده نمیشود ولی در این فاز اهمیت کد کم است ولی مشخصا الگوریتم کار را مشخص کرده است
موفق باشید

تایید شده

کارهای مرتبط توضیحات مفصلی داشت که به نظر من بهتر بود به جای این که یک روش را با چنین جزییاتی توضیح دهید مختصری از چندین روش می گفتید!
درضمن خبری از کد (لینک گیت هاب ) نبود!

محمد غضنفری

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

رد شده

با سلام
به نظرم پروژتون کامله به غیر از اینکه یکم شلوغ بود ولی تمامی مفاهیم توضیح داده شده و اشکالی نمیبینم .
موفق باشید.

محمد غضنفری

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

رد شده

قرار بود لینک کد ها در github باشد، نه جای دیگر.
پروژه بسیار سختی به نظر میرسد و به نظرم به یک سری علوم نیاز دارد که یک مهندس کامپیوتر الزاما در آن ها تسلط ندارد.
مجموعه W صرفا استفاده شده است و تعریفی از آن نیامده است.
الگوریتم ها ، خیلی خوب و به شکل مجزا و گام به گام آورده شده است.
فرمول های ریاضی به خوبی بیان شده اند و روند بدست آوردن پارامتر ها به خوبی نوشته شده اند .
استفاده از یک عکس مفهومی که روند کار الگوریتم را نشان میدهید بسیار به جا بوده است.
در تیتر بندی فکر میکنم بی دقتی شده است ، بخش آزمایشات و نتایج و ارزیابی ها ، خیلی کوچک (با فونت کوچک)آورده شده است و نتایج حاصل از الگوریتم ها آورده نشده است .
هیچ نمونه کدی قرار داده نشده است . به نظرم اگر مهمترین قسمت های کد آورده میشد بهتر بود
نتایج اجرای الگوریتم ها در هیچ جایی قرار داده نشده است ! عدم استفاده از هرگونه نمودار و جدول و داده عددی که روند حل مسئله را نشان دهد آزار دهنده است . ای کاش میتوانستم 4.5 ستاره بدهم چون فکر میکنم خیلی از این اشکالات در آینده حل خواهد شد و به خاطر فراموشی بوده است. ولی از آن جا که نمیشه ! فکر میکنم 5 ستاره به خاطر سختی بیش از حد پروژه و در عوض کاربردی بودن و ارزشی بودن آن برای زبان عزیز فارسی و همچنین بررسی الگوریتم ها ی پیچیده ریاضی و کامپیوتری، امتیاز عادلانه ای باشد. به شرطی که اشکالات گفته شده در فاز بعد تا حد امکان بر طرف شود :دی . ممنون.

تایید شده

كد به راحتي قابل اجرا نبود.بيشتر به ظواهر برسيد.فرمول ها و روش هاي آزمايش كه صحبت كرديد را نيافتم.در بخش كارهاي آينده هم موردي يافت نميشود.
از فرمول هايي كه صحبت كرديد استفاده كنيد.

رد شده

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

تایید شده

با سلام و خسته نباشید،
شما در پروژه اتون اصلا قسمت ازمایش و بهینه سازی ندارید.

تایید شده

سلام و خسته نباشید !
توضیحاتتان برای پروژه نسبتا کامل بود و روش های مختلف را به خوبی توضیح داده بودید. خوب بود اصطلاحات و اسامی را به صفحات مرتبط لینک می کردید تا بتوان اطلاعات بیشتری درباره آنها بدست آورد مثلا خود روش hmm یا دیگر الگوریتم هایی که معرفی کرده بودید.

بخش آزمایش ها و کارهای آینده که به این فاز مربوط می شد وجود نداشتند .

بهتر بود درباره کارهایی که خودتان دربرنامه تان انجام داده اید و تجربه هایی که بدست آورده اید بیشتر بنویسید و نتایج آزمایشهایتان را تحلیل کنید
موفق باشید

تایید شده

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

  • لطفا از مارک‌دان بهتر استفاده کنید. کدهای بام-ولش، مرتب نیستند یا فرمول‌های بخش ۳.۱ هم همینطور.
    همچنین، بعضی نکات ویرایشی رعایت نشده است. مثلا اعداد در بعضی جاها انگلیسی و در بعضی جاها فارسی هستند

  • ارزیابی خروجی کار انجام نشده است.

  • با توجه به سختی کار، توضیحات کامل و خوب بود.

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

محمد غضنفری

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

تایید شده

با سلام و خسته نباشید
نکاتی که در مورد پروژه شما به ذهنم رسید :

  1. توضیحات پروژه کامل و جامع است و استفاده از عکس ها و همچنین ساختار مرتب آن، باعث فهم بهتر آن شده است.

  2. در بعضی از قسمتها اشکالات کوچک نگارشی و مرتب نویسی وجود دارد که بهتر بود رفع میشد.

  3. در قسمت "مراحل انجام کار" به خوبی روند کار و الگوریتم استفاده شده را توضیح داده اید که باعث می شود خواننده با نحوه اجرای پروژه بیشتر آشنا شود.

  4. قسمت "ارزیابی"، "کدگشایی" و " یادگیری" هم به خوبی انجام شده است و توضیح جزئیات هریک به درک بهتر آنها کمک کرده است.

  5. بهتر بود توضیح مختصری هم راجع به کد پیاده سازی شده میدادید تا خواننده با نحوه کار کد و اجرای آن آشنا شود.