شبکه عصبی چیست؟
به صورت ساده، نورونها در مغزِ انسان اطلاعات را از نورونهای دیگر به وسیلهی دندرویدها میگیرند. این نورونها اطلاعاتِ ورودی را با هم جمع کرده و اگر از یک حدِ آستانهای فراتر رود به اصلاح فعال (Fire) میشود و این سیگنالِ فعالْ شده از طریق آکسونها به نرونهای دیگر متصل میشود. این سیستم از شمار زیادی عناصر پردازشی فوقالعاده بهمپیوسته با نام نورون تشکیل شده که برای حل یک مسئله با هم هماهنگ عمل میکنند و توسط سیناپسها اطلاعات را منتقل میکنند. یادگیری در این سیستمها به صورت تطبیقی صورت میگیرد، یعنی با استفاده از مثالها وزن سیناپسها به گونهای تغییر میکند که در صورت دادن ورودیهای جدید، سیستم پاسخ درستی تولید کند.البته که این توضیح در علم پزشکی مفید است ولی در علومِ کامپیوتر و هوشمصنوعی ما فقط از نورونهای مغز برای ساخت الگوریتمی به نام شبکهیعصبیِ مصنوعی (Artificial Neural Network) بهره میگیریم. توسط الگوریتمِ شبکههای عصبی، میتوان مدلهای مختلف و پیچیدهای را شناخت. برای مثالِ میتوان طبقهبندیهایی با دقتِ خوب انجام داده یا خوشهبندیهایی بر روی دادههای بزرگ انجام دهیم. یک شبکه عصبی مصنوعی، از سه لایهٔ ورودی، خروجی و پردازش تشکیل میشود. هر لایه شامل گروهی از سلولهای عصبی (نورون) است که عموماً با کلیهٔ نورونهای لایههای دیگر در ارتباط هستند، مگر این که کاربر ارتباط بین نورونها را محدود کند؛ ولی نورونهای هر لایه با سایر نورونهای همان لایه، ارتباطی ندارند. یک شبکهٔ عصبی که از اجتماع این نورونها تشکیل میشود، نیز میتواند یک سامانهٔ کاملاً پیچیده و غیرخطی باشد. در شبکهٔ عصبی هر نورون بهطور مستقل عمل میکند و رفتار کلی شبکه، برآیند رفتار نورونهای متعدد است. به عبارت دیگر، نورونها در یک روند همکاری، یکدیگر را تصحیح میکنند. نکتهی جالب توجه درمورد شبکهی عصبی این است که نیازی نیست آن را برای یادگیری صریح، برنامهریزی کنید. این شبکه در واقع میتواند همهچیز را مانند مغز انسان، خودش یاد بگیرد. شبکهی عصبی یک سامانه پردازش دادهها است که از مغز انسان ایده گرفته و پردازش دادهها را به عهدهپردازندههای کوچک و بسیار زیادی میسپارد که به صورت شبکهای به هم پیوسته و موازی با یکدیگر برای حل یک مسئله رفتار میکنند. در این شبکهها به کمک دانش برنامه نویسی، ساختار دادهای طراحی میشود که میتواند همانند نورون عمل کند. به این ساختار داده گره گفته میشود. در این ساختار با ایجاد شبکهای بین این گرهها و اعمال یک الگوریتم آموزشی به آن، شبکه را آموزش میدهند. در این حافظه یا شبکه عصبی گرهها دارای دو حالت فعال (روشن یا ۱) و غیرفعال (خاموش یا ۰) اند و هر یال (سیناپس یا ارتباط بین گرهها) دارای یک وزن میباشد. یالهای با وزن مثبت، موجب تحریک یا فعال کردن گره غیر فعال بعدی میشوند و یالهای با وزن منفی، گره متصل بعدی را غیر فعال یا مهار (در صورتی که فعال بوده باشد) میکنند.
تاریخچه شبکههای عصبی:
اولین شبکه عصبی در سال 1943 توسط وارن مک کالچ و والتر بتیس ساخته شد. اما محدودیتهاي تکنولوژي اجازه پیشرفت و کار بیشتري را نداد. از آن پس اقدامات بسیار زیادي در این خصوص صورت گرفت، ولی توفیق چندانی حاصل نشد و در همین راستا مینسکی و پاپرت در سال 1969 کتابی منتشر کردند که در آن دلایل عدم توفیق شبکههاي عصبی را توضیح دادند و به محدودیتهاي آن پرداختند . با پیشرفت متدهاي برنامهنویسی کامپیوتر و علاقه محققان براي ساختن ماشینهاي هوشمند، پیشرفتهاي بسیار خوبی از اواسط دهه 1980 میلادي به وجود آمد و شبکههاي عصبی مورد استفاده کنونی را پایه گذاري کرد. در دهه 40 میلادي ، دانشمندان مک کلوث و والتر پیتز نشان دادند که شبکههاي عصبی میتوانند هر تابع حسابی و منطقی را محاسبه نمایند . که اینجا را میتوان نقطهاي براي شروع حوزه علمی شبکههاي عصبی مصنوعی دانست. در سال 1956 در کنفرانس تحقیقاتی دارتموث ، هوش مصنوعی مطرح و مباحث مختلف آن عنوان گردید ، که این کنفرانس به توسعه و پیشرفت آن دسته از برنامههاي کامپیوتري منجر شد که میتوانند ماشینها را به انجام کارهاي هوشمندانه یا کارهاي شبیه انسان وادار نمایند. بعد از این کنفرانس در سال 1958 نخستین کاربرد عملی شبکههاي عصبی فرانک روز نبالت، از آزمایشگاه پرواز کرنل بود که یک مدل محاسباتی به نام پرسپترون براي شبکیه چشم ایجاد نمود. در سال 1972 کوهنن و جیمز اندرسون ، به طور مستقل و بدون اطلاع از هم ، شبکههاي عصبی جدیدي را معرفی نمودند که قادر بودند به عنوان عناصر ذخیرهساز، عمل نمایند. در سال 1982 ایدهاي توسط جان هاپفیلد ، فیزیکدان آمریکایی مطرح شد که مبتنی بود بر استفاده از مکانیسم تصادفی جهت توضیح عملکرد یک طبقه وسیع از شبکههاي برگشتی که میتوان آنها را جهت ذخیرهسازي اطلاعات استفاده نمود. و نیز ایده دوم توسط دیوید راملهارت و جیمز مکلند ، الگوریتم پس انتشار خطا میباشد که این دو ایده در دهه هشتاد قرن بیستم به علاوه رشد تکنولوژي میکروپروسسورها و تحقیقات روي شبکههاي عصبی زمینه را براي شکوفایی مجدد بحث شبکههاي عصبی مصنوعی را ایجاد نمود. از قرن نوزدهم بهطور همزمان اما جداگانه از سویی نوروفیزیولوژیستها سعی کردند سیستم یادگیری و تجزیه و تحلیل مغز را کشف کنند، و از سوی دیگر ریاضیدانان تلاش کردند مدل ریاضی ای بسازند که قابلیت فراگیری و تجزیه و تحلیل عمومی مسائل را دارا باشد. اولین کوششها در شبیهسازی با استفاده از یک مدل منطقی در اوایل دههٔ ۱۹۴۰ توسط وارن مککالک و والتر پیتز انجام شد که امروزه بلوک اصلی سازنده اکثر شبکههای عصبی مصنوعی است. عملکرد این مدل مبتنی بر جمع ورودیها و ایجاد خروجی با استفاده از شبکهای از نورونها است. اگر حاصل جمع ورودیها از مقدار آستانه بیشتر باشد، اصطلاحاً نورون برانگیخته میشود. نتیجه این مدل اجرای ترکیبی از توابع منطقی بود. در سال ۱۹۴۹ دونالد هب قانون یادگیری را برای شبکههای عصبی طراحی کرد. در سال ۱۹۵۸ شبکه پرسپترون توسط روزنبلات معرفی گردید. این شبکه نظیر واحدهای مدل شده قبلی بود. پرسپترون دارای سه لایه است که شامل لایهٔ ورودی، لایهٔ خروجی و لایهٔ میانی میشود. این سیستم میتواند یاد بگیرد که با روشی تکرارشونده وزنها را به گونهای تنظیم کند که شبکه توان بازتولید جفتهای ورودی و خروجی را داشتهباشد. روش دیگر، مدل خطی تطبیقی نورون است که در سال ۱۹۶۰ توسط برنارد ویدرو و مارسیان هاف در دانشگاه استنفورد) به وجود آمد که اولین شبکههای عصبی به کار گرفته شده در مسائل واقعی بودند. آدالاین یک دستگاه الکترونیکی بود که از اجزای سادهای تشکیل شده بود، روشی که برای آموزش استفاده میشد با پرسپترون فرق داشت.
مزیتهای شبکه عصبی:
شبکه عصبی با قابلیت قابل توجه آنها در جست و جو معانی از دادههای پیچیده یا مبهم، میتواند برای استخراج الگوها و شناسایی روشهایی که آگاهی از آنها برای انسان و دیگر تکنیکهای کامپیوتری بسیار پیچیده و دشوار است به کار گرفته شود. یک شبکه عصبی تربیت یافته میتواند به عنوان یک متخصص در مقوله اطلاعاتی که برای تجزیه تحلیل به آن داده شده به حساب آید. مزیتهای دیگر شبکه های عصبی یادگیری انطباق پذیر (Adaptive Learning) یادگیری انطباق پذیر، قابلیت یادگیری و نحوه انجام وظایف بر پایه اطلاعات داده شده برای تمرین و تجربههای مقدماتی. سازماندهی توسط خود (Self Organization) سازماندهی توسط خود یعنی یک شبکه هوش مصنوعی سازماندهی یا ارائهاش را برای اطلاعاتی که در طول دوره یادگیری دریافت میکند، خودش ایجاد کند. عملکرد بهنگام (Real Time Operation) در عملکرد بهنگام محاسبات شبکه هوش مصنوعی میتواند بصورت موازی انجام شود و سخت افزارهای مخصوصی طراحی و ساخته شده که میتواند از این قابلیت استفاده کنند. تحمل اشتباه بدون ایجاد وقفه در هنگام کد گذاری اطلاعات خرابی جزئی یک شبکه منجر به تنزل کارایی متناظر با آن میشود، اگر چه تعدادی از قابلیتهای شبکه حتی با خسارت بزرگی هم به کار خود ادامه میدهند. ما شبکههای عصبی را با تلاش اولیه در جهت یافتن خصوصیات اساسی سلولهای عصبی و اتصالات آنها هدایت میکنیم. سپس بطور معمول یک کامپیوتر را برای شبیه سازی این خصوصیات برنامهریزی میکنیم. اگر چه بدلیل اینکه دانش ما از سلولهای عصبی ناقص است و قدرت محاسبات ما محدود است، مدلهای ما لزوما آرمانهای خام و ناقصی از شبکههای واقعی سلولهای عصبی است.
قدرت محاسباتی
همانطور که قضیه تقریب جهانی ثابت می کند، پرسپترون چند لایه یک تقریب زننده جهانی تابع است. با این حال، اثبات آن در خصوص تعداد نورون های مورد نیاز، توپولوژی شبکه، وزن ها و پارامترهای یاد گیری، ساختنی نیست. یک معماری بازگشتی ویژه با وزن هایی که مقادیر گویا دارند (در مقابل وزن های حقیقی مقداری که دقت کامل دارند)، با استفاده از تعدادی متناهی نورون و اتصالات خطی استاندارد، قدرت کامل یک ماشین جهانی تورنگ را دارد. علاوه بر این، استفاده از مقادیر گنگ برای وزن ها منجر به یک ماشین با قدرت ابر-تورینگ می شود.
ظرفیت
خاصیت “ظرفیت” مدل ها تقریباً متناظر است با توانایی آن ها در مدل کردن هر تابع داده شده ای و مرتبط است با مفهوم پیچیدگی و نیز میزان اطلاعاتی که می توان در شبکه ذخیره کرد.
همگرایی
ممکن است مدل ها بطور پایدار به یک جواب همگرا نشوند، اولاً به این دلیل که ممکن است مینمم های موضعی فراوانی وجود داشته باشند، بسته به تابع هزینه و خود مدل؛ دوماً، روش بهینه سازی مورد استفاده ممکن است هنگامی که دور از مینمم های موضعی کار را آغاز کنیم، همگرایی را تضمین نکند. سوماً، برای داده ها یا پارامترهای بقدر کافی بزرگ، ممکن است برخی روش ها غیر عملی شوند. با این حال، برای آموزش شبکه عصبی CMAC، یک الگوریتم کمترین مربعات بازگشتی معرفی شده است، و می توان تضمین کرد که این الگوریتم در یک گام همگرا می شود
کاربردهای شبکه های عصبی:
شبکه ها به دلیل توانایی در بازتولید و مدل سازی فرایندهای غیر خطی در رشته های مختلفی کاربرد یافته اند. برخی زمینه های کاربردی عبارت اند از شناسایی سیستم و کنترل (کنترل وسیله نقلیه، پیش بینی مسیر، کنترل فرایند، مدیریت منابع طبیعی)، شیمی کوانتومی، بازی و تصمیم گیری (تخته نرد، شطرنج، پوکر)، الگوشناسی (سیستم های رادار، شناسایی چهره، دسته بندی سیگنال، شناسایی اشیاء و غیره)، شناسایی دنباله ای (ژست، صحبت، شناسایی نوشته با دست)، تشخیص پزشکی، امور مالی (مثلاً سیستم های تجاری خودکار)، داده کاوی، بصری سازی، ترجمه ماشین، فیلترینگ شبکه های اجتماعی و فیلترینگ ایمل های اسپم. ANN ها در شناسایی سرطان، از جمله سرطان های ریه، پروستات، روده بزرگ و نیز تشخیص خطوط سلول های سرطانی تهاجمی از خطوطی که کمتر تهاجمی هستند تنها با استفاده از اطلاعات شکل سلول، مورد کاربرد قرار گرفته اند. ANN ها همچنین برای ساختن مدل های جعبه سیاه در علوم زمین شناسی استفاده شده اند: هیدرولوژی، مدل سازی اقیانوس و مهندسی سواحل، و ژئوموفولوژی تنها چند مثال از این نوع هستند. علوم اعصاب محاسباتی و نظری، در حوزه تحلیل نظری و مدل سازی محاسباتی سیستم های عصبی زیستی تمرکز دارد. از آنجایی که سیستم های عصبی سعی در انعکاس فرایندهای شناختی و رفتاری دارند، این رشته ارتباط نزدیکی با مدل سازی رفتاری و شناختی دارد. برای بدست آوردن درکی از این موضوع، دانشمندان اعصاب سعی دارند میان فرایندهای زیستی مشاهده شده (داده ها)، مکانیزم های پذیرفتنی زیست شناختی برای پردازش عصبی و یادگیری (مدل های شبکه عصبی زیستی) و تئوری (نظریه یادگیری آماری و نظریه اطلاعات) پیوند ایجاد کنند. پژوهش در حوزه مغز مکرراً منجر به ایجاد روش های نوین ANN شده است، مثلاً استفاده از ارتباطات برای متصل کردن نورون های لایه های دیگر به جای نورون های مجاور در یک لایه. روش های دیگری استفاده از انواع سیگنال های چندگانه، یا کنترل ظریف تر نسبت به متغیر های بولی (روشن/خاموش) را مورد کاوش قرار داده اند. شبکه های عصبی پویا می توانند بطور پویا اتصالات جدید و حتی واحدهای عصبی جدیدی را حین غیر فعال سازی بقیه واحدها ایجاد کنند.
هدف از این دوره آموزشی:
هدف از این دوره آموزشی، آموزش کامل شبکه عصبی با پایتون است. در این دوره با زبانی ساده و قابل فهم تئوری شبکه های عصبی و تمامی آنچه برای شناخت شبکه های عصبی نیاز دارید، مورد بحث و بررسی قرار می گیرد. ابتدا پایتون روی ویندوز و لینوکس نصب می شود و یک مرور کامل روی پایتون انجام می شود و ذر ادامه تئوری شبکه های عصبی مصنوعی و مباحث تکمیلی بحث و بررسی می شوند. در نهایت به صورت عملی شبکه های عصبی مصنوعی با استفاده از کتابخانه های مهم و کاربردی پایتون، پیاده سازی و آموزش داده می شود. بدون شک یکی از بهترین دوره های شبکه های عصبی مصنوعی با پایتون می باشد که با زبان فارسی و قابل فهم توضیح داده شده است. مدرس این دوره سال هاست در این حوزه کار می کند و نکات آموزشی و تدریس خوب ایشان می تواند به شما در متخصص شدن برای کار با شبکه های عصبی مصنوعی کمک زیادی کند. امیدواریم که این آموزش از “بیگ لرن” هم مثل سایر آموزش ها مورد تایید و رضایت شما مخاطبان گرامی قرار گیرد.
بخش اول: مرور کامل روی پایتون
بخش پیشنیاز: مرور کامل روی یادگیری ماشین
بخش دوم: تئوری شبکه های عصبی مصنوعی
بخش سوم: پیاده سازی عملی شبکه های عصبی مصنوعی
بخش چهارم: شبکه های عمیق پرکاربرد
بخش پنجم: پیاده سازی شبکه های عصبی به صورت گرافیکی
بخش ششم: روش های عمیق کردن یادگیری شبکه
نظرات
4 دیدگاه برای آموزش شبکه عصبی با پایتون
برای فرستادن دیدگاه، باید وارد شده باشید.
سینا
با سلام
دوره کاملی بود
آقای دکتر هم واقعا خیلی شفاف توضیح دادن. بعلاوه کاملا مشخصه که آدم فروتن و توانمندی هستن! بسیار ممنون از ایشون و عوامل بیگ لرن
شیوا
تدریس آقای دکتر خیلی خوب و قابل فهم بود. واقعا هم تئوری و هم عملی رو عالی توضیح دادند. خیلی ممنون
علیرضا
آموزش خیلی جالبی بود و راضی بودم. بخصوص اینکه خیلی قابل فهم مطالب ارائه شده بود
کدرلایف
ممنون از این مقاله کاربردی