شبکه‌هاي Cascade-Correlation

شبکه‌هاي Cascade-Correlation

 

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

 

مقدمه

 

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

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

 

معماري شبکه

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

 oo2

الگوريتم

 

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

 

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

 

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

oo3

 

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

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

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

 

 

 

الگوريتم :

 

1-     براي وزنهاي خروجي ، شبکه را آموزش بده تا خطا پايدار شود و يا از حد مورد نظر کمتر گردد.

2-     اگر خطا کمتر از حد مورد نظر بود الگوريتم پايان مي يابد.

3-     تعدادي نرون کانديد ايجاد کن.

4-     وزنهاي ورودي نرونهاي کانديد را آموزش بده تا خطا به وضعيت پايدار برسد.

5-     نروني که بيشترين همبستگي را دارد پيدا کن و در شبکه اضافه کن.

6-      به مرحله اول برگرد.

 

انواع شبکه‌هاي 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 مشخص شده ، خروجي خود را در ورودي دريافت ميکند. وزن اين ارتباط نيز همانند ساير وزنهاي ورودي نرون مورد نظر پس از قرار گرفتن در شبکه ثابت ميگردد.

 oo4

شبکه‌هاي Genetic-Cascade-Correlation

 

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

در اين روش وزنها نقش کروموزوم را دارند و هر دسته از وزنهاي ورودي و خروجي نقش Individual‌ها را دارند. 50% کل جمعيت را وزنهاي ورودي و 50% ديگر را وزنهاي خروجي تشکيل ميدهند.

تابع ارزيابي در فاز ورودي همبستگي بين خروجي نرون مخفي و جمع خطاي شبکه  و براي فاز خروجي جمع خطاي شبکه ميباشد. براي جفت گيري از روش استاندارد 2-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”

پیام بگذارید

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

ninety two − 87 =