زمان مطالعه تقریبی: ۱۲ دقیقه

شبکه های عصبی

شبکه‌های عصبی را می‌توان با اغماض زیاد، مدل‌های الکترونیکی از ساختار عصبی مغز انسان نامید. مکانیسم فراگیری و آموزش مغز اساساً بر تجربه استوار است. مدل‌های الکترونیکی شبکه‌های عصبی طبیعی نیز بر اساس همین الگو بنا شده‌اند و روش برخورد چنین مدل‌هایی با مسائل، با روش‌های محاسباتی که به‌طور معمول توسط سیستم‌های کامپیوتری در پیش گرفته شده‌اند، تفاوت دارد. می‌دانیم که حتی ساده‌ترین مغز‌های جانوری هم قادر به حل مسائلی هستند که اگر نگوییم که کامپیوترهای امروزی از حل آنها عاجز هستند، حداقل در حل آنها دچار مشکل می‌شوند. به عنوان مثال، مسائل مختلف شناسایی الگو، نمونه‌ای از مواردی هستند که روش‌های معمول محاسباتی برای حل آنها به نتیجه مطلوب نمی‌رسند. درحالی‌که مغز ساده‌ترین جانوران به‌راحتی از عهده چنین مسائلی بر می‌آید. تصور عموم کارشناسان 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 ورودی (p1,p2,p3 . . . pn) و به همین ترتیب m خروجی (a1,a2,am) استفاده کنیم. توجه داشته باشید که در این صورت، تعداد عناصر b و w نیز به تناسب افزایش می‌یابند و هر یک به n عدد افزایش می‌یابند.

پیاده سازی الکترونیکی نرون های عصبی

پیاده‌سازی‌های الکترونیکی نرون‌های مصنوعی

نرم‌افزارهایی که در آن‌ها از شبکه‌های عصبی استفاده شده است، نرون‌های شبکه را المان پردازنده (Processing element) می‌نامند. به‌طور معمول در محصولات نرم‌افزاری، المان‌های پردازنده قابلیت بسیار بیشتری از نمونه ساده‌شده‌ای که در بخش‌های پیشین تشریح کردیم، دارند. در شکل شماره ۴، نمایی با جزئیات بیشتر از یک نرون مصنوعی را نشان می‌دهد.

در این مدل، ورودی‌ها در نخستین گام، در ضریب وزنی (Weighting Factor) متناظر خود ضرب می‌شوند. در مرحله بعد، ورودی‌هایی که تغییر مقیاس داده‌اند وارد واحدی می‌شوند که در آن سیگنال‌های ورودی با هم ترکیب می‌شوند. به‌طور معمول عمل ترکیب در این واحد همان عمل جمع جبری است، اما در اصول، می‌توان در این واحد، ورودی‌ها را به روش‌های دیگری علاوه بر عمل جمع معمولی نیز با یکدیگر ترکیب کرد. مثلاً می‌توان به‌جای عمل جمع، از عمل متوسط گیری، انتخاب بزرگترین، انتخاب کوچک‌ترین، عمل OR یا‌ AND منطقی هم استفاده کرد. در واقع هدف نهایی در این واحد آن است که از تعداد n ورودی، یک سیگنال خروجی برای ارائه به بخش‌های بعدی فرایند، به‌دست آید. انتخاب نوع “عمل” در این واحد، موضوع دقیقی است که کاملاً به کاربرد مسأله وابسته است.

به‌طور معمول در نرم‌افزارهای تجاری، امکان انتخاب و حتی ساختن توابع گوناگون برای این واحد، از طرف نرم‌افزار به کاربران داده می‌شود. حتی می‌توان کاربردهایی یافت که در آنها، عمل ترکیب در این واحد، وابسته به زمان باشد و در زمان‌های گوناگون پردازش مسأله، عملیات مختلفی برای ترکیب کردن ورودی‌ها به‌کار برده ‌شوند.

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