مقدمه
در این آموزش یادگیری ماشین ، بهترین الگوریتم های شبکه عصبی را معرفی و بررسی می کنیم. این الگوریتم های شبکه عصبی ، برای آموزش شبکه عصبی مصنوعی به کار می روند. در ادامه به طور عمیق به یادگیری گرادیان نزولی ، الگوریتم های تکاملی و الگوریتم ژنتیک در شبکه عصبی می پردازیم.
پس بیایید یادگیری الگوریتم های شبکه عصبی را شروع کنیم.
برترین الگوریتم های شبکه عصبی
یادگیری شبکه عصبی بر اساس نمونه ای از جمعیت مورد مطالعه صورت می گیرد. در طول زمان یادگیری ، مقدار ارائه شده توسط واحد خروجی با مقدار واقعی مقایسه می شود. پس از آن ، وزن همه واحدها طوری تنظیم شده تا پیش بینی اصلاح شود. الگوریتم های شبکه عصبی زیادی برای آموزش شبکه عصبی مصنوعی وجود دارند. حال بیایید نگاهی به برخی از الگوریتم های مهم آموزش شبکه های عصبی داشته باشیم :
- گرادیان نزولی _ برای یافتن حداقل محلی یک تابع استفاده می شود.
- الگوریتم های تکاملی _ مبتنی بر مفهوم انتخاب طبیعی ( natural selection ) یا بقای برازنده ترین ها ( survival of the fittest ) در زیست شناسی است.
- الگوریتم ژنتیک _ بکارگیری مناسب ترین قوانین برای حل یک مسئله و انتخاب آن. از این رو، آن ها ” اطلاعات ژنتیکی ” خود را به قوانین ” فرزند ” انتقال می دهند. در ادامه جزئیات آن ها را خواهیم آموخت.
۱- گرادیان نزولی
ما از الگوریتم گرادیان نزولی استفاده می کنیم تا حداقل محلی تابع را بیابیم. الگوریتم شبکه عصبی ، با نزدیک شدن متناسب با منفی گرادیان تابع ، به حداقل محلی همگرا می شود. برای پیدا کردن بیشینه محلی ، گام هایی متناسب با گرادیان مثبت تابع برداشته می شود که فرآیند گرادیان صعودی است.
در مدل های خطی ، سطح خطا کاملاً مشخص است و به شکل یک سهمی شناخته شده است. سپس با محاسبات ، کمترین نقطه پیدا می شود. بر خلاف مدل های خطی ، شبکه های عصبی ، مدل های غیرخطی پیچیده ای هستند. در اینجا سطح خطا طرح نامنظمی دارد که شامل برجستگی ها، فرورفتگی ها و سطوح صاف می باشد. برای پیدا کردن پایین ترین نقطه روی این سطح، کاربر باید آن را جستجو کند، زیرا هیچ راهنمایی برای یافتن آن وجود ندارد.
در این الگوریتم شبکه عصبی ، شما با دنبال کردن خط با بیشترین شیب ، روی سطح خطا حرکت می کنید تا به پایینترین نقطه ممکن برسید. با یافتن یک نرخ بهینه ، با شیب رو به پایین حرکت می کنید. سرعت صحیح ، متناسب با شیب سطح و نرخ یادگیری است. نرخ یادگیری ، میزان تغییر وزن ها را در طول فرآیند یادگیری کنترل می کند.
از این رو ، یک شبکه عصبی میتواند بر عملکرد پرسپترون چند لایه تأثیر بگذارد.
۲- الگوریتم های تکاملی
این الگوریتم ، مبتنی بر مفهوم انتخاب طبیعی ( natural selection ) یا بقای برازنده ترین ها در زیست شناسی می باشد. مفهوم انتخاب طبیعی بیان می کند که برای یک جمعیت معین، شرایط محیطی موجب افزایش برازنده ترین افراد در آن جمعیت می شود. برای ارزیابی مناسب ترین افراد در یک جمعیت مشخص ، می توانید یک تابع اعمال کنید.
در زمینه الگوریتم های تکاملی ، بازترکیبی را به عنوان یک عملگر مطرح می کنند. سپس آن را برای دو یا چند کاندید که به عنوان والدین شناخته می شوند، اعمال کرده و منجر به ایجاد یک کاندیدای جدید بنام فرزند می شوند. جهش را روی یک کاندید واحد اعمال کرده تا منجر به یک کاندید جدید شود. با استفاده از بازترکیبی و جهش ، می توانیم یک سری از کاندیداهای جدید را در نسل بعدی ، براساس مناسب ترین معیارهای آن ها به دست آوریم.
دو عنصر اساسی الگوریتم های تکاملی در شبکه عصبی عبارتند از :
-
-
- عملگر های تغییر ( بازترکیب و جهش )
- فرآیند انتخاب ( انتخاب برازنده ترین )
-
ویژگی های رایج الگوریتم های تکاملی عبارتند از :
-
-
- الگوریتم های تکاملی مبتنی بر جمعیت هستند.
- الگوریتم تکاملی از بازترکیبی کاندیداهای یک جمعیت استفاده کرده و کاندیداهای جدیدی ایجاد می کند.
- مبتنی بر الگوریتم تکاملی انتخاب تصادفی است.
-
از این رو ، بر اساس جزئیات و مسائل کاربردی ، ما از قالب های مختلف الگوریتم های تکاملی استفاده می کنیم.
برخی از الگوریتم های تکاملی رایج عبارتند از :
- الگوریتم ژنتیک : راه حل مسائل بهینه سازی را با کمک فرآیند های تکاملی طبیعی ارائه می دهد. مانند جهش ، بازترکیبی ، ترکیب یا آمیزش ، و وراثت.
- برنامه نویسی ژنتیک : برنامه نویسی ژنتیک راه حلی را در قالب برنامه های رایانه ای ارائه می دهد. با توانایی حل مسائل محاسباتی ریا، دقت یک برنامه را اندازه گیری می کند.
- برنامه نویسی تکاملی : در یک محیط شبیه سازی شده برای توسعه هوش مصنوعی از آن استفاده می کنیم.
- استراتژی تکامل : که یک الگوریتم بهینه سازی است، مبتنی بر مفاهیم سازگاری و تحول در علوم زیستی.
- تکامل عصبی ( Neuroevolution ) : برای آموزش شبکه های عصبی از Neuroevolution استفاده می کنیم. با تعیین ساختار و وزن های اتصال ، ژنوم ها برای توسعه شبکه های عصبی استفاده می شوند.
در بین این الگوریتم های شبکه عصبی ، الگوریتم ژنتیک رایج ترین الگوریتم تکاملی است.
۳- الگوریتم ژنتیک
الگوریتم های ژنتیک ، از اوایل دهه ۱۹۷۰ توسط گروه John Holland توسعه یافته است. این الگوریتم به انتخاب مناسب ترین قواعد برای حل یک مسئله ، کمک می کند. از این رو، آن ها ” اطلاعات ژنتیکی ” ( متغیرها و دسته های خود ) را به قوانین ” فرزند ” ارسال می کنند.
در اینجا به مجموعه ای از انواع متغیرها اشاره می کنیم. به عنوان مثال ، مشتریانی که بین ۳۶ تا ۵۰ سال سن دارند ، دارایی های مالی آن ها کمتر از ۲۰۰۰۰ دلار و درآمد ماهیانه آن ها بیش از ۲۰۰۰ دلار است.
یک قاعده معادل یک شاخه از درخت تصمیم گیری است ؛ همچنین مشابه یک ژن است. شما میتوانید ژن ها را به عنوان واحد هایی درون سلول ها که کنترل می کنند موجودات زنده ، چگونه خصوصیات والدین خود را به ارث ببرند، درنظر بگیرید. بنابراین ، هدف از الگوریتم های ژنتیک بازتولید مکانیسم های انتخاب طبیعی است. با انتخاب قوانینی که به بهترین وجه با پیش بینی سازگار باشد و با ترکیب شدن ( crossing ) و جهش یافتن ( mutating ) آن ها تا رسیدن به یک مدل پیشگویانه.
آن ها به همراه شبکه های عصبی ، نوع دوم الگوریتم را تشکیل می دهند. که از مکانیسم های طبیعی برای نشان دادن پدیده هایی که لزوماً طبیعی نیستند تقلید می کند. مراحل اجرای الگوریتم های ژنتیک عبارتند از:
- مرحله ۱: ایجاد تصادفی از قوانین اولیه – ابتدا قوانین را با این قید که باید کاملا متمایز باشند، مشخص کنید. هر قاعده شامل تعدادی تصادفی از متغیرهایی است که توسط یک کاربر انتخاب شده است.
- مرحله ۲: انتخاب بهترین قوانین – برای هدایت تکامل به سمت بهترین قوانین ، قوانین را از نظر هدف بررسی کنید. بهترین قوانین، تابع برازندگی ( fitness function ) را به حداکثر می رسانند و و با احتمالی که با اصلاح قانون ، افزایش می یابد، آن را حفظ می کنند. برخی از قوانین از بین می روند در حالی که برخی دیگر چندین بار انتخاب می کنند.
- مرحله ۳: ایجاد قوانین جدید با جهش یافتن یا ترکیب شدن – ابتدا به مرحله ۲ بروید تا اجرای الگوریتم متوقف شود. قوانین انتخاب شده به طور تصادفی جهش یافته یا ترکیب می شوند. جهش ( Mutation ) ، جایگزینی یک متغیر یا دسته ای از قانون اصلی با دیگری است.
ترکیب ۲ قانون ، مبادله برخی از متغیرها یا دسته های آن ها ، برای تولید ۲ قانون جدید است. ترکیب ، بسیار رایج تر از جهش است.
الگوریتم های شبکه عصبی با تکمیل ۱ مورد از ۲ شرط زیر به پایان می رسد:
- رسیدن به تعداد مشخصی از تکرارها
- با شروع از نسل مرتبه n ، قوانین نسلn ، n-1 و n-2 (تقریبا) یکسان هستند.
خب، این ها همه توضیحاتی در مورد الگوریتم های شبکه عصبی بود. امیدوارم توضیحات مان مفید بوده باشد.
نتیجه گیری
همانطور که دیدید، پیکربندی شبکه عصبی مصنوعی معمولاً دشوار بوده و آموزش آن کند است ، اما پس از آماده سازی ، بسیار سریع اجرا می شود. آن ها عموماً به عنوان مدل هایی برای حل مسائل ریاضی، محاسباتی و مهندسی طراحی شده اند. همچنین تحقیقات زیادی در زمینه ریاضیات ، زیست شناسی اعصاب و علوم کامپیوتر انجام شده تا علم شبکه های عصبی مصنوعی به این تکامل برسد.
اگر می خواهید نظر خود را به اشتراک بگذارید و در مورد الگوریتم های شبکه عصبی مصنوعی سوالی دارید ، لطفاً در بخش نظرات مطرح کنید.