مقاله در مورد مقدمه ای بر شبکه های عصبی مصنوعی و کاربردهای آن

word قابل ویرایش
145 صفحه
18700 تومان
187,000 ریال – خرید و دانلود

مقدمه ای بر شبکه های عصبی مصنوعی و کاربردهای آن

امروزه با شکسته شدن پی در پی استقلال ، شاخه های مختلف علوم و بهره وری شاخه ای از شاخه ی دیگر و پیشبرد مسائل پیچیده خود، پیوستگی و لاینفک بودن تمامی شاخه های علوم را نمایان تر می سازد که سرمنشأ تمامی آنها از یک حقیقت نشأت گرفته و آن ذات باری تعالی است.اولین تلاش ها به منظور ارائه ی یک مدل ریاضی برای سیستم عصبی انسان در دهه ۴۰ توسط Mcculloch , pitts انجام شد ، که حاصل آن یک نورون ساده ی تک لایه ویک روش برای

آموزش آن بود . در ادامه ی این کار Hebb نتایج آزمایشات پاولف را در مورد شرطی شدن ،گسترش داد و یک روش برای یادگیری ارائه کرد . در سال ۱۹۵۸ ،Rossonblatt شبکه ی پرسپترون را ارائه کرد . بعد از مدتی اثبات شد شبکه ی عصبی پرسپترون تک لایه نمی تواند تابع ساده ای مانند EX-OR را بیاموزد .بنابراین تقریباً تا دهه ی ۸۰ تلا ش ها برای گسترش شبکه ی عصبی بسیار کم بود.

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

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

الهام از نورون واقعی :
سیستم عصبی انسان و مغز وی متشکل از ترکیب و به هم پیوستن تعداد زیادی سلول به نام نورون می باشد . تعداد نورون های مغز انسان به طور متوسط حدود ۱۰۰ تریلیون می باشد . یک نورون دارای تعداد زیادی ورودی و یک خروجی است . خروجی می تواند دو حالت فعال یا غیرفعال را اختیار کند . در یک نورون ورودی ها تعیین می کنند که خروجی نرون فعال یا غیرفعال باشد . یک نرون از یک حجم سلولی ، تعداد زیادی « دنوریت » به عنوان ورودی و یک « اکسون » به عنوان خروجی تشکیل شده است.

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

یک نرون مجموع وزن های ورودی را حساب کرده و براساس یک تابع فعالیت ( که در حالت ساده می تواند یک Threshold باشد ) خروجی را تعیین می کند . اگر این مجموع از ترشلد بیشتر باشد خروجی نرون « یک » می شود در غیر این صورت خروجی نرون منفی یک ( ۱- ) خواهد شد .
به عنوان مثال یک شبکه عصبی ساده به نام perceptron را در نظر می گیریم این شبکه در شکل زیر نشان داده شده است در این شبکه چند ورودی وجود دارد که یکی از آنها مربوط به بایاس است . تابع فعالیت نورون نیز به صورت یک ترشلد خطی می باشد و شبکه دارای یک خروجی است . در این شبکه سیناپس ها به صورت وزن های اتصالات در نظر گرفته شده است . به عنوان مثال فرض کنید که می خواهیم یک OR منطقی را به وسیله ی این شبکه مدل کنیم. هدف از الگوریتم یادگیری ، بدست آوردن وزن های مناسب برای حل مسئله ی مورد نظر ما می باشد .
قانون یادگیری شبکه به صورت زیر است که بیان کننده ی تغییرات وزن ، نرخ سرعت یادگیری و یک عدد ثابت می باشد .D بیان کننده ی خروجی مطلوب است که در الگوهای آموزشی وجود دارد Y

بیان کننده ی خروجی به دست آمده از شبکه است و بیان کننده ورودی است .یادگیری همان طور که قبلاً اشاره شد ، از شبکه های عصبی مصنوعی برای مدل کردن سیستم هایی که غیرخطی یا جعبه سیاه هستند و ما از دینامیک داخلی سیستم خبری نداریم و فقط یک سری (ورودی – خروجی ) از سیستم داریم ، می توان استفاده کرد . بدین ترتیب که ابتدا یک توپولوژی مناسب از شبکه در نظر می گیریم، تعداد و نحوه ی اتصالات نورون ها را مشخص می کنیم و یک سری وزن

های ابتدایی برای اتصالات در نظر می گیریم . در مرحله ی آموزش، هدف این است که با اعمال مجموعه «ورودی – خروجی » های سیستم مورد نظر وزن های اتصالات را طوری تنظیم کنیم که بتوانیم با دادن ورودی هایی غیر از ورودی های مجموعه ی آموزشی مان خروجی متناسب با سیستم مورد نظر بدست بیاوریم . به بیان دیگر بتوانیم سیستم رامدل کنیم.
در شکل توپولوژی یک شبکه عصبی که دارای لایه های مختلفی است ، این شبکه ، ازلایه های مختلفی تشکیل شده که بیان کننده ی نحوه ی اتصال نورون ها به یکدیگر می باشد . لایه ی ورودی شامل نورون نبوده و فقط بیان کننده ی ورودی هاست . به نورون هایی که مستقیم ، به خروجی متصل می شوند، لایه ی خروجی گفته می شود .بقیه لایه ها – غیر از ورودی و خروجی – لایه های پنهان نام دارند . به طور کلی فرآیند یادگیری را می توان به ۳ دسته تقسیم کرد.
۱- یادگیری نظارت شده Supervised Learning در این روش همان طور که قبلاً اشاره شد یک مجموعه ی آموزشی در نظر گرفته می شود و یادگیرنده بر اساس یک ورودی عمل کرده و یک خروجی به دست می آورد . سپس این خروجی توسط یک معلم که می تواند خروجی مورد نظر ما باشد مورد ارزیابی قرار می گیرد و براساس اختلافی که با خروجی مطلوب دارد یک سری تغییرات در عملکرد یادگیرنده به وجود می آید . این تغییرات می تواند، وزن های اتصالات باشد . یک مثال برای این روش الگوریتم « پس انتشار خطا »Back propagation error می باشد که در شبکه های پرسپترون برای آموزش ، مورد استفاده قرار می گیرد.

۲- یادگیری نظارت نشده unsupervised Learning در این روش، حین فرآیند یادگیری از مجموعه های آموزشی استفاده نمی شود و به اطلاعات در مورد خروجی مطلوب نیز نیاز ندارد . در این روش معلمی وجود ندارد . و معمولاً برای دسته بندی وفشرده سازی اطلاعات استفاده می شود . یک مثال برای این روش الگوریتم kohonen می باشد .
۳- یادگیری تقویتی Rein forcement learning در این روش یک معلم به عنوان یاد دهنده وجود ندارد و خود یادگیرنده با سعی و خطا آموزش می بیند . در این روش یک استراتژی اولیه در نظر گرفته می شود . سپس این سیستم بر اساس همان رویه عمل می کند و یک پاسخ از محیطی که در آن فعالیت می کند، دریافت می کند. سپس بررسی می شود که آیا این پاسخ ، مناسب بوده یا خیر و با توجه به آن ، یادگیرنده یا مجازات می شود یا پاداش می گیرد . اگر مجازات شود عملی را که منجر به این مجازات شده در دفعات بعدی کمتر تکرار می شود و اگر پاداش بگیرد سعی می کند آن عملی که منجر به پاداش شده است ، بیشتر انجام دهد.

یک دیدگاه دیگر نسبت به یادگیری می تواند به تقسیم بندی زیر منجر شود :
۱- یادگیری Off Line : در این روش وزن ها طی زمانی که سیستم در حال اجرای کار اصلی خودش می باشد ، ثابت هستند و تغییرات وزن ها درطول یادگیری صورت می پذیرد .
۲- یادگیری On Line : در این روش وزن ها در دوره ی عملکرد واقعی سیستم نیز تغییر می کنند و دوره ی یادگیری و عملکرد سیستم از یکدیگر جدا نیستند . بدین ترتیب این سیستم دارای قابلیت بیشتری برای مقابله با تغییرات دینامیک محیط است . اما منجر به شبکه هایی با ساختار پیچیده تر می شود . چند نکته : ابتدا این که تعداد بهینه ی نورون های لایه های مخفی همچنین تعداد لایه های مخفی چقدر است؟ باید گفت به طور کلی برای این مسئله ، یک جواب تئوریک وجود ندارد بلکه به صورت تجربی و با توجه به کاربرد آن می توان به یک ساختار مناسب رسید . البته می توان از روش های بهینه سازی مانند « ژنتیک الگوریتم » برای حل این مسئله استفاده کرد . مسئله ی مهم دیگر بحث Overtraining می باشد که از اهمیت زیادی برخوردار است . این مورد بیان می کند که اگر تعداد داده های آموزش بسیار زیاد باشد شبکه بیشتر به عنوان حافظه عمل خواهد کرد و نمی تواند پاسخ مناسبی برای مدل سیستم ما باشد . از سوی دیگر اگر داده های آموزشی ما در تمام فضای مسئله پراکنده نباشد یا تعداد آنها کافی نباشد، شاید شبکه ی ما همگرا نشود .
کاربردها :
شبکه های عصبی در موارد زیر دارای کارایی زیادی می باشند :
۱- پیداکردن الگوهای پیچیده از میان یک سری اطلاعات
۲- درمسایلی که با اطلاعات غیر دقیق سروکار داریم.
۳- در مسایلی که با اطلاعات نویزی سروکار داریم . مانند

۱-prediction
2-Classification

۳-Dataassociation
4-Dataconceptualizefion
5-filtering
6- planning
چند کاربرد عملی و مفید آن که تاکنون بر روی آنها فعالیت زیادی انجام شده عبارتند از :
۱- پیشگویی prediction ) از اطلاعات بدست آمده در گذشته(
– پیش بینی وضعیت آب و هوا
– پیش بینی وضعیت سهام در بورس
– پیش بینی سری های زمانی
۲- کلاسه بندی Classification
– پردازش تصویر
– دسته بندی اهداف در رادارها
۳- تشخیص Recognition
– تشخیص نوع بمب درصنایع نظامی
– تشخیص حرو ف
– تشخیص امضاء
– تشخیص چهره
۴- دیگر کاربردهای آن به صورت کلی شامل موارد زیر است :

Regularitydetection
– speechanalysis
– optimizationproblems
– Robotstearing
– Processing of inaccurate or in complteinputs
– Stock market forecasting simulation

به عنوان مثال کاربری می توان تخمین موقعیت کاربر مخابرات سیار در محیط شهری را بیان کرد . برای این کار می توان مکان کاربر را با تلفیق زاویه و زمان دریافت ، سیگنال را بهوسیله ی شبکه های پرسپترون چند لایه و RBF تخمین زد . بدین منظور دو روش مختلف در نظر گرفته شده است . در روش اول تنها از یک شبکه ی عصبی استفاده می شود . و در روش دوم که سلسله مراتبی

نامیده می شود عمل تخمین توسط بیش از یک شبکه ی عصبی صورت می پذیرد. به این ترتیب که نخست موقعیت کاربر به صورت تقریبی توسط شبکه ی لایه ی اول انجام می شود و سپس با استفاده از شبکه عصبی لایه ی دوم که برای ناحیه ی کوچکتری آموزش دیده است ، تخمین بهتری از موقعیت کاربر بدست می آید با افزایش تعداد لایه ها می توان به دقت بهتری دست یافت برای انتشار مسیر غیر خط دیده (NLOS ) امواج ، از دو روش استفاده شده است . در روش اول ( محیط غیر شهری ) دایره ای به مرکز فرستنده و شعاع مشخص به عنوان ناحیه ی پراکندگی در نظر

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

نشده و یا پرتو از محیط مورد نظر خارج نگردیده ادامه می یابد نتایج شبیه سازی نشان می دهد که در محیط غیر شهری با شعاع ناحیه ی پراکندگی ۳۰۰ متر و نسبت سیگنال به نویز بی نهایت ، در صورت استفاده از یک ایستگاه پایه وپرسپترون با ساختار سلسله مراتبی در۶۶ % موارد کاربر با

استفاده از پنج لایه ، احتمال خطای کمتر از ۱۲۵ متر در تخمین موقعیت کاربر به ۸۶% افزایش می یابد . در صورت استفاده از دو ایستگاه پایه ی این احتمال به ۹۱% می رسد . نتایج حاصل از شبکه عصبی RBF نشان می دهد که دقت های مشابهی توسط این شبکه بدست می آید ضمن آنکه آموزش شبکه اخیر حدود پنجاه برابرسریع تر از شبکه پرسپترون است . این نتایج نشان می دهد دقت مورد نظر استاندارد E-911 باروش های پیشنهادی به دست می آید.{۵}

تاریخچه :
شبکه‌های عصبی دهها سال است که جلب توجه می‌کنند وتاکنون راه حلهایی برای استفاده از هوش بشری ارائه شده است. اولین نرون مصنوعی درسال ۱۹۴۳ توسط نروفیزیولوژیست وارن‌مک‌کالوک و منطق دان والتر‌پیتز تولید شد.در دهه ۶۰ به دلایلی که خارج از بحث این مقاله است مردم به‌سوی شبکه‌های عصبی متمایل شدند و تنها در دهه ۸۰ دانشمندان توانایی‌های واقعی شبکه‌های عصبی را دیدند .

شبکه عصبی چیست؟
شبکه های عصبی مصنوعی (Artificial Neural Network) الگویی برای پردازش اطلاعات می باشند که با تقلید از شبکه های عصبی بیولوژیکی مثل مغز انسان ساخته شده اند.عنصر کلیدی این الگو ساختار جدید سیستم پردازش اطلاعات آن می باشد و از تعداد زیادی عناصر (نرون) با ارتباطات قوی داخلی که هماهنگ با هم برای حل مسائل مخصوص کار می کنند تشکیل شده اند. شبکه های عصبی مصنوعی با پردازش روی داده های تجربی، دانش یا قانون نهفته در ورای داده ها را به ساختار شبکه منتقل می کند که به این عمل یادگیری می گویند. اصولاً توانایی یادگیری

 

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

الگوریتمیک برای پیاده سازی این خصایص در ماشینها مناسب نمی باشند در نتیجه می بایست روشها مبتنی بر همان مدلهای بیولوژیکی باشد.ANN درست مثل انسانها با استفاده از مثالها آموزش می بیند ; همانطور که یک بچه با دیدن انواع مختلف از یک حیوان قادر به تشخیص آن می باشد.{۶}

۲- شبکه‌های عصبی مصنوعی:
۲-۱- شبکه‌های عصبی مصنوعی:
شبکه‌های عصبی شبیه به مغز انسان اطلاعاتی را پردازش می‌کنند. شبکه‌ از تعداد زیادی سلولهای عصبی(Neuron ها) تشکیل شده با پردازشی بسیار بزرگ و به‌هم پیوسته که در حل موازی مسائل ویژه مشغول به کارند.یادگیری شبکه‌های عصبی از طریق مثالهاست. آنها برای انجام یک کار خاص برنامه‌ریزی نشده‌اند. مثالها باید با دقت بسیار بالایی انتخاب شوند والا زمان مفید هدر خواهد رفت و یا حتی ممکن است شبکه به طور ناقص دایر شود و در اینجا راهی برای فهمیدن اینکه سیستم معیوب است یا خیر وجود ندارد مگر اینکه خطایی رخ دهد.شبکه‌های عصبی

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

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

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

بدین ترتیب نام آن را شبکه‌های عصبی مصنوعی گذاشتند. اکنون شبکه‌های عصبی کاربردهای زیادی دارند(درمنطق وکلام و شناسایی عکسها)البته شناسایی الگوهامی‌تواند به‌طور موفقیت آمیز بر روی کامپیوترهای عمومی انجام شود. این شبکه‌های عمومی که برای شناسایی الگوها استفاده می‌شوندFeed-Forward نامیده می‌شدند زیرا آنها یک بازخورد (Feed-Back) داشتند. آنها به‌طور ساده ورودی‌ها را با خروجی‌ها می‌آمیختند. اما شناسایی الگوها به تدریج کاملتر شد

به‌طوریکه بر روی کامپیوترهای عمومی با سیستم خاص خودشان به‌سختی انجام می‌شد پس برای شناسایی الگوها شبکه‌های Feed-Forward کافی نبودند.در شبکه‌های عصبی خروجی هر نرون به ورودی نرونهای مجاورش متصل شده است. شبکه‌های عصبی نمی‌توانند معجزه کنند اما اگر به درستی استفاده شوند نتایج شگفت‌انگیزی خواهند داشت .

۲-۲- مشخصات مسائل در خور شبکه‌های عصبی مصنوعی Network) Artificial Neural
(ANN
تقلید از ساختارهای محاسباتی سیستم زیستی ممکن است ایده اصلی نمونه‌های محاسباتی برای ساخت کلاسهایی از مسائل باشد. از جمله این مسائل می‌توان از مسائل مشکل NP که شامل مسائل طبقه‌بندی شده، زمانبندی‌شده، جستجو وغیره نام برد، کلاس مسائل شناسایی الگوها، افراد و موضوعات مشخص را در دیدار و تماس با آنها می‌شناسد و کلاس مربوط به داده‌های ناقص، اشتباه، متناقض، فازی و احتمالی. این مسائل توسط همه یا برخی از موارد زیر توصیف می‌شوند :

یک فضای مسئله با بعد بزرگ، پیچیده، ناشناخته با اثرات متقابل پیچیده ریاضی‌وار بین متغییرها و یک فضای راه‌حل که ممکن است خالی باشد(شامل یک راه‌حل یکتا یا بیشتر ، شامل تعدادی از راه‌حلهای مفید)به نظر می‌رسد ANN ها راه‌حلهایی برای مسائلی که با ورودی‌های حسی بیشتر درگیرند ارائه می‌دهد(صحبت‌کردن، دیدن، شناسایی دستخط و…).
۲-۳- کاربردهای شبکه‌های عصبی مصنوعی ANN :

می‌توان موارد زیر را از کاربردهای شبکه‌های عصبی مصنوعی ذکر کرد :
پردازش تصویر و دید : ( Image processing and computer vision )
پردازش علائم ( Signal processing ): شامل ریخت‌شناسی و تجزیه و تحلیل علائم مربوط به زمین‌لرزه‌ها و…
شناسایی الگوها( Pattern recognition ): شامل شناسایی چهره، اثر انگشت، تشخیص نوع صدا و نوع صحبت کردن، دستخط و …
پزشکی( Medicine ): شامل تجزیه و تحلیل و تشخیص علائم دستگاه ضربان‌نگار قلب
(الکتروکاردیوگرافیک)، تشخیص امراض گوناگون و …

سیستم‌های نظامی( Military systems ): شامل ردیابی مین‌های زیردریایی، دسته‌بندی صداهای نابه‌هنجار و مخل در رادارها و شناسایی گوینده رزمی.
سیستم‌های تجاری( Financial systems ): شامل تجزیه و تحلیل انبار مغازه‌ها، ارزیابی واقعی املاک و …
برنامه‌ریزی، کنترل و جستجو( Planning, control, and search ): شامل اجرای موازی مسائل و کنترل رباتها.
هوش مصنوعی( Artificial intelligence ): شامل برخی سیستم‌های طبی و اجرای سیستم‌های خبره.
سیستم‌های قدرت( Power systems ): شامل برآورد وضعیت سیستم، ردیابی سریع و دسته‌بندی ردیابی، ردیابی خطا و ترمیم آن، پیش‌بینی و برآورد تخمین امنیت.
انواع یادگیری برای شبکه های عصبی:
۱٫ یادگیری با ناظر:
در یادگیری با ناظر به قانون یاد گیری مجموعه ای از زوجهای داده ها به نام داده های یادگیری (Pi,Ti)i={1 … l } می دهند که در آن Pi ورودی به شبکه و Ti خروجی مطلوب شبکه برای ورودی Pi است. پس از اعمال ورودی Pi به شبکه عصبی در خروجی شبکه ai با Ti مقایسه شده و سپس خطای یادگیری محاسبه و از آن در جهت تنظیم پارامترهای شبکه استفاده می شود به گونه ای که اگر دفعه بعد به شبکه همان ورودی Pi اعمال شود خروجی شبکه به Ti نزدیکتر می گردد با توجه

به این نکته که معلم سیستمی است که بر محیط وقوف دارد ( مثلا می داند که برای ورودی Pi خروجی مطلوب Ti است ).توجه داریم که محیط برای شبکه عصبی مجهول است . در لحظه k بردار ورودی (Pik) با تابع توضیع احتمال معینی که برای شبکه عصبی نا معلوماست انتخاب و بطور همزمان به شبکه عصبی و معلم اعمال می شود . جواب مطلوب (Tik) نیز توسط معلم به شبکه عصبی داده می شود . در حقیقت پاسخ مطلوب پاسخ بهینه ای است که شبکه عصبی برای

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

۲٫ یادگیری تشدیدی:
یک اشکال یادگیری با ناظر این است که شبکه عصبی ممکن است بدون معلم نتواند مواضع جدیدی را که توسط مجموعه داده های جدید تجربی پوشانده نشده است یاد بگیرد . یادگیری از نوع تشدیدی این محدودیت را برطرف می کند . این نوع یادگیری بطور on-line صورت می گیرد در حالی که یادگیری با ناظر را به دو صورت on-line & off-line می توان انجام داد. در حالت off-line می توان از یک سیستم محاسب با در اختیار داشتن داده های یادگیری استفاده کرد و طراحی شبکه

عصبی را به پایان رساند . پس از مرحله طراحی و یادگیری شبکه عصبی به عنوان یک سیستم استاتیکی عمل می کند . اما در یادگیری on-line شبکه عصبی همراه با خود سیستم یادگیر در حال انجام کار است و از این رو مثل یک سیستم دینامیکی عمل می کند . یادگیری از نوع تشدیدی یک یادگیری on-line از یک نگاشت ورودی-خروجی است . این کار از طریق یک پروسه سعی و خطا به صورتی انجام می پذیرد که یک شاخص اجرایی موسوم به سیگنال تشدید ماکزیمم شود و بنابر این الگوریتم نوعی از یادگیری با ناظر است که در آن به جای فراهم نمودن جواب واقعی ، به شبکه

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

۳٫ یادگیری بدون ناظر:
در یادگیری بدون ناظر یا یادگیری خود سامانده پارامترهای شبکه عصبی تنها توسط پاسخ سیستم اصلاح و تنظیم می شوند . به عبارتی تنها اطلاعات دریافتی از محیط به شبکه را برداغرهای ورودی تشکیل می دهند. و در مقایسه با مورد بالا (یادگیری با ناظر) بردار جواب مطلوب به شبکه اعمال نمی شود . به عبارتی به شبکه عصبی هیچ نمونه ای از تابعی که قرار است بیاموزد داده نمی شود . در عمل می بینیم که یادگیری با ناظر در مورد شبکه هایی که از تعداد زیادی لایه های نرونی تشکیل شده باشند بسیار کند عمل می کند و در این گونه موارد تلفیق یادگیری با ناظر و بدون ناظر پیشنهاد می گردد .

۲-۴- زمینه‌ای درموردperceptron
Perceptron های ساده:
یک خانواده ساده از شبکه‌های عصبی مدل perceptron می‌باشد. در یک دسته‌بندی تک‌خروجی، تعداد n ورودی و یک خروجی دارد . با هر ورودی یک ضریب وزنی Wi و با هر خروجی یک مقدار آستانه q مرتبط است.

Perceptron به گونه زیر عمل می‌کند:
ورودی‌های Perceptron یک بردار ورودی از n مقدار حقیقی است.
Perceptron مجموع وزنها را محاسبه می‌کند a= ه Wi.Xi. این مقدار با مقدار آستانه q مقایسه می‌شود. اگر این مقدار ازمقدار آستانه کوچکتر باشد خروجی ۰ است و در غیر این صورت ۱ است.
قدرت Perceptron:
به وسیله تنظیم اعداد ورودی، وزن آنها و مقدار آستانه می‌توان یک Perceptron برای انجام نسبتا خوب محاسبات گوناگون طراحی کرد. برای مثال توابع منطقی بولین مانند AND ، OR و NOT را می‌توان به وسیله Perceptron طراحی کرد و هر مدار منطقی دیگر را به وسیله گیتهای AND و NOT یا AND و OR طراحی کرد. دسته‌های زیادی از Perceptronها ممکن است خروجی‌های دسته‌های دیگر را به عنوان ورودی خود درخواست کنند.به عنوان مثالی ازPerceptron ها می‌توان یک تشخیص دهنده قالب متن را نام برد. حرفA درآرایه‌ای ۵*۵ به‌رمز درمی‌آید(encode می‌شود). این متن(حرف) به‌وسیله یک Perceptron با ۲۵ ورودی تشخیص داده می‌شود که در آن وزنها مقادیری برابر با مقادیر عددی داخل آرایه را می‌گیرند و مقدار آســتانه برابر است با: e-25 =q که در آن ۰ < e < 1 .

خروجی Perceptron 1 است اگر و فقط اگر ورودی آن از ۱ و ۱- هایی باشد که عینا در آرایه آمده است.
دنباله‌های Perceptron:
یکی از خصوصیات جالب Perception این است که آنها می‌توانند به وسیله مثالهای مثبت و منفی ( صحیح و اشتباه) برای انجام توابع دسته‌بندی شده مخصوص بارها مرتب شوند.
حال به یک مثال ساده از Perceptron با دو ورودیX1 وX2 ، که تشخیص می‌دهد که کدام‌یک از دو کلاس، عناصر متعلق به خودش را دارد. ما فرض می‌کنیم که این Perceptron دو طرح از کارکترهای چاپ شده از یک متن را بررسی کند، خروجی ۱ است اگر و فقط اگر کاراکتر رقم ۸ باشد. فرض کنیم که X1 بیانگر تعداد حفره‌های کاراکتر است و X2 درجه راستی سمت چپ کاراکتر را نشان می‌دهد. ما با ۴ ورودی .اگر ما perceptron را در اول کار با وزنهایی برابر ۰ و مقدار آستانه را برابر ۱۰ مقداردهی کنیم یک رده‌بندی از همه مثالهای منفی انجام داده‌ایم. با قرار دادن رده‌بندی‌های نادرست از ۸ ، مقادیر ورودی از مثال ۸ با بعضی فاکتورها مثل d جمع می‌شوند و تولیدات جدید با وزنهای متناظر با ایجاد می‌شوند.
فرض کنیم ۱= d پس وزن ورودی‌ها از ۰ به ۱ و ۲ رشد پیدا می‌کند. حال در اینجا ۵ = a به دست می‌آید که هنوز از مقدار آستانه ۱۰ کوچکتر است. مثال هنوز به رده‌بندی صحیحی نرسیده است واین قدم دنباله باید تکرار شود. بعد از دو قدم وزنها برابر ۲ و ۴ می‌شوند که مقدار ۱۰ = a را نتیجه

می‌دهد که برابر مقدار آستانه است و مثال مثبت از ۸ به طور صحیح دسته‌بندی شده است. از آنجا که ضرایب وزنی تغییر کرده بودند لازم است که در همه مثالها رده‌بندی‌ها بازنشان ( Reset ) شوند. این را می‌توان به سادگی دید که مثال B رده‌بندی نادرستی است زیرا با وزنهای ۲ و ۴ داریم ۲۴ = a ولی این حرف مورد نظر ما نیست، چون این مرحله را پیش رفته‌ایم لازم است که d.1 از W1 و d.2 از W2 کم شود تا رده‌بندی نادرستی از B ثابت شود. به هر حال یک رده‌بندی از ۸ را

دوباره بیرون می‌دهد.بعدها موقع بروز خطا ما وزنها را برای درست کردن خطاهای رده‌بندی اصلاح می‌کنیم. اگر مثالها دارای خاصیت صحیحی باشند وزنها در مجموعه‌ای از مقادیری که به درستی روی هر ورودی کار می‌کنند قرار می‌گیرند.
قضیه بنیادی دنباله‌ها:
یک خصوصیت قابل توجه perceptron این است که آنها می‌توانند دنباله‌ای از رده ‌بندی صحیح مثالهای مثبت ومنفی باشند.فرض کنیم: X = X+ ب X-
X+ : مجموعه‌‌ای از مثالهای مثبت
X- : مجموعه‌‌ای از مثالهای منفی
گوییم که رشته بی‌کران S x= X1 , X2 , …, Xk ,… یک رشته متوالی(ترتیبی) برای X است در صورتی که هر Xi یک
مثال در X است و هر عنصر از X اغلب به طور نامحدود در Sx رخ می‌دهد(نمایان می‌شود).
فرض کنیم Wk ضریب وزنی در سطح k دنباله باشد. وزن اولیه می‌تواند به صورت قراردادی باشد (برای مثال W1=0 ). حال
رشته استاندارد حاصله، وزنها را به صورت زیر ارتقا می‌دهد:
بسته به استرادژی مورد نظر ممکن است مقادیر C k همگی یکسان باشند یا ممکن است با k تغییر کنند.
قضیه ۱):
باشد و یک بردار حل وزنها برای X وجود داشته باشد, در این صورت رویه رشته استاندارد باید بعد از یک تعداد فرض کنیم یک مجموعه از رشته نمونه X و هر رشته ترتیبی برای آن داریم, اگر Ck یک ثابت مثبت مراحل مشخص یک راه‌حل پیدا
کند به طوری که اگر برای بعضی k0 ها داشته باشیم:

 

WK0 = WK0+1 = WK0+2 = …
که WK0 یک راه‌حل برای X است. {۷}

الگوریتم ژنتیک :
الگوریتم ژنتیک که بعنوان یکی از روشهای تصادفی بهینه یابی شناخته شده, توسط جان هالند در سال ۱۹۶۷ ابداع شده است. بعدها این روش با تلاشهای گلدبرگ ۱۹۸۹, مکان خویش را یافته و امروزه نیز بواسطه توانایی های خویش , جای مناسبی در میان دیگر روشها دارد. روال بهینه یابی در الگوریتم ژنتیک براساس یک روند تصادفی- هدایت شده استوار می باشد. این روش , بر مبنای نظریه تکامل تدریجی و ایده های بنیادین داروین پایه گذاری شده است.در این روش , ابتدا برای تعدادی ثابت که جمعیت نامیده می شود مجموعه ای از پارامترهای هدف بصورت اتفاقی تولید می شود , پس از اجرای برنامه شبیه ساز عددی را که معرف انحراف معیار و یا برازش آن مجموعه از اطلاعات است را به آن عضو از جمعیت مذکور نسبت می دهیم . این عمل را برای تک تک اعضای ایجاد شده تکرار می کنیم , سپس با فراخوانی عملگرهای الگوریتم ژنتیک از جمله لقاح , جهش و انتخاب نسل بعد را شکل می دهیم و این روال تا ارضای معیار همگرایی ادامه داده خواهد شد. هنگامی که لغت تنازع بقا به کار می‌رود اغلب بار ارزشی منفی آن به ذهن می‌آید. شاید همزم

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

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

ر همراه است). حال اگر این خصوصیت(هوش)ارثی باشد به طبع در نسل بعدی همان جامعه تعداد افراد باهوش به دلیل زاد و ولد بیشتر این‌گونه افراد بیشتر خواهد بود. اگر همین روند را ادامه دهید خواهید دید که در طی نسل‌های متوالی دائما جامعه نمونه ما باهوش و باهوش‌تر می‌شود. بدین ترتیب یک مکانیزم ساده طبیعی توانسته است در طی چند نسل عملا افراد کم هوش را از جامعه

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

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

شکل اتوماتیک از چرخه طبیعت حذف می‌گردد. در واقع می‌توان تکامل طبیعی را به این‌صورت خلاصه کرد: جست‌وجوی کورکورانه)تصادف یا( Blind Search بقای قوی‌تر.
حال ببینیم که رابطه تکامل طبیعی با روش‌های هوش مصنوعی چیست .هدف اصلی روش‌های هوشمند به کار گرفته شده در هوش مصنوعی یافتن پاسخ بهینه مسائل مهندسی ست. بعنوان مثال اینکه چگونه یک موتور را طراحی کنیم تا بهترین بازدهی را داشته باشد یا چگونه بازوهای یک ربات را محرک کنیم تا کوتاه‌ترین مسیر را تا مقصد طی کند(دقت کنید که در صورت وجود مانع یافتن کوتاه‌ترین مسیر دیگر به سادگی کشیدن یک خط راست بین مبدا و مقصد نیست) همگی مسائل بهینه‌سازی هستند.
روش‌های کلاسیک ریاضیات دارای دو اشکال اساسی هستند. اغلب این روش‌ها نقطه بهینه محلیLocal) (Optima را بعنوان نقطه بهینه کلی در نظر می‌گیرند و نیز هر یک از این روش‌ها تنها برای مساله خاصی کاربرد دارند. این دو نکته را با مثال‌های ساده‌ای روشن می‌کنیم.
به شکل زیر توجه کنید. این منحنی دارای دو نقطه ماکزیمم می‌باشد. که یکی از آنها تنها ماکزیمم محلی است. حال اگر از روش‌های بهینه‌سازی ریاضی استفاده کنیم مجبوریم تا در یک بازه بسیار کوچک مقدار ماکزیمم تابع را بیابیم. مثلا از نقطه ۱ شروع کنیم و تابع را ماکزیمم کنیم. بدیهی است اگر از نقطه ۱ شروع کنیم تنها به مقدار ماکزیمم محلی دست خواهیم یافت و الگوریتم ما پس از آن متوقف خواهد شد. اما در روش‌های هوشمند خاصه الگوریتم ژنتیک بدلیل خصلت تصادفی آنها حتی اگر هم از نقطه ۱ شروع کنیم باز ممکن است در میان راه نقطه A به صورت تصادفی انتخاب شود که در این صورت ما شانس دست‌یابی به نقطه بهینه کلی (Global Optima) را خواهیم داشت.

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

مبنای رگرسیون هستند.همان طور ساده،خطی وپارامتریک گفته می شود،به الگوریتم های ژنتیک می توان غیر پارامتریک گفت.برای مثال اگر بخواهیم نوسانات قیمت نفت را با استفاده از عوامل خارجی وارزش رگرسیون خطی ساده مدل کنیم،این فرمول را تولید خواهیم کرد:قیمت نفت در زمان t=ضریب ۱ نرخ بهره در زمان t+ضریب ۲ نرخ بیکاری در زمان t+ثابت ۱ . سپس از یک معیار برای پیدا کردن بهترین مجموعه ضرایب و ثابت ها جهت مدل کردن قیمت نفت استفاده خواهیم کرد.در این روش ۲ نکته اساسی وجود دارد.اول این روش خطی است و مسئله دوم این است که ما به جای اینکه در میان “فضای پارامترها”جستجو کنیم ،پارامترهای مورد استفاده را مشخص کرده ایم.با استفاده از الگوریتم های ژنتیک ما یک ابر فرمول یا طرح تنظیم می کنیم که چیزی شبیه”قیمت نفت در زمان t تابعی از حداکثر ۴ متغیر است”را بیان می کند. سپس داده هایی برای گروهی از متغیرهای مختلف،شاید در حدود ۲۰ متغیر فراهم خواهیم کرد.سپس الگوریتم ژنتیک اجرا خواهد شد که بهترین تابع و متغیرها را مورد جستجو قرار می دهد.روش کار الگوریتم ژنتیک به طور فریبنده ای ساده،خیلی قابل درک وبه طور قابل ملاحظه ای روشی است که ما معتقدیم حیوانات آنگونه تکامل یافته اند.هر فرمولی که از طرح داده شده بالا تبعیت کند فردی از جمعیت فرمول های ممکن تلقی می شود خیلی شبیه به این که بگوییم جرج بوش فردی از جمعیت انسان های ممکن است. متغیر هایی که هر فرمول داده شده را مشخص می کنند به عنوان یکسری از اعداد نشان داده شده اند که معادل دی ان ای آن فرد را تشکیل می دهند.
موتور الگوریتم ژنتیک یک جمعیت آغاز از فرمول ایجاد می کند.هر فرد در برابر مجموعه ای از داده ها ی مورد آزمایش قرار می گیرند و مناسبترین آنها شاید ۱۰ درصد از مناسبترین ها باقی می مانند.بقیه کنار گذاشته می شوند. مناسبترین افراد با هم جفتگیری (جابجایی عناصر دی ان

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

معادله ویروس ها که در کنار فرمول ها وبرای نقض کردن فرمول ها ی ضعیف تولید می شوندودر نتیجه جمعیت را کلاً قویتر می سازند.مختصراً گفته می شود که الگوریتم ژنتیک یا GA یک تکنیک برنامه نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده می کند.مسئله ای که باید حل شود ورودی است و راه حلها طبق یک الگو کد گذاری می شودومتریک که تابع fitness هم نام دارد هر راه حل کاندید را ارزیابی می کندکه اکثر آنها به صورت تصادفی انتخاب می شوندالگوریتم ژنتیک GA یک تکنیک جستجو در علم کامپیوتربرای یافتن راه حل بهینه ومسائل جستجو است.الگوریتم های ژنتیک یکی از انواع الگوریتم های تکاملی اند که از علم زیست شناسی مثل وراثت، جهش،انتخاب ناگهانی ، انتخاب طبیعی و ترکیب الهام گرفته شده .عموماً راه حلها به صورت ۲ تایی ۰و۱ نشان داده می شوند ولی روشهای نمایش دیگری هم وجود دارد.تکامل از یک مجموعه کاملاً تصادفی از موجودیت ها شروع می شود و در نسلهای بعدی تکرار می شود.در هر نسل،مناسبترین ها انتخاب می شوند نه بهترین ها.یک راه حل برای مسئله مورد نظر،با یک لیست از پارامترها نشان داده می شود که به آنها کروموزوم یا ژنوم می گویند.کروموزوم ها عموماً به

صورت یک رشته ساده از داده ها نمایش داده می شوند،البته انواع ساختمان داده های دیگر هم می توانند مورد استفاده قرار گیرند.در ابتدا چندین مشخصه به صورت تصادفی برای ایجاد نسل اول تولید می شوند. در طول هر نسل ،هر مشخصه ارزیابی می شود وارزش تناسب(fitness) توسط تابع تناسب اندازه گیری می شود.گام بعدی ایجاد دومین نسل از جامعه است که بر پایه فرآیندهای انتخاب ،تولید از روی مشخصه های انتخاب شده با عملگرهای ژنتیکی است:اتصال کروموزوم ها به سر یکدیگر و تغییر.

برای هر فرد ،یک جفت والد انتخاب می شود.انتخابها به گونه ای اند که مناسبترین عناصر انتخاب شوند تا حتی ضعیفترین عناصر هم شانس انتخاب داشته باشند تا از نزدیک شدن به جواب محلی جلوگیری شود.چندین الگوی انتخاب وجود دارد: چرخ منگنه دار(رولت)،انتخاب مسابقه ای (Tournament) ،… .
معمولاً الگوریتم های ژنتیک یک عدد احتمال اتصال دارد که بین ۰٫۶و۱ است که احتمال به وجود آمدن فرزند را نشان می دهد.ارگانیسم ها با این احتمال با هم دوباره با هم ترکیب می شوند.اتصال ۲ کروموزوم فرزند ایجاد می کند،که به نسل بعدی اضافه می شوند.این کارها انجام می شوند تا این که کاندیدهای مناسبی برای جواب،در نسل بعدی پیدا شوند. مرحله بعدی تغییر دادن فرزندان جدید است.الگوریتم های ژنتیک یک احتمال تغییر کوچک وثابت دارند که معمولاً درجه ای در حدود ۰٫۰۱ یا کمتر دارد. بر اساس این احتمال ،کروموزوم های فرزند به طور تصادفی تغییر می کنند یا جهش می یابند.مخصوصاً با جهش بیتها در کروموزوم ساختمان داده مان.

این فرآیند باعث به وجود آمدن نسل جدیدی از کروموزوم ها یی می شود، که با نسل قبلی متفاوت است.کل فرآیند برای نسل بعدی هم تکرار می شود،جفتها برای ترکیب انتخاب می شوند،جمعیت نسل سوم به وجود می آیند و… .
این فرآیند تکرار می شود تا این که به آخرین مرحله برسیم.
شرایط خاتمه الگوریتم های ژنتیک عبارتند از:
• به تعداد ثابتی از نسل ها برسیم .
• بودجه اختصاص داده شده تمام شود(زمان محاسبه/ پول)
• یک فرد(فرزند تولید شده) پیدا شود که مینیمم (کمترین)ملاک را برآورده کند.
• بیشترین درجه برازش فرزندان حاصل شود یا دیگر نتایج بهتری حاصل نشود.
• بازرسی دستی.
• ترکیبهای بالا.
ایده اصلی :
در دهه هفتاد میلادی دانشمندی از دانشگاه میشیگان به نام جان هلند ایده استفاده از الگوریتم ژنتیک را در بهینه‌سازی‌های مهندسی مطرح کرد. ایده اساسی این الگوریتم انتقال خصوصیات موروثی توسط ژن‌هاست. فرض کنید مجموعه خصوصیات انسان توسط کروموزوم‌های او به نسل بعدی منتقل می‌شوند. هر ژن در این کروموزوم‌ها نماینده یک خصوصیت است. بعنوان مثال ژن ۱ می‌تواند رنگ چشم باشد ، ژن ۲ طول قد، ژن ۳ رنگ مو و الی آخر. حال اگر این کروموزوم به تمامی، به نسل بعد انتقال یابد، تمامی خصوصیات نسل بعدی شبیه به خصوصیات نسل قبل خواهد بود. بدیهیست که در عمل چنین اتفاقی رخ نمی‌دهد. در واقع بصورت همزمان دو اتفاق برای کروموزوم‌ها می‌افتد. اتفاق اول موتاسیون (Mutation) است. موتاسیون به این صورت است که بعضی ژن‌ها بصورت کاملا تصادفی تغییر می‌کنند. البته تعداد این گونه ژن‌ها بسیار کم می‌باشد اما در هر حال این تغییر تصادفی همانگونه که پیشتر دیدیم بسیار مهم است. مثلا ژن رنگ چشم می‌تواند بصورت تصادفی باعث شود تا در نسل بعدی یک نفر دارای چشمان سبز باشد. در حالی که تمامی نسل قبل دارای چشم قهوه‌ای بوده‌اند. علاوه بر موتاسیون اتفاق دیگری که می‌افتد و البته این اتفاق به تعداد بسیار بیشتری نسبت به موتاسیون رخ می‌دهد چسبیدن ابتدای یک کروموزوم به انتهای یک کروموزوم دیگر است. این مساله با نام Crossover شناخته می‌شود. این همان چیزیست که مثلا باعث می‌شود تا فرزند تعدادی از خصوصیات پدر و تعدادی از خصوصی

ات مادر را با هم به ارث ببرد و از شبیه شدن تام فرزند به تنها یکی از والدین جلوگیری می‌کند.
در ابتدا تعداد مشخصی از ورودی ها،X1, X2,…, Xn که متعلق به فضای نمونه X هستند را انتخاب می کنیم و آنها را در یک عدد بردای X=(x1,x2,…xn) نمایش می دهیم..در مهندسی نرم افزار اصطلاحاً به آنها ارگانیسم یا کروموزوم گفته می شود.به گروه کروموزوم ها Colony یا جمعیت می گوییم.در هر دوره Colony رشد می کند و بر اساس قوانین مشخصی که حاکی از تکامل زیستی است تکامل می یابند.
برای هر کروموزوم Xi ،ما یک ارزش تناسب(Fitness) داریم که آن را f(Xi) هم می نامیم.عناصر قوی

تر یا کروموزوم هایی که ارزش تناسب آنها به بهینه Colony نزدیکتر است شانس بیشتری برای زنده ماندن در طول دوره های دیگر و دوباره تولید شدن را دارند و ضعیفترها محکوم به نابودی اند. به عبارت دیگر الگوریتم ورودی هایی که به جواب بهینه نزدیکترندرانگه داشته واز بقیه صرف نظر می کند.
یک گام مهم دیگر درالگوریتم،تولد است که در هر دوره یکبار اتفاق می افتد. محتویات دو کروموزومی که در فرآیند تولید شرکت می کنند با هم ترکیب میشوند تا ۲ کروموزوم جدید که ما انها را فرزند می نامیم ایجاد کنند.این هیوریستیک به ما اجازه می دهد تا ۲ تا از بهترین ها را برای ایجاد یکی بهتر از آنها با هم ترکیب کنیم.(evolution) به علاوه در طول هر دوره،یک سری از کروموزوم ها ممکن است جهش یابند (Mutation)
الگوریتم :
هر ورودی x در یک عدد برداری X=(x1,x2,..,xn) قرار دارد .برای اجرای الگوریتم ژنتیک مان باید هر ورودی را به یک کروموزوم تبدیل کنیم.می توانیم این را با داشتن log(n) بیت برای هر عنصرو تبدیل ارزش Xi انجام دهیم مثل شکل زیر .
e(X1)
e(X1)
e(X1)
0111111 … 1010111 1111011
(X1, X2,…,Xn)= (123, 87,…, ۶۳)
می توانیم از هر روش کد کردن برای اعداد استفاده کنیم.در دوره ۰، یک دسته از ورودی های X را به صورت تصادفی انتخالب می کنیم.بعد برای هر دوره iام ما ارزش مقدار Fitness را تولید،تغییر وانتخاب را اعمال می کنیم.الگوریتم وقتی پایان می یابد که به معیارمان برسیم.
سود و کد :

Choose initial population
Repeat
Evaluate the individual fit nesses of a certain proportion of the population
Select pairs of best-ranking individuals to reproduce
Apply crossover operator
Apply mutation operator
Until terminating condition

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

پیچیده تر و مشکل تر است. مثلاً این روش توسط استفان کرمر،برای حدس ساختار ۳ بعدی یک پروتئین موجود در آمینو اسید ها استفاده شد.الگوریتم های ژنتیکی که برای آموزش شبکه های عصبی استفاده می شوند،از این روش بهره می گیرند.سومین روش برای نمایش صفات در یک GA یک رشته از حروف است،که هر حرف دوباره نمایش دهنده یک خصوصیت از راه حل است.خاصیت هر ۳تای این روشها این است که آنها تعریف سازنده ایی را که تغییرات تصادفی در آنها ایجاد می

کنند را آسان می کنند:۰را به ۱ وبرعکس،اضافه یا کم کردن ارزش یک عدد یا تبدیل یک حرف به حرف دیگر.یک روش دیگر که توسط John Koza توسعه یافت،برنامه نویسی ژنتیک (Genetic programming)است.که برنامه ها را به عنوان شاخه های داده در ساختار درخت نشان می دهد.در این روش تغییرات تصادفی می توانند با عوض کردن عملگرها یا تغییر دادن ارزش یک گره داده شده در درخت،یا عوض کردن یک زیر درخت با دیگری به وجود آیند.
روش های انتخاب :
روش های مختلفی برای الگوریتم های ژنتیک وجود دارند که می توان برای انتخاب ژنوم ها از آنها استفاده کرد.اما روش های لیست شده در پایین از معمولترین روش ها هستند.
انتخاب Elitist :مناسبترین عضو هر اجتماع انتخاب می شود.
انتخاب Roulette: یک روش انتخاب است که در آن عنصری که عدد برازش(تناسب)بیشتری داشته باشد،انتخاب می شود.
انتخاب Scaling :به موازات افزایش متوسط عدد برازش جامعه،سنگینی انتخاب هم بیشتر می شودوجزئی تر.این روش وقتی کاربرد دارد که مجموعه دارای عناصری باشد که عدد برازش بزرگی دارند وفقط تفاوت های کوچکی آنها را از هم تفکیک می کند.

انتخاب Tournament : یک زیر مجموعه از صفات یک جامعه انتخاب می شوندواعضای آن مجموعه با هم رقابت می کنندو سرانجام فقط یک صفت از هر زیر گروه برای تولید انتخاب می شوند.
بعضی از روشهای دیگر عبارتند از :
:Rank Selection, Generational Selection, Steady-State Selection .Hierarchical Selection
روش های تغییر:
وقتی با روش های انتخاب کروموزوم ها انتخاب شدند،باید به طور تصادفی برای افزایش تناسبشان اصلاح شوند.۲ راه حل اساسی برای این کار وجود دارد.اولین وساده ترین جهش (Mutation) نامیده می شود.درست مثل جهش در موجودات زنده که عبارت است از تغییر یک ژن به دیگری، در الگوریتم ژنتیک جهش تغییر کوچکی در یک نقطه از کد خصوصیات ایجاد می کند.

دومین روش Crossover نام دارد و ۲ کروموزوم برای معاوضه سگمنتهای کدشان انتخاب می شوند.این فرآیند بر اساس فرآیند ترکیب کروموزوم ها در طول تولید مثل در موجودات زنده شبیه سازی شده. اغلب روش های معمول Crossover شامل Single-point Crossoverهستند ، که نقطه تعویض در جایی تصادفی بین ژنوم ها است.بخش اول قبل از نقطه ،و بخش دوم سگمنت بعد از آن ادامه پیدا می کند،که هر قسمت برگرفته از یک والد است،که ۵۰/۵۰ انتخاب شده.
شکل های بالا تاثیر هر یک از عملگر های ژنتیک را روی کروموزوم های ۸ بیتی نشان می دهد. شکل بالاتر ۲ ژنوم را نشان می دهد که نقطه تعویض بین ۵امین و ۶امین مکان در ژنوم قرار گرفته،ایجاد یک ژنوم جدید از پیوند این ۲ والد بدست می آیند.شکل ۲وم ژنومی را نشان می دهد که دچار جهش شده و ۰ در آن مکان به ۱ تبدیل شده .
تقاط قوت الگوریتم های ژنتیک:
اولین و مهمترین نقطه قوت این الگوریتم ها این است که الگوریتم های ژنتیک ذاتاً موازی اند .اکثر الگوریتم های دیگر موازی نیستند و فقط می توانند فضای مسئله مورد نظر را در یک جهت در یک لحظه جستجو کنند واگر راه حل پیدا شده یک جواب بهینه محلی باشدویا زیر مجموعه ای از جواب اصلی باشد باید تمام کارهایی که تا به حال انجام شده را کنار گذاشت ودوباره از اول شروع کرد.از آنجایی که GA چندین نقطه شروع دارد،در یک لحظه می تواند فضای مسئله را از چندجهت مختلف جستجو کند. اگر یکی به نتیجه نرسید سایر راه ها ادامه می یابند و منابع بیشتری را در اختیار شان قرار می گیرد.در نظر بگیرید: همه ۸ عدد رشته باینری یک فضای جستجو را تشکیل می دهند،که می تواند به صورت ******** نشان داده شود.رشته ۰۱۱۰۱۰۱۰ یکی از اعضای این فضاست.همچنین عضوی از فضاهای
*******۰و******۰۱و۰ ******۰و*۱*۱*۱*۰و ۰**۰۱*۰۱ والی آخر باشد.

به دلیل موازی بودن واین که چندین رشته در یک لحظه مورد ارزیابی قرار می گیرند GA ها برای مسائلی که فضای راه حل بزرگی دارند بسیار مفید است .اکثر مسائلی که این گونه اند به عنوان”غیر خطی” شناخته شده اند.در یک مسئله خطی، Fitness هر عنصر مستقل است،پس هر تغییری در یک قسمت بر تغییر وپیشرفت کل سیستم تاثیر مستقیم دارد.می دانیم که تعداد کمی از مسائل دنیای واقعی به صورت خطی اند.در مسائل غیر خطی تغییر در یک قسمت ممکن است تاثیری ناهماهنگ بر کل سیستم ویا تغییر در چند عنصر تاثیر فراوانی بر سیستم بگذارد. خوشبختانه موازی بودن GA باعث حل این مسئله می شود ودر مدت کمی مشکل حل می شود.مثلاً برای حل یک مسئله خطی ۱۰۰۰ رقمی ۲۰۰۰ امکان حل وجود دارد ولی برای یک غیر خطی ۱۰۰۰ رقمی ۲۱۰۰۰ امکان .یکی از نقاط قوت الگوریتم های ژنتیک که در ابتدا یک کمبود به نظر می رسد این

است که :GA ها هیچ چیزی در مورد مسائلی که حل می کنند نمی دانندو اصطلاحاً به آنها Blind Watchmakers می گوییم . آنها تغییرات تصادفی را در راه حل های کاندیدشان می دهند وسپس از تابع برازش برای سنجش این که آیا آن تغییرات پیشرفتی ایجاد کرده اند یا نه، استفاده می کنند.مزیت این تکنیک این است که به GA اجازه می دهند یا با ذهنی باز شروع به حل کنند.از آنجایی که تصمیمات آن اساساً تصادفی است،بر اساس تئوری همه راه حلهای ممکن به روی مسئله باز است،ولی مسائلی که محدود به اطلاعات هستند باید از راه قیاس تصمیم بگیرند ودر این صورت بسیاری از راه حلهای نو وجدید را از دست می دهند. یکی دیگر از مزایای الگوریتم ژنتیک این است که آنها می توانند چندین پارامتر را همزمان تغییردهند.بسیاری ازمسائل واقعی نمی توانند محدود به یک ویژگی شوند تا آن ویژگی ماکسیمم شود یا مینیمم و باید چند جانبه در نظر گرفته شوندGAها در حل این گونه مسائل بسیار مفیدند،و در حقیقت قابلیت موازی کار کردن آنها این خاصیت را به آنها می بخشد.و ممکن است برای یک مسئله ۲ یا چند راه حل پیدا شود،که هر کدام با در نظر گرفتن یک پارامتر خاص به جواب رسیده اند.
محدودیتهای GAها :
یک مشکل چگونگی نوشتن عملگر Fitness است که منجر به بهترین راه حل برای مسئله شود.اگر این کارکرد برازش به خوبی و قوی انتخاب نشود ممکن است باعث شود که راه حلی برای مسئله پیدا نکنیم یا مسئله ای دیگر را به اشتباه حل کنیم. به علاوه برای انتخاب تابع مناسب برای Fitness ،پارامترهای دیگری مثل اندازه جمعیت،نرخ جهش وCrossover ، قدرت ونوع انتخاب هم باید مورد توجه قرار گیرند.
مشکل دیگر،که آن را نارس می نامیم این است که اگر یک ژنوم که فاصله اش با سایر ژنوم های نسل اش زیاد باشد(خیلی بهتر از بقیه باشد)و خیلی زود دیده شود(ایجاد شود)ممکن است محدودیت ایجاد کند و راه حل را به سوی جواب بهینه محلی سوق دهد.این اتفاق معمولاً در جمعیت های کم اتفاق می افتد.روش های Rank ,Scaling tournament selection بر این مشکل غلبه می کنند

چند نمونه از کاربرد های الگوریتم های ژنتیک :
نرم‌افزار شناسایی چهره با استفاده از تصویر ثبت شده به همت مبتکران ایرانی طراحی و ساخته شد. در این روش، شناسایی چهره براساس فاصله اجزای چهره و ویژگی‌های محلی و هندسی صورت می‌گیرد که تغییرات ناشی از گیم، تغییرات نور و افزایش سن کمتین تأثیر را خواهد داشت. همچنین گراف‌ها برای چهره‌های جدید با استفاده از الگویتم‌های ژنتیک ساخته شده و با استفاده از یک تابع تشابه، قابل مقایسه با یکدیگر هستند که این امر تأثیر به‌سزایی در افزایش سرعت شناسایی خواهد داشت.
توپولوژی های شبکه های کامپیوتی توزیع شده.
بهینه سازی ساختار ملکولی شِمیایی(شیمی)
مهندسی برق برای ساخت آنتنهای Crooked-Wire Genetic Antenna
مهندسی نرم افزار
بازی های کامپیوتری
مهندسی مواد
مهندسی سیستم
رباتیک(Robotics)
تشخیص الگوو استخراج داده(Data mining)
حل مسئله فروشنده دوره گرد
آموزش شبکه های عصبی مصنوعی
یاددهی رفتار به رباتها با GA
یادگیری قوانین فازی با استفاده از الگویتم های ژنتیک.
یک مثال ساده:
ما یک مربع ۳*۳ داریم که می خواهیم اعدادی بین ۱تا۱۵ را در این مربع قرار دهیم به طوری که جمع
اعداد در هر سطرو ستون برابر ۲۴ شود.

=۲۴

=۲۴

=۲۴N N N
N N N
N N N

ابن مسئله تا حدودی پیچیده است.ممکن است یک انسان بتواند آن را در مدت زمانی مشخص حل کند ولی هیچ گاه یک کامپیوتر نخواهد توانست آن رادر مدت زمان کوتاهی با استفاده از اعداد تصادفی حل کند. ولی الگوریتم ژنتیک می تواند این مشکل را حل کند.
نسل اول :
اولین گام ایجاد کردن یک نسل ابتدایی برای شروع کار است که شامل تعدادی ژنوم تصادفی است.این ژنوم ها به صورت باینری(۰و۱) نشان داده می شوند. حالا مثال مان:
اول یکسری عدد به صورت تصادفی تولید می شوند. هر ژنوم یا کروموزوم شامل اطلاعاتی برای هر ۹ جای خالی است .چون این اعداد مقادیر بین ۰تا۱۵ دارند می توان آنها را با ۴ بیت یا ژن داده نمایش داد. پس هر ژنوم شامل ۳۶ بیت است.
یک نمونه ژنوم می تواند به شکل زیر باشد:

Bits (Genes) 0110 1100 1111 1011 0100 1010 0111 0101 1110
Values(Traits) 6 12 15 11 4 10 7 5 14

 

 

حالاباید به هر ژنوم در مجموعه یک عدد تناسب(Fitness) بنابر تاثیر آن در حل مسئله نسبت داد.فرآیند وروش محاسبه این عدد برای هر مسئله فرق می کند.انتخاب الگوی مناسب برای مسئله مشکلترین و حساسترین بخش در حل مسئله ژنتیک است.دراین مثال ما اعداد را در مکان هایشان جایگذاری می کنیم و بررسی می کنیم که چقدر با جواب اصلی فاصله دارند.

۳۳=
۲۵=
۲۶=
=۳۳
=۲۵
=۲۶۱۵ ۱۲ ۶
۱۰ ۴ ۱۱
۱۴ ۵ ۷

مقادیر معادل عبارتند از ۳۳و۲۵و۲۶و۲۴و۲۱و۳۹٫واضح است که این مقادیر مسئله را حل نمی کنند.پس باید مقادیر تناسب را برای این ژنوم محاسبه کرد.برای این کار ابتدا فاصله هرمجموع را از۲۴ محاسبه کرده،سپس معکوس مجموع تفاصل آنها را محاسبه می کنیم .بنابراین درجه تناسب برای این ژنوم تقریباً برابر ۰٫۰۳۳ است.هرچقدر که اعداد ما به جواب نزدیکتر باشند عدد تناسب بزرگتر خواهد شد.اما اگر مخرج ما برابر ۰شود چه اتفاقی می افتد؟ دراین صورت همه اعداد ما برابر ۲۴ شده اند وما به جواب رسیده ایم.
نسل بعدی :
دو ژنوم به طور تصادفی برای تولید نسل بعدی انتخاب می شوند. این اصلی ترین بخش الگوریتم ژنتیک است که از ۳ مرحله تشکیل شده:

انتخاب :
دو ژنوم به طور تصادفی از نسل قبل انتخاب می شوند.این ژنوم ها دارای اعداد تناسب بزرگتری هستند و بعضی صفات آنها به نسل بعدی منتقل می شوند. این بدین معنی است که عدد تناسب در حال افزایش خواهد بود.بهترین روش برای تابع انتخاب(Fitness) در این مسئله روشی به نام رولت(Roulette) است.اول یک عدد تصادفی بین صفر وعدد تناسب نسل قبلی انتخاب می شود. تابع انتخاب به صورت زیر خواهد بود:
RouletteSelection()
{
float ball = rand_float_between(0.0, total_fitness);
float slice = 0.0;
for each genome in population
{
slice += genome. fitness;
if ball < slice
return genome;

}
}
تغییر از یک نسل به نسل بعدی(Cross over) :
حالا دو ژنوم بخشی از ژنهایشان را برای ایجاد نسل بعدی اهدا می کنند. اگر آنها تغییر پیدا نکنند همانطور بی تغییر به نسل بعدی منتقل خواهند شد.درجه Crossover نشان دهنده این است که هر چند وقت یکبار ژنوم ها تغییر پیدا خواهند کرد و این عدد باید در حدود ۶۵-۸۵% باشد.
عملگر تغییر در ژنوم های باینری مثال ما با انتخاب یک مکان تصادفی در ژنوم برای تغییر آغاز می شود. بخش اول ژنهای پدر و بخش دوم ژنهای مادر با هم ترکیب می شوند(و بالعکس) تا۲ فرزند تولید شوند. در زیریک عمل تغییر را می بینیم.

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
word قابل ویرایش - قیمت 18700 تومان در 145 صفحه
187,000 ریال – خرید و دانلود
سایر مقالات موجود در این موضوع
دیدگاه خود را مطرح فرمایید . وظیفه ماست که به سوالات شما پاسخ دهیم

پاسخ دیدگاه شما ایمیل خواهد شد