چکیده:
شبكههای عصبی را میتوان با اغماض زیاد، مدلهای الكترونیكی از ساختار عصبی مغز انسان نامید. مكانیسم فراگیری و آموزش مغز اساساً بر تجربه استوار است. مدلهای الكترونیكی شبكههای عصبی طبیعی نیز بر اساس همین الگو بنا شدهاند و روش برخورد چنین مدلهایی با مسائل، با روشهای محاسباتی كه بهطور معمول توسط سیستمهای كامپیوتری در پیش گرفته شدهاند، تفاوت دارد. میدانیم كه حتی سادهترین مغزهای جانوری هم قادر به حل مسائلی هستند كه اگر نگوییم كه كامپیوترهای امروزی از حل آنها عاجز هستند، حداقل در حل آنها دچار مشكل میشوند. به عنوان مثال، مسائل مختلف شناسایی الگو، نمونهای از مواردی هستند كه روشهای معمول محاسباتی برای حل آنها به نتیجه مطلوب نمیرسند. درحالیكه مغز سادهترین جانوران بهراحتی از عهده چنین مسائلی بر میآید. تصور عموم كارشناسان 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 شكل شماره 3 انتخاب كرد. در این حالت، خروجی چنین شبكهای فقط میتواند بر حسب ورودیهای متفاوت، مقدار یك یا صفر باشد.
در گروه دیگری از مسائلی كه حل آنها به شبكههای عصبی واگذار میشود، خروجی شبكه عصبی الزاماً بین مقادیر معلوم و شناخته شده واقع نمیشود. مسائلی از نوع شناسایی الگوهای تصویری، نمونهای از چنین مواردی محسوب میشوند. شبكههای عصبی در این موارد، باید بهگونهای باشند كه قابلیت تولید مجموعه نامتناهی از پاسخها را داشته باشند. رفتار حركتی یك روبات نمونهای از <هوشی> است كه چنین شبكههای عصبی میتوانند فراهم آورند. اما در چنین شبكههایی هم لازم خواهد بود كه خروجی بین مقادیر مشخصی محدود شده باشد (موضوع محدود شدن خروجی بین دو مقدار حدی ماكزیمم و مینیمم را در اینجا با موضوع قبلی اشتباه نگیرید. در این مورد خروجی مسأله اساساً گسسته نیست و حتی در بین چنین مقادیر حدی، میتوان به تعداد نامتناهی خروجی دست یافت). اهمیت این موضوع زمانی آشكار میشود كه از مثال واقعی كمك گرفته شود. فرض كنید قراراست از شبكه عصبی برای كنترل حركت بازوی یك روبات استفاده شود. در صورتیكه خروجی یك شبكه عصبی برای كنترل نیروی حركتی بهكار گرفته شود، طبیعی خواهد بود كه اگر خروجی شبكه محدود نشده باشد، ممكن است بازوی روبات بر اثر حركت بسیار سریع، به خود و یا محیط اطراف آسیب برساند.
قبل از آنكه به بخش دیگری از موضوع شبكههای عصبی بپردازیم، باید یك نكته را یادآوری كنیم كه همانطور كه در ابتدای این بخش تشریح شد، سلولهای عصبی دارای ورودیهای متعددی هستند و خروجی آنها نیز الزاماً محدود به یك خروجی نیست. بر این اساس زمانی كه بخواهیم از مدلسازی ریاضی برای مدل كردن یك سلول عصبی استفاده كنیم، بهجای آنكه از یك ورودی p و یك خروجی a استفاده كنیم، از یك بردار p و یك بردار a سخن میگوییم. بدین ترتیب بدون آنكه نیاز به اعمال تغییری در این تصویر داشته باشیم، میتوانیم از آن برای مدلسازی سلولی با n ورودی (p1,p2,p3 . . . pn) و به همین ترتیب m خروجی (a1,a2,am) استفاده كنیم. توجه داشته باشید كه در این صورت، تعداد عناصر b و w نیز به تناسب افزایش مییابند و هر یك به n عدد افزایش مییابند.
پیادهسازیهای الكترونیكی نرونهای مصنوعی
نرمافزارهایی كه در آنها از شبكههای عصبی استفاده شده است، نرونهای شبكه را المان پردازنده (Processing element) مینامند. بهطور معمول در محصولات نرمافزاری، المانهای پردازنده قابلیت بسیار بیشتری از نمونه سادهشدهای كه در بخشهای پیشین تشریح كردیم، دارند.
در این مدل، ورودیها در نخستین گام، در ضریب وزنی (weighting factor) متناظر خود ضرب میشوند. در مرحله بعد، ورودیهایی كه تغییر مقیاس دادهاند وارد واحدی میشوند كه در آن سیگنالهای ورودی با هم تركیب میشوند. بهطور معمول عمل تركیب در این واحد همان عمل جمع جبری است، اما در اصول، میتوان در این واحد، ورودیها را به روشهای دیگری علاوه بر عمل جمع معمولی نیز با یكدیگر تركیب كرد. مثلاً میتوان بهجای عمل جمع، از عمل متوسط گیری، انتخاب بزرگترین، انتخاب كوچكترین، عمل OR یا AND منطقی هم استفاده كرد. در واقع هدف نهایی در این واحد آن است كه از تعداد n ورودی، یك سیگنال خروجی برای ارائه به بخشهای بعدی فرایند، بهدست آید. انتخاب نوع <عمل> در این واحد، موضوع دقیقی است كه كاملاً به كاربرد مسأله وابسته است.
بهطور معمول در نرمافزارهای تجاری، امكان انتخاب و حتی ساختن توابع گوناگون برای این واحد، از طرف نرمافزار به كاربران داده میشود. حتی میتوان كاربردهایی یافت كه در آنها، عمل تركیب در این واحد، وابسته به زمان باشد و در زمانهای گوناگون پردازش مسأله، عملیات مختلفی برای تركیب كردن ورودیها بهكار برده شوند.
در هر صورت، پس از آنكه ورودیها با یكدیگر تركیب شدند، سیگنال حاصل به واحد دیگری كه در آن تابع انتقال یا Transfer Function به سیگنال اعمال میشود، هدایت میگردد. خروجی این بخش، سیگنالهای حقیقی خواهند بود. بدین ترتیب جعبهای در دست خواهیم داشت كه تعداد n عدد سیگنال ورودی را به m عدد سیگنال خروجی تبدیل میكند. در عمل توابع انتقالی معمولاً یكی از توابع سینوسی، تانژانت هذلولی، sigmoid و نظایر اینها است.
در عمل، سیگنالِ خروجی یك المان پردازنده میتواند برحسب نوع كاربرد، به المانهای پردازشی دیگر و یا به اتصالات دیگر خارج از شبكه عصبی هدایت شود. در واقع تمامی شبكههای عصبی بر اساس ساختار المانهای پردازشی فوق كار میكنند. در قسمت بعدی این مقاله به تشریح عملیات در شبكههای عصبی و آموزش این شبكهها میپردازیم.