جستجوی پیشرفته               
 
آشنايي با شبکه‌هاي عصبي (Neural Networks) - قسمت اول

اشاره :
شبکه‌هاي عصبي را مي‌توان با اغماض زياد، مدل‌هاي الکترونيکي از ساختار عصبي مغز انسان ناميد. مکانيسم فراگيري و آموزش مغز اساساً بر تجربه استوار است. مدل‌هاي الکترونيکي شبکه‌هاي عصبي طبيعي نيز بر اساس همين الگو بنا شده‌اند و روش برخورد چنين مدل‌هايي با مسائل، با روش‌هاي محاسباتي که به‌طور معمول توسط سيستم‌هاي کامپيوتري در پيش گرفته شده‌اند، تفاوت دارد. مي‌دانيم که حتي ساده‌ترين مغز‌هاي جانوري هم قادر به حل مسائلي هستند که اگر نگوييم که کامپيوترهاي امروزي از حل آنها عاجز هستند، حداقل در حل آنها دچار مشکل مي‌شوند. به عنوان مثال، مسائل مختلف شناسايي الگو، نمونه‌اي از مواردي هستند که روش‌هاي معمول محاسباتي براي حل آنها به نتيجه مطلوب نمي‌رسند. درحالي‌که مغز ساده‌ترين جانوران به‌راحتي از عهده چنين مسائلي بر مي‌آيد. تصور عموم کارشناسان IT بر آن است که مدل‌هاي جديد محاسباتي که بر اساس شبکه‌هاي عصبي بنا مي‌شوند، جهش بعدي صنعت IT را شکل مي‌دهند. تحقيقات در اين زمينه نشان داده است که مغز، اطلاعات را همانند الگو‌ها (pattern) ذخيره مي‌کند. فرآيند ذخيره‌سازي اطلاعات به‌صورت الگو و تجزيه و تحليل آن الگو‌، اساس روش نوين محاسباتي را تشکيل مي‌دهند. اين حوزه از دانش محاسباتي (computation) به هيچ وجه از روش‌هاي برنامه‌نويسي سنتي استفاده نمي‌کند و به‌جاي آن از شبکه‌هاي بزرگي که به‌صورت موازي آرايش شده‌اند و تعليم يافته‌اند، بهره مي‌جويد. در ادامه اين نوشته به اين واژگان که در گرايش شبکه‌هاي عصبي، معاني ويژه‌اي دارند، بيشتر خواهيم پرداخت.

شباهت با مغز
اگرچه مکانيسم‌هاي دقيق کارکرد مغز انسان (يا حتي جانوران) به‌طور کامل شناخته شده نيست، اما با اين وجود جنبه‌هاي شناخته شده‌اي نيز وجود دارند که الهام بخش تئوري شبکه‌هاي عصبي بوده‌اند. به‌عنوان مثال، يکي ازسلول‌هاي عصبي، معروف به نرون (Neuron) است که دانش بشري آن را به‌عنوان سازنده اصلي مغز مي‌انگارد. سلول‌هاي عصبي قادرند تا با اتصال به‌يکديگر تشکيل شبکه‌هاي عظيم بدهند. گفته مي‌شود که هر نرون مي‌تواند به هزار تا ده هزار نرون ديگر اتصال يابد (حتي در اين مورد عدد دويست هزار هم به عنوان يک حد بالايي ذکر شده است).
قدرت خارق‌العاده مغز انسان از تعداد بسيار زياد نرون‌ها و ارتباطات بين آنها ناشي مي‌شود.
ساختمان هر يک از نرون‌ها نيز به‌تنهايي بسيار پيچيده است. هر نرون از بخش‌ها و زير‌سيستم‌هاي زيادي تشکيل شده است که از مکانيسم‌هاي کنترلي پيچيده‌اي استفاده مي‌کنند. سلول‌هاي عصبي مي‌توانند از طريق مکانيسم‌هاي الکتروشيميايي اطلاعات را انتقال دهند. برحسب مکانيسم‌هاي به‌کاررفته در ساختار نرون‌ها، آنها را به بيش از يکصدگونه متفاوت طبقه‌بندي مي‌کنند. در اصطلاح فني، نرون‌ها و ارتباطات بين آنها، فرايند دودويي(Binary)، پايدار (Stable) يا همزمان (Synchronous) محسوب نمي‌شوند.
در واقع، شبکه‌هاي عصبي شبيه‌سازي شده يا کامپيوتري، فقط قادرند تا بخش کوچکي از خصوصيات و ويژگي‌هاي شبکه‌هاي عصبي بيولوژيک را شبيه‌سازي کنند. در حقيقت، از ديد يک مهندس نرم‌افزار، هدف از ايجاد يک شبکه عصبي نرم‌افزاري، بيش از آنکه شبيه‌سازي مغز انسان باشد، ايجاد مکانيسم ديگري براي حل مسائل مهندسي با الهام از الگوي رفتاري شبکه‌هاي بيولوژيک است.

روش کار نرون‌ها 
در شکل يک، نماي ساده شده‌اي از ساختار يک نرون بيولوژيک نمايش داده شده است. به‌طور خلاصه، يک نرون بيولوژيک، پس از دريافت سيگنال‌هاي  ورودي (به‌ شکل يک پالس الکتريکي) از سلول‌هاي ديگر، آن سيگنال‌ها را با يکديگر ترکيب کرده و پس از انجام يک عمل (operation) ديگر بر روي سيگنال ترکيبي، آن را به‌صورت خروجي ظاهر مي‌سازد.
همان‌طور که در تصوير مشاهده مي‌کنيد، نرون‌ها از چهار بخش اصلي ساخته شده‌اند. دندريت‌ها (Dendrite)، سوما (Soma)، اکسان (Axon) و بالاخره، سيناپس (synapse) دندريت‌ها، همان اجزايي هستند که به‌شکل رشته‌هاي طويل از مرکز سلول به اطراف پراکنده مي‌شوند. دندريت‌ها نقش کانال‌هاي ارتباطي را براي انتقال‌دادن سيگنال‌هاي الکتريکي به مرکز سلول بر عهده دارند. در انتهاي دندريت‌ها، ساختار بيولوژيکي ويژه‌اي به‌نام سيناپس واقع شده است که نقش دروازه‌هاي اتصالي کانال‌هاي ارتباطي را ايفا مي‌کند. در واقع سيگنال‌هاي گوناگون از طريق سيناپس‌ها و دندريت‌ها به مرکز سلول منتقل مي‌شوند و در آنجا با يکديگر ترکيب مي‌شوند. عمل ترکيب که به آن اشاره کرديم، مي‌تواند يک عمل جمع جبري ساده باشد. اصولاً اگر چنين نيز نباشد، در مدل‌سازي رياضي مي‌توان آنرا يک عمل جمع معمولي در نظر گرفت که پس از آن تابع ويژه‌اي بر روي سيگنال اثر داده مي‌شود و خروجي به شکل سيگنال الکتريکي متفاوتي از طريق اکسان (و سيناپس آن) به سلول‌هاي ديگر انتقال داده مي‌شود.

البته تحقيقات جديد نمايانگر اين واقعيت هستند که نرون‌هاي بيولوژيک بسيار پيچيده‌تر از مدل ‌ساده‌اي هستند که در بالا تشريح شد. اما همين مدل ساده مي‌تواند زيربناي مستحکمي براي دانش شبکه‌هاي عصبي مصنوعي (Artificial Neural Network = ANN) تلقي گردد و متخصصان گرايش شبکه‌هاي عصبي يا هوش مصنوعي مي‌توانند با پيگيري کارهاي دانشمندان علوم زيست‌شناسي، به بنيان‌گذاري ساختار‌هاي مناسب‌تري در آينده دست بزنند.

مدل رياضي 
در متون فني براي نمايش مدل ساده‌اي که در بالا‌ تشريح گرديد، به‌طور معمول از شکلي مشابه شکل 2 استفاده مي‌شود. در اين شکل کلاسيک، از علامت p براي نشان دادن يک سيگنال ورودي استفاده مي‌شود. در واقع در اين مدل، يک سيگنال ورودي پس از تقويت (يا تضعيف) شدن به اندازه پارامتر w، به‌صورت يک سيگنال الکتريکي با اندازه pw وارد نرون مي‌شود. به‌جهات ساده‌سازي مدل رياضي، فرض مي‌شود که در هسته سلول عصبي، سيگنال ورودي با سيگنال ديگري به اندازه b جمع مي‌گردد. در واقع سيگنال b خود به معني آن است که سيگنالي به اندازه واحد در پارامتري مانند b ضرب (تقويت يا تضعيف) مي‌شود. مجموع حاصل، يعني سيگنالي به اندازه pw + b، قبل از خارج شدن از سلول تحت عمل يا فرآيند ديگري واقع مي‌شود که در اصطلاح فني به آن تابع انتقال (Transfer Function) مي‌گويند. اين موضوع در شکل به‌وسيله جعبه‌اي نمايش داده شده است که روي آن علامت f قرار داده شده است. ورودي اين جعبه همان سيگنال pw + b است و خروجي آن يا همان خروجي سلول، با علامت a  نشانه گذاري شده است. در رياضي، بخش آخر مدل‌سازي توسط رابطه (a = f(pw + b نمايش داده مي‌شود. پارامتر w يا همان ضريبي که سيگنال ورودي p در آن ضرب مي‌شود، در اصطلاح رياضي به نام پارامتر وزن يا weight  نيز گفته مي‌شود. 

زماني‌که  از  کنار هم قرار دادن تعداد بسيار زيادي از سلول‌هاي فوق يک شبکه عصبي بزرگ ساخته شود، شبکه‌اي در دست خواهيم داشت که رفتار آن علاوه بر تابع خروجي f، کاملاً به مقادير w و b وابسته خواهد بود. در چنين شبکه بزرگي، تعداد بسيار زيادي از پارامترهاي w و b بايد توسط طراح شبکه مقداردهي شوند. اين پروسه از کار، در اصطلاح دانش شبکه‌هاي عصبي، به فرآيند يادگيري معروف است. در واقع در يک آزمايش واقعي، پس از آن‌که سيگنال‌هاي ورودي چنين شبکه‌ بزرگي اتصال داده شدند، طراح شبکه با اندازه‌گيري خروجي و با انتخاب پارامترهايw و b به‌گونه‌اي که خروجي مطلوب به‌دست آيد، شبکه را <آموزش> مي‌دهد. به اين ترتيب پس از آنکه چنين شبکه به ازاي مجموعه‌اي از ورودي‌ها براي ساختن خروجي‌هاي مطلوب <آموزش> ديد، مي‌توان از آن براي حل مسائلي که از ترکيب متفاوتي از ورودي‌ها ايجاد مي‌شوند، بهره برد.
تابع f مي‌تواند بر حسب کاربردهاي گوناگون به‌‌طور رياضي، به شکل ‌هاي متفاوتي انتخاب شود. در برخي از کاربردها، پاسخ مسائل از نوع دودويي است. مثلاً مسأله به‌گونه‌اي است که خروجي شبکه عصبي بايد چيزي مانند <سياه> يا <سفيد> (يا <آري> يا <نه>) باشد. در واقع چنين مسائلي نياز به آن دارند که ورودي‌هاي دنياي واقعي به مقادير گسسته مانند مثال فوق تبديل شوند. حتي مي‌توان حالاتي را در نظر گرفت که خروجي دودويي نباشد، اما همچنان گسسته باشد. به عنوان مثال، شبکه‌اي را در نظر بگيريد که خروجي آن بايد يکي از حروف الفبا، مثلاً  از بين کاراکترهاي اسکي (يا حتي يکي از پنجاه هزار کلمه متداول زبان انگليسي) باشد. در چنين کاربردهايي، روش حل مسئله نمي‌تواند صرفاً بر جمع جبري سيگنال‌هاي ورودي تکيه نمايد. در اين کاربردها، ويژگي‌هاي خواسته شده فوق، در تابع خروجي يا تابع انتقال f گنجانيده مي‌شوند. مثلاً اگر قرار باشد خروجي فقط يکي از مقادير صفر يا يک را شامل شود، در اين صورت مي‌توان تابع خروجي شبکه عصبي را به ‌شکل بخش a  شکل شماره 3 انتخاب کرد. در اين حالت، خروجي چنين شبکه‌اي فقط مي‌تواند بر حسب ورودي‌هاي متفاوت، مقدار يک يا صفر باشد. 
 
در گروه ديگري از مسائلي که حل آن‌ها به شبکه‌هاي عصبي واگذار مي‌شود، خروجي شبکه عصبي الزاماً بين مقادير معلوم و شناخته شده‌ واقع نمي‌شود. مسائلي از نوع شناسايي الگو‌هاي تصويري، نمونه‌اي از چنين مواردي محسوب مي‌شوند. شبکه‌هاي عصبي در اين موارد، بايد به‌گونه‌اي باشند که قابليت توليد مجموعه نامتناهي از پاسخ‌ها را داشته باشند. رفتار حرکتي يک روبات نمونه‌اي از <هوشي> است که چنين شبکه‌هاي عصبي مي‌توانند فراهم آورند. اما در چنين شبکه‌هايي هم لازم خواهد بود که خروجي بين مقادير مشخصي محدود شده باشد (موضوع محدود شدن خروجي بين دو مقدار حدي ماکزيمم و مينيمم را در اينجا با موضوع قبلي اشتباه نگيريد. در اين مورد خروجي مسأله اساساً  گسسته نيست و حتي در بين چنين مقادير حدي، مي‌توان به تعداد نامتناهي خروجي دست يافت). اهميت اين موضوع زماني آشکار مي‌شود که از مثال واقعي کمک گرفته شود. فرض کنيد قراراست از شبکه عصبي براي کنترل حرکت بازوي يک روبات استفاده شود. در صورتي‌که خروجي يک شبکه عصبي براي کنترل نيروي حرکتي به‌کار گرفته شود، طبيعي خواهد بود که اگر خروجي شبکه محدود نشده باشد، ممکن است بازوي روبات بر اثر حرکت بسيار سريع، به خود و يا محيط اطراف آسيب برساند. در چنين مواردي ممکن است از تابع انتقال به‌شکل بخش b شکل شماره 3 استفاده شود.
قبل از آنکه به بخش ديگري از موضوع شبکه‌هاي عصبي بپردازيم، بايد يک نکته را يادآوري کنيم که همان‌طور که در ابتداي اين بخش تشريح شد، سلول‌هاي عصبي داراي ورودي‌هاي متعددي هستند و خروجي آنها نيز الزاماً محدود به يک خروجي نيست. بر اين اساس زماني که بخواهيم از مدل‌سازي رياضي براي مدل کردن يک سلول عصبي استفاده کنيم، به‌جاي آن‌که همانند شکل 2 از يک ورودي p و يک خروجي a استفاده کنيم، از يک بردار p و يک بردار a سخن مي‌گوييم. بدين ترتيب بدون آنکه نياز به اعمال تغييري در اين تصوير داشته باشيم، مي‌توانيم از آن براي مدل‌سازي سلولي با n ورودي (p1,p2,p3 . . . pn) و به همين ترتيب m خروجي (a1,a2,am) استفاده کنيم. توجه داشته باشيد که در اين صورت، تعداد عناصر b و w نيز به تناسب افزايش مي‌يابند و هر يک به n عدد افزايش مي‌يابند.
 
پياده‌سازي‌هاي الکترونيکي نرون‌هاي مصنوعي 
نرم‌افزارهايي که در آن‌ها از شبکه‌هاي عصبي استفاده شده است، نرون‌هاي شبکه را المان پردازنده (Processing element) مي‌نامند. به‌طور معمول در محصولات نرم‌افزاري، المان‌هاي پردازنده قابليت بسيار بيشتري از نمونه ساده‌شده‌اي که در بخش‌هاي پيشين تشريح کرديم، دارند. در شکل شماره 4، نمايي با جزئيات بيشتر از يک نرون مصنوعي را نشان مي‌دهد.
در اين مدل، ورودي‌ها در نخستين گام، در ضريب وزني (weighting factor) متناظر خود ضرب مي‌شوند. در مرحله بعد، ورودي‌هايي که تغيير مقياس داده‌اند وارد واحدي مي‌شوند که در آن سيگنال‌هاي ورودي با هم ترکيب مي‌شوند. به‌طور معمول عمل ترکيب در اين واحد همان عمل جمع جبري است، اما در اصول، مي‌توان در اين واحد، ورودي‌ها را به روش‌هاي ديگري علاوه بر عمل جمع معمولي نيز با يکديگر ترکيب کرد. مثلاً مي‌توان به‌جاي عمل جمع، از عمل متوسط گيري، انتخاب بزرگترين، انتخاب کوچک‌ترين، عمل OR يا‌ AND منطقي هم استفاده کرد. در واقع هدف نهايي در اين واحد آن است که از تعداد n ورودي، يک سيگنال خروجي براي ارائه به بخش‌هاي بعدي فرايند، به‌دست آيد. انتخاب نوع <عمل> در اين واحد، موضوع دقيقي است که کاملاً به کاربرد مسأله وابسته است. 

به‌طور معمول در نرم‌افزارهاي تجاري، امکان انتخاب و حتي ساختن توابع گوناگون براي اين واحد، از طرف نرم‌افزار به کاربران داده مي‌شود. حتي مي‌توان کاربردهايي
يافت که در آنها، عمل ترکيب در اين واحد، وابسته به زمان باشد و در زمان‌هاي گوناگون پردازش مسأله، عمليات مختلفي براي ترکيب کردن ورودي‌ها به‌کار برده ‌شوند.
در هر صورت، پس از آنکه ورودي‌ها با يکديگر ترکيب شدند، سيگنال حاصل به واحد ديگري که در آن تابع انتقال يا Transfer Function به سيگنال اعمال مي‌شود، هدايت مي‌گردد. خروجي اين بخش، سيگنال‌هاي حقيقي خواهند بود. بدين ترتيب جعبه‌اي در دست خواهيم داشت که تعداد n عدد سيگنال ورودي را به m عدد سيگنال خروجي تبديل مي‌کند. در عمل توابع انتقالي که در بخش انتهايي نمودار شکل 4 به‌کار برده مي‌شوند، معمولاً يکي از توابع سينوسي، تانژانت هذلولي، sigmoid و نظاير اين‌ها است. در تصوير شماره 5، نمونه‌اي از يک تابع انتقال از نوع sigmoid نمايش داده شده است. همانطور که در اين شکل مشاهده مي‌کنيد، اين تابع انتقال، سيگنال خروجي واحد ترکيب را به سيگنال خروجي تبديل مي‌کند که مقدار (يا اندازه آن) بين صفر و يک مي‌تواند باشد.
در عمل، سيگنالِ خروجي يک المان پردازنده مي‌تواند برحسب نوع کاربرد، به المان‌هاي پردازشي ديگر و يا به اتصالات ديگر خارج از شبکه عصبي هدايت شود. در واقع تمامي شبکه‌هاي عصبي بر اساس ساختار المان‌هاي پردازشي فوق کار مي‌کنند. در قسمت بعدي اين مقاله به تشريح عمليات در شبکه‌هاي عصبي و آموزش اين شبکه‌ها مي‌پردازيم.

www.generation5.org/content/2000/nnintro.asp
http://cortex.snowseed.com/neuralnetworks.htm
www.cs.stir.ac.uk/lss/NNIntro/InvSlides.html
:ARTIFICIAL NEURAL NETWORKS TECHNOLOGY by
Dave Anderson and George McNeill

منبع: ماهنامه شبکه - بهمن ۱۳۸۳ شماره 51

 

صفحه اصلی | پروژه های آماده  | ورود به سایت | عضویت | سفارش پروژه | ارسال پروژه | معرفی سایت به دیگران با SMS | تبادل لینک | توانایی ها | تماس با ما 
کلیه حقوق متعلق به سایت IranProject.Ir می باشد ، استفاده از مطالب و پروژه های سایت با ذکر منبع بلامانع می باشد.