بخشی از مقاله
*** اين فايل شامل تعدادي فرمول مي باشد و در سايت قابل نمايش نيست ***
استفاده از الگوریتم بهینهسازی دسته میگوها جهت بهبود ساختار شبکه عصبی مصنوعی
خلاصه
توانایی دستهبندی شبکههای عصبی به میزان زیادی به ساختار آن بستگی دارد. تاکنون روش های متعددی جهت تنظیم معماری شبکههای عصبی پیشنهاد شده است. از آن جهت که تنظیم ساختار به یک فرایند بهینهسازی ختم میشود، استفاده از الگوریتمهای بهینهسازی در حل این مسائل بسیار مورد توجه قرار گرفته است. در این مقاله یک روش بهینهسازی جدید جهت تنظیم ساختار شبکه عصبی پیشنهاد شده که بر اساس الگوریتم بهینهسازی دسته میگوها است. در این روش یک الگوریتم میگو در بدنه قرار دارد که وظیفه بهینهسازی معماری شبکه را داشته و یک الگوریتم میگو هم درون آن قرار دارد که وظیفه بهینهسازی وزنها را به عهده دارد. عملکرد روش پیشنهادی روی پنج مجموعه داده UCI آزمایش شده و نتایج حاصل از مقایسه با روشهای قبلی نشان داد که دقت دستهبندی روش پیشنهادی به طور قابل توجهی بیشتر و میانگین مربعات خطای آن کمتر است.
کلمات کلیدی: الگوریتم دسته میگوها، شبکه عصبی، دستهبندی، بهینهسازی، فرامکاشفهای
1. مقدمه
یک شبکه عصبی مصنوعی ایده ای است برای پردازش اطلاعات که از سیستم عصبی زیستی الهام گرفته شده و مانند مغز به پردازش اطلاعات می پردازد. این سیستم از شمار زیادی عناصر پردازشی به نام نرون تشکیل شده که بین هرکدام از آنها یالی وجود دارد که برای حل یک مسأله با هم هماهنگ عمل می کند. یک شبکه عصبی برای انجام وظیفه های مشخص، مانند شناسایی الگو ها و دسته بندی اطلاعات ، در طول یک پروسه یاد گیری ، تنظیم می شود. نحوه قرار گرفتن نرونها نسبت به هم و همچنین مقدار وزن های بین آنها تاثیر به سزایی در نحوه عملکرد شبکههای عصبی دارد. از این رو تاکنون الگوریتمهای متفاوتی جهت تنظیم وزنها و معماری شبکه های عصبی پیشنهاد شده است .
گودیس و همکارانش در سال 2003 روشی جهت بهینهسازی توابع غیرخطی پیوسته توسط الگوریتم ازدحام ذرات پیشنهاد دادند. روش آنها برای آموزش شبکهی عصبی پیشخور و یک تابع غیرخطی بود. نتایج کار آنها نشان میداد که وزنهای شبکهی عصبی پیشخور با آموزش توسط الگوریتم ازدحام ذرات در مقایسه با روش پسانتشار خیلی سریعتر به مقدار بهینه همگرا میشوند .[2] یو و همکارانش در سال 2008، از دو الگوریتم ازدحام ذرات پیشرفته و الگوریتم ازدحام ذرات گسسته به همراه عملیات افزایشی استراتژی تکاملی خود تطبیقی جهت آموزش شبکه های عصبی پیشخور سه لایه استفاده کردند. آنها از این الگوریتم جهت یافتن ساختار مناسب و پارامترهای(وزنها و بایاس) بهینه شبکه ی عصبی استفاده کردند. اتحاد دو الگوریتم ازدحام ذرات و ازدحام ذرات گسسته موجب به دست آوردن همزمان ساختار و پارامترهای شبکه عصبی میشود. استراتژی تکاملی تطبیقی نیز به تنظیم بهتر پارامترها و پاسخهای تولید شده توسط الگوریتم ازدحام ذرات - ازدحام ذرات گسسته کمک میکند. روش آنها نسبت به چند روش مشابه دارای کارایی و دقت بیشتر بود اما زمان محاسباتی آن بالا بود. روش آنها در کارهایی که زمان محاسباتی دارای اهمیت کمتری است، به کار میآید .[3]کوک وهمکارانش در سال 2009 از الگوریتم ازدحام ذرات جهت آموزش شبکه عصبی استفاده کردند. آنها از این الگوریتم برای کالیبره کردن رابطهی بارندگی و سیلاب با استفاده از دادههای بارندگی و سیلاب در سال های گذشته استفاده کردند. این مدل در گذشته توسط شبکه عصبی آموزش دیده با الگوریتم پسانتشار پیادهسازی شده بود. اما آن روش به دلیل گیر افتادن در مینیمم محلی و سرعت همگرایی پایین کارآمد نبود. بدین جهت روش پیشنهادی آنها، به دلیل رفع معایب روش های قبلی مورد استقبال زیادی قرار گرفت .[4]
الگوریتم بهینه سازی نیروی مرکزی یک تکنیک فرامکاشفهای جدید بر اساس حرکتهای فیزیکی است. گرین و همکارانش در سال 2012 از دو الگوریتم بهینه سازی نیروی مرکزی و ازدحام ذرات جهت آموزش شبکه های عصبی استفاده کردند. آنها این دو روش را از نظر پیچیدگی محاسباتی، ساختار و طراحی شبکه مقایسه کردند. نتایج نشان داد که الگوریتم بهینه سازی نیروی مرکزی میتواند به خوبی الگوریتم ازدحام ذرات در فرایند آموزش شبکه عصبی عمل کند .[5] کیشور و همکارانش در سال 2013 از الگوریتم ازدحام ذرات تطبیقی جهت آموزش شبکههای عصبی برای بهبود کارایی آن استفاده کردند. الگوریتم ازدحام ذرات تطبیقی جهت حل مسائل پیچیده مناسب میباشند. روش پیشنهادی آنها برای حل مسائل پیچیده نظارت شرطی مناسب بود. نتایج آزمایشات کارایی روش آنها را به خوبی نشان میداد . [6] سعدی و همکارانش در سال 2013 از الگوریتم کلونی زنبور مصنوعی جهت آموزش شبکه عصبی برای بهبود تصاویر رادیولوژی استفاده کردند. الگوریتم کلونی زنبور مصنوعی در مقایسه با سایر الگوریتمها از پارامترهای کنترلی کمتری استفاده میکند. نتایج آزمایش نشان میدهد که با استفاده از این روش در فرایند تخمین عکسها، پیشرفت قابل توجهی داشتند.[7]
چن و همکارانش در سال 2013 از یک شبکه عصبی برای مدلسازی شناسایی فرکانس رادیویی که منعکس کننده توزیع توانایی سیگنال است، استفاده کردند. آنها برای رسیدن به راهحل مناسب، یک الگوریتم کلونی مورچگان پیوسته که میتواند بر نقص الگوریتم پسانتشار غلبه کند را با شبکه عصبی ترکیب کردند. از الگوریتم کلونی مورچگان جهت تعیین وزنهای شبکه استفاده شد. آنها روش پیشنهادیشان را با چند روش فرامکاشفهای که جهت آموزش شبکه عصبی استفاده شده بود، مقایسه کردند. نتایج آنها نشان میداد که روش پیشنهادیشان نسبت به سایر روشها توانایی و قابلیتهای بیشتری دارد و کارآمدتر است .[8] داس و همکارانش در سال 2014، روشی جهت آموزش اکولایزر مبتنی برشبکه عصبی توسط الگوریتم ازدحام ذرات ارائه دادند. آنها نه تنها برای بهینه کردن مقدار وزنها، بلکه برای بهبود توپولوژی شبکه و تابع انتقال نرونها از الگوریتم ازدحام ذرات استفاده کردند. آنها روش پیشنهادیشان را با اکولایزر عصبی - فازی مقایسه کردند. روش آنها در نقاط دارای نویز عملکرد مناسبتری داشت .[9]
از آنجهت که فرایند بهینهسازی وزنها بر روی ساختار مشخصی از شبکه عصبی صورت میگیرد، هیچ تضمینی وجود ندارد که ساختار استفاده شده بهترین ساختار موجود برای شبکه باشد و ما را به بهترین نتیجه برساند. از این جهت در ادامه از الگوریتم گروه میگوها [10] جهت بهینهسازی ساختار شبکه عصبی علاوه بر بهبود وزنهای آن، استفاده می کنیم. ادامهی مقاله به صورت زیر سازماندهی شده است: در بخش دوم، الگوریتم بهینهسازی دستهی میگوها به صورت مختصر توضیح داده میشود. روش پیشنهادی در بخش سوم تشریح میگردد. بخش چهارم نیز، نتایج آزمایشات را نشان میدهد. نتیجهگیری و کارهای آینده در بخش پنجم بررسی میشوند.
2. الگوریتم بهینهسازی دستهی میگوها
الگوریتم دستهی میگوها که شبیهسازی رفتار غذایابی میگوها است، در سال 2012 توسط گندمی برای حل مسائل بهینهسازی پیشنهاد شده است.[9] یافتن نقطهی بهینه در این الگوریتم، توسط سه مؤلفهی اصلی صورت میگیرد: (1 حرکت ایجاد شده توسط میگوهای همسایه (2 حرکت غذایابی (3 پراکندگی تصادفی.
جذب میگوها، به مکانهای پر تراکم و یافتن غذا به عنوان تابع هدف در نظر گرفته میشود، که در نهایت منجر میشود، میگوها در اطراف بهینهی سراسری گرد هم آیند. در این فرآیند، میگوها زمانی که به دنبال غذا و بیشترین تراکم میگردند به سمت بهترین راه حل حرکت میکنند. الگوریتم دستهی میگوها، مدل لاگرانژی زیر را همانطور که در رابطهی (1) نشان داده شده است در یک فضای تصمیم -dبعدی نشان میدهد.
به طوری که حرکت ایجاد شده توسط سایر میگوها، حرکت غذایابی و پراکندگی فیزیکی i امین میگو را نشان میدهند.
در تأثیر حرکت ایجاد شده بوسیلهی میگوهای دیگر، جهت حرکت بوسیله ی اثر هدف، اثر محلی و یک اثر دافعه تقریب زده میشود.
برای میگوی iام، حرکت میتواند به صورت رابطهی (2) در نظر گرفته شود.
به طوری که ، بیشترین سرعت ایجاد شده وزن اینرسی حرکت ایجاد شده و نیز آخرین حرکت ایجاد شده میباشد.
حرکت غذایابی به وسیلهی دو مؤلفهی اصلی، تخمین زده میشود: اولی موقعیت غذا و دومی دانش قبلی دربارهی موقعیت غذا میباشد و طبق رابطهی (3) محاسبه میشود:
که برابر با سرعت غذایابی، وزن اینرسی حرکت غذایابی، آخرین حرکت غذایابی، جاذبهی غذا و اثر بهترین برازندگی iامین میگو تاکنون میباشد.
پراکندگی فیزیکی میگوها را هم میتوان به صورت یک فرآیند تصادفی در نظر گرفت
به طوری که برابر با بیشترین سرعت پراکندگی میباشد و بردار جهت تصادفی است که آرایههایش مقادیر تصادفی بین 1- و 1 هستند.
با استفاده از پارامترهای مؤثر مختلف حرکت در طول زمان، بردار موقعیت یک میگو در طول بازهی تا توسط رابطهی (6) بدست میآید:
به طوری که یک ثابت است که باید به دقت برای مسائل بهینهسازی تنظیم شود. جزئیات بیشتر در [9] قابل مشاهده است.
3. روش پیشنهادی
معمولاً در فرایند آموزش وزن های شبکه عصبی از یک شبکه عصبی با ساختار مشخص و معینی، یعنی تعداد ثابتی لایه پنهانی و تعداد ثابتی نرون در هر لایه برای شبکه موردنظراستفاده میکنیم. سپس فرایند آموزش وزن های شبکه را با همان معماری مشخص آغاز نموده و تا انتها همان ساختار را برای شبکه داشتیم. حال نکتهای که در این قسمت مبهم میماند، این است که به طور مثال اگر به جای معماری 3 لایه با 2 نرون در لایه پنهانی اول و 3 نرون در لایه پنهانی سوم، یک ساختار متفاوتی مثلا شبکه عصبی 4 لایه با 7 نرون در لایه پنهانی اول و 4 نرون در لایه پنهانی دوم و 3 نرون در لایه پنهانی آخر داشتیم، دقت دستهبندی چه تغییری میکرد. ممکن است دقت بیشتر یا کمتر میشد. بنابراین نمیتوان ادعا کرد ما با همان ساختار از پیش تعیینشده که تصادفی و بر اساس تجربیات کم است، میتوان به بهترین دقت دستهبندی رسید. زیرا هیچ معلوم نیست که آن ساختار، بهترین ساختار موجود برای شبکه عصبی موردنظر است. پس به روز رسانی ساختار شبکه عصبی به یک مسئلهی بهینه سازی ختم میشود. از طرفی، الگوریتم متاهیورستیک دسته میگوها یک روش هوشمند جدید و قوی برای یافتن نقاط بهینه در فضای جستجو است. بنابراین میتوان از آن برای یافتن ساختار بهینه در شبکه عصبی بهره برد. بنابراین در این قسمت ما علاوه بر بهینه کردن وزنهای شبکه عصبی، ساختار آنرا نیز توسط الگوریتم میگوها بهینه میکنیم.
در شکل 1 شبه کد روش پیشنهادی آورده شده است. در ادامه روش پیشنهادی را به تفصیل توضیح میدهیم. در این روش، کار ما با الگوریتم میگوها شروع میشود. در واقع یک الگوریتم میگو در بدنه داریم که فرایند بهینهسازی ساختار شبکه عصبی را انجام میدهد و یک الگوریتم میگو هم در داخل این بدنه داریم که فرایند بهینهسازی وزنهای شبکه عصبی را انجام میدهد.
در ابتدا به تعداد ساختارهای لازم، یعنی به تعداد ساختارهایی که میخواهیم از بین آن ساختار بهینه برای شبکه عصبی انتخاب شود، جمعیتی از میگوها میسازیم. طریقه تعریف مکان هر میگو بدین صورت است که تعداد ابعاد میگو در اینجا برابر با ماکزیمم تعداد لایههای پنهانی مجاز برای شبکه به علاوه یک است. بعد اول در مکان میگوها را برابر با تعداد لایه های پنهانی برای شبکه در نظر میگیریم و ابعاد بعدی تعداد نرون در هر لایه را نشان میدهد. بنابراین در تعریف ساختار اولیه میگوها باید برای تعداد لایههای پنهانی و همچنین تعداد نرون در هر لایه یک محدودیت بگذاریم و مقدار عدد در هر بعد بین یک بازه مشخص تعریف شود. سپس با دادن مقدار تصادفی به حرکتهای سه گانه هر میگو، مکان اولیه آنها را بدست آورده و با استفاده از موقعیت مکانی هریک از آنها شبکههای عصبی اولیه ساخته میشود. ساختار شبکهها بدین صورت است که خانه اول مکان میگو نشاندهنده تعداد لایههای پنهانی شبکه و خانه های بعدی تعداد نرون در هر لایه را مشخص میکند.
حال یک ساختار برای شبکه عصبی مورد نظر ایجاد شده و نوبت به بهینهسازی وزنهای آن ساختار میرسد که در اینجا یک الگوریتم میگوی جداگانه جهت بهبود وزنها فراخوانی میشود که روند کار آن را در ادامه توضیح میدهیم.
فرایند بهینهسازی وزنها بدین صورت است که در ابتدا این وزن ها به صورت تصادفی مقداردهی شدهاند و در هر بار تکرار تغییر پیدا میکنند و تا زمانی که اختلاف خطای خروجی شبکه عصبی و خروجی واقعی متناظر با ورودیها، کمتر از یک حد معین شود، اصلاح میشوند. برای آن که بتوانیم از الگوریتم بهینهسازی دسته میگوها جهت به روزرسانی وزنهای شبکه عصبی استفاده کنیم، لازم است که آموزش شبکه عصبی را به عنوان ایجاد یک تابع در نظر بگیریم و هدفمان بهینه کردن آن در یک فضای n بعدی باشد. مسئلهی بهینهسازی میتواند بوسیلهی الگوریتم دستهی میگوها حل شود. ما کل شبکهی عصبی مصنوعی را به عنوان یک میگو در یک فضای d بعدی در نظر گرفتهایم که d با تعداد کل وزنها و بایاس شبکه عصبی برابر است. به عبارتی مکان هر میگو d بعد دارد که برابر با تعداد کل وزن ها و بایاس شبکه عصبی است. الگوریتم میگوها موظف به بهبود مکان هر میگو است و بهترین میگو را به عنوان جواب باز می گرداند. آنگاه وزن های شبکه عصبی را با مقادیر بدست آمده از بهترین میگو بروز رسانی می کنیم. در انتها شرط پایانی را چک کرده و در صورت برقرار بودن به بهترین وزن دست یافته ایم. شرط پایانی معمولا به دو صورت در نظر گرفته می شود -1: خطای مینیمم مربعات برای شبکه از یک آستانه کمتر باشد -2 تعداد تکرارهایی که از قبل مشخص باشد.
ابعاد (وزنها) هر میگو (شبکه عصبی) توسط سه مؤلفهی اصلی الگوریتم دستهی میگوها یعنی حرکت ایجاد شده توسط سایر موجودات (N)، حرکت غذایابی (F) و پراکندگی فیزیکی (D) به روز رسانی میشوند. نحوهی بدست آمدن هر یک از این مؤلفهها در بخش 2 آمده است. در هر تکرار الگوریتم دستهی میگوها، بهترین میگو انتخاب میشود و در آخر میگوی بهینه به عنوان جواب الگوریتم برگردانده می شود و مقدار ابعاد آن به عنوان وزنهای شبکه عصبی در نظر گرفته میشود.
خروجی الگوریتم میگوی درونی ( الگوریتمی که موظف به بهبود وزنها است) میانگین مربعات خطا یا دقت میباشد، که میزان خطای یا دقت شبکه عصبی با ساختار موردنظر و وزنهای بهینهشده را نشان میدهد. این اعداد حاصل از اجرای الگوریتم میگوی درونی، به عنوان میزان برازندگی موقعیت میگوی i ام که نشاندهنده یک ساختار برای شبکه عصبی میباشد، در نظر گرفته میشود. در این مرحله باید به محاسبه حرکتهای سهگانه بعدی میگوها پرداخته و مکان بعدی هر میگو یا به عبارتی ساختار بهینه شده بعدی شبکه را محاسبه کرده و تا ارضا شدن شرایط پایانی مراحل بالا را تکرار کرد. در نهایت پاسخی که این الگوریتم به ما میدهد شبکه عصبی با ساختار و وزنهای بهینه است.