شبکه عصبی چند لایه
همانگونه كه پيشتر و در طی اين سلسله مقالات ديديم آنچه كه عموما و در طبيعت به نام هوشمندی شناخته میشود خصلتی پيوندگرا (Connectionism) دارد، بدين معنی كه اطلاعات كاملا به صورت موازی و نيز توزيع شده پردازش میشوند.
شبكههای عصبی مصنوعی(ANN: Artificial Neural Networks) درواقع از ساختار درهم و تودهای مغز پستانداران الهام گرفته شده است، كه در آن ميليونها سلول عصبی (نورون) از طريق ارتباطاتی كه با يكديگر دارند (سيناپسها)، به حل مسائل يا ذخيرهسازی اطلاعات میپردازند. اين شبكهها مجموعهای از مدلهای متفاوتند كه توسط رياضيدانان و مهندسين برای شبيهسازی بخشی از عملكرد مغز پيشنهاد شدهاند. ساختار اصلی شبكههای عصبی مصنوعی بر اساس دو جزء اصلی گرهها (نورونها) و ارتباطات وزندار(سيناپسها) میباشد(شكل 1).
يادگيری در سيستمهای طبيعی به صورت تطبيقی اتفاق میافتد. بدين معنی كه در اثر يادگيري، در سيناپسها تغييراتی رخ میدهد. عين همين مسئله نيز در مورد شبكههای عصبی مصنوعی نيز صادق است. در اين شبكهها يادگيری از طريق مثال انجام میشود(Learning By Example). بدين معنی كه اغلب(و نه همواره) مجموعهای از ورودی و خروجیهای درست به شبكه عصبی داده میشود و شبكه عصبی با استفاده ازين مثالها، وزن(Weight) ارتباطات خود را به گونهای تغيير میدهد كه در صورت دادن ورودیهای جديد پاسخهای درستی را توليد كند. در واقع دانش شبكه عصبی در وزن ارتباطات آن ذخيره میشود.
شبكههای عصبی از دهه 50 شناخته شده بودند اما تنها در اواسط دهه 80 بود كه الگوريتمها و روشهای مربوط به شبكههای عصبی مصنوعی به درجهای از پيشرفت رسيد كه در حل مسائل واقعی از آنها استفاده شد.
امروزه شبكههای عصبی در كاربردهای مختلفی نظير مسائل تشخيص الگو(Pattern Recognition) كه خود شامل مسائلی مانند تشخيص خط(Character Recognition)، شناسايی گفتار(Speech Recognition)، پردازش تصوير(Image Processing) و مسائلی ازاين دست میشود و نيز مسائل دستهبندي(Classification) مانند دستهبندی(Classification Problems) متون و يا تصاوير، به كار میروند. در كنترل يا مدلسازی سيستمهايی كه ساختار داخلی ناشناخته يا بسيار پيچيدهای دارند نيز به صورت روز افزون از شبكههای عصبی مصنوعی استفاده میشود. به عنوان مثال میتوان در كنترل ورودی يك موتور از يك ANN استفاده نمود كه در اين صورت شبكه عصبی خود تابع كنترل را ياد خواهد گرفت.
مزيت اصلی استفاده از شبكه عصبی در هريك از مسائل فوق قابليت فوقالعاده شبكه عصبی در يادگيری و نيز پايداری شبكه عصبی در مقابل اغتشاشات ناچيز وروداست. به عنوان مثال اگر از روشهای عادی برای تشخيص دست خط يك انسان استفاده كنيم ممكن است در اثر كمی لرزش دست اين روشها به تشخيص غلطی برسند در حالی كه يك شبكه عصبی كه به صورت مناسب آموزش داده شده است حتی در صورت چنين اغتشاشی نيز به پاسخ درست خواهد رسيد.
به صورت خلاصه میتوان گفت كه شبكههای عصبی در حل سه گروه از مسائل بيشترين كاربرد را يافتهاند: مسائلی كه دارای راه حل الگوريتميك نيستند، مسائلی كه راه حل الگوريتميك بسيار پيچيدهای دارند و نيز مسائلی كه انسان در حل آنها موفقتر از ماشين عمل میكند.
در حال حاضر تعداد بسيار زيادی از انواع مختلف شبكههای عصبی مصنوعی وجود دارند كه به صورت خلاصه عبارتند از: شبكههای پرسپترون چند لايه (Multi Layer Perceptron)، كوهونن، هاپفيلد... كه اين شبكهها نيز خود با روشهای مختلفی آموزش میبينند مانند روش پسخورد خطا (Error Back propagation).
میتوان شبكههای عصبی را بر اساس شيوه پردازش اطلاعات در آنها، به دو گروه شبكههای Feed Forward و نيز شبكههای Recurrent (كه در آنها از فيدبك خروجی استفاده شده است) تقسيم كرد.
نوع يادگيری در اين شبكههای نيز میتواند يك معيار برای دستهبندی آنها باشد. يادگيری در برخی ازين شبكهها با نظارت(Supervised) میباشد و در برخی ديگر به صورت متكی به خود(Self Organizing). در ادامه به شرح هر يك ازين مفاهيم خواهيم پرداخت.
ايده اصلی شبكههای عصبی
يكی از مهمترين تفاوتهای حافظه انسان با حافظه كامپيوتر در نوع آدرس دهی اين دو نوع حافظه میباشد. در حافظه كامپيوتر اساس كار بر پايه آدرس خانههای حافظه يا آدرس اطلاعات بر روی حافظه دائم میباشد. به عنوان مثال برای دستيابی به يك تصوير يا متن خاص، بايد آدرس حافظه يا فايل مربوط به آن تصوير يا متن را داشته باشيد. اما با داشتن خود تصوير يا متن نمیتوانيد به سادگی آدرس حافظه مربوطه را بيابيد (البته به اين معنی كه اين كار با يك قدم قابل انجام نيست، وگرنه میتوانيد تصوير يا متن مورد نظر را با تمام موارد موجود در حافظه مقايسه كرده و در صورت تطبيق آدرس را بيابيد. ناگفته پيداست كه انجام چنين كاری بسيار زمان بر و پر هزينه میباشد).
اما به سازوكار همين عمل در ذهن انسان دقت كنيد. با ديدن يك تصوير ناقص اغلب بلافاصله كامل آنرا به خاطر میآوريد يا با ديدن تصوير يك شخص سريعا نام او را میگوييد، يا با خواندن يك متن سريعا تمامی مطالب مربوط به آن را به ذهن میآوريد. در واقع ذهن انسان يك نوع حافظه آدرسدهی شده بر اساس محتواست (Content Addressable Memory). همانگونه كه از اين نام مشخص است در اين نوع حافظه، با دادن محتوای يك خانه حافظه، بلافاصله آدرس آن به عنوان خروجی داده میشود.
حال ببينيم كه داشتن چنين حافظهای اصولا به چه كار میآيد. فرض كنيد كه حرف "A" قرار است توسط ماشين از ميان مجموعهای از حروف شناسايی شود. در حالت بسيار ساده فرض بر اين است كه شكل تمامی حروف الفبا در حافظه ماشين موجود است. بنابراين ماشين خيلی ساده با مقايسه ورودی فعلی با اشكال موجود در حافظه تشخيص میدهد كه حرف ورودی جاری "A" هست يا خير. اما همانگونه كه پيشتر گفتيم در صورتی كه الگوهای حروف موجود در حافظه بسيار زياد باشد، مقايسه ورودی با تكتك الگوهای ذخيره شده عملا بسيار زمان بر است و مقدور نيست، بنابراين نياز به حافظه آدرسدهی شده بر اساس محتوا خواهيم داشت به اين ترتيب كه اين حافظه الگوی جاری را گرفته و بلافاصله پاسخ میدهد كه آيا اين الگو در حافظه موجود است يا خير.
اندكی دقت در مثال اخير نشان دهنده پيچيدگی مسائلی از اين دست است. تشخيص حرف "A" حتی به صورت چاپی هم توسط ماشين اساسا كار سادهای نيست. دقت كنيد به تنوع اشكال اين حرف، سايز، خميدگیها، دقت چاپگرها، .... و پيچيدگی مسئله، زمانی چند برابر میشود كه كار به تشخيص دستنويس حروف كشيده شود. حال اگر حافظه آدرسدهی شده بر اساس محتوای ما، دارای اين توانايی باشد كه حتی اگر شكل حرف "A" كمی هم دچار اعوجاج شده باشد باز هم آنرا تشخيص دهد، حل مسئله تا حدود زيادی سادهتر شده است. شبكههای عصبی دارای چنين خصلتی هستند.
حال ببينيم كه ايده اصلی عملكرد اين شبكهها چگونه است؟
هاپفيلد (HopField) در 1982 طرح اصلی حافظهای را ارائه كرد كه دارای خصوصيات فوقالذكر باشد. اين حافظه يا شبكه عصبی دارای دو عنصر گره و يال میباشد. هر گره دارای دو وضعيت فعال و غيرفعال است(صفر يا يك) و هر يال نيز دارای يك وزن میباشد (شكل 2). يالهای با وزن مثبت بين دو گره تا گره فعال ديگری را تحريك میكنند و يالهای با وزن منفی بين دو گره، گره فعال ديگری را غير فعال میسازند.
نحوه عملكرد شبكه بدين صورت است كه ابتدا يك گره به تصادف انتخاب میشود. اگر يك يا بيشتر از همسايههای آن گره فعال بودند جمع وزندار يالهای منتهی به آن گرهها حساب میشود. اگر اين جمع مثبت بود گره فعال میشود و در غير اين صورت گره مذكور غيرفعال باقی خواهد ماند. سپس مجددا يك گره ديگر به تصادف انتخاب شده و همين عمليات آنقدر تكرار میشود تا شبكه به يك حالت پايدار برسد. بعنوان مثال اگر شبكه شكل 2 شروع به كار كند گره پايين سمت چپ گره بالايی خود را فعال خواهد كرد و اين گره نيز به نوبه خود خواهد كوشيد تا گره بالاتر از خود را فعال كند اما گره بالايی به دليل سيگنال توقيفی (Inhibitory) ارسالی از گره بالای سمت راست تحريك نخواهد شد و اين سيكل همينطور تا رسيدن به حالت پايدار ادامه میيابد.
نكته در اينجا است كه اين شبكه بيش از چهار حالت پايدار ندارد (شكل 3). يعنی از هر حالت ابتدايی كه شروع كنيم نهايتا شبكه به يكی از اين چهار حالت ميل خواهد كرد. تز اصلی هاپفيلد نيز در واقع همين بود كه از هر حالت ابتدايی و با هر وزنی از يالها كه شروع كنيم، شبكه در نهايت به حالت پايدار خواهد رسيد.
-شکل شماره 2
- شکل شماره 3
با دقت در كل ايده اين شبكه میتوان گفت كه در واقع اين شبكه به صورت نوعی حافظه عمل میكند، حافظهای كه اين چهار الگو را در خود ذخيره كرده است. علاوه بر اين شبكه فوق يك حافظه آدرسدهی شده بر اساس محتواست. به اين معنی كه اگر از يكی ازين چهار حالت به صورت ناقص شروع به كار كنيم شبكه به سوی شبيهترين حالت ميل خواهد كرد و اين به اين معناست كه شبكه قادر به شناسايی يك الگوی ناقص است.
شكل 4 نشان میدهد كه اين شبكه در صورتی كه از الگوی ناقص سمت چپ شروع به كار كند در نهايت به الگوی كامل سمت راست خواهد رسيد(به خاطر داريد كه هدف ما يافتن روشی بود كه ما را از شكل پر اغتشاش حرف "A" به خود آن حرف برساند).
-شکل شماره 4