نمايش پست تنها
قديمي ۰۷-۱۹-۱۳۸۸, ۰۱:۱۳ بعد از ظهر   #2 (لینک دائم)
Astaraki Female
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Smile آشنايي با شبكه‌هاي عصبي (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 انتخاب كرد. در اين حالت، خروجي چنين شبكه‌اي فقط مي‌تواند بر حسب ورودي‌هاي متفاوت، مقدار يك يا صفر باشد.


شكل 3

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

پياده‌سازي‌هاي الكترونيكي نرون‌هاي مصنوعي



شكل 4

نرم‌افزارهايي كه در آن‌ها از شبكه‌هاي عصبي استفاده شده است، نرون‌هاي شبكه را المان پردازنده (Processing element) مي‌نامند. به‌طور معمول در محصولات نرم‌افزاري، المان‌هاي پردازنده قابليت بسيار بيشتري از نمونه ساده‌شده‌اي كه در بخش‌هاي پيشين تشريح كرديم، دارند. در شكل شماره 4، نمايي با جزئيات بيشتر از يك نرون مصنوعي را نشان مي‌دهد.
در اين مدل، ورودي‌ها در نخستين گام، در ضريب وزني (weighting factor) متناظر خود ضرب مي‌شوند. در مرحله بعد، ورودي‌هايي كه تغيير مقياس داده‌اند وارد واحدي مي‌شوند كه در آن سيگنال‌هاي ورودي با هم تركيب مي‌شوند. به‌طور معمول عمل تركيب در اين واحد همان عمل جمع جبري است، اما در اصول، مي‌توان در اين واحد، ورودي‌ها را به روش‌هاي ديگري علاوه بر عمل جمع معمولي نيز با يكديگر تركيب كرد. مثلاً مي‌توان به‌جاي عمل جمع، از عمل متوسط گيري، انتخاب بزرگترين، انتخاب كوچك‌ترين، عمل OR يا‌ AND منطقي هم استفاده كرد. در واقع هدف نهايي در اين واحد آن است كه از تعداد n ورودي، يك سيگنال خروجي براي ارائه به بخش‌هاي بعدي فرايند، به‌دست آيد. انتخاب نوع <عمل> در اين واحد، موضوع دقيقي است كه كاملاً به كاربرد مسأله وابسته است.



به‌طور معمول در نرم‌افزارهاي تجاري، امكان انتخاب و حتي ساختن توابع گوناگون براي اين واحد، از طرف نرم‌افزار به كاربران داده مي‌شود. حتي مي‌توان كاربردهايي يافت كه در آنها، عمل تركيب در اين واحد، وابسته به زمان باشد و در زمان‌هاي گوناگون پردازش مسأله، عمليات مختلفي براي تركيب كردن ورودي‌ها به‌كار برده ‌شوند.
در هر صورت، پس از آنكه ورودي‌ها با يكديگر تركيب شدند، سيگنال حاصل به واحد ديگري كه در آن تابع انتقال يا Transfer Function به سيگنال اعمال مي‌شود، هدايت مي‌گردد. خروجي اين بخش، سيگنال‌هاي حقيقي خواهند بود. بدين ترتيب جعبه‌اي در دست خواهيم داشت كه تعداد n عدد سيگنال ورودي را به m عدد سيگنال خروجي تبديل مي‌كند. در عمل توابع انتقالي كه در بخش انتهايي نمودار شكل 4 به‌كار برده مي‌شوند، معمولاً يكي از توابع سينوسي، تانژانت هذلولي، sigmoid و نظاير اين‌ها است. در تصوير شماره 5، نمونه‌اي از يك تابع انتقال از نوع sigmoid نمايش داده شده است. همانطور كه در اين شكل مشاهده مي‌كنيد، اين تابع انتقال، سيگنال خروجي واحد تركيب را به سيگنال خروجي تبديل مي‌كند كه مقدار (يا اندازه آن) بين صفر و يك مي‌تواند باشد.
در عمل، سيگنالِ خروجي يك المان پردازنده مي‌تواند برحسب نوع كاربرد، به المان‌هاي پردازشي ديگر و يا به اتصالات ديگر خارج از شبكه عصبي هدايت شود. در واقع تمامي شبكه‌هاي عصبي بر اساس ساختار المان‌هاي پردازشي فوق كار مي‌كنند.
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده است:
shide (۰۱-۲۳-۱۳۹۰)