نقد و بررسی فرادرس آموزش ماشین های بردار پشتیبان یا SVM در متلب

آموزش ماشین های بردار پشتیبان یا SVM در متلب

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

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

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

 

معرفی آموزش و محتوای آن:

بحث ماشین بردار پشتیبان در واقع به دنبال خطی است که داده های ما را از هم به درستی تفکیک نماید که دکتر کلامی آن را به نحو زیر توضیح داده اند.

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

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

در ادامه سعی در حل این مسئله بهینه سازی است و مدرس با استفاده از شرایط مسئله، قیودی را به مسئله اضافه می نماید که این کار باعث افزوده شدن پارامتر به تابع و سخت تر شدن حل مسئله می شود، پس برای حل این مشکل، مدرس با استفاده از مشتق گیری ضمنی به یک مسئله دوگان مسئله اصلی می رسد و سپس با استفاده از شرایط kkt و اعمالی مثل بررسی حالات و جایگذاری و … به یک مسئله Quad Programming درجه ۲ می رسد. (البته مدرس نگفتند Quad Programming چیست و چه ویژگی دارد و چگونه آن را حل می کنند و چرا به این مسئله Quad Programming میگویند!؟) که آن را با متلب حل می نماید که حل آن باعث یافتن پارامترهای اضافه شده به تابع می شود و با استفاده از آنها می توان پارامترهای خود مسئله را یافت. سپس استاد بعد از بیان نحوه یافتن پارامترهای اصلی مسئله، کل مسئله (ورودی ها و خروجی ها و نحوه اجرای الگوریتم را به طور خلاصه و بسیار زیبا در یک اسلاید بیان می دارد که به راحتی می توان آن را پیاده سازی کرد). در ادامه، مدرس ماشین بردار پشتیبان را به شبکه عصبی تشبیه می نماید (بیان این قسمت برای کسی که آشنایی با شبکه عصبی را نداشته باشد سخت است). سپس ماشین بردار پشتیبان با حاشیه نرم بیان می شود و تفاوت آن با حالت قبلی که حالت حاشیه سخت بود ذکر می شود و سپس دوباره مطالبی شبیه مطالب فوق را برای حل این دسته از مسائل ارائه می نمایند و در انتها نیز مشابه اسلاید قبل، همان اسلاید خلاصه کلی را نیز کپی می کنند و تغییرات این دو روش را روی آن اعمال می کنند. سپس روش پیاده سازی این موارد فقط برای حاشیه نرم پیاده سازی می شود و این طور بیان می شود که مسئله اول قابل پیاده سازی نیست؟! (و این موضوع کاملاً صحیح است). البته دکتر در این بخش روش حل مسئله Quad programming را نیز در متلب و با استفاده از تولباکس مختصراً بیان می کنند. در ادامه، مدرس بحث نگاشت را بیان می کند و با یک مثال بسیار ساده از کرنل تریک (در فضای یک بعدی!) می زند و با آن سعی در آموزش مفهوم کرنل تریک می کند و دوباره صحبت های بالا را برای افزودن کرنل به تابع هدف انجام می دهد و جزئیات ریاضی آن را بیان می دارد. در این قسمت، استاد فقط فرمول سه نوع مختلف کرنل را بیان می کند و آموزش آن و اینکه چگونه ایجاد شده اند و یا ما چگونه می توانیم آن را ایجاد نماییم بیان نمی شود. در آخر نیز مجدد به بیان تشابه روش با روش RBF پرداخته می شود و بدون آنکه گفته شود RBF چیست، فقط تفاوت ها بیان می شود. در آخر این بخش، با پیاده سازی کرنل تریک در ماشین بردار پشتیبان، در متلب اجرا می شود. همچنین در پایان نیز، اشاراتی به خود تولباکس متلب برای حل این مسئله و بیان محدودیت های آن (که فقط مناسب طبقه بندی باینری است) پرداخته می شود و همچنین پیاده سازی می شود. در بخش دوم آموزش، دکتر به بیان تئوری رگرسیون با استفاده از روش ماشین بردار پشتیبان می پردازد و پیاده سازی  نمی شود! (در این بخش حس می شود انرژی استاد نسبت به قبل کمتر شده است!). در اینجا باز هم مثل روش قبل توضیحاتی را می دهند ولی خود کلاسترینگ تدریس نمی شود سپس همانند توضیحات بالا مباحث ریاضی بیان می شود.

(یک نکته مثبت یا منفی این است که کلاً مباحث ریاضی صرفاً تا جایی که لازم است بیان می شود و جزئیات بیان نمی شود). در ادامه، استاد به بیان نحوه وزن دهی به ماشین بردار پشتیبان می پردازد که این وزن ها باعث ایجاد شکل های مختلف خوشه می گردد که دکتر به خوبی جزئیات را تدریس می نماید. اینجا دانشجویان سوا لاتی را از استاد می پرسند که اصلاً واضح نیست و حدود ۱۰ دقیقه از فیلم به همین پرسش و پاسخ ها می پردازد که بهتر بود به جای این زمان دکتر پیاده سازی این روش را در متلب بیان می کردند!

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

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

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

نکته مثبتی هم که بود هر جا پیاده سازی را تمام می شد سعی بر این بود که با توضیحی روی پارامترها تأثیر ذکر شود و در واقع کاربرد آنان بیان می شد. در آخر نیز استاد به بحث حل سری زمانی می پردازند که متأسفانه این قسمت نیز با عجله و تغییر مدام کدهای نوشته شده از قبل و بدون توضیحاتی در مورد سری زمانی حل می شود. ولی در کل مطالب مفید و قابل استفاده بودند و می توانست خیلی به پیشرفت دانشجویان کمک نماید.

 

نقاط قوت

  • بیان جزئیات تا حد نیاز
  • بیان مثال های مناسب
  • بیان کاربرد پارامترها
  • توضیح و فهماندن مناسب مسئله اصلی

 

نقاط ضعف

  • پراکندگی مطالب در بخش دوم و سوم و خصوصاً در بخش سوم
  • عدم پیاده سازی svc
  • کیفیت پایین پرسش و پاسخ دانشجویان
  • عدم بیان مناسب مبحث کرنل ها
  • عدم بیان خلاصه ای از روش های مرتبط بدون پیش زمینه مثل شبکه عصبی و یا سری زمانی
  • وجود اشتباهات و اصلاح آن در آخر فیلم و یا بعضی وقت ها عدم اصلاح آن (مثل پارامتر زیتا و یا داشتن مقدار مساوی ها در روابط کوچک تر و بزرگ تر)

 

پیشنهادات

  • تدریس به همراه بیان جزئیات در مباحث پیچیده
  • عدم بیان پرسش و پاسخ دانشجویان
  • بیان مناسب کرنل ها (بیان جزئیات و نحوه کار و روش ایجاد آنها)
  • بیان سایر روش های حل مسئله Quad Programming
  • افزودن بخش تخمین پارامترهای مدل با ترکیب آن با سایر روش ها

 

برای مشاهده «فرادرس آموزش ماشین های بردار پشتیبان یا SVM در متلب» به این لینک مراچعه کنید:

کلیک کنید(+)

 

0 پاسخ

ارسال یک پاسخ

در گفتگو ها شرکت کنید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *