به نام خدا

 

شبکه های Cascade-Correlation

 

حسام سقا        –          علی نیک نژاد

 

مقدمه

 

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

شبکه عصبی Cascade-Correlation رویکرد متفاوتی را در نظر میگیرند. در این شبکه ها اولا” معماری شبکه با اضافه کردن نرون های جدید بسته به نیاز تعیین میشود و ثانیا” بجای آموزش تمام شبکه در هر مرحله ، در هر مرحله تنها بخشی از شبکه را آموزش میدهد. به این شکل علاوه بر تعیین خودکار معماری ، از رفت و برگشت بین منابع خطا نیز جلوگیری شده و بازدهی افزایش می یابد.

 

معماری شبکه

شبکه های عصبی Cascade-Correlation همانند سایر انواع شبکه های عصبی شامل یک لایه ورودی و یک لایه خروجی هستند. تفاوت آنها در نرونهای hidden آنهاست. این شبکه ها در هر مرحله با افزودن یک نرون hidden جدید شبکه را گسترش میدهند . هر نرون جدید از هر یک از نرون های ورودی و تمامی نرونهای hidden قبلی ورودی میگیرد و به ورودی تمامی نرونهای خروجی ، خروجی دارد. علاوه بر روابط بین نرونهای hidden ، بین هر یک از نرونهای ورودی و نرونهای خروجی نیز یک ارتباط برقرار میباشد.

 

الگوریتم

 

شبکه های Cascade-Correlation در اولین قدم مانند شبکه های کلاسیک تنها با نرونهای ورودی و نرونهای خروجی آموزش میبینند (ضرایب اولیه بصورت Random انتخاب میشوند و تعیین وزن ها با هر الگوریتم آموزش می تواند انجام می شود ولی اینجا ازquickprop که سریعتر است استفاده شده). در صورتی که خطا پس از طی کردن تعداد epoch های مشخصی مناسب بود ( مثلا” کمتر از مقدار مشخصی بود) فرآیند آموزش متوقف میشود. در غیر اینصورت از این پس در هر مرحله با افزودن یک نرون جدید و آموزش شبکه بشکل مناسب دوباره این آزمایش صورت میگیرد تا بتواند خطای باقیمانده را کاهش دهد. کار تا جایی که بلاخره شبکه به میزان قابل قبول خطا برسد ادامه می یابد.

 

افزودن نرون جدید

 

برای افزودن یک نرون جدید ، تعدادی نرون بعنوان کاندید ایجاد شده و ضرایب ورودی آنها بگونه ای تغییر می یابد تا Correlation خروجی نرون با میزان خطای شبکه افزایش یابد. با گرفتن مشتق زنجیره ای از correlation نسبت به هر وزن بدست می آید:

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

انتخاب نرونی که خروجی آن بیشترین Correlation یا همبستگی را با خطای باقیمانده دارد این کاربرد را دارد که با انتخاب ضریب خروجی مناسب میتوان خطای خروجی را کاهش داد . اگر این همبستگی مثبت باشد ، با انتخاب ضریب منفی و اگر منفی باشد با انتخاب ضریب خروجی مثبت ، منفی خطای باقیمانده در خروجی ظاهر شده و آن را کاهش می دهد .

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

 

 

 

الگوریتم :

 

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

 

انواع شبکه های Cascade-Correlation

 

علاوه بر شبکه های Cascade-Correlation کلاسیک که در بالا توضیح داده شد ، انواع دیگری از این شبکه ها نیز موجود میباشند :

 

  • Pruned-Cascade-Correlation (PCC)
  • Recurrent-Cascade-Correlation (RCC)
  • Genetic-Cascade-Correlation

 

شبکه های Pruned-Cascade-Correlation

 

ایده اصلی این نوع شبکه ها این است که ما میتوانیم با حذف بعضی از ارتباطهای بین نرونها (وزنها) بازدهی شبکه را افزایش دهیم.

این شبکه ها یک Selection criterion که معمولا” عکس خطای شبکه بر روی یک قسمت از داده های آموزشی(prune) است, در نظر میگیرند . بکمک این Selection criterion شبکه در هر مرحله قبل از افزودن نرون Selection criterion را محاسبه کرده و سپس در پایان نیز آن را محاسبه میکند . اگر این مقدار افزایش یافته باشد که نشاندهنده پیشرفت صحیح شبکه است ولی در غیر اینصورت شبکه در حال بزرگ شدن بدون حاصل است و الگوریتم متوقف میگردد. از طرف دیگر پس از افزودن نرون جدید شبکه با استفاده از این Selection criterion ، تک تک هر یک از وزنها را حذف میکند ، اگر این مقدار افزایش یافت که نشاندهنده درست بودن تصمیم میباشد و در غیر ایصورت وزن برگردانده میشود.

 

شبکه های Recurrent-Cascade-Correlation

شبکه های recurrent کاربردهای فراوانی دارند از جمله میتوان به توانایی تحلیل داده هایی که وابستگی به زمان دارند و یا به ترتیب خاصی به شبکه ارائه میشوند اشاره کرد. (مانند سری های زمانی) .

تبدیل شبکه های Cascade Correlation به شبکه Recurrent از این جهت مشکل است که مطابق تعریف ارائه شده ما ورودی هر یک از نرونهای جدید را ثابت در نظر میگیریم و اگر غیر از این باشد در واقع ما از مفهوم شبکه های CC خارج شده ایم. بنابراین در تعریف ارائه شده از نوع Recurrent این شبکه ها تنها رابطه Feedback در این شبکه ها بین هر نرون مخفی و خودش برقرار میگردد . یعنی نرون پس از delay مشخص شده ، خروجی خود را در ورودی دریافت میکند. وزن این ارتباط نیز همانند سایر وزنهای ورودی نرون مورد نظر پس از قرار گرفتن در شبکه ثابت میگردد.

 

شبکه های Genetic-Cascade-Correlation

 

ایده اصلی این نوع شبکه ها استفاده از الگوریتم ژنتیک بجای هر دو فاز آموزش(الگوریتم quickprop) در شبکه است. مشکلی که در شبکه های معمولی Cascade-Correlation وجود دارد کم بودن تعداد نرونهای کاندید و همچنین عدم وجود ارتباط بین آنها می باشد. در این روش با در نظر گرفتن تعداد بیشتری کاندید ، در هر مرحله بکمک الگوریتم ژنتیک نسل بهتری از آنها ایجاد میگردد.

در این روش وزنها نقش کروموزوم را دارند و هر دسته از وزنهای ورودی و خروجی نقش Individual ها را دارند. ۵۰% کل جمعیت را وزنهای ورودی و ۵۰% دیگر را وزنهای خروجی تشکیل میدهند.

تابع ارزیابی در فاز ورودی همبستگی بین خروجی نرون مخفی و جمع خطای شبکه و برای فاز خروجی جمع خطای شبکه میباشد. برای جفت گیری از روش استاندارد ۲-cross استفاده می شود و جهش نیز با احتمال کم وجود دارد.

 

نتیجه گیری

 

همانطور که دیدیم شبکه های Cascade-Correlation سعی می کنند بعضی از مشکلات شایع در شبکه های عصبی را حل کنند. یکی از خصوصیات ویژه این شبکه ها عدم نیاز به دانستن معماری شبکه است. ما نیازی نداریم که تعداد نرونهای لایه مخفی را بدانیم ( تعداد نرونهای لایه های ورودی و خروجی بسته به طبیعت مسئله مشخص است) و این ما را از حدس و خطای معماری شبکه بی نیاز می کند از طرف دیگر نیازی به تعیین کردن تابع نرونها نیست چون در مرحله ایجاد نرون جدید در بین کاندید های مختلف ، توابع مختلفی میتوانند حضور داشته باشند . شبکه ای که در نهایت تولید میشود نسبت به شبکه های دیگر نسبتا” کوچک است و بازدهی بالاتری دارد. فرآیند آموزشی بدلیل اینکه آموزش در هر مرحله تنها بر روی بخشی از شبکه صورت می پذیرد سریعتر است. اما این شبکه ها بدلیل ساختار ویژه ای که دارند که در هر مرحله تلاش میکند بزرگترین منبع خطا را حذف کنند ، نسبت به نویز حساس ترند و اگر داده ها Fuzzy(مبهم و پیچیده) باشند ممکن است نتایج مناسبی بدست نیاید و یا سرعت همگرایی نسبت به سایر روشها کمتر باشد.

 


مراجع

 

  • Scott E. Fahlman and Christian Lebiere,”The Cascade-Correlation Learning Architecture”, Carnegie Mellon University, 1991.
  • Scott E. Fahlman,”The Recurrent Cascade-Correlation Architecture”, Carnegie Mellon University,1991.
  • Mitchell A.Potter,”A Genetic Cascade-Correlation Learning Algorithm”, George Mason University,COGANN-92,1992
  • Jose Demisio,”The Cascade-Correlation Neural Network Growing Algorithm using the Matlab Environment”