پنجشنبه, ۱۳ اردیبهشت, ۱۴۰۳ / 2 May, 2024
مجله ویستا

آشنایی با شبکه‌های عصبی (Neural Networks)


آشنایی با شبکه‌های عصبی (Neural Networks)
شبكه‌های عصبی را می‌توان با اغماض زیاد، مدل‌های الكترونیكی از ساختار عصبی مغز انسان نامید. مكانیسم فراگیری و آموزش مغز اساساً بر تجربه استوار است. مدل‌های الكترونیكی شبكه‌های عصبی طبیعی نیز بر اساس همین الگو بنا شده‌اند و روش برخورد چنین مدل‌هایی با مسائل، با روش‌های محاسباتی كه به‌طور معمول توسط سیستم‌های كامپیوتری در پیش گرفته شده‌اند، تفاوت دارد. می‌دانیم كه حتی ساده‌ترین مغز‌های جانوری هم قادر به حل مسائلی هستند كه اگر نگوییم كه كامپیوترهای امروزی از حل آنها عاجز هستند، حداقل در حل آنها دچار مشكل می‌شوند. به عنوان مثال، مسائل مختلف شناسایی الگو، نمونه‌ای از مواردی هستند كه روش‌های معمول محاسباتی برای حل آنها به نتیجه مطلوب نمی‌رسند. درحالی‌كه مغز ساده‌ترین جانوران به‌راحتی از عهده چنین مسائلی بر می‌آید. تصور عموم كارشناسان IT بر آن است كه مدل‌های جدید محاسباتی كه بر اساس شبكه‌های عصبی بنا می‌شوند، جهش بعدی صنعت IT را شكل می‌دهند. تحقیقات در این زمینه نشان داده است كه مغز، اطلاعات را همانند الگو‌ها (pattern) ذخیره می‌كند. فرآیند ذخیره‌سازی اطلاعات به‌صورت الگو و تجزیه و تحلیل آن الگو‌، اساس روش نوین محاسباتی را تشكیل می‌دهند. این حوزه از دانش محاسباتی (computation) به هیچ وجه از روش‌های برنامه‌نویسی سنتی استفاده نمی‌كند و به‌جای آن از شبكه‌های بزرگی كه به‌صورت موازی آرایش شده‌اند و تعلیم یافته‌اند، بهره می‌جوید. در ادامه این نوشته به این واژگان كه در گرایش شبكه‌های عصبی، معانی ویژه‌ای دارند، بیشتر خواهیم پرداخت.
●شباهت با مغز
اگرچه مكانیسم‌های دقیق كاركرد مغز انسان (یا حتی جانوران) به‌طور كامل شناخته شده نیست، اما با این وجود جنبه‌های شناخته شده‌ای نیز وجود دارند كه الهام بخش تئوری شبكه‌های عصبی بوده‌اند. به‌عنوان مثال، یكی ازسلول‌های عصبی، معروف به نرون (Neuron) است كه دانش بشری آن را به‌عنوان سازنده اصلی مغز می‌انگارد. سلول‌های عصبی قادرند تا با اتصال به‌یكدیگر تشكیل شبكه‌های عظیم بدهند. گفته می‌شود كه هر نرون می‌تواند به هزار تا ده هزار نرون دیگر اتصال یابد (حتی در این مورد عدد دویست هزار هم به عنوان یك حد بالایی ذكر شده است).
قدرت خارق‌العاده مغز انسان از تعداد بسیار زیاد نرون‌ها و ارتباطات بین آنها ناشی می‌شود. ساختمان هر یك از نرون‌ها نیز به‌تنهایی بسیار پیچیده است. هر نرون از بخش‌ها و زیر‌سیستم‌های زیادی تشكیل شده است كه از مكانیسم‌های كنترلی پیچیده‌ای استفاده می‌كنند. سلول‌های عصبی می‌توانند از طریق مكانیسم‌های الكتروشیمیایی اطلاعات را انتقال دهند. برحسب مكانیسم‌های به‌كاررفته در ساختار نرون‌ها، آنها را به بیش از یكصدگونه متفاوت طبقه‌بندی می‌كنند. در اصطلاح فنی، نرون‌ها و ارتباطات بین آنها، فرایند دودویی(Binary)، پایدار (Stable) یا همزمان (Synchronous) محسوب نمی‌شوند.
در واقع، شبكه‌های عصبی شبیه‌سازی شده یا كامپیوتری، فقط قادرند تا بخش كوچكی از خصوصیات و ویژگی‌های شبكه‌های عصبی بیولوژیك را شبیه‌سازی كنند. در حقیقت، از دید یك مهندس نرم‌افزار، هدف از ایجاد یك شبكه عصبی نرم‌افزاری، بیش از آنكه شبیه‌سازی مغز انسان باشد، ایجاد مكانیسم دیگری برای حل مسائل مهندسی با الهام از الگوی رفتاری شبكه‌های بیولوژیك است.
نمای ساده شده‌ای از ساختار یك نرون بیولوژیك نمایش داده شده است. به‌طور خلاصه، یك نرون بیولوژیك، پس از دریافت سیگنال‌های ورودی (به‌ شكل یك پالس الكتریكی) از سلول‌های دیگر، آن سیگنال‌ها را با یكدیگر تركیب كرده و پس از انجام یك عمل (operation) دیگر بر روی سیگنال تركیبی، آن را به‌صورت خروجی ظاهر می‌سازد.
نرون‌ها از چهار بخش اصلی ساخته شده‌اند. دندریت‌ها (Dendrite)، سوما (Soma)، اكسان (Axon) و بالاخره، سیناپس (synapse) دندریت‌ها، همان اجزایی هستند كه به‌شكل رشته‌های طویل از مركز سلول به اطراف پراكنده می‌شوند. دندریت‌ها نقش كانال‌های ارتباطی را برای انتقال‌دادن سیگنال‌های الكتریكی به مركز سلول بر عهده دارند. در انتهای دندریت‌ها، ساختار بیولوژیكی ویژه‌ای به‌نام سیناپس واقع شده است كه نقش دروازه‌های اتصالی كانال‌های ارتباطی را ایفا می‌كند. در واقع سیگنال‌های گوناگون از طریق سیناپس‌ها و دندریت‌ها به مركز سلول منتقل می‌شوند و در آنجا با یكدیگر تركیب می‌شوند. عمل تركیب كه به آن اشاره كردیم، می‌تواند یك عمل جمع جبری ساده باشد. اصولاً اگر چنین نیز نباشد، در مدل‌سازی ریاضی می‌توان آنرا یك عمل جمع معمولی در نظر گرفت كه پس از آن تابع ویژه‌ای بر روی سیگنال اثر داده می‌شود و خروجی به شكل سیگنال الكتریكی متفاوتی از طریق اكسان (و سیناپس آن) به سلول‌های دیگر انتقال داده می‌شود.
البته تحقیقات جدید نمایانگر این واقعیت هستند كه نرون‌های بیولوژیك بسیار پیچیده‌تر از مدل ‌ساده‌ای هستند كه در بالا تشریح شد. اما همین مدل ساده می‌تواند زیربنای مستحكمی برای دانش شبكه‌های عصبی مصنوعی (Artificial Neural Network = ANN) تلقی گردد و متخصصان گرایش شبكه‌های عصبی یا هوش مصنوعی می‌توانند با پیگیری كارهای دانشمندان علوم زیست‌شناسی، به بنیان‌گذاری ساختار‌های مناسب‌تری در آینده دست بزنند.
●مدل ریاضی
در متون فنی برای نمایش مدل ساده‌ای كه در بالا‌ تشریح گردید، ، از علامت 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 انتخاب كرد. در این حالت، خروجی چنین شبكه‌ای فقط می‌تواند بر حسب ورودی‌های متفاوت، مقدار یك یا صفر باشد.
در گروه دیگری از مسائلی كه حل آن‌ها به شبكه‌های عصبی واگذار می‌شود، خروجی شبكه عصبی الزاماً بین مقادیر معلوم و شناخته شده‌ واقع نمی‌شود. مسائلی از نوع شناسایی الگو‌های تصویری، نمونه‌ای از چنین مواردی محسوب می‌شوند. شبكه‌های عصبی در این موارد، باید به‌گونه‌ای باشند كه قابلیت تولید مجموعه نامتناهی از پاسخ‌ها را داشته باشند. رفتار حركتی یك روبات نمونه‌ای از <هوشی> است كه چنین شبكه‌های عصبی می‌توانند فراهم آورند. اما در چنین شبكه‌هایی هم لازم خواهد بود كه خروجی بین مقادیر مشخصی محدود شده باشد (موضوع محدود شدن خروجی بین دو مقدار حدی ماكزیمم و مینیمم را در اینجا با موضوع قبلی اشتباه نگیرید. در این مورد خروجی مسأله اساساً گسسته نیست و حتی در بین چنین مقادیر حدی، می‌توان به تعداد نامتناهی خروجی دست یافت). اهمیت این موضوع زمانی آشكار می‌شود كه از مثال واقعی كمك گرفته شود. فرض كنید قراراست از شبكه عصبی برای كنترل حركت بازوی یك روبات استفاده شود. در صورتی‌كه خروجی یك شبكه عصبی برای كنترل نیروی حركتی به‌كار گرفته شود، طبیعی خواهد بود كه اگر خروجی شبكه محدود نشده باشد، ممكن است بازوی روبات بر اثر حركت بسیار سریع، به خود و یا محیط اطراف آسیب برساند. در چنین مواردی ممكن است از تابع انتقال به‌شكل بخش b استفاده شود.
قبل از آنكه به بخش دیگری از موضوع شبكه‌های عصبی بپردازیم، باید یك نكته را یادآوری كنیم كه همان‌طور كه در ابتدای این بخش تشریح شد، سلول‌های عصبی دارای ورودی‌های متعددی هستند و خروجی آنها نیز الزاماً محدود به یك خروجی نیست. بر این اساس زمانی كه بخواهیم از مدل‌سازی ریاضی برای مدل كردن یك سلول عصبی استفاده كنیم، به‌جای آن‌كه از یك ورودی p و یك خروجی a استفاده كنیم، از یك بردار p و یك بردار a سخن می‌گوییم. بدین ترتیب بدون آنكه نیاز به اعمال تغییری در این تصویر داشته باشیم، می‌توانیم از آن برای مدل‌سازی سلولی با n ورودی (p۱,p۲,p۳ . . . pn) و به همین ترتیب m خروجی (a۱,a۲,am) استفاده كنیم. توجه داشته باشید كه در این صورت، تعداد عناصر b و w نیز به تناسب افزایش می‌یابند و هر یك به n عدد افزایش می‌یابند.
نرم‌افزارهایی كه در آن‌ها از شبكه‌های عصبی استفاده شده است، نرون‌های شبكه را المان پردازنده (Processing element) می‌نامند. به‌طور معمول در محصولات نرم‌افزاری، المان‌های پردازنده قابلیت بسیار بیشتری از نمونه ساده‌شده‌ای كه در بخش‌های پیشین تشریح كردیم، دارند.
در این مدل، ورودی‌ها در نخستین گام، در ضریب وزنی (weighting factor) متناظر خود ضرب می‌شوند. در مرحله بعد، ورودی‌هایی كه تغییر مقیاس داده‌اند وارد واحدی می‌شوند كه در آن سیگنال‌های ورودی با هم تركیب می‌شوند. به‌طور معمول عمل تركیب در این واحد همان عمل جمع جبری است، اما در اصول، می‌توان در این واحد، ورودی‌ها را به روش‌های دیگری علاوه بر عمل جمع معمولی نیز با یكدیگر تركیب كرد. مثلاً می‌توان به‌جای عمل جمع، از عمل متوسط گیری، انتخاب بزرگترین، انتخاب كوچك‌ترین، عمل OR یا‌ AND منطقی هم استفاده كرد. در واقع هدف نهایی در این واحد آن است كه از تعداد n ورودی، یك سیگنال خروجی برای ارائه به بخش‌های بعدی فرایند، به‌دست آید. انتخاب نوع <عمل> در این واحد، موضوع دقیقی است كه كاملاً به كاربرد مسأله وابسته است.
به‌طور معمول در نرم‌افزارهای تجاری، امكان انتخاب و حتی ساختن توابع گوناگون برای این واحد، از طرف نرم‌افزار به كاربران داده می‌شود. حتی می‌توان كاربردهایی یافت كه در آنها، عمل تركیب در این واحد، وابسته به زمان باشد و در زمان‌های گوناگون پردازش مسأله، عملیات مختلفی برای تركیب كردن ورودی‌ها به‌كار برده ‌شوند.
در هر صورت، پس از آنكه ورودی‌ها با یكدیگر تركیب شدند، سیگنال حاصل به واحد دیگری كه در آن تابع انتقال یا Transfer Function به سیگنال اعمال می‌شود، هدایت می‌گردد. خروجی این بخش، سیگنال‌های حقیقی خواهند بود. بدین ترتیب جعبه‌ای در دست خواهیم داشت كه تعداد n عدد سیگنال ورودی را به m عدد سیگنال خروجی تبدیل می‌كند. معمولاً یكی از توابع سینوسی، تانژانت هذلولی، sigmoid و نظایر این‌ها است. نمونه‌ای از یك تابع انتقال از نوع sigmoid نمایش داده شده است. همانطور كه در این شكل مشاهده می‌كنید، این تابع انتقال، سیگنال خروجی واحد تركیب را به سیگنال خروجی تبدیل می‌كند كه مقدار (یا اندازه آن) بین صفر و یك می‌تواند باشد.
در عمل، سیگنالِ خروجی یك المان پردازنده می‌تواند برحسب نوع كاربرد، به المان‌های پردازشی دیگر و یا به اتصالات دیگر خارج از شبكه عصبی هدایت شود. در واقع تمامی شبكه‌های عصبی بر اساس ساختار المان‌های پردازشی فوق كار می‌كنند. در قسمت بعدی این مقاله به تشریح عملیات در شبكه‌های عصبی و آموزش این شبكه‌ها می‌پردازیم.
●عملیات شبكه‌های عصبی
تا اینجا تمام توجه ما معطوف ساختار درونی یك نرون مصنوعی یا المان پردازشی بود. اما بخش مهم دیگری در مراحل طراحی یك شبكه عصبی نیز وجود دارد. در واقع هنر یك طراح شبكه‌های عصبی می‌تواند در چگونگی تركیب نرون‌ها در یك شبكه (neuran Clustering)، متجلی شود. علوم بیولوژی نشان داده‌اند كه كلاسترینگ نرون‌ها در شبكه عصبی مغز ما به‌گونه‌ای است كه ما را قادر می‌سازد تا اطلاعات را به‌ صورتی پویا، تعاملی و خودسامان (Selforganizing) پردازش كنیم. در شبكه‌های عصبی بیولوژیك، نرون‌ها در ساختار‌ی سه بعدی به یكدیگر اتصال یافته‌اند. اتصالات بین نرون‌ها در شبكه‌های عصبی بیولوژیك آنقدر زیاد و پیچیده‌است كه به هیچ وجه نمی‌توان شبكه مصنوعی مشابهی طراحی كرد. تكنولوژی مدارات مجتمع امروزی به ما امكان می‌دهد كه شبكه‌های عصبی را در ساختار‌های دو بعدی طراحی كنیم. علاوه بر این، چنین شبكه‌های مصنوعی دارای تعداد محدودی لایه و اتصالات بین نرون‌ها خواهند بود. بدین ترتیب، این واقعیات و محدودیت‌های فیزیكی تكنولوژی فعلی، دامنه كاربردهای شبكه‌های عصبی مبتنی‌بر تكنولوژی سیلیكونی را مشخص می‌سازند.ساختار شبكه‌های عصبی امروزی، از لایه‌های نرونی تشكیل شده است. در چنین ساختاری، نرون‌ها علاوه بر آنكه در لایه خود به شكل محدودی به یكدیگر اتصال داده شده‌اند، از طریق اتصال بین لایه‌ها نیز به نرون‌های طبقات مجاور ارتباط داده می‌شوند. نمونه‌ای از ساختار لایه‌ای یك شبكه عصبی مصنوعی نمایش داده شده است در این توپولوژی، گروهی از نرون‌ها از طریق ورودی‌های خود با جهان واقعی ارتباط دارند. گروه دیگری از نرون‌ها نیز از طریق خروجی‌های خود، جهان خارج را می‌سازند. در واقع این <جهان خارج> تصویری است كه شبكه عصبی از ورودی خود می‌سازد یا می‌توان چنین گفت كه جهان خارج <تصوری> است كه شبكه عصبی از ورودی خود دارد. خلاصه آنكه در توپولوژی فوق، مابقی نرون‌ها از دید پنهان هستند.
تلاش محققان در زمینه شبكه‌های عصبی نشان داده است كه شبكه‌های عصبی، چیزی بیشتر از یك مشت نرون كه به یكدیگر اتصال داده شده‌اند، هستند. حتی گروهی از محققان سعی داشته‌اند كه از اتصالات تصادفی برای ارتباط دادن نرون به یكدیگر استفاده كنند كه در این زمینه به نتایج جالب توجهی دست نیافتند. امروزه مشخص شده است كه در ساده‌ترین مغز‌های بیولوژیك مانند مغز مارها هم ارتباطات بین نرون‌ها بسیار ساخت‌یافته است. در حال حاضر یكی از ساده‌ترین روش‌های ارتباط دهی نرون‌ها در شبكه‌های عصبی، آن است كه ابتدا نرون‌ها در گروه‌های مشخصی به صورت لایه‌های نرونی سازمان‌دهی می‌شوند و پس از تامین ارتباطات بین‌نرونی در هر لایه، ارتباطات بین لایه‌ها نیز برقرار می‌شوند.
اگرچه در كاربردهای مشخصی می‌توان با موفقیت از شبكه‌های عصبی تك لایه استفاده كرد، اما رسم بر آن است كه شبكه‌های عصبی حداقل دارای سه لایه باشند (همانطور كه قبلاً اشاره شد، لایه ورودی، لایه خروجی و نهایتاً لایه پنهان یا لایه میانی).
در بسیاری از شبكه‌های عصبی، اتصالات بین‌نرونی به گونه‌ای است كه نرون‌های لایه‌های میانی، ورودی خود را از تمام نرون‌های لایه پایینی خود (به طور معمول لایه نرون‌های ورودی) دریافت می‌كنند. بدین ترتیب در یك شبكه عصبی، سیگنال‌ها به تدریج از یك لایه نرونی به لایه‌های بالاتر حركت می‌كنند و در نهایت به لایه آخر و خروجی شبكه می‌رسند. چنین مسیر در اصطلاح فنی feed forward نامیده می‌شود. ارتباطات بین‌نرونی در شبكه‌های عصبی از اهمیت بسیار زیادی برخوردار هستند و به نوعی قدرت یك شبكه عصبی را تعیین می‌كنند. قاعده آن است كه ارتباطات بین نرونی را به دو گروه تقسیم‌بندی می‌كنند. یك نوع از ارتباطات بین نرونی، به‌گونه‌ای هستند كه باعث جمع شدن سیگنال در نرون بعدی می‌شوند. گونه دوم ارتباطات بین نرونی باعث تفریق سیگنال در نرون بعدی می‌شوند. در اصطلاح محاوره‌ای گروهی از ارتباطات انگیزش ایجاد می‌كنند و گروه دیگر ممانعت به عمل می‌آورند.
در مواردی، نرون مشخصی از شبكه عصبی تمایل دارد كه سیگنال دیگر نرون‌های لایه خود را نادیده بگیرد. چنین حالتی به‌طور معمول در لایه خروجی ایجاد می‌شود. به عنوان مثال، در كاربردهای تشخیص متن (OCR)، فرض كنید كه احتمال آنكه كاراكتر مورد شناسایی، حرف P باشد برابر با ۸۵ درصد تعیین شده است و به همین ترتیب احتمال آنكه كاراكتر مورد نظر حرف F باشد، ۶۵‌ درصد تخمین زده است. در این وضعیت، سیستم باید كاراكتری را برگزیند كه دارای درصد احتمال بزرگ‌تر است. در نتیجه در این شبكه عصبی، نرون‌هایی كه خروجی F را تجویز می‌كنند، باید نادیده گرفته ‌شوند یا inhibit شوند. به چنین فرایندی، lateral inhibition گفته می‌شود.
نوع دیگری از ارتباط بین نرونی در شبكه‌های عصبی به ارتباط بازخورد یا feedback معروف است. در این نوع از ارتباطات، خروجی یك لایه نرونی به لایه قبلی (یا به لایه‌ای كه چند مرحله پایینتر است) اتصال داده می‌شود. نمونه‌ای از یك شبكه عصبی نمایش داده شده كه در آن از ارتباط بازخوردی استفاده شده است. در نرم‌افزارهای پیشرفته شبكه‌های عصبی، كاربر و طراح شبكه عصبی می‌تواند نوع ارتباطات بین نرون‌ها و لایه‌های آنها را تعیین كند.
●آموزش شبكه‌های عصبی
تا اینجا از ساختار شبكه‌های عصبی صحبت كردیم. گفتیم كه شبكه‌های عصبی می‌توانند بر اساس طراحی خود سیگنال‌های ورودی را پردازش كنند و به سیگنال‌های خروجی مورد نظر تبدیل نمایند. به طور معمول، پس از آنكه یك شبكه عصبی طراحی و پیاده‌سازی شد، باید پارامترهای w و b (كه قبلاً معرفی كردیم) به ازای مجموعه‌هایی از سیگنال‌های ورودی، به‌گونه‌ای تنظیم شوند كه سیگنال‌های خروجی شبكه خروجی مطلوب را تشكیل دهند. چنین فرایندی را آموزش دیدن شبكه عصبی می‌نامند (در نخستین مرحله آموزش، مقادیر w و b به‌طور تصادفی انتخاب می‌شوند. زیرا تا این پارامترها مقدار نداشته باشند، شبكه عصبی قابل استفاده نخواهد بود) در حین آموزش دیدن شبكه عصبی (یعنی به تدریج همزمان با افزایش دفعاتی كه مقادیر پارامترها برای رسیدن به خروجی مطلوب‌تر، تنظیم می‌شوند) مقدار پارامتر‌‌ها به مقدار حقیقی و نهایی خود نزدیك‌تر می‌شوند.
به‌طور كلی دو روش برای آموزش دادن شبكه‌های عصبی وجود دارد. روش supervised و روش unsupervised. روش نخست، شامل مراحلی است كه در بخش قبل، به‌طور مختصر تشریح شد. اما در روش unsupervised، شبكه عصبی باید بدون كمك گرفتن از جهان خارج، بتواند كار آموزش را انجام دهد.
واقعیت آن است كه در عمل از روش supervised و یا حداكثر از روش‌های تركیبی استفاده می‌شود و فرایند آموزش unsupervised به شكل خالص تنها وعده‌ای است كه شاید در آینده بتواند تحقق یابد. در حال حاضر و در كاربردهای پیشرفته، از روش آموزش unsupervised برای ایجاد تنظیمات اولیه بر روی سیگنال‌های ورودی شبكه‌های عصبی استفاده می‌شود و باقی مراحل آموزش شبكه به روش supervised ادامه می‌یابد.در روش معمول آموزش شبكه‌های عصبی، از مجموعه‌ شناخته‌شده‌ای از داده‌های ورودی و خروجی‌های متناظر آنها (training set data) برای آموزش دادن شبكه استفاده می‌شود. در چنین فرایندی، پس از اعمال مجموعه‌های داده‌های آموزشی، پارامترهای شبكه به تدریج به سمت مقادیر نهایی خود همگرا می‌شوند.
در شبكه‌های عصبی قادر به یافتن الگوهایی در اطلاعات هستند كه هیچكس، هیچگاه از وجود آنها اطلاع نداشته است.
بسته‌های نرم‌افزاری پیشرفته تولید و طراحی شبكه‌های عصبی، دارای ابزارهایی هستند كه بر روند آموزش شبكه مدیریت می‌كنند. چنین ابزارهایی می‌توانند سرعت همگرایی پارامتر‌های شبكه را زیر نظر بگیرند و به عنوان مثال، اجازه دهند كه پارامترهای یك شبكه مشخص، در طول چندین روز به دقت كافی و مورد نظر طراحان خود برسد.
در مواردی ممكن است كه شبكه‌ عصبی اصولاً موفق به فراگیری نشود. بدین معنی كه پارامترهای شبكه پس از زمان‌های طولانی به مقدار مشخصی همگرا نشود. چنین مواردی ممكن است بر اثر ناكافی بودن داده‌های آموزشی و یا اصولاً نقص طراحی شبكه ایجاد شوند. حتی مواردی در عمل وجود دارند كه شبكه عصبی مشخصی، بر اثر آموزش بیش از حد، اصطلاحا over trained شود. توجه داشته باشید كه فرایند آموزش شبكه‌های عصبی فقط به ازای زیر مجموعه‌ای از داده‌هایی كه قرار شبكه آنها را در كاربرد حقیقی خود پردازش كند، آموزش داده می‌شوند. درصورتی‌كه تعداد داده‌های آموزشی یك شبكه عصبی بیش از اندازه زیاد باشد (در واقع از تمامی داده‌های مسئله برای آموزش دادن به شبكه استفاده شود)، شبكه عصبی به جای آنكه آموزش ببیند، به حالتی می‌رسد كه به آن حفظ كردن اطلاعات می‌گویند. در واقع به جای آنكه یك شبكه عصبی برای حل مسئله از هوش خود كمك بگیرد، از محفوظات خود استفاده می‌كند!
پس از آنكه یك شبكه عصبی به اندازه كافی آموزش دید، طراح یا كاربر شبكه می‌تواند پارامترهای شبكه را قفل كند (هر چند كه در مواردی پارامترهای شبكه آزاد گذارده می‌شوند تا در طول كاربرد واقعی بازهم شبكه آموزش ببیند). در این مرحله شبكه عصبی برای كاربرد واقعی خود و حل مسائل آماده خواهد بود. در برخی از ابزارهای تولید و طراحی شبكه‌های عصبی، كل شبكه عصبی به همراه پارامترهای قفل شده آن، تبدیل به نرم‌افزار مستقلی (مثلاً یك فایل dll) می‌شوند كه می‌توان از آن در پروژه‌های مشخصی استفاده كرد. در برخی از موارد دیگر، چنین شبكه‌هایی پس از آموزش دیدن، به شكل سخت‌افزاری در قالب یك مدار مجتمع (IC) به تولید انبوه یا نیمه انبوه می‌رسند.
●آموزش unsupervised یا تطبیقی (Adaptive)
در مورد این روش آموزش گفتیم كه شبكه‌ عصبی بدون در اختیار داشتن داده‌های خروجی، در معرض آموزش قرار می‌گیرد. در واقع سیستم به تنهایی و بدون كمك خارجی باید با توجه به شكل سیگنال‌های خروجی خود، درباره درستی و نادرستی آنها تصمیم‌گیری نماید. در دنیای واقعی شرایط بسیار زیادی وجود دارند كه در آنها مجموعه اطلاعات كافی برای آموزش دادن به سیستم فراهم نیستند. تحقیقات نظامی یكی از گرایش‌هایی است كه به این موضوع توجه دقیقی دارد. به عنوان مثال گفته می‌شود كه شرایط جنگی به دلیل فراوانی پارامترها و تكنیك‌های نظامی متغیر و پیشرفت‌های تكنولوژی نظامی، از نمونه مواردی است كه در آنها به هیچ وجه نمی‌توان مجموعه داده‌های آموزشی كافی به دست آورد.
در این زمینه یكی از محققان شبكه‌های عصبی، به نام Tuevo Kohonen (از دانشگاه هلسینكی) فعالیتی جدی دارد. كوهنن با تحقیقات در ساختارهای عصبی غیرمتعارف، به پژوهش در این زمینه ادامه می‌دهد. كوهنن، نرون‌های شبكه‌عصبی را فیلدهای مختلفی تقسیم‌بندی می‌كند. در روش كوهنن، نرون‌های هر فیلد <مرتب توپولوژیك> یا Topologically ordered محسوب می‌شوند (توپولوژی نام شاخه‌ای از ریاضیات است كه در آن نگاشت از یك فضا به فضای دیگر بدون تغییر مشخصه‌های هندسی، مورد بررسی قرار می‌گیرد). گروه‌بندی‌های سه‌بعدی كه در ساختار مغز پستانداران یافت شده است، نمونه‌ای از مرتب‌سازی توپولوژیك محسوب می‌شوند. كوهنن معتقد است كه فقدان ملاحظات توپولوژیك در مدل‌های عصبی امروزی، باعث می‌شود كه شبكه‌های عصبی امروزی، مدل‌های ساده شده‌ای از شبكه‌های عصبی واقعی موجود در مغز محسوب شوند. در هر صورت این حوزه از مبحث شبكه‌های عصبی، هنوز در مرحله تحقیقات آزمایشگاهی قرارداد و كاربرد واقعی نیافته است.
●تفاوت‌های شبكه‌های عصبی با روش‌های محاسباتی متداول و سیستم‌های خبره
گفتیم كه شبكه‌های عصبی روش متفاوتی برای پردازش و آنالیز اطلاعات ارائه می‌دهند. اما نباید این گونه استنباط شود كه شبكه‌های عصبی می‌توانند برای حل تمام مسائل محاسباتی مورد استفاده واقع شوند. روش‌های محاسباتی متداول همچنان برای حل گروه مشخصی از مسائل مانند امور حسابداری، انبارداری و محاسبات عددی مبتنی بر فرمول‌های مشخص، بهترین گزینه محسوب می‌شوند.
سیستم‌های خبره، انشعابی از روش محاسباتی متداول محسوب می‌شود و در مواردی هم به آن نسل پنجم محاسبات نام داده‌اند (نسل اول از كلید و سیم‌بندی استفاده می‌كرد، نسل دوم با اختراع ترانزیستور ایجاد شد، نسل سوم از فناوری مدارات مجتمع استفاده می‌كرد، نسل چهارم با به وجود آمدن زبان‌های سطح بالا آغاز شد و نسل پنجم شامل هوش مصنوعی می‌شود). به طور معمول، یك سیستم خبره شامل دو بخش عمده می‌شود. یك بخش یا موتور استنتاجی و یك پایگاه دانایی (Knowledge base). موتور استنتاجی، بخشی است كه رابط كاربر را مدیریت می‌كند و بر فایل‌ها و دسترسی به برنامه‌ها و برنامه‌ریزی كنترل دارد. پایگاه دانایی شامل اطلاعاتی در ارتباط با یك مسئله مشخص است. این پایگاه به متخصصان اجازه می‌دهد كه قواعد فرایند مشخصی را تعریف نماید. چنین متخصصی نیازی به دانستن روش‌های برنامه‌نویسی نخواهد داشت. او تنها باید كاری كه از كامپیوتر می‌خواهد را درك كند و شناخت كافی از روش عمل سیستم داشته باشد. درواقع پوسته سیستم بخشی است كه به كامپیوتر می‌گوید چه‌كار باید انجام دهد. برنامه‌ لازم برای حل مسئله توسط خود سیستم تولید خواهد شد.
تلاش‌هایی كه برای اجرایی كردن سیستم‌های خبره به كار گرفته شده‌اند، با مشكلات مشتركی مواجه بوده‌اند. با افزایش سطح پیچیدگی سیستم‌ها، منابع كامپیوتری مورد نیاز سیستم به شدت افزایش می‌یابند و سیستم با كندی بیش از حد روبرو می‌شود. در حقیقت تجربه نشان داده است كه در وضعیت فعلی، سیستم‌های خبره تنها می‌توانند در مواقعی مفید واقع شوند كه هدف محدود و مشخصی تعیین شده باشد.
شبكه‌های عصبی در مسیری گام برمی‌دارند كه ابزارها توانایی فراگیری و برنامه‌ریزی خود را داشته باشند. ساختارشبكه‌های عصبی به گونه‌ای است كه قابلیت حل مسئله را بدون كمك فرد متخصص و برنامه‌ریزی خارجی داشته باشند. شبكه‌های عصبی قادر به یافتن الگوهایی در اطلاعات هستند كه هیچ‌كس، هیچ‌گاه از وجود آنها اطلاع نداشته است. درحالی‌كه سیستم‌های خبره در عمل به موفقیت‌های بسیاری دست یافته‌اند، شبكه‌های عصبی در كاربردهایی همچون دید مصنوعی، تشخیص و تولید پیوسته گفتار، فراگیری ماشینی و نظایر آن با مشكلاتی روبرو بوده‌اند. در حال حاضر شبكه‌های عصبی كاملاً وابسته به سرعت پردازنده سیستم اجرا كننده هستند.

منابع:
www.generation۵.org/content/۲۰۰۰/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
مسعود سعیدی
منبع : ماهنامه شبکه