الگوریتم های شبکه های عصبی مصنوعی مجموعهای از روشها و قواعد هستند که برای آموزش، بهروزرسانی وزنها و بهینهسازی عملکرد شبکه به کار میروند. این الگوریتمها به شبکه کمک میکنند تا با تحلیل دادههای ورودی، الگوها را شناسایی کرده و پیشبینی یا تصمیمگیری کند. بسته به نوع شبکه و مسئله، الگوریتم های مختلفی مانند گرادیان نزولی، یادگیری نظارتشده، بدوننظارت یا تقویتی مورد استفاده قرار میگیرند.
تاریخچه
ایده شبکه های عصبی مصنوعی از ساختار و عملکرد نورونهای زیستی در مغز انسان الهام گرفته شده است. نخستین جرقههای این مفهوم به دهه ۱۹۴۰ بازمیگردد، زمانی که «وارن مککالوک» و «والتر پیتس» نخستین مدل محاسباتی از یک نورون را ارائه دادند. این مدل، نورون را بهصورت یک واحد منطقی ساده نمایش میداد که قادر بود ورودیهایی را دریافت کرده و بر اساس یک آستانه مشخص، خروجی تولید کند.
در سال ۱۹۵۸، فرانک روزنبلات مدل پرسپترون (Perceptron) را معرفی کرد که اولین الگوریتم یادگیری نظارتشده به شمار میرود. این مدل قادر بود الگوهای خطی را از یکدیگر تفکیک کند و توجه بسیاری را به خود جلب کرد. اما در دهه ۱۹۷۰، کتاب معروف «ادراکگرها» اثر ماروین مینسکی و سیمور پاپرت محدودیتهای پرسپترون را بهویژه در حل مسائل غیرخطی نشان داد. این امر باعث کاهش علاقه به تحقیقات در حوزه شبکه های عصبی شد و به آغاز «زمستان هوش مصنوعی» انجامید.
تحولی مهم در دهه ۱۹۸۰ با معرفی الگوریتم پسانتشار خطا (Backpropagation) توسط دیوید راملهارت و جفری هینتون رخ داد. این الگوریتم امکان آموزش لایههای میانی شبکه را فراهم کرد و باعث احیای علاقه به شبکه های عصبی شد. در دهه ۱۹۹۰، با وجود رشد نظری، کمبود داده و قدرت محاسباتی مانع پیشرفت عملی این حوزه شد.
در دهه ۲۰۱۰، با رشد چشمگیر قدرت پردازشی (بهویژه GPUها) و در دسترس بودن دادههای بزرگ (Big Data)، عصر جدیدی از یادگیری عمیق (Deep Learning) آغاز شد. شبکه های عمیق مانند CNN و RNN توانستند در حوزههایی مانند بینایی ماشین، ترجمه ماشینی و تشخیص صدا عملکردی فراتر از الگوریتم های سنتی از خود نشان دهند.
امروزه شبکه های عصبی مصنوعی در قلب بسیاری از فناوریهای پیشرفته مانند خودروهای خودران، دستیارهای صوتی، ترجمه زنده و حتی هنر تولیدی قرار دارند و همچنان در حال گسترش و تحول هستند.
شبکه های عصبی مصنوعی
شبکه های عصبی Artificial neural network از تعداد زیادی عنصر پردازشی فوقالعاده بههمپیوسته به نام نرون تشکیلشده که برای حل یک مسئله با یکدیگر بهصورت هماهنگ عمل میکند.
دستهبندی شبکه های عصبی شبکهای از لایههاست، معمولاً لایهای که اطلاعات ورودی به آنها داده میشود تحت عنوان لایهی ورودی و لایهای که دادههای خروجی از آن دریافت میشود تحت عنوان لایهی خروجی نامیده میشود و به لایههای دیگر بین این دولایه (در صورت وجود) لایههای پنهان گفته میشود.
جهت حرکت سیگنالها همواره از سمت لایهی ورودی بهسوی لایهی خروجی است بنابراین در این روش واحدهای ورودی معمولاً کلمهها یا عبارات سند را نمایش میدهند و واحد (های) خروجی نشاندهنده دسته یا موضوع سند میباشند.
برای دستهبندی یک سند تستی، وزن کلمهها برای واحدهای ورودی تعیین میشود و فعال کردن این واحدها از طریق لایههای مختلف روبهجلو در شبکه انجام میشود و مقدار واحد خروجی بهعنوان یک نتیجه در تصمیمگیری دستهها تعیین میشود. برخی از محققان از پرسپترون یک لایه استفاده میکنند چون پیادهسازی آن ساده است و پرسپترون چند لایه که بسیار پیچیده بوده و پیادهسازی گستردهای برای کار دستهبندی لازم دارد.
الگوریتم شبکه عصبی
شبکه های عصبی مصنوعی (ANN)، سیستمهای محاسباتی هستند که توسط شبکه های عصبی زیستی الهام گرفته شدهاند که مغز حیوانات را تشکیل میدهند. شبکه عصبی یک الگوریتم نیست بلکه یک چارچوب برای بسیاری از الگوریتم های مختلف از جمله یادگیری ماشین برای همکاری و پردازش اطلاعات پیچیده است. چنین سیستمهایی برای انجام وظایف با در نظر گرفتن نمونهها و به طور کلی بدون برنامه ریزی با هیچ قواعد خاصی، یاد میگیرند.
برای مثال، در تشخیص تصاویر، شبکه های عصبی مصنوعی تصاویری را که حاوی گربه هستند را با تجزیه و تحلیل تصاویر نمونه یاد میگیرند یعنی به صورت دستی به عنوان تصاویر گربه نامگذاری شدهاند را شناسایی کرده و با استفاده از نتایج برای شناسایی گربهها در تصاویر دیگر آنها را پیدا میکنند. شبکه های عصبی این کار را بدون هیچ گونه دانش پیشین در مورد گربهها انجام میدهند.
کاربردهای عمومی شبکه های عصبی
- تشخیص الگو (گروهبندی اشکالی که مشابه هم هستند)
- ذخیره کردن و بازبینی دادهها
- تقریب تابع (رگرسیون غیر خطی، تخمین و پیشگویی)
- بهینه سازی و تعیین جواب با وجود قیود متعدد
- داده کاوی (استخراج دانش کلان ، قابل استناد و جدید از پایگاه دادههای بزرگ )
به طور کلی هر جا که سخن از تخمین، تشخیص الگو یا طبقه بندی باشد میتوان از شبکه های عصبی مصنوعی استفاده کرد.
مدل ریاضی یک نرون
ساختار شبکه های عصبی
نرونها به صورت طبیعی به روش خاصی اتصال مییابند تا یک شبکه عصبی را تشکیل دهند نحوه اتصال نرونها میتواند به گونهای باشد که شبکه تک لایه یا چند لایه باشد. شبکه های چند لایه از یک لایه ورودی، یک لایه خروجی و یک یا چند لایه بین آنها (لایه پنهان) که مستقیما به دادههای ورودی و نتایج خروجی متصل نیستند تشکیل یافتهاند.
واحدهای لایه ورودی صرفا وظیفه توزیع مقادیر ورودی را به لایه بعد برعهده دارند و هیچ گونه تاثیری بر روی سیگنالهای ورودی ندارند. به همین دلیل در شمارش تعداد لایهها به حساب نیامدهاند. شبکه شامل یک لایه خروجی است که پاسخ سیگنالهای ورودی را ارائه میدهد. که تعداد نرونها در لایه ورودی و لایه خروجی برابر با تعداد ورودیها و خروجیها میباشد و لایه یا لایههای پنهان وظیفه ارتباط دادن لایه ورودی به لایه خروجی را بر عهده دارند. شبکه با داشتن این لایههای پنهان قادر میگردد که روابط غیر خطی را از دادههای ارائه شده به شبکه استخراج کند.
کار با هر شبکه عصبی شامل سه مرحله میباشد: آموزش، تعمیم و اجرا.
- در مرحله آموزش، شبکه الگوهای موجود در دادههای ورودی را یاد میگیرد. هر شبکه عصبی برای یادگیری از قانون خاص استفاده میکند.
- تعمیم، قدرت شبکه عصبی در ایجاد پاسخهای قابل قبول برای ورودیهایی است که عضو مجموعه آموزشی نبودهاند.
- در مرحله اجرا نیز شبکه عصبی برای عملکردی که به آن منظور طراحی گردیده است، استفاده میشود.
یادگیری در شبکههای عصبی مصنوعی
هدف از آموزش شبکه های عصبی، رسیدن به شرایطی است که شبکه قادر به پاسخگویی صحیح به دادههای ارائه شده در آموزش شبکه (به خاطر سپردن) و همچنین دادههای مشابه و متفاوت از ورودیهایی که از آنها برای آموزش شبکه استفاده شده است (تعمیم دادن)،باشد. برتری عمده شبکههای عصبی آموزش دادهشده بر محاسبات کلاسیک این است که نتایج مورد نیاز با تلاش کمتر و در زمان کمتری قابل حصول است. در نتیجه این مزایا خصوصاً برای مسائلی که مستلزم محاسبات طولانی هستند بسیار مفید و موثر واقع گردد.
دو نوع آموزش شبکه به شکل زیر است:
- الف – آموزش با ناظر
- ب – آموزش بدون ناظر
آموزش شبکههای عصبی مصنوعی
الف- آموزش با ناظر: آموزش اکثر شبکههای عصبی با استفاده از زوج بردارهای نمونه صورت میگیرد به طوری که به هر بردار ورودی یک بردار خروجی مشخص نسبت داده میشود. با ارائه این مجموعه بردارها به شبکه، وزنها بر اساس الگوریتم یادگیری شبکه اصلاح میگردند. اینگونه آموزش را آموزش با ناظر مینامند. شبکههای دلتا، آدالاین، مادالاین، تابع پایه شعاعی (RBF) و پس انتشار (BP) نمونه هایی از این نوع می باشد.
ب-آموزش بدون ناظر: در این نوع آموزش، بردارهای ورودی به شبکه ارائه گردیده بدون اینکه بردارهای خروجی مربوط به شبکه داده شوند، وزنهای شبکه بصورتی اصلاح میشوند که بردارهای ورودی مشابه در یک گروهبندی قرار گیرند. پاسخ شبکه بر اساس نزدیکترین بردار به بردار ورودی خواهد بود. یادگیری بدون ناظر را خود یادگیری هم میگویند. از شبکه های به کارگیرنده الگوریتم بدون ناظر میتوان به شبکه های هب، کوهونن و هاپفیلد اشاره کرد.
الگوریتم های یادگیری
منظور از یادگیری در شبکه های عصبی، تنظیم وزنها و بایاسهای شبکه بهگونهای است که عملکرد آن در پیشبینی یا طبقهبندی دادهها بهینه شود. بر این اساس، الگوریتم های یادگیری ماشین متفاوتی ارائه شدهاند که معمولترین آنها عبارتند از:
یادگیری هب (Hebbian Learning)
در این روش وزن مربوط به ورودی یک نرون، زمانی افزایش مییابد که سیگنال ورودی و خروجی هر دو بالا باشند؛ در واقع این به معنای تقویت آن ورودی است. این اصل بر پایهی جمله معروف «نورونهایی که با هم فعال میشوند، به هم متصل میشوند» شکل گرفته است و بیشتر در شبکه های بدون نظارت و شبکه های عصبی زیستیمحور کاربرد دارد.
قانون یادگیری دلتا (Delta Rule)
این الگوریتم که بعضاً به عنوان میانگین مربع خطا (LMS) نیز شناخته میشود، زمانی استفاده میگردد که هدف، کاهش سیگنال خطا باشد؛ بهعبارتی اختلاف بین خروجی واقعی شبکه و خروجی مورد انتظار به حداقل برسد. در این روش، سیگنال خطا بهصورت بازگشتی برای اصلاح وزنها و بایاسها به عقب منتشر میشود.
الگوریتم پسانتشار خطا (Backpropagation) رایجترین پیادهسازی قانون دلتا است و بهتنهایی در بیش از ۷۵٪ از کاربردهای عملی شبکه های عصبی مصنوعی به کار گرفته میشود.
یادگیری رقابتی (Competitive Learning)
در این روش، نورونها یا عناصر پردازشی برای تصاحب ورودی و اصلاح وزنهای خود با یکدیگر رقابت میکنند. تنها یک یا چند نرون برنده بهروزرسانی میشوند، در حالی که سایر نرونها ثابت میمانند. این نوع یادگیری پایهی شبکه های عصبی خاصی مانند نقشههای خودسازمانده (Self-Organizing Maps) است.
یادگیری تقویتی (Reinforcement Learning)
در این الگوریتم، شبکه از طریق دریافت پاداش یا جریمه، عملکرد خود را بهمرور بهبود میبخشد. برخلاف یادگیری نظارتشده که خروجی درست در هر مرحله در دسترس است، در یادگیری تقویتی تنها بازخورد کلی از محیط دریافت میشود. این روش در کاربردهایی نظیر کنترل ربات، بازیها و تصمیمگیریهای پیوسته بسیار موثر است.
یادگیری بدوننظارت (Unsupervised Learning)
در این نوع یادگیری، شبکه بدون دریافت خروجی مورد انتظار، سعی میکند الگوها و ساختارهای پنهان موجود در دادهها را کشف کند. این الگوریتمها اغلب برای خوشهبندی، فشردهسازی داده و کاهش ابعاد استفاده میشوند.
نتیجه گیری
شبکه های عصبی مصنوعی امروزه به یکی از مهمترین ابزارهای هوش مصنوعی تبدیل شدهاند که توانایی شناسایی الگوها، پیشبینی دادهها و تصمیمگیری هوشمند را در حوزههای گوناگون فراهم میکنند. پیشرفت الگوریتم های یادگیری و افزایش قدرت پردازشی، موجب شده این شبکهها در کاربردهایی مانند بینایی ماشین، پردازش زبان، پزشکی و فناوریهای خودران نقشی کلیدی ایفا کنند. با وجود چالشهایی مانند نیاز به داده زیاد و تفسیرپذیری پایین، آینده این فناوری با گرایش به مدلهای پیشرفتهتر، یادگیری با منابع محدود و تعامل با محاسبات نوین بسیار امیدوارکننده و تحولآفرین است.