در این مقاله به آموزش مقدمات شبکه عصبی مصنوعی پرداخته می شود. به منظور آموزش مقدمات شبکه عصبی مصنوعی نیاز است تا ابتدا ساختار کلی شبکه عصبی مصنوعی شناسایی و در مراحل بعد کدنویسی شبکه عصبی مصنوعی ارائه شود.
معرفی شبکه عصبی مصنوعی
شبکه عصبی مصنوعی یک سامانه پردازشی دادهها است که از مغز انسان ایده گرفته و پردازش دادهها را به عهدهٔ پردازندههای کوچک و بسیار زیادی سپرده که به صورت شبکهای به هم پیوسته و موازی با یکدیگر رفتار میکنند تا یک مسئله را حل نمایند. در این شبکهها به کمک دانش برنامه نویسی، ساختار دادهای طراحی میشود که میتواند همانند نورون عمل کند. که به این ساختارداده نورون گفته میشود. بعد باایجاد شبکهای بین این نورونها و اعمال یک الگوریتم آموزشی به آن، شبکه را آموزش میدهند.
در این حافظه یا شبکهی عصبی نورونها دارای دو حالت فعال (روشن یا ۱) و غیرفعال (خاموش یا ۰) اند و هر یال (سیناپس یا ارتباط بین گرهها) دارای یک وزن میباشد. یالهای با وزن مثبت، موجب تحریک یا فعال کردن گره غیر فعال بعدی میشوند و یالهای با وزن منفی، گره متصل بعدی را غیر فعال یا مهار (در صورتی که فعال بوده باشد) میکنند.
تاریخچه
شبکههای عصبی دهها سال است که جلب توجه میکنند وتاکنون راه حلهایی برای استفاده از هوش بشری ارائه شده است. اولین نرون مصنوعی درسال ۱۹۴۳ توسط نروفیزیولوژیست وارنمککالوک و منطق دان والترپیتز تولید شد.در دهه ۶۰ به دلایلی که خارج از بحث این مقاله است مردم بهسوی شبکههای عصبی متمایل شدند و تنها در دهه ۸۰ دانشمندان تواناییهای واقعی شبکههای عصبی را دیدند.
نورون مصنوعی
یک نورون مصنوعی سامانهای است با تعداد زیادی ورودی و تنها یک خروجی. نورون دارای دو حالت میباشد، حالت آموزش و حالت عملکرد. در حالت آموزش نورون یاد میگیرد که در مقابل الگوهای ورودی خاص برانگیخته شود و یا در اصطلاح آتش کند. در حالت عملکرد وقتی یک الگوی ورودی شناسایی شده وارد شود، خروجی متناظر با آن ارائه میشود. اگر ورودی جزء ورودیهای از پیش شناسایی شده نباشد، قوانین آتش برای بر انگیختگی یا عدم آن تصمیم گیری میکند.
از نورون های انسان تا نورون های مصنوعی
با کنار گذاشتن برخی از خواص حیاتی نورونها و ارتباطات درونی آنها میتوان یک مدل ابتدایی از نورون را به وسیله کامپیوتر شبیه سازی کرد.
شناسایی الگوهای پیچیده سطح بالا میتواند به وسیله شبکهای از نرونها انجام شود و بدین ترتیب نام آن را شبکههای عصبی مصنوعی گذاشتند.
اکنون شبکههای عصبی کاربردهای زیادی دارند(درمنطق وکلام و شناسایی عکسها)البته شناسایی الگوهامیتواند بهطور موفقیت آمیز بر روی کامپیوترهای عمومی انجام شود.
شبکههای عصبی شبیه به مغز انسان اطلاعاتی را پردازش میکنند. شبکه از تعداد زیادی سلولهای عصبی(Neuron ها) تشکیل شده با پردازشی بسیار بزرگ و بههم پیوسته که در حل موازی مسائل ویژه مشغول به کارند.
یادگیری شبکههای عصبی از طریق مثالهاست. آنها برای انجام یک کار خاص برنامهریزی نشدهاند. مثالها باید با دقت بسیار بالایی انتخاب شوند والا زمان مفید هدر خواهد رفت و یا حتی ممکن است شبکه به طور ناقص دایر شود و در اینجا راهی برای فهمیدن اینکه سیستم معیوب است یا خیر وجود ندارد مگر اینکه خطایی رخ دهد.
شبکههای عصبی مصنوعی یک ترکیبی از مجموعه نرونهاست و البته نرونهای مصنوعیای که بسیار شبیه به نرونهای زیستی کار میکنند. و بدین گونه است که ورودیهای زیادی با وزنهای مختلف میگیرد و یک خروجی که به ورودی وابسته است تولید میکند. نرونهای زیستی میتوانند در حال برانگیزش باشند یا نباشند. ( وقتی یک نرون برانگیخته میشود ضربه علائم خروجی آن مقداری کمتر از ۱۰۰ هرتز است)
شبکههای عصبی استفاده وسیعی در شناسایی الگوها دارند زیرا از خودشان قابلیت آن را دارند که بطور عمومی به ورودیهای غیر منتظره نیز پاسخ دهند. در طول ساخت نرونها میآموزند که چگونه الگوهای ویژه گوناگون را تشخیص دهند. اگر الگویی پذیرفته شود در حالی که در طول اجرا ورودی با خروجی مرتبط نباشد، نرون از مجموعهای از الگوهایی که سابقا آموخته خروجیی را که شبیه به الگو میباشد وکمترین تفاوت را با ورودی دارد انتخاب میکند. این روال عموما فراخوانی میشود.
مثال
وقتی که ورودی نرون ۱۱۱۱ باشد چهار ورودی بر حسب برانگیزش مرتب شدهاند و وقتی ورودیهای ۰۰۰۰ را داریم نرون برای برانگیزش مرتب نیست.
قاعده عمومی این است که نرونها مایلند برانگیخته شوند وقتی که ورودیها ۰۱۱۱ ، ۱۰۱۱ ، ۱۱۰۱ ، ۱۱۱۰ یا ۱۱۱۱ باشند و در صورتی که ورودی آنها ۱۰۰۰ ، ۰۰۰۱ ، ۰۰۱۰ ، ۰۱۰۰ یا ۰۰۰۰ باشند مایل به برانگیخته شدن نیستند.
ساختار شبکه های عصبی
یک شبکه عصبی شامل اجزای سازنده لایهها و وزنها میباشد. رفتار شبکه نیز وابسته به ارتباط بین اعضا است. در حالت کلی در شبکههای عصبی سه نوع لایه نورونی وجود دارد:
- لایه ورودی: دریافت اطلاعات خامی که به شبکه تغذیه شدهاست.
• لایههای پنهان: عملکرد این لایهها به وسیله ورودیها و وزن ارتباط بین آنها و لایههای پنهان تعیین میشود. وزنهای بین واحدهای ورودی و پنهان تعیین میکند که چه وقت یک واحد پنهان باید فعال شود. - لایه خروجی: عملکرد واحد خروجی بسته به فعالیت واحد پنهان و وزن ارتباط بین واحد پنهان و خروجی میباشد.
شبکههای تک لایه و چند لایهای نیز وجود دارند که سازماندهی تک لایه که در آن تمام واحدها به یک لایه اتصال دارند بیشترین مورد استفاده را دارد و پتانسیل محاسباتی بیشتری نسبت به سازماندهیهای چند لایه دارد. در شبکههای چند لایه واحدها به وسیله لایهها شماره گذاری میشوند (به جای دنبال کردن شماره گذاری سراسری).
هر دو لایه از یک شبکه به وسیله وزنها و در واقع اتصالات با هم ارتباط مییابند. در شبکههای عصبی چند نوع اتصال و یا پیوند وزنی وجود دارد: پیشرو: بیشترین پیوندها از این نوع است که در آن سیگنالها تنها در یک جهت حرکت میکنند. از ورودی به خروجی هیچ بازخوردی (حلقه) وجود ندارد. خروجی هر لایه بر همان لایه تاثیری ندارد.
- پسرو: دادهها از گرههای لایه بالا به گرههای لایه پایین بازخورانده میشوند.
- جانبی: خروجی گرههای هر لایه به عنوان ورودی گرههای همان لایه استفاده میشوند.
تقصیم بندی شبکه های عصبی
بر مبنای روش آموزش به چهار دسته تقسیم میشوند:
- وزن ثابت: آموزشی در کار نیست و مقادیر وزنها به هنگام نمیشود. کاربرد: بهینه سازی اطلاعات (کاهش حجم، تفکیک پذیری و فشرده سازی) و حافظههای تناظری
- آموزش بدون سرپرست: وزنها فقط بر اساس اطلاعات الگوهای ورودی به هنگام میشوند. هدف استخراج مشخصههای الگوهای ورودی بر اساس راهبرد خوشه یابی و یا دستهبندی و تشخیص شباهتها (تشکیل گروههایی با الگوی مشابه) میباشد، بدون اینکه خروجی یا کلاسهای متناظر با الگوهای ورودی از قبل مشخص باشد. این یاد گیری معمولاً بر پایه شیوه برترین هم خوانی انجام میگیرد. شبکه بدون سرپرست وزنهای خود را بر پایه خروجی حاصل شده از ورودی تغییر میدهد تا در برخورد بعدی پاسخ مناسبی را برای این ورودی داشته باشد. در نتیجه شبکه یاد میگیرد چگونه به ورودی پاسخ بدهد. اصولا هدف این است که با تکنیک نورون غالب نورونی که بیشترین تحریک آغازین را دارد برگزیده شود. بنابر این در شبکههای بدون سرپرست یافتن نورون غالب یکی از مهمترین کارها است.
- آموزش با سرپرست: به ازای هر دسته از الگوهای ورودی خروجیهای متناظر نیز به شبکه نشان داده میشود و تغییر وزنها تا موقعی صورت میگیرد که اختلاف خروجی شبکه به ازای الگوهای آموزشی از خروجیهای مطلوب در حد خطای قابل قبولی باشد. در این روشها یا از خروجیها به وزنها ارتباط وجود دارد یا خلا به صورت پس انتشار از لایه خروجی به ورودی توزیع شدهاست و وزنها اصلاح میشوند. هدف طرح شبکهای است که ابتدا با استفاده از دادههای آموزشی موجود، آموزش ببیند و سپس با ارائه بردار ورودی به شبکه که ممکن است شبکه آن را قبلا فراگرفته یا نگرفته باشد کلاس آن را تشخیص دهد. چنین شبکهای به طور گسترده برای کارهای تشخیص الگو به کار گرفته میشود.
- آموزش تقویتی: کیفیت عملکرد سامانه به صورت گام به گام نسبت به زمان بهبود مییابد. الگوهای آموزشی وجود ندارد اما با استفاده از سیگنالی به نام نقاد بیانی از خوب و یا بد بودن رفتار سامانه بدست میآید (حالتی بین یادگیری با سرپرست و بدون سرپرست).
کاربردهای شبکههای عصبی مصنوعی ANN
- میتوان موارد زیر را از کاربردهای شبکههای عصبی مصنوعی ذکر کرد:
- پردازش تصویر و دید( Image processing and computer vision )
- پردازش علائم( Signal processing ): شامل ریختشناسی و تجزیه و تحلیل علائم مربوط به زمینلرزهها و…
- شناسایی الگوها( Pattern recognition ): شامل شناسایی چهره، اثر انگشت، تشخیص نوع صدا و نوع صحبت کردن، دستخط و …
- پزشکی( Medicine ): شامل تجزیه و تحلیل و تشخیص علائم دستگاه ضرباننگار قلب (الکتروکاردیوگرافیک)، تشخیص امراض گوناگون و …
- سیستمهای نظامی( Military systems ): شامل ردیابی مینهای زیردریایی، دستهبندی صداهای نابههنجار و مخل در رادارها و شناسایی گوینده رزمی.
- سیستمهای تجاری( Financial systems ): شامل تجزیه و تحلیل انبار مغازهها، ارزیابی واقعی املاک و …
- برنامهریزی، کنترل و جستجو( Planning, control, and search ): شامل اجرای موازی مسائل و کنترل رباتها.
- هوش مصنوعی( Artificial intelligence ): شامل برخی سیستمهای طبی و اجرای سیستمهای خبره.
- سیستمهای قدرت( Power systems ): شامل برآورد وضعیت سیستم، ردیابی سریع و دستهبندی ردیابی، ردیابی خطا و ترمیم آن، پیشبینی و برآورد تخمین امنیت.
معایب شبکه های عصبی
با وجود برتریهایی که شبکههای عصبی نسبت به سامانههای مرسوم دارند، معایبی نیز دارند که پژوهشگران این رشته تلاش دارند که آنها را به حداقل برسانند، از جمله:
• قواعد یا دستورات مشخصی برای طراحی شبکه جهت یک کاربرد اختیاری وجود ندارد.
• در مورد مسائل مدل سازی، صرفاً نمیتوان با استفاده از شبکه عصبی به فیزیک مساله پی برد. به عبارت دیگر مرتبط ساختن پارامترها یا ساختار شبکه به پارامترهای فرآیند معمولاً غیر ممکن است.
• دقت نتایج بستگی زیادی به اندازه مجموعه آموزش دارد.
• آموزش شبکه ممکن است مشکل ویا حتی غیر ممکن باشد.
• پیش بینی عملکرد آینده شبکه (عمومیت یافتن) آن به سادگی امکان پذیر نیست.
شبکه های عصبی و هوش مصنوعی
شبکههای عصبی مصنوعی (Artificial Neural Network – ANN) یا به زبان سادهتر شبکههای عصبی سیستمها و روشهای محاسباتی نوینی هستند برای یادگیری ماشینی، نمایش دانش، و در انتها اعمال دانش به دست آمده در جهت بیشبینی پاسخهای خروجی از سامانههای پیچیده.
ایدهٔ اصلی این گونه شبکهها (تا حدودی) الهامگرفته از شیوهٔ کارکرد سیستم عصبی زیستی، برای پردازش دادهها، و اطلاعات به منظور یادگیری و ایجاد دانش قرار دارد. عنصر کلیدی این ایده، ایجاد ساختارهایی جدید برای سامانهٔ پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پردازشی فوق العاده بهمپیوسته با نام نورون تشکیل شده که برای حل یک مسأله با هم هماهنگ عمل میکنند و توسط سیناپسها(ارتباطات الکترومغناطیسی) اطلاعات را منتقل میکنند.
در این شبکهها اگر یک سلول آسیب ببیند بقیه سلولها میتوانند نبود آنرا جبران کرده، و نیز در بازسازی آن سهیم باشند. این شبکهها قادر به یادگیری اند. مثلا با اعمال سوزش به سلولهای عصبی لامسه، سلولها یاد میگیرند که به طرف جسم داغ نروند و با این الگوریتم سیستم میآموزد که خطای خود را اصلاح کند.
یادگیری در این سیستم ها به صورت تطبیقی صورت میگیرد، یعنی با استفاده ازمثالها وزن سیناپس ها به گونهای تغییر میکند که در صورت دادن ورودیهای جدید، سیستم پاسخ درستی تولید کند.
اما اغلب محققان آنها موافقند که شبکه عصبی شامل شبکه ای از عناصر پردازش ساده (نورونها) است، که میتواند رفتار پیچیده کلی تعیین شده ای از ارتباط بین عناصر پردازش و پارامترهای عنصر را نمایش دهد. در یک مدل شبکه عصبی، گرههای ساده (بطور گسترده «نورون»، «نئورونها»، “PE«ها (»عناصر پردازش«) یا»واحدها«) برای تشکیل شبکهای از گرهها، به هم متصل شده اند—به همین دلیل به آن، اصطلاح»شبکههای عصبی” اطلاق میشود. در حالی که یک شبکه عصبی نباید به خودی خود سازگارپذیر باشد، استفاده عملی از آن بواسطه الگوریتمهایی امکان پذیر است، که جهت تغییر وزن ارتباطات در شبکه (به منظور تولید سیگنال موردنظر) طراحی شده باشد.
با استفاده از دانش برنامهنویسی رایانه میتوان ساختار دادهای طراحی کرد که همانند یک نرون عمل نماید. سپس با ایجاد شبکهای از این نورونهای مصنوعی به هم پیوسته، ایجاد یک الگوریتم آموزشی برای شبکه و اعمال این الگوریتم به شبکه آن را آموزش داد.
این شبکهها برای تخمین (Estimation) و تقریب (Approximation)کارایی بسیار بالایی از خود نشان دادهاند. گستره کاربرد این مدلهای ریاضی بر گرفته از عملکرد مغز انسان، بسیار وسیع میباشد که به عنوان چند نمونه کوچک میتوان استفاده از این ابزار ریاضی در پردازش سیگنالهای بیولوییکی، مخابراتی و الکترونیکی تا کمک در نجوم و فضا نوردی را نام برد.
اگر یک شبکه را همارز با یک گراف بدانیم، فرآیند آموزش شبکه تعیین نمودن وزن هر یال و bias اولیه خواهد بود.