همونطور كه مي دونيد قرار دادن Hidden Layer اختياري هست و در يك شبكه ي عصبي لزوماً لايه ي مياني نداريم. براي اينكه بهتر متوجه بشيد يك مثال خيلي ساده با پرسپترون مي زنم.
در صورتي كه اطلاعي از پرسپترون نداري مي توني به اين لينك مراجعه كني:
سیاوش محمودیان - بلاگ - مقدمه ای بر شبکه های عصبی
يك پرسپترون ساده بدون هيچ لايه ي مياني با دو ورودي و يك خروجي مي تونه فضا رو با يك خط راست به دو بخش تقسيم كنه! در لينك بالا مثال OR نشون داده شده. اما حالا فرض كن مي خواي فضا رو به يك خط شكسته به دو قسمت تقسيم كني! در اين صورت ديگه با يك پرسپترون نمي توني اين كار رو انجام بدي و بايد حتماً يك لايه اضافه كني. حالا اگر بخواي فضا رو با يك دايره به دو قسمت تقسيم كني (مثلاً داخل دايره خروجيش يك بشه و بيرون از اون صفر بشه) به خاطر پيچيده تر شدن مرز بين 1 و 0 باز بايد به تعداد لايه ها اضافه كني!
پس مي تونيم نتيجه بگيريم لايه هاي مياني بستگي به پيچيدگي تابعي داره كه مي خواي با توجه به ورودي ها ازش خروجي بگيري. مثلاً OR رو مي توني با يك لايه (يا بيشتر البته) شبيه سازي كني، اما در پردازش تصوير يك لايه پاسخ گو نيست! مثلاً مي خواي يك شبكرو طوري آموزش بدي كه اگر عكس صورت بود خروجي 1 داشته باشيم و اگر صورت نبود 0 داشته باشيم... درسته كه تعداد نرون هاي لايه ي خروجي 1 عدد هست اما با بدون لايه هاي مياني هيچ وقت نمي تونيم اين كار رو انجام بديم.
از طرف ديگه زياد كردن بيش از اندازه ي لايه هاي مياني باعث ايجاد خطا ميشه و ما همگرا به جواب نميشيم! پس معمولاً از تعداد لايه هاي كم شروع مي كنيم و در صورتي كه به جواب نرسيديم تعداد لايه ها و نرون هاي هر لايرو زياد تر مي كنيم.
در حال حاضر نرم افزار هايي مثل NeuroSolutions وجود دارند كه با توجه به ورودي ها و خروجي ها سعي مي كنند با بكارگيري الگوريتم ژنتيك بهترين تعداد لايه هاي مياني و تعداد نرون هاي اين لايه ها رو كه خطاي كمتري نسبت به خروجي ها دارند بدست بياورند!
اگر قسمتي هنوز برات گنگ بود حتماً بگو...