آموزش شبکه‌ عصبی در متلب

یکی دیگر از بخش‌های دوست داشتنی و البته مهم در زبان برنامه نویسی متلب – که برای دانشجویان مهندسی بسیار مهم است – شبکه عصبی نامیده می‌ِشود. آموزش شبکه‌ عصبی در متلب یکی از پر طرفدار ترین مباحث تخصصی می باشد. شاید به صورت خلاصه بتوان گفت که ساختار شبکه عصبی در زبان برنامه نویسی متلب همچون شبکه عصبی انسان است و باعث می‌شود که کامپیوتر حل مسائل را درک کند. در مقاله گذشته از متلب آنالیز با بخشی از ابزار‌های شبکه عصبی در زبان برنامه نویسی متلب آشنا شدیم و در این مقاله نیز تصمیم داریم تا هرچه بیشتر به این موضوع بپردازیم و به کسب اطلاعات مختلفی پیرامون آن بپردازیم. پس تا انتهای مقاله همراه ما باشید.

در مقاله گذشته گفتیم که بعد از سال ۱۹۶۹ که مینسکی و پاپرت کتابی در خصوص سیستم‌های تک لایه و چند لایه پرسپترون نوشتند، در نتیجه سرمایه گذاری برای تحقیقات در این خصوص برای چندین سال متوقف گردید و گفته می‌شد که پرسپترون‌ها قادر به حل هیچ مسئله جالبی نیستند. اما با این وجود و کاهش اشتیاق عمومی و سرمایه گذاری‌ها، برخی از محققان تحقیقات خود را برای تولید ماشین‌هایی که بتواند مسائلی از قبیل تشخیص الگو‌ها را داشته باشند ادامه دادند. در این بین گراسبرگ شبکه‌ای تحت عنوان آوالانچ (Avalanch) را در زمینه تشخیص صحبت پیوسته و کنترل دست ربات مطرح کرد. گفتنی است که او به همراه کارپنتر، تئوری رزونانس تطبیقی (Adaptive resonance theory) را که به اختصار ART نامیده می‌شود ارایه داد و این نوع از شبکه با مدل‌های طبیعی تفاوت داشت.

گفتنی است که اندرسون و کوهنن نیز از اشخاصی بودند که تکنیک‌هایی را برای یادگیری ایجاد کردند. ورباس در سال ۱۹۷۴ شیوه آموزش پس انتشار خطا یا همان Back Propagation را ارایه داد که یک شبکه پرسترون چند لایه بود که البته قوانین قوی‌تری برای آموزش داشت. در سال‌های ۱۹۷۰ و ۱۹۸۰ پیشرفت‌‌هایی صورت گرفت که برای توجه به شبکه‌های عصبی بسیار مهم بودند.

باید توجه داشت که شبکه‌های عصبی مصنوعی نیز با نام Artificial Neural Network الگویی برای پردازش اطلاعات است که با استفاده از شبکه عصبی بیولوژیکی همانند مغز انسان ساخته شده است. گفتنی است که عنصر اصلی این الگو، ساختار جدید پردازش اطلاعات آن است که از تعداد زیادی نرون – عناصری با ارتباطات قوی داخلی  و هماهنگ – برای حل مسائل مخصوص استفاده می‌کند. بشر از زمان‌های قدیم تلاش می‌کرد تا ساختار و بیوفیزیولوژی مغز انسان را دریابد و به دلیل اینکه همیشه موضوع هوشمندی انسان و قابلیت‌های آن نظیر یادگیری، خلاقیت، انعطاف پذیری و پردازش موازی در مغز جالب هستند، به کار گرفتن این قابلیت‌ها در ماشین‌ها بسیار مطلوب و جالب‌تر بود. البته باید بدین نکته نیز توجه داشت که برای استفاده از این ویژگی‌ها در ماشین‌ها، استفاده از روش‌های الگوریتمیک مناسب نیستند. پس باید روش‌های مورد استفاده بر اساس همان مدل‌های بیولوژیکی باشند. ANN همانند انسان‌‌ها با استفاده از مثال‌ها آموزش می‌بیند و همانطور که یک بچه می‌تواند با مشاهده انواع مختلفی از یک حیوان، آن را تشخیص دهد، ANN نیز ساختاری مشابه دارد.

اجزای یک شبکه عصبی

نرون عصبی انسان:

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

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

matlab

در زمانی که سیگنال‌های عصبی از آکسونِ سایر نرون‌ها به یک نرون دیگر می‌رسد، آن را تحریک می‌کند و نرون از هر یک از اتصالات ورودی خود یک ولتاژ کم را توسط سیگنال‌های عصبی دریافت می‌کند و آن‌ها را با یکدیگر جمع می‌کند. در این بین اگر مقدار موجود به مقدار آستانه برسد، نرون آتش می‌گیرد و به آکسون خود یک ولتاژ خروجی ارسال می‌نماید و آکسون نیز با توجه به شدت آن، ممکن است یک سیگنال را توسط سیناپس‌، به دندریت نرون‌های دیگر بفرستد و یا اینکه چون ممکن است آن ضعیف باشد، هیچ گونه سیگنالی را از خود عبور نمی‌دهد و به همین منوال تمام پردازش‌ها و فعالیت‌ها در مغز هر انسان صورت می‌گیرد.

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

اجزای شبکه عصبی:

ورودی:

ورودی‌ها در شبکه عصبی می‌توانند خروجی سایر لایه‌ها باشند و یا به حالت خام در اولین لایه و به شکل‌های زیر باشند:

داده‌های عددی (رقمی) – متون ادبی و فنی – تصویر (شکل)

وزن‌ها:

در یک سیستم عصبی میزان تاثیر ورودی x بر خروجی y توسط وزن اندازه گیری می‌شود.

تابع جمع:

در شبکه‌هایی که تنها دارای یک نرون هستند، تابع جمع خروجی مسئله را تاحدودی مشخص می‌کند و شبکه‌های چند نرونی هم تابع جمع فعالیت نرون j در لایه‌های درونی را مشخص می‌سازند.

تابع تبدیل:

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

خروجی:

در یک سیستم عصبی، خروجی مسئله همان پاسخ مسئله است.

در این مقاله از متلب آنالیز هرچه بیشتر با ساختار یک سیستم عصبی در زبان برنامه نویسی متلب آشنا شدیم. همچنان همراه متلب آنالیز باشید تا به یاری خدا مقالات بیشتر و بهتری را در این خصوص منتشر کنیم.