بهینه سازی با شبکه عصبی – پادکست پرسش و پاسخ


«بهینهسازی» (Optimization)، مبحثی در ریاضیات، علوم کامپیوتر و تحقیق در عملیات است که طی آن به انتخاب بهترین عنصر (با توجه به یک سری معیار) از میان مجموعهای از گزینهها پرداخته میشود. بهینهسازی، کاربردهای قابل توجهی در «هوش مصنوعی» (Artificial Intelligence) دارد. «شبکههای عصبی مصنوعی» (Artificial Neural Networks | ANN)، سیستمهای محاسباتی هستند که از شبکههای عصبی زیستی الهام گرفتهاند، اما الزاما با آنها یکی نیستند. امروزه از انواع الگوریتمهای شبکههای عصبی برای حل مسائل «یادگیری ماشین» (Machine Learning) به طور گستردهای استفاده میشود. پرسشی که برای افراد گوناگون مطرح میشود این است که آیا میتوانند با استفاده از شبکههای عصبی به حل مسائل بهینهسازی بپردازند؟ دکتر «سید مصطفی کلامی هریس»، در پادکستی که در ادامه آمده به پرسش مذکور، پیرامون بهینه سازی با شبکه عصبی پاسخ داده است. نسخه متنی این پادکست نیز در همین مطلب قرار دارد. البته، منبع اصلی همچنان فایل صوتی محسوب میشود.
پادکست پیرامون بهینه سازی با شبکه عصبی
نسخه نوشتاری
یکی از سوالات بسیار شایعی که دانشجویان میپرسند این است که: «آیا میتوان با استفاده از «شبکه عصبی» (Neural Network) «بهینهسازی» (Optimization) انجام داد؟». در حالت کلی، پاسخ این پرسش خیر است. شبکه عصبی به صورت عمومی ابزار مناسبی برای بهینهسازی نیست؛ غیر از یک نوع از شبکه عصبی، یعنی «شبکه هاپفیلد» (Hopfield Network)، که برای نوع خاص از مسائل کاربرد دارد. شبکه عصبی هاپفیلد بیشتر یک سیستم دینامکی است؛ یک سیستم که معادله دیفرانسل دارد و یک شبکه عصبی دینامکی است. شبکه عصبی هاپفیلد، به مرور به نوعی طوری طراحی شده که مانند آن است که آبی را از سر بالایی رها کنند، این آب در نهایت چارهای جز پایین آمدن ندارد و به پایین میریزد.
این هم یک سیستم دینامکی است که نهایتا به راه حل مساله بهینهسازی همگرا میشود. ولی مساله بهینهسازی باید از نوع «بهینهسازی ترکیبیاتی» (Combinatorial Optimization) باشد. در واقع، مساله باید در حوزه ترکیبیات باشد. به عنوان مثالهایی از این نوع مسائل میتوان به «مساله فروشنده دورهگرد» (Travelling Salesman Problem | TSP) و «مساله تخصیص درجه دو» (Quadratic Assignment Problem | QAP) اشاره کرد. مانند همه مسائلی که راه حل آنها به صورت «جایگشت»، «ترکیب» یا «ترتیب» قابل بیان است. این مسائل را با شبکه عصبی هاپفیلد میتوان حل کرد. این روش پاسخ خوبی میدهد و خیلی سریع همگرا میشود. در واقع، شبکه عصبی هاپفیلد یک کامپیوتر آنالوگ را شبیهسازی میکند که نقطه تعادل آن پاسخ بهینه مساله است. این موضوع اتفاقی نیست و کاربر خود سیستم را بدین صورت طراحی کرده است.
اما در پاسخ به اینکه دیگر انواع شبکههای عصبی نیز برای بهینهسازی قابل استفاده هستند و یا نه، باید گفت خیر. کار شبکه عصبی بیشتر مدلسازی و «پیشبینی» (Prediction) است. یعنی، کار آن جستجو نیست. برای درک بهتر موضوع، میتوان یک شبکه عصبی «پرسپترون چند لایه» (Multilayer Perceptron) با دو لایه را در نظر گرفت. لایه اول دارای سه و لایه دوم دارای یک نورون است. یعنی در مجموع چهار نورون و در عین حال، تعداد زیادی پارامتر دارد. اما مشخص نیست که این پارامترها چیست. این شبکه عصبی، یک سری خواهر و برادر دارد که فقط پارامترها آنها با این شبکه فرق دارد.
کاربر باید بین همه مجموعه شبکههای عصبی که در این شرایط هستند، مثلا ده تا ورودی، سه نورون در لایه اول و یک نورون در لایه دوم دارند بگردد و یک مورد را پیدا کند. در واقع، فرایند «آموزش دادن» (Train) شبکه عصبی، خود نیازمند بهینهسازی است و نمیتواند برای حل مساله بهینهسازی استفاده شود. زیرا، ابتدا باید خود آن را پیدا کرد، بعد مساله پیچیدهتر میشود. اما میتوان از شبکه عصبی برای ایجاد حدس اولیه کمک گرفت. در واقع، همانطور که پیش از این نیز بیان شد، مساله بهینهسازی یک مساله جستجو است. فرض میشود که فرد قصد دارد به مهمانی برود. بنابراین، لباسهایی را همراه خواهد داشت؛ مثلا یک شال گردن. اما نمیداند که شال گردن کجا قرار دارد.
در واقع، شال گردن مذکور، جلوی چشم نیست و فرد نیز نمیداند که آخرین بار آن را کجا گذاشته است. به همین دلیل، جستجو انجام میشود. اما، فرد ابتدا داخل یخچال را نمیگردد؛ زیرا یخچال نقطه مناسبی برای حضور شال گردن نیست. بسیاری از قسمتهای دیگر نیز بررسی نمیشوند، در حالی که چند قسمت نیز حتما بررسی میشود. در واقع، محلهای جستجو به صورت کاملا هوشمندانه انتخاب میشوند. بدین شکل، احتمالا در دومین یا سومین محل جستجو، میتوان سریعا شال گردن را پیدا کرد. در واقع، فرد دیگر داخل ماشین لباسشویی یا درون قابلمه به دنبال شال گردن نمیگردد و به سراغ محلهای دیگری میرود. دلیل این امر آن است که دانش قبلی دارد.
از شبکه عصبی نیز برای بهینهسازی بدین صورت میتوان استفاده کرد. فرض میشود مسالهای وجود دارد، کاربر پارامترها را وارد میکند و شبکه عصبی به سرعت یک یا چند راه حل را به کاربر پیشنهاد میدهد. پرسشی که در این وهله مطرح میشود این است که شبکه عصبی چگونه پیشنهاد میدهد؟ کاربر پیش از این چند مساله بهینهسازی را حل کرده و پاسخ بهینه یا شبه بهینه آنها را یافته است. با این موارد، یک شبکه عصبی آموزش داده میشود. اکنون، کافی است به شبکه عصبی گفته شود مساله چیست تا حدود پاسخ بهینه را مشخص کند.
بله؛ شبکه عصبی بدین صورت کمک میکند که حدس اولیه به خوبی زده شود. ولی این موضوع به معنای اثبات کامل و همگرا شدن سریع نیست. بلکه، یک لِم برای ایجاد جمعیت اولیه پاسخ است. بیش از این نمیتوان از شبکه عصبی در بهینهسازی کمک گرفت؛ مگر اینکه هدف به طور کلی تقریب زدن باشد و اصلا نیازی به بهینگی کامل نباشد. در این شرایط باید هزارن مساله بهینهسازی را حل کرد که البته باید هم نوع، هم شکل و هم اندازه باشند. سپس، آنها را به شبکه عصبی یاد داد؛ شبکه عصبی بدون طی فرایند بهینهسازی، این را حدس بزند.
اگر مساله، یک مساله خوش رفتار باشد، شاید حدس خیلی خوبی هم ارائه کند و میتوان از آن کمک گرفت. پس شبکه عصبی در حالت کلی ابزار مناسبی برای بهینهسازی نیست. در واقع، میتواند به بهینهسازی کمک کند، ولی نمیتواند ابزار بهینهسازی باشد. البته به جز شبکه عصبی هاپفیلد که آن هم صرفا در مسائل ترکیبیاتی قابل استفاده است و کاربردها بسیار محدودی دارد.
برای دانلود کردن و شنیدن دیگر پادکستهای دکتر سید مصطفی کلامی هریس در مجله فرادرس، روی این لینک [+] کلیک کنید.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- آموزش شبکههای عصبی مصنوعی در متلب
- مجموعه آموزشهای الگوریتمهای بهینهسازی هوشمند
- ساخت شبکه عصبی (Neural Network) در پایتون — به زبان ساده
- شبیهسازی تبرید (Simulated Annealing) — به زبان ساده
^^