شبکه عصبی مصنوعی یا Artificial Neural Networks
شبکه عصبی مصنوعی یا ANN، یک سامانه پردازشی داده ها است که از مغز انسان ایده گرفته و پردازش داده ها را به عهده پردازندههای کوچک و بسیار زیادی سپرده که به صورت شبکهای به هم پیوسته و موازی با یکدیگر رفتار میکنند تا یک مساله را حل نمایند. شبکه عصبی مصنوعی سیستمها و روشهای محاسباتی نوینی هستند که برای یادگیری ماشینی، نمایش دانش، و در انتها اعمال دانش به دست آمده در جهت بیشبینی پاسخهای خروجی از سامانههای پیچیده مورد استفاده قرار میگیرند.
در این شبکهها به کمک دانش برنامه نویسی، ساختار داده ای طراحی میشود که میتواند همانند نورون عمل کند. به این ساختارداده، نورون گفته میشود. سپس با ایجاد شبکه بین این نورونها و اعمال یک الگوریتم آموزشی به آن، شبکه آموزش داده میشود.
یک نورون مصنوعی سامانهای است با تعداد زیادی ورودی و تنها یک خروجی. یک شبکه عصبی شامل اجزای سازنده لایهها و وزنها میباشد. رفتار شبکه نیز وابسته به ارتباط بین اعضا است.
وقتی که ارتباطات پیچیده بین ورودیها و خروجیها مدلسازی میشوند و یا الگوهایی پدیدار میشوند، شبکه های عصبی بهعنوان ابزاری برای مدلسازی دادههای آماری غیرخطی بهکار گرفته میشوند.
قابلیتهای شبکه عصبی مصنوعی یا ANN
- محاسبهی یک تابع معلوم
- تقریب یک تابع ناشناخته
- شناسایی الگو
- پردازش سیگنال
- یادگیری انجام موارد فوق
ویژگیهای شبکه های عصبی
1- قابلیت یادگیری و تطبیق پذیری ANN
قابلیت یادگیری یعنی توانایی تنظیم پارامترهای شبکه عصبی. برای این منظور نمونههای اولیه را به شبکه اعمال میکنند. شبکه، پارامترها را بر اساس این نمونه ها تنظیم می کند. اگر نمونه های جدید به این شبکه که به این طریق آموزش دیده، اعمال شود، ميتوان خروجی مناسب را با درصد خطای کوچک بهدست آورد. به این ترتیب شبکه های عصبی می توانند با تغییر شرایط به صورت هوشمندانه، خود را تطبیق يا اصلاح نمايند.
2- قابلیت تعمیم پذیری شبکه های عصبی
پس از آن که نمونههای اولیه به شبکه آموزش داده شد، شبکه می تواند در مقابل ورودیهای آموزش داده نشده (ورودیهای جدید) قرار گیرد و یک خروجی مناسب تولید نماید. این خروجی بر اساس مکانیسم تعمیم، که چیزی جز فرایند درونیایی نیست، به دست میآید.
3- پردازش موازی
هنگامی که شبکه عصبی در قالب سخت افزار پیاده میشود، سلولهایی که در یک تراز قرار میگیرند، میتوانند به طور همزمان به ورودیهای آن تراز پاسخ دهند. این ویژگی باعث افزایش سرعت پردازش ميشود. در واقع در چنین سیستمی، وظیفه کلی پردازش بین پردازندههای کوچکتر مستقل از یکدیگر توزیع میگردد.
4- مقاوم بودن
در یک شبکه عصبی رفتار کلی آن مستقل از رفتار هر سلول در شبکه می باشد درواقع رفتار کلی شبکه برآیند رفتارهای محلی تک تک سلولهای شبکه میباشد که این امر باعث میشود تا خطاهای محلی سلولها از چشم خروجی نهایی دور بمانند. این خصوصیت باعث افزایش قابلیت مقاوم بودن در شبکه عصبی می گردد.
5- قابلیت تقریب عمومی در شبکه های عصبی
شبکه های عصبی چند لایه، با یک یا چند لایه مخفی به شرط آن که تعداد نرونهای لایههای مخفی کافی داشته باشند، می توانند هر تابع غیرخطی پیوستهای را در فضای ترکیبی تخمین بزنند.
مغز انسان، هوش، و ایدهی شبکه عصبی
با توجه به اینکه محققان تاکنون نتوانستهاند دربارهی عملکرد مغز انسان که در واقع محل تجزیه و تحلیل (اتاق فرمان) ماشین بیولوژیکی موجودات زنده است تعریف واقعی ارائه نمایند، لذا پاسخ به این سوال که «هوش چیست؟» به سادگی امکان پذیر نیست و نمی توان پاسخی روشن و شفاف ارائه نمود.
با این حال، ماشین بیولوژیکي را میتوان با قابلیتهای زیر مورد بررسی قرار داد:
- در حافظه نگه داشتن تجربیات، آموزش و غيره و همچنين قابليت بازسازی نمودن آنها
- تصمیم گیری مناسب و منطقی براساس یادگیری و تجربیات آموزش دیدهی گذشته
- ابراز نظر(احساسات) براساس وجود واقعیت گذشته و حال
- خود سازماندهی (شکل پذیري) درونی براساس نیازهای فردی و جمعی
- ارتباط برقرار کردن منطقی الگوها براساس آموزش گذشته، به عنوان مثال، هوای ابری تصویری از امکان وقوع بارندگی را در ذهن انسان تداعی میکند.
- ارائه پاسخی مناسب به نحوی که محرکهای خارجی از خود عکس العمل مناسبی ارائه دهند
الگوریتم شبکه عصبی در داده کاوی
در بحث داده کاوی الگوریتم های بسیاری به منظور دسته بندی، رده بندی و پیش بینی بهکارگرفته میشوند که در این بین، الگوریتم شبکه عصبی یکی از الگوریتم های مطرح و پرکاربرد به شمار میرود. از جمله کاربردهای شبکه عصبی در بازشناسی الگو از طریق رده بندی یا Classification میباشد.
یک شبکهی عصبی بر خلاف کامپیوترهای رقمی که نیازمند دستورات کاملا صریح و مشخص است، به مدلهای ریاضی محض نیازی ندارد! بلکه مانند انسان، قابلیت یادگیری توسط تعدادی مثال مشخص را دارد. یک شبکهی عصبی مصنوعی باید بهصورتی پیکره بندی شود که از مجموعهای از ورودیها، مجموعهای از خروجیهای مورد نظر را ایجاد کند.
ساختار این الگوریتم بدین شکل است که بین داده های ورودی و داده های خروجی، یک و یا تعدادی لایهی فرضی که به آن Hidden Layers گفته میشود در نظر گرفته میشود. این لایه های مخفی شامل تعدادی Node میباشند که هریک از این Node ها بهوسیلهی اتصالهای وزندار به یکدیگر متصل میشوند تا ساختار عصبی مشابه ساختار شکل زیر را به وجود بیاورند.
روشهای مختلفی برای تعیین نقاط قوت اتصال وجود دارد. یکی از این روشها، تعیین وزن بهصورت مستقیم با استفاده از دانش قبلی است. راه دیگر، آموزش شبکه عصبی بهوسیلهی تغذیه با الگوهای آموزشی و اجازه داده به آن برای تغییر وزنها بر اساس قوانین آموزشی میباشد.
شبکه در حین یادگیری با تنظیم این وزنها قادر است برچسب درست را برای کلاس داده چندتاییهای ورودی پیشگویی کند. در این الگوریتم، با تکرار، مجموعهای از وزن ها آموزش دیده میشوند تا برچسب کلاس داده چندتاییهای ورودی را پیش گویی کنند. البته یک شبکه عصبی میتواند شامل چند لایهی نهان نیز باشد و خروجی هر لایه، بعد از وزن دهی و به صورت همزمان به عنوان ورودی لایه بعد از خود عمل کند.
بهکارگیری زبان برنامه نویسی پایتون در داده کاوی
زبان برنامه نویسی پایتون در چند سال گذشته دارای سیر صعودی از لحاظ استفاده در بین متخصصین علم داده و یادگیری ماشین در جهان بوده است. دلایل زیر در محبوبیت این زبان برنامه نویسی جهت استفاده در داده کاوی موثر بودهاند:
-
Python جامعهی بسیار فعالی برای توسعه دارد، جامعهی کاربری بزرگی که نه تنها پاسخ به سوالات و مشکلات را تضمین میکند، بلکه این اطمینانرا به وجود میآورد که ابزارهای فعلی نیز توسعه داده خواهد شد.
-
پایتون اسپانسرهای قدرتمندی همچون Google دارد، که میتوان با خیالی آسوده به آنها اطمینان کرد.
-
پایتون کاربردهای زیادی در بیگ دیتا و داده کاوی دارد.
-
زبان برنامه نویسی Python شامل کتابخانه های بسیار قدرتمند جهت انجام عملیات مختلف داده کاوی و یادگیری ماشین میباشد.
-
سرعت، اطمینان و بهینگی این زبان برنامه سازی در اجرای برنامه ها باعث اطمینان برنامه نویس از عملکرد در دنیای واقعی می شود.
-
یادگیری پایتون آسان است و منابع رایگان فراوانی برای آموزش زبان برنامه نویسی Python وجود دارد.
علاوه بر موارد بالا، نرم افزار پایتون در مقایسه با نرم افزاری چون رپیدماینر، به علت داشتن ماهیت برنامه نویسی این امکان را برای کاربران مهیا میکند که در صورتی که پکیج های آماده نیاز آن ها را مرتفع نمیساخت، با ایجاد تغییراتی کوچک، مدل دلخواه خود را به راحتی ایجاد کنند. البته باید به این نکته هم اشاره کرد که بخشی از محبوبیت Python در بین متخصصین داده در کشور ما، بدین خاطر است که کاربران با هدف انجام متن کاوی و یا وب کاوی بر روی داده های فارسی، میتوانند به راحتی از کتابخانه های آماده نرم افزار Python استفاده کنند، این درحالی است که دیگر نرم افزارها در این حوزه امکانات زیادی ندارند.
دربارهی کاربرد پایتون در داده کاوی بیشتر بدانیم
اجرای پروژه رده بندی در Python با بهکارگیری الگوریتم شبکه عصبی برای تعیین کلاس داده ها
در ویدئوی زیر، علیرضا قره داغی با بهکارگیری الگوریتم شبکه عصبی روی یک دیتاست ساده، بالاترین دقت این الگوریتم را برای رده بندی یا Classification، و تعیین کلاس داده محصولاتی با ویژگیهای مختلف در نرم افزار پایتون بهدست میآورد:
توسعه مهارت با حل تمرین
با بکارگیری مدل شبکه عصبی (MLP) و دیتاست Car Evaluation و تغییر پارامترهای این مدل، به بهترین config تنظیمات شبکه عصبی برسید. دقت کنید که منظور از این تغییرات بکارگیری حلقه های for تودرتو میباشد تا بتوانید مقادیر مختلفی را برای مدل در نظر گرفته و مدل را به ازای آن مقادیر بررسی کنید.
راهنمایی: خروجی این تمرین بهترین دقت حاصله از مدل شبکه عصبی و مقادیر پارامترهایی است که بهترین دقت به ازای آن ها تحقق مییابد. بازه پیشنهادی مقادیر:
- تعداد سطح (بین 5 تا 20)
- هر 4 مقدار ممکن Activation
- مقدار learning_rate_init (بین 0.01 تا 0.2 با گام پرش 0.05)
- مقدار Max_iter (بین 100 تا 1000 با گام پرش 50)
در فیلمک زیر، علیرضا قره داغی به حل تمرین بالا پرداخته است:
<p>
</p>
نظرات (3)