شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (1)

این آموزش در مورد روشی صحبت می کند که مرکز درک زبان گفتاری دانشگاه علم و سلامت اورگان برای خلق سیستم تشخیص گفتار بر اساس شبکه عصبی مدل مصنوعی پنهان مارکوف، مورد استفاده قرار داده است. در این روش از
چهارشنبه، 5 خرداد 1395
تخمین زمان مطالعه:
پدیدآورنده: علی اکبر مظاهری
موارد بیشتر برای شما
شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (1)
 شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (1)

مترجم: حبیب الله علیخانی
منبع:راسخون




مقدمه

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

نصب

به منظور استفاده از اسکریپت های ذکر شده در این آموزش بایستی بسته ابزار CSLU را بر روی سیستم خود نصب کنید. این بسته ابزار فقط توسط محیط ویندوز پشتیبانی می شود. متغیر محیطی (با فرض ویندوز ایکس پی) باید با رفتن به مسیرزیر اصلاح شود:
Start » Settings » Control Panel » System
سپس با کلیک بر روی برگه Advanced و با کلیک بر روی دکمه Environment Variables و رفتن به سربرگ System variables متغیر path را انتخاب کنید. با کلیک بر روی دکمه Edit یک پنجره جدید به نام Edit System Variable باز می‌شود. در این پنجره جدید یک ناحیه ای برای Variable value وجود دارد. در حوزه ورودی های متناظر تعدادی مسیر که توسط سیمی کالن از هم جداشده اند وجود دارد. با فرض اینکه بسته ابزار CSLU را در مسیر پیش فرض نصب کرده اید (C:\Program Files\CSLU) مسیر های زیر را با جدا کردن توسط سیمی کالن به این لیست اضافه کنید:
C:\Program Files\CSLU\Tcl80\bin
C:\Program Files\CSLU\Toolkit\2.0\bin
C:\Program Files\CSLU\Toolkit\2.0\shlib
C:\Program Files\CSLU\Toolkit\2.0\script\sview_1.0
C:\Program Files\CSLU\Toolkit\2.0\script\training_1.0
با کلیک بر روی دکمه OK این پنجره، این تنظیمات را به پایان برسانید.
بسط .tcl می‌تواند با هر دو خط فرمان اسکریپت TCL یا یک اسکریپت GUI TK در ارتباط باشد. ارتباط پیش‌فرض با یک اسکریپت TK می باشد، اما این ارتباط باید برای اجرای خط فرمان یک اسکریپت TCL به صورت زیر اصلاح شود: با رفتن به مسیر:
Start » Settings » Control Panel » Folder Options
سپس با کلیک بر روی برگه File Type و با حرکت به سمت پایین تا زمانی که بسط TCL دیده شود و با تک کلیک بر روی بسط برجسته شده که باعث می‌شود پایین صفحه جزئیات Details for TCL Extension باز شود. سپس با کلیک بر روی دکمه Advanced که باعث می‌شود پنجره ای به نام Edit File Type باز شود و پس ازآن با تک کلیک بر روی برچسب Tclsh و سپس با کلیک بر روی دکمه Set Default به سمت راست و با کلیک بر روی دکمه Edit دقیقاً بالای دکمه Set default پنجره دیگری به نام Editing action for type: Tcl/Tk باز می شود. در این پنجره یک جعبه ورودی که برچسب Application used to perform action: دارد دیده می شود. بایستی اطمینان داشت که این جعبه ورودی مسیر زیر را داشته باشد (با فرض اینکه بسته ابزار CSLU بر روی دایرکتوری پیش‌فرض نصب شده باشد):
"C:\Program Files\CSLU\tcl80\bin\tclsh80.exe" "%1" %*%
(مخصوصاً به %*% در آخر توجه کنید ). بر روی OK کلیک کرده تا تنظیمات به پایان برسد.
این فرآیند آموزش، از فرمان‌هایی که در Dos Prompt وارد می‌شود استفاده می کند. می‌توان یک پنجره فرمان Dos بر روی ویندوز ایکس پی با رفتن به مسیر زیر یافت:
Start » Programs » Accessories » Command Prompt.
از آنجایی که از این پنجره بار ها استفاده خواهد شد، توصیه می‌شود که این پنجره را برای عرض ۸۰ کاراکتر و ارتفاع بافر صفحه نمایش برای ۲۰۰۰ خط، ارتفاع پنجره ۴۰ یا ۵۰ خط و رنگ فونت متن سفید برای دید بهتر تغییر دهید. یک پنجره فرمان می‌تواند به منوی Start برای دسترسی آسانتر اضافه شود.
به منظور دنبال کردن مثال‌ها در این آموزش، ممکن است بخواهید از همین فایل‌های اطلاعات استفاده کنید. این فایل‌ها در فایل ZIP گذاشته شده‌اند که شامل همه فایل‌های شکل موج و رونویسی می باشد. این فایل از مسیر (http://www.cslu.ogi.edu/tutordemos/nnet_training/CSLUexamplefiles.zip) قابل دانلود است. حجم این فایل فشرده ۷.۶ مگا بایت می باشد، و حجم فایل اطلاعات تقریباً ۱۰ مگا بایت است. به علاوه، فایل پیکربندی استفاده شده در این آموزش نیز در یک فایل فشرده گذاشته شده است. این فایل را نیز از مسیر(http://www.cslu.ogi.edu/tutordemos/nnet_training/tutorial_config_files.zip ) می‌توان دانلود کرد. تعدادی از این فایل‌های پیکربندی نیاز به اصلاح برای برگرداندن اطلاعات مسیر سیستم شما و اطلاعات مرتبط دیگر خواهند داشت.

اطلاعات بیشتر

در این سند، نماد های آوایی با استفاده از the American English subset of Worldbet که یک رمزنگاری اسکی برای الفبای آوایی بین‌المللی(IPA) می باشد، نشان داده می شود. این آموزش توسط یک NSF و جایزه کارآموزی تحصیلات تکمیلی (شماره گرانت 9354959) و شرکت های عضو CSLU پشتیبانی می شود.دیدگاه های مطرح شده در این آموزش لزوما دیدگاه های آژانس های حامی و شرکت های نمایندگی را نشان نمی دهد.

مفاهیم عمومی و یادداشت ها

گام های عمومی برای ساخت یک سیستم تشخیص گفتار HMM/ANN عبارتند از:
۱. مشخص کردن دسته بندی های زیر آوایی که شبکه عصبی را طبقه بندی می‌کنند.
۲. پیدا کردن مثال‌هایی از هر کدام از این طبقه بندی ها در اطلاعات گفتار.
اجرا کردن تعدادی از تکرارهای آموزش شبکه عصبی. خروجی هر شبکه عصبی یک تخمینی از احتمالات هر طبقه بندی مشخص شده در تک نقطه زمانی داده شده در داخل شبکه موج گفتار است. انتخاب بهترین شبکه عصبی (و تنظیم پارامتر های دیگر سیستم) توسط ارزیابی هر شبکه بر یک قسمت کوچک از اطلاعات گفتار که برای آموزش و تست استفاده نشده است، انجام می شود. ارزیابی توسط استفاده از احتمالات تخمین زده شده بدست آمده از یک شبکه عصبی در داخل چارچوب مدل مارکوف پنهان انجام می‌شود.
۳. ارزیابی بهترین شبکه انتخاب شده بر روی مجموعه تست گفتار

مرور سریع بر روی تشخیص گفتار بر پایه فریم

تشخیص گفتار مبتنی بر فریم دارای گام های زیر می‌باشد که در شکل ۱ نشان داده شده است:
 شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (1)
۱. تقسیم شکل موج گفتار به فریم ها، که هر فریم یک بخش کوچکی از گفتار بوده که یک تعداد مساوی از الگو های شکل موج را در بر می گیرد. در این آموزش، اندازه فریم ۱۰ میلی ثانیه را فرض خواهیم کرد.
۲. محاسبه ویژگی های هر فریم. این ویژگی‌ها می‌توانند به عنوان یک نمایش از بسته طیفی از گفتار در آن فریم و در تعداد کمی از فریم های مجاور که پنجره زمینه نامیده می‌شوند در نظر گرفت.
۳. طبقه بندی ویژگی‌ها در هر فریم به دسته های مبتنی بر آوا با استفاده از شبکه عصبی. خروجی های شبکه عصبی به عنوان احتمالات هر دسته آوایی فرض می‌شوند که به گفتار در این فریم ویژگی می بخشند. زمانی که شبکه عصبی برای طبقه بندی همه فریم ها استفاده می‌شود یک ماتریسی از احتمالات با F ستون و C ردیف ساخته می‌شود. که F تعداد فریم ها و C تعداد دسته هاست.
۴. استفاده از ماتریس احتمالات، مجموعه‌ای از مدل های تلفظ، و اطلاعات قبلی درباره طول هر دسته برای تعیین کلمات با احتمال زیاد با استفاده از جستجوی ویتربی.
برای تشریح جزییات HMM ها و هیبریدهای HMM/ANN، یادداشت‌های سخنرانی در دسترس هستند. (http://www.cse.ogi.edu/class/cse552)

مشخص کردن دسته ها

به منظور تعیین دسته هایی که شبکه طبق بندی می کند، به سه چیز نیاز است:
۱. طراح شناساگر نیازمند تعیین تلفظات برای هر کلمه که شناخته خواهد شد، است. مدل های تلفظ دقیقتر عموما نرخ تشخیص بهتری را ارایه می دهد.
۲. اغلب،‌ مدل های آوا وابسته به زمینه مورد استفاده قرار می گیرد،‌ که این معنی را می‌دهد که مدل برای تغییرات آواها وابسته به آواهایی است که قبل از این آوا بوده و یا این آوا را دنبال می کنند. برای مثال، آوای /aI/ قبل از /w/ یک مدل متفاوت نسبت به آوای /aI/ قبل از /n/ است. زمینه‌های اطراف (/w/ و /n/ در این مثال) ممکن است آواهای خاصی یا گروهی از آواها باشند. گروهایی از آواها که در کلاستر های مشابه گنجانده می‌شوند توسط فرد طراح شناساگر تعریف می شود.
۳. نهایتاً، هنگام ساخت مدل های آوایی وابسته به زمینه، هر آوای شناخته شده به یک، دو یا سه زیر قسمت یا بخش تقسیم می شود. هر بخش زیرآوایی وابسته به یک دسته باید شناخته شود. اگر یک آوا به عنوان دارا بودن یک بخش مشخص شود،‌ بدون زمینه آواهای اطراف استفاده می شود. اگر یک آوا به عنوان داشتن دو بخش مشخص شود، بخش سمت چپ (دسته زیر-آوا) به آوای قبلی وابسته بوده و بخش سمت راست به آوای زیرین وابسته می باشد. یک آوایی که به عنوان داشتن ۳ بخش مشخص شود، بخش اول به آوای قبلی، بخش وسط مستقل از آواهای اطراف و بخش سوم وابسته به آوای زیرین است. اگر یک آوا به عنوان راست-وابسته مشخص شود،‌ فقط یک بخش داشته و این بخش زمینه وابسته به آوای زیرین می باشد. دسته های راست-وابسته معمولاً برای آواهای توقف دهانی استفاده می شوند. این روش‌ ساخت مدل های زمینه-وابسته تا حدودی متفاوت از مدل های بایفون یا تریفون استاندارد می باشند، این مدل ها بر روی وابستگی های زمینه مناطقی از آوا که بیشترین اثر را بر روی آن زمینه دارند متمرکز شده‌اند. تعداد قسمت‌ها برای جدا کردن هر آوا توسط فرد طراح شناساگر مشخص می شود.
شکل ۲ یک تصویر از این نوع مدل سازی وابسته به زمینه را نشان می دهد.در این شکل، یک مثال برای مدل سازی کلمه lines که در Worldbetبه صورت /l aI n z/نوشته شده، آورده شده است. در اینجا /l/ به دو بخش، /aI/ به سه بخش جدا، /n/ به دو بخش و /z/ با استفاده از یک بخش مدل می‌شود. هشت کلاستر یا گروه از آواها برای استفاده در زمینه ها وجود دارد. هر کلاستر، کلاس‌های گسترده ای از صدا را نشان می‌دهند. برای این شناساگر، آوای /l/ به کلاستر 'lat$' اختصاص داده شده( برای آوای جانبی)، همچنین آوای /aI/ به کلاستر kcb_r$ از صدای پشتی رخداده در زمینه دست راست و به کلاستر fnt_l$ از صدای جلویی رخداده در زمینه دست چپ اختصاص داده شده است و هر دو آوای /n/ و /z/ به کلاستر alv$ (حفره دار) اختصاص می‌یابد. (آوای /aI/ در حالتی که با یک صدای پشتی شروع شده و با یک صدای جلویی تمام می‌شود غیر عادی است بنابراین نمی‌توان فقط به یکی از کلاستر های bck$ یا fnt$ گروه بندی کرد. راه حل تعیین این مساله این است که آیا /aI/ در سمت چپ آوا رخ می‌دهد (یک زمینه چپ) که در این حالت همیشه یک صدای جلو است و یا در سمت راست آوا رخ می‌دهد (یک زمینه راست) که در این حالت یک صدای پشتی است. )
 شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (1)
دسته های آوایی زمینه وابسته که شبکه آموزش خواهد داد میتوانند مدل های تلفظ صدا-سطح، گروه بندی آوا ها به داخل صدا های مشابه، و تعداد قسمت‌ها برای جدایش هر آوا به داخل آن را، تعیین کنند.

مثال‌های برای مشخص کردن دسته ها

برای آوردن مثال در مورد چگونگی این مدل های تلفظ، کلاستر کردن ها، و قسمت‌هایی که می‌تواند تعیین شود، ما از مثال‌هایی برای شناسایی کلمات جدا شده "three" ،" tea"، " 'zero' و "five" استفاده خواهیم کرد. (برای این مثال، کلمات جدا شده (کلماتی که توسط یک مکث یا سکوت احاطه شده اند) استفاده خواهند شد، بسته ابزار CSLU می‌تواندبرای تشخیص متناوب گفتار استفاده شود)
اول از همه،ما با تلفظات اولیه می پردازیم:

     word

pronunciation

     three

     T 9r i:

     tea

     tc th i:

     zero

     z i: 9r oU

     five

     f aI v

ممکن است ما بخواهیم این تلفظات را اصلاح کنیم، زیرا /:i/ در 'zero' غالباً نسبت به /:i/ در'three' و 'tea' به طور متفاوت تلفظ می شود. برای در نظر گرفتن این تفاوت در تلفظ، ما می‌توانیم از سمبل خودمان یعنی /i:_x/ برای نمایش صدای جلو استفاده کنیم. انجام این تغییرات مدل های تلفظ زیر را میدهد:

     word

pronunciation

     three

     T 9r i:

     tea

     tc th i:

     zero

     z i:_x 9r oU

     five

     f aI v

سپس، ما تعداد قسمت‌ها جهت استفاده برای هر آوا را تعیین خواهیم کرد. در جدول زیر ”1” به این معنی است که آوا زمینه-مستقل خواهد بود،”2” به این معنی است که آوا به دو قسمت جدا خواهد شد، ”3” به این معنی است که آوا به سه قسمت جدا خواهد شد و”r” به این معناست که آوا راست-وابسته خواهد بود:

     phone

parts

     T

1

     9r

2

     i:

3

     tc

1

     th

r

     z

1

     i:_x

2

     oU

3

     f

1

     aI

3

     v

1

     .pau

1

نماد /pau./ برای مکثی استفاده می شودکه فرض می‌شود در بین کلمات رخ می دهد. حال، اجازه دهید به صدای /:i/ در'three' و 'tea' در طیف نگار نگاهی بیندازیم. در این حالت صدای /:i/ یکی است اما وقتی قبل از /9r/ می‌آید در مقایسه با وقتی که قبل از /th/ می‌آید بسیار متفاوت است. (به شکل ۳ نگاه کنید)
 شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (1)
در این حالت، ما ابتدا اولیه سوم /:i/ (از آنجایی که به سه قسمت جدا می شود) در حالت وابسته به رترفلکس قبلی (/9r/) و در حالت وابسته به صدای آلویولار قبلی (/th/ or /z/) را می سازیم. ما معمولاً آوا ها را در زمینه چپ و یا راست بر اساس دسته آوایی گروه بندی می‌کنیم، برای مثال گروه بندی زیر می‌تواند مورد استفاده قرار گیرد. (علامت دلار متغیری را نشان می‌دهد که صداهای لیست شده را گروه بندی می کند )

  group

  phonemes in group 

  description

  $bck

  oU

  back vowels

  $fnt

  i: i:_x

  front vowels

  $ret

  9r

  retroflex sounds

  $alvden

  T v th z

  dentals, labiodentals, and alveolars

  $sil

  .pau tc /BOU /EOU

  silence or closure

به دو نماد BOU/ و EOU/ در ستون 'آواها در گروه' توجه کنید. این دو نماد خاص توسط شناساگر تعریف می شوند. BOU/ ‌‌‌‌مخفف”beginning of utterance” یعنی آغاز سخن گفتن و EOU/ مخفف ”end of utterance” یعنی پایان سخن گفتن می باشد. آن‌ها نماد هایی نیستند که نیاز به آموزش داشته باشند اما در کلاستر های زمینه قرار می‌گیرند تا شناساگر بداند چه دسته زمینه-وابسته ای به آوای اول و آخر در گفتار اختصاص داده شود.
این طرح به طورکلی نسبتاً آسان است. هرچند، توجه کنید برای دسته بندی صدای های ترکیبی از جمله /aI/ مشکل خواهد شد ، زیرا آوا به عنوان صدای پشتی شروع شده و به عنوان صدای جلو خاتمه می یابد. راه حل اصلاح دسته ها با به صورت زیر است:

  group

  phonemes in group 

  description

  $bck_l

  oU

  back vowels to the left of a target phoneme

  $bck_r

  oU aI

  back vowels to the right of a target phoneme

  $fnt_l

  i: i:_x aI

  front vowels to the left of a target phoneme

  $fnt_r

  i: i_x

  front vowels to the right of a target phoneme

  $ret

  9r

  retroflex sounds

  $alvden

  T v th z

  dentals, labiodentals, and alveolars

  $sil

  .pau tc /BOU /EOU

  silence or closure

ابتدا، پسوند ”I_” و ”r_” به اسم متغیر ها در سؤال، برای نشان دادن اینکه آیا آواها در این گروه‌ها بر سمت راست یا چپ آوا های طبقه بندی شده رخ می‌دهند، اضافه شده است. سپس، به دلیل اینکه /aI/ زمانی که در زمینه راست-دست به نظر می رسد مشخصه صدای پشتی را دارد، در گروه $bck_r قرار داده شده است، همچنین به دلیل اینکه /aI/ دارای مشخصاتی از صدای جلو را در زمینه چپ-دست دارد /aI/ در گروه $fnt_l نیز قرار داده شده است. این روش از گروه بندی به زمینه چپ یا راست در شکل ۴ نشان داده شده است:
 شبکه عصبی مارکوف (HMM/ANN) در تشخیص اتوماتیک گفتار (ASR) (1)
قالب برای اختصاص دسته های متفاوت به صورت [راست-زمینه]< صدا >[چپ-زمینه] است، بنابراین برای مثال برای /.pau/ دسته به صورت <.pau> خواهد بود، دسته برای اولیه سوم /:i/ در زمینه صدای دندانی (dental) $den و سوم سمت راست /:i/ در زمینه ساکت i:>$sil خواهد بود.
با همه این اطلاعات داده شده،‌(اگرچه کسل کننده است) به آسانی مشخص می‌شود که ۲۸ دسته برای آموزش مورد نیاز است که عبارتند از:

<.pau>

 $alvden<9r

$fnt_l<9r

9r>$fnt_r

9r>$bck_r

f

aI>$alvden

$ret

$alvden

i:>$sil

$alvden

i:_x>$ret

$ret

oU>$sil

th>$fnt_r

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

پیدا کردن مثالها برای آموزش

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

فیلتر کردن

زمان انتخاب اطلاعات برای داده‌های آموزش،‌توسعه و آزمایش، ما می‌توانیم فیلتر های متفاوتی برای کاهش داده انتخابی به کار ببریم. در یک حالت، ما ممکن است گفتار هایی در نوشته داشته باشیم که در لغت‌های مقصدمان اتفاق نمی افتد. در این حالت ما ممکن است بخواهیم کلماتی که در لیست لغت هایمان نیست شامل مجموعه اطلاعاتمان نشود. برای مثال،‌ در آموزش شناسایی ارقام و در استفاده از شماره نوشته های CSLU برای آموزش، ما ممکن است بخواهیم گفتار های خارج ار لغتها که شامل شماره ها از جمله ”first”،”twelve” و ”fifty”را حذف کنیم. از طرف دیگر، ممکن است اطلاعات بسیاری داشته باشیم که آموزش و ارزیابی را طولانی می کند. در این حالت، می‌توانیم فیلتر کردن را با اعمال بر روی هر N سخن مورد استفاده در مجموعه اطلاعاتمان انجام دهیم که N عدد صحیحی بزرگتراز ۱ است. برای مثال، ممکن است بدلیل داشتن بیش از۶۰۰۰ سخن برای آموزش روی ارقام، هر ۶ تا ۶ تا شکل موج برای آموزش شناساگر ارقام در نظر گرفته شود. فیلتر کردن با این راه ۱۰۰۰ تا سخن قابل دسترس (یا تقریباً ۵۰۰ مثال برای هر رقم گفته شده) برای آموزش را حذف خواهد کرد.

پیدا کردن دسته بندی ها

از وقتی که می‌دانیم کدام فایل‌ها برای آموزش استفاده خواهد شد، نیاز به پیدا کردن مثال‌ها برای هر دسته آوایی زمینه وابسته که آموزش داده خواهد شد داریم. این میتواند یکی از این راه‌ها باشد: استفاده از اطلاعاتی که در سطح آوایی به صورت دستی نشاندار شده و یا استفاده از هم تراز کردن اجباری.
اطلاعات دست نشاندار:
تعدادی از نوشته‌های سخنرانی از جمله نوشته شماره های OGI، نوشته‌های داستان‌های OGI، یا نوشته‌های TIMIT و همچنین زمان شروع و زمان پایان هر آوا با شناسه های آوایی نشان دار شده است. اگر آموزش بر روی این اطلاعات دست نشاندار انجام شود سپس نشان ها باید از سطح آوایی به سطح دسته (زمینه وابسته) کشیده شوند. برای مثال یک فایل دست نشاندار برای رقم ”three” ممکن است شامل این اطلاعات باشد.
0 53 .pau
53 113 T
113 170 9r
170 229 i:
229 273 .pau
که ستون اول زمان شروع به میلی ثانیه، ستون دوم زمان پایان به میلی ثانیه و ستون سوم برچسب آوا است. به منظور آموزش یک شناساگر زمینه وابسته بر روی این اطلاعات،‌ برچسب ها نیاز به کشیدن به مجموعه زیر از دسته های هم تراز زمانی دارند:
0 53 <.pau>
53 113
113 142 $den<9r
142 170 9r>$fnt_r
170 190 $ret<>
190 209
209 229 i:>$sil
229 273 <.pau>
یک مجموعه ای از اسکریپت TCL برای خودکار سازی این فرآیند بعداً شرح داده خواهد شد. همچنین، مقداری اصلاح عمومی ممکن است برای اطلاعات دست نشاندار انجام شودکه باعث میشود اطلاعات برای آموزش مناسب‌تر شود. برای مثال،‌ ممکن است بخواهیم قطع های بسیار کوچک را در نظر بگیریم. باز هم اسکریپت هایی وجود دارند که در زیر شرح داده شده که این عمل را برای ما به صورت اتوماتیک انجام خواهد داد.

 

اطلاعات هم تراز کردن اجباری

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

 

تعدادی از مثال‌ها در هر دسته

سرانجام، طراح شناساگر بایستی تصمیم بگیرد چه تعدادی از مثال‌ها (فریم های ۱۰ میلی ثانیه ای از صحبت که به یک دسته آوایی زمینه-وابسته خاص اختصاص داده شده است) از هر دسته بایستی آموزش داده شود. شبکه‌ها با عمل‌کرد معقول و مناسب می‌تواند با استفاده از ۵۰۰ مثال در هر دسته آموزش داده شود اما بعضی اوقات ۲۰۰۰ تا یا بیشتر استفاده می شود. به منظور کارایی بهتر معمولاً همه مثال‌ها در مجموعه آموزش بایستی استفاده شود. هرچند آموزش با همه مثال‌ها ممکن است بسیار زمانبر باشد.
اگر تعداد دسته مثال‌های خیلی کم یا اصلاً مثالی نداشته باشد دو انتخاب وجود دارد. انتخاب اول استفاده از یک نوشته اضافی شامل مثال‌های این کلاس‌های کمیاب است. انتخاب دوم ارتباط این دسته های نادر به دسته های مشابه آوایی است که مثال‌های آموزشی کافی داشته باشد. دسته های که با این روش مرتبط می‌شوند آموزش داده نخواهد شد و در طول فرآیند تشخیص، احتمالات آن‌ها با احتمالات دسته هایی که با آن‌ها مرتبط شده‌اند برابر خواهد بود.

 

آموزش شبکه

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

 

تعداد گره‌های پنهان

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

 

پنالتی منفی

زمانی که از تعداد زیادی مثال‌ در هر دسته استفاده می‌کنیم، تقریباً اجتناب ناپذیر است که تعدادی دسته مثال‌های کمتری نسبت به بقیه خواهند داشت که باعث سخت شدن یادگیری این دسته های پراکنده میشود. این سختی در آموزش به خاطر این حقیقت است که تعداد زیادی مثال منفی نسبت به مثال مثبت برای دسته پراکنده وجود دارد که مثال‌های منفی مثال‌هایی هستند که دسته آموزش داده یک مقدار مقصد صفر دارد و مثال‌های مثبت مثال‌هایی هستند که دسته آموزش داده یک مقدار مقصد یک دارد. در نتیجه، این دسته های پراکنده اغلب مقادیر خروجی بسیار کوچکی که احتمالات بعدی واقعی که می‌خواهیم تعیین کنیم را منعکس می‌کنند. برای تنظیم این،‌ مقداری که هر مثال منفی در خطای کل شرکت می‌کند با یک مقدار نسبت به تعداد مثال‌ها در دسته منفی وزن می شود. این مقدار پنالتی منفی نامیده می شود. آموزش می‌تواند با و یا بدون این پنالتی منفی انجام شود. بحث کاملتر پنالتی منفی را می‌توان در مقاله Wei و van Vuuren از ICASSP-98 با عنوان”آموزش شبکه عصبی بهبود یافته ی واحد های زمینه داخل کلمه برای تشخیص ارقام اتصال یافته” یافت.

 

تعداد تکرار های آموزش

تقریباً هیچ وقت نیاز به ادامه آموزش نیست البته تا زمانی که توقف های خطای آموزش کاهش یابد. بهترین عمل‌کرد مجموعه توسعه تقریباً همیشه در تکرار زودتر رخ خواهد داد. گاهی، بهترین عمل‌کرد مجموعه توسعه بعد از حدود ۲۰ تا ۳۰ تکرار اتفاق می‌افتد و بنابراین آموزش برای یک تعداد مناسب از تکرار ها که معمولاً بین ۳۰ تا ۴۵ است انجام می شود.
آموزش دوباره اطلاعات هم تراز اجباری
به توجه به شرح بالا، هم تراز اجباری می‌تواند برای تولید برچسب‌ها برای آموزش استفاده شود. به منظور تولید برچسب‌ها یا نشان های اولیه با استفاده از همتراز اجباری، ما معمولاً از یک شناساگر هدف عمومی استفاده می کنیم. ما همچنین از هم تراز اجباری برای آموزش دوباره یک شبکه استفاده می کنیم. در این حالت از شبکه بهترین جریان برای تولید نشانهای هم تراز اجباری و سپس آموزش دوباره با استفاده از این برچسب‌های جدید استفاده می شود. این آموزش دوباره اغلب نتایج بهتری ارایه می دهد.
ارزیابی
ارزیابی در سطح کلمه
هنگامی که آموزش دیده ایم برای گفتن ۳۰ تکرار، ‌نیاز به تعیین اینکه کدام تکرار کارایی بهتری بر مجموعه توسعه دارد، داریم. برای انجام این، شناخت هر سخن در مجموعه توسعه با استفاده از بار های شبکه از هر تکرار و جستجوی ویتربی نیاز است. ما کارایی شبکه را در هر تکرار از لحاظ خطا های جانشینی، خطاهای درج شده و خطاهای حذف شده ارزیابی می کنیم. دقت کل یک تکرار شبکه ۱۰۰ درصد تعریف شده است. (Sub+Ins+Del) که Sub درصد خطای جانشینی،‌Ins درصد خطای درج شده و Del درصد خطای حذف شده است. همچنین ما می‌توانیم ”دقت در سطح جمله ” را نیز اندازه‌گیری کنیم که تعداد سخن های (یا تمام شکل موج ها) به طور صحیح شناخته شده تقسیم بر تعداد کل سخن ها در مجموعه توسعه است.
انتخاب بهترین تکرارها
معمولاً ما تکرار شبکه را با بهترین دقت در سطح کلمه انتخاب می کنیم. در حالت برابردقت های در سطح کلمه، تکرار های با دقت در سطح جمله بهتر را انتخاب می کنیم.
آزمایش کردن
هنگامی که توسعه یک شناساگر اتمام یافته است، کارایی نهایی را در مجموعه آزمایش از لحاظ دقت در سطح کلمه و سطح جمله ارزیابی می کنیم. هرچند، این مهم است که یک بار ارزیابی در مجموعه آزمون انجام می شود، شناساگر بیشتر اصلاح را بر اساس نتایج این مجموعه آزمون انجام نمی دهد. به منظور اطمینان از اینکه یک چنین اصلاحی انجام نمی‌شود یا نه،‌ مجموعه آزمون ها معمولاً تا قبل از زمانی که شناساگر در هدف عمومی قرارداده شود محفوظ می ماند. (یا فقط قبل از چاپ نتایج در مجلات یا کنفرانس ها).
استفاده از مطالب این مقاله با ذکر منبع راسخون، بلامانع می باشد.



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