آموزش شبکه عصبی مصنوعی با پایتون
موسسه پایا پروژه به عنوان متصدی انجام پروژه های برنامه نویسی شبکه عصبی پایتون وظیفه ی خود می داند که در راستای آموزش شبکه عصبی گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی شبکه عصبی با پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
در این بخش ابتدا شبکه عصبی را تعریف کرده اجزای آن شرح و مهم ترین ویژگی ها و مولفه های آن بیان خواهد شد.
شبکه عصبی چیست؟
در هوش مصنوعی شبکه عصبی در واقع یک دسته بند است که با آموزش یاد می گیرد که داده ها را به صورت صحیح ار هم تفکیک کند که هر چقدر ساختار داده ها پیچیده تر باشد این دسته بند از لایه ها و نرون های بیشتری برای تفکیک داده ها استفاده می کند.
همان طور که می دانید شبکه عصبی از طرز کار سلول های عصبی ( نرونها) در مغز الهام گرفته است. آنچه که در مغز ما باعث یادگیری شده ارتباط سیگنال های بین نرون هاست . مهندسین هوش مصنوعی این فرایند را سادهسازی کرده و از آن برای آموزش ماشین استفاده می کنند. در زبان ریاضی، با تنظیم یک پارامتر موسوم به وزن (Weight) این رفتار مدلسازی میشود. در واقع ابتدا شبکه با الگوهای مختلفی از مسئله مورد نظر آموزش داده میشود و سپس با مفاهیمی که یاد گرفته و داده های جدید تحت عنوان داده تست، آزمایش میشود در واقع شبکه عصبی قابلیت ذخیره کردن تجربیات و به کارگیری آن ها برای استفاده های آتی را دارا می باشد.
اجزای شبکه عصبی
در ساده ترین حالت میتوان گفت شبکه عصبی تشکیل شده از تعدادی واحد پردازشی به نام نرون که وظیفه دریافت وردی را دارند و وزنها که برای هر نرون تعریف میشوند و با الگوریتمهای یادگیری حین اجرا مرتبا بروزرسانی می شوند. بعد از ورودی گرفتن باید حاصل جمع (حاصل ضرب وزن ها در هر ورودی ) محاسبه میشود. این کار باعث تاثیر وزن ها در بدست آوردن خروجی مطلوب میشود. سپس تابع محرک که تعیین میکند کدام واحد پردازشی یا نرون خروجی 1 یا 0 داشته باشد، اجرا میشود. شکل 1- این شبکه را به خوبی نشان داده است.

شکل 1- شبکه عصبی تک لایه
هر چقدر مسئله مورد نظر پیچیدهتر باشد شبکه عصبی آن از لایه های میانی بیشتری استفاده میکند. در شبکههایی با بیش از دو لایه، خروجی لایه اول ورودی لایه دوم میشود و آنپه که بسیار جالب است و از سلولهای عصبی مغز برگرفته شده این است که خروجی هر نرون ورودی تمام نرونهای لایه بعد شده که در شبکه های بزرگ باعث بوجود آمدن ارتباطات قوی و پیچیده ای بین پارامترها یک مسئله میشود. شکل 2 این پیچیدگی ارتباطی را در شبکه عصبی چهار لایه نشان میدهد.

شکل 2 شبکه عصبی چهار لایه
ویژگی های شبکه عصبی
اما مهمترین ویژگی یا قابلیت هایی که یک شبکه عصبی پیاده سازی شده باید دارا باشد چیست؟
قابلیت یادگیری
یعنی توانایی تنظیم وزنهای سیناپسی و بروز رسانی آنها در طول زمان اجر با کم ترین خطا یا بهینه کردن آنها با هدف نزدیک شدن به خروجی مطلوب
پراکندگی اطلاعات
یادگیری شبکه در وزنهای سیناپسی پنهان است. چون هر سیناپسی در همه ورودی ها تاثیر گذار است میتوان گفت هر نرون در شبکه، از کل فعالیت سایر نرون ها متاثر می باشد. در نتیجه اگر بخشی از نرونها های شبکه حذف شوند و یا عملکرد غلط داشته باشند باز هم احتمال رسیدن به پاسخ صحیح وجود دارد. اگر چه این احتمال برای تمام ورودی ها کاهش یافته برای هیچ یک از بین نرفته است.
قابلیت تعمیم
در واقع دستهبندی نمونههای جدید بر اساس تعمیم آنچه که در بخش آموزش یاد گرفته،اتفاق میافتد.
پردازش موازی
شود نرونهایی که در یک لایه قرار می گیرند میتوانند بطور همزمان به ورودی های آن لایه پاسخ دهند. این ویژگی باعث افزایش سرعت پردازش می شود. در واقع در چنین سیستمی، وظیفه کلی پردازش بین نرونها توزیع می گردد.
مقاوم بودن
رفتار مستقلانه سلول ها باعث می شوند تا خطاهای محلی درخروجی نهایی تاثیر نگذازد. به عبارت دیگر، نرونها خطاهای محلی یکدیگر را تصحیح میکنند. این خصوصیت باعث افزایش قابلیت مقاوم بودن یا تحمل پذیری خطاها در سیستم می گردد.
پیاده سازی شبکه عصبی
با تعیین و مشخص کردن سه مولفه مهم معماری شبکه، الگوریتم یادگیری تابع فعال سازی، شروع می شود. انتخاب معماری شبکه بستگی به نوع داده و حجم آن و تجربه شما از یادگیری ماشین و پارامترهای مسئله دارد. یادگیری شبکه: بسته به نوع مسئله و داده ها باید الگوریتم یادگیری مناسب انخاب شود. که از مهم ترین آن ها می توان گرادیان نزولی و الگوریتم های تکاملی مانند ژنتیک را نام برد.
تابع فعال سازی یا محرک شبکه در واقع با مفاهیم ساده ریاضی تصمیم میگیره که کدام ورودیها در فرایند یادگیری و پیش بینی برای شبکه تاثیرگذار یا فعال باشند. از مهم ترین توابع فعال ساز می توان به سیگموئیدو تانژانت و ReLU اشاره کرد.
درآینده در مورد پیاده سازی اولین و ساده نرین شبکه عصبی یا زبان پایتون در محیط آناکاندا و vscode صحبت خواهیم کرد.
