بخشی از پاورپوینت
اسلاید 1 :
موضوع ارائه شبکه های عصبی
اسلاید 2 :
در عصر حاضر در بسياري از موارد ماشين ها جايگزين انسانها شده اند و بسياري از كارهاي فيزيكي كه در گذشته توسط انسانها انجام مي گرفت امروزه توسط ماشين ها صورت مي گيرد . اگرچه قدرت كامپيوترها در ذخيره، بازيابي اطلاعات و اتوماسيون اداري ،. غير قابل انكار است، اما همچنان مواردي وجود دارد كه انسان ناچار است خودش كارها را انجام دهد. اما به طور كلي ، موارد مرتبط با ماشين شامل سيستم هايي است كه در آن به علت ارتباطات پيچيده بين اجزا، مغز انسان از درك رياضي اين ارتباطات قاصر است . مغز انسان به مرور زمان با مشاهده توالي رفتارهاي سيستم و گاه آزمايش نتيجه اي كه بر اثر دستكاري يكي از اجزاي سيستم به دست مي آيد تا حدي مي تواند عادتهاي سيستم را شناسايي كند .
مقدمه:
اسلاید 3 :
اين روند يادگيري بر اثر مشاهده مثالهاي متنوع از سيستم ، به كسب تجربه منجر مي شود. در چنين سيستمهايي مغز قادر به تجزيه و تحليل داخلي سيستم نيست و تنها با توجه به رفتارهاي خارجي، عملكرد داخلي سيستم را تخمين مي زند و عكس العملهاي آن را پيش بيني مي كند. چگونگي اداره حجم انبوه اطلاعات و استفاده موثر از آنها در بهبود تصميم گيري ، از موضوعات بحث برانگيز در عصرحاضر است. يكي از مسائل مهم تحقيقاتي در زمينه علوم كامپيوتر، پياده سازي مدلي شبيه به سيستم داخلي مغز انسان براي تجزيه و تحليل سيستم هاي مختلف بر اساس تجربه است .در اين راستا شبكه هاي عصبي يكي از پوياترين حوزههاي تحقيق در دوران معاصر هستند كه افراد متعددي از رشته هاي گوناگون علمي را به خود جلب كرده است .استفاده از شبكههاي عصبي و الگوريتم هاي ژنتيك در حل مسائل پيچيده كاربردي اين روزها بيش از بيش رواج يافته است .
اسلاید 4 :
جواب دادن به این سوال سخت است. چون در حال حاضر ما حتی تعریف دقیقی برای هوش نداریم!واژه ی هوش مصنوعی Artificial Intelligence اولین بار توسط شخصی به نام John McCarthy استفاده شد با این تعریف: "علم و مهندسی ساخت ماشین های هوشمند".
تعریف دیگر از هوش مصنوعی که خیلی از منابع آنرا بکار برده اند: هوش مصنوعی عبارت است از مطالعه ی این که چگونه کامپیوترها را می توان وادار به کارهایی کرد که در حال حاضر انسانها آنها رابهتر انجام میدهند "
هوش مصنوعی چیست؟
اسلاید 5 :
مبحث هوش مصنوعی و پیشرفت آن از سال 1950 شروع شد!
در این سال شخصی بنام آلن تورینگ (Alen Turing) تستی بنام تورینگ تست را معرفی کرد و گفت که هر ماشینی که بتواند از این تست سربلند بیرون بیاید را می شود یک ماشین هوشمند بر شمرد. تا الان هیچ ماشینی نتوانسته این تست را با موفقیت پشت سر بگذارد، که خیلی هم عجیب نیست چون برای یک ماشین این تست بسیار سخت است. این تست از این قرار است که یک نفر پشت دستگاه کامپیوتر با یک برنامه کامپیوتری مکاتبه کند و برنامه او را فریب دهد که شخص متوجه نشود این برنامه است یا یک انسان دیگر
تاریخچه هوش مصنوعی:
اسلاید 6 :
در سال 1958 آقای John McCarthy زبان برنامه نویسی Lisp را اختراع کرد.زبان برنامه نویسی Prolog هم در همین دوره در سال 1972 بوجود آمد که الان هم یک زبان قوی در زمینه ی منطق حساب میشود!در سال 1997 دیپ بلو که یک ماشین شطرنج باز بود، توانست قهرمان جهان "گری کاسپارف" رو شکست بده! که این یک موفقیت بزرگ بود در جهان هوش مصنوعی!
اسلاید 7 :
طبقه بندی های مهم نرم افزارهای هوش مصنوعی که در فرآیند تصمیم گیری های افراد مورد استفاده قرار می گیرد عبارتند از:
شبکه های عصبی
الگوریتم های ژنتیک
منطق فازی
چند مبحث از هوش مصنوعی:
اسلاید 8 :
شبکه ی عصبی یا Neural Network
یکی از مباحثی است که در زمینه هوش مصنوعی بسیار پیشرفت کرده و روی آن کار میشود با یک مثال به تعریف آن می پردازیم:
بعد از سال ها حافظه انسان قادر به شناخت چهره افراد است
یا مثلا توانایی خواندن خطوط مختلف
یا تغییر خط در اثر تمرین
در اینجا نکته جالب این است که مغز چگونه این کار های را انجام می دهد و چگونه یاد میگیرد ؟
اسلاید 9 :
مغزانسان از یک سری سلول عصبی (Neuron) تشکیل شده که هر کدام سیگنال هایی برای هم میفرستند! این سلول های عصبی کاری که انجام میدهند ساده است مثلا مثل جمع دو تا عدد اما چیزی که باعث میشود بتوانند این کارهای پیچیدرا انجام بدهند این است که تعداد این سلول ها بسیار زیاد است! مغزانسان حدود 10 به توان 11 تا از این سلول ها دارد! هر نورون تعدادی axom دارد که مثل خروجی عمل می کنند و تعداد خیلی زیادی هم dendrite که به عنوان ورودی عمل می کنند. نورون ها یک مقدار مشخصی قدرت سیگنال نیاز دارند تا فعال بشوند، وقتی فعال شدند یک سیگنال الکتریکی برای سایر نورون ها میفرستند! هر چقدر نورون ها بیشتر استفاده بشوند ارتباط بینشان (axonها و dendriteها) قوی تر میشود.
حالا ما همین سیستم رو سعی می کنیم در ابعاد کوچک در کامپیوتر شبیه سازی کنیم. کامپیوتر هایی که به آن ها دسترسی داریم حتی قدرت پردازش 20 میلیارد نورون را هم ندارند، ولی با تعداد کمی نورون هم می شود پاسخ های مناسبی از شبکه ی عصبی گرفت
اسلاید 10 :
نورون ها در لایه های مختلف قرار می گیرند، لایه ی اول را لایه ی ورودی Input Layer) ) می گویند که ورودی ها را دریافت و بر حسب قدرت ارتباطش با هر نورون در لایه ی بعدی سیگنال ورودی را به لایه ی بعد میفرستد! از این به بعد به قدرت ارتباط هر نورون با نورون دیگر وزن Weight) ) آن نورون می گوییم. مقدار هر نورون در هر لایه به وزن و مقدار نورون های لایه ی قبلش بستگی دارد. در نهایت ما یک لایه ی خروجی داریم که در این شکل دو نورون دارد! لایه های میانی تعدادشان می تواند هر اندازه ای باشد، و تعداد نورون هایش مثل بقیه ی لایه ها می تواند هر چقدر که بخواهیم باشد.
اسلاید 11 :
یک شبکه ی عصبی مثل یک تابع عمل می کند که به تعداد نورون های ورودی، ورودی می گیرد و به تعداد نورون های خروجی هم خروجی میدهد! مثلا این شبکه عصبی که در شکل می بینید به این صورت است: f(x1, x2, x3, x4, x5) = y1 , y2
اسلاید 12 :
ما با این تابع 100 مثال که جوابشان را میدانیم تست می کنیم و هر بار عملیات بازپخشانی (Back propagating) را انجام میدهیم . بازپخشانی عملیاتی است که طی آن وزن نورون ها را طوری تغییر میدهیم که جواب های شبکه به جواب هایی که انتظار داشتیم نزدیک تر بشوند! یعنی ما در اصل یک تابع می سازیم که خودمان نمیدانیم چه تابعی است و فقط چند مثال از آن را داریم
بعد برای کامپیوتر چند تا جواب معلوم تعریف میکنیم ! مثلا 2 و 2 باید جواب 4، 2 و 3 باید جواب 5 بدهد و این پروسه را تکرار می کنیم در نهایت برای مثال سوالی مثل 100 به علاوه 23 ؟ (اعدادی که تا بحال برای شبکه عصبی مثال نزدیم). و جواب میگیریم مثلا 123.0223! شبکه عصبی همیشه قرار نیست جواب قطعی بدهد، در نهایت می توانیم به یک روشی آنرا به جواب قطعی تبدیل کنیم، مثلا در این مثال روند کردن جواب مناسب را میدهد
اسلاید 13 :
به این پروسه ای که طی آن مثال میزنیم و عملیات بازپخشانی را انجام میدهیم پروسه ی تعلیم یا Training می گویند.
پرسپترون Perceptron))
پرسپترون یا Perceptron ساده ترین نوع مدلسازی نورون است. از آن جایی که بررسی چند پرسپترون در لایه های مختلف کمی پیچیده است به بررسی یک عدد پرسپترون می پردازیم.پرسپترون دارای یک سری ورودی خارجی. یک ورودی داخلی به نام بایاس (bias). یک threshold و یک خروجی است
اسلاید 14 :
هر پرسپترون نشان دهنده و معرف یک نورون است. ورودی پرسپترون ها معمولا از جنس boolean هست اما در کل می تواند هر عددی باشد ولی خروجی همیشه یک boolean است
وقتی می گوییم خروجی یک پرسپترون همیشه boolean یا بولین است یعنی خروجی می تواند دو مقدار ۱ و ۰ داشته باشد
در صورتی که خروجی یک پرسپترون یک باشد به آن پرسپترون می گوییم پرسپترون فعال یا activated.
تمام ورودی ها از جمله بایاس دارای یک وزن هستند که این وزن ضرب در مقدار ورودی می شود. معمولا وزن بایاس برابر ۱ است.
اسلاید 15 :
یکی از مهمترین عوامل هر نورون تابع فعال کننده یا Activation function آن نورون است. تابع فعال کننده تعیین می کند که با توجه به ورودی های نورون خروجی آن به چه شکل باشد. در پرسپترون ها ما یکی از ساده ترین توابع فعال کننده را داریم. این تابع تمام ورودی های پرسپترون را بعد از ضرب کردن آن ها در وزنشان با هم جمع می کند. در صورتی که جمع آنها از threshold بیشتر یا مساوی بود خروجی ۱ خواهد بود یعنی پرسپترون فعال خواهد شد و در غیر این صورت پرسپترون غیر فعال خواهد شد. پس در صورتی که شرط زیر برقرار باشد یک پرسپترون فعال خواهیم داشت:
در اصل threshold مثل یک دیوار است. اگر سیگنال انرژی کافی برای رد شدن از دیوار را داشته باشد از روی آن عبور می کند. در غیر این صورت پشت دیوار باقی می ماند.
اسلاید 16 :
یادگیری در پرسپترون
از خصیصه های اصلی پرسپترون ها قابلیت یادگیری یا train شدن است. این یادگیری در پرسپترون ها supervised است. به این مفهوم که ما باید تعدادی ورودی به همراه خروجی صحیح داشته باشیم تا پرسپترون بتواندآن را تقلید کند.
یادگیری پرسپترون ها با این صورت است:
یک خروجی تولید می کنند.
خروجی را با خروجی که باید می بوده مقایسه می کنند.
خودشان را کمی تنظیم می کنند تا به خروجی نزدیک تر بشوند.
بعد از تکرار شدن این مراحل به تعداد کافی پرسپترون اصطلاحا به رفتار صحیح همگرا یا converge میشود!به این روش یادگیری delta rule یا قانون دلتا می گویند. در این روش یادگیری تغییر وزن در هر مرحله به صورت زیر محاسبه می شود:
اسلاید 17 :
پرسپترون چند لایه (MLP) نیز مورد استفاده قرار می گیرند . پرسپترون های چند لایه متداول ترین معماری شبکه های عصبی هستند که امروزه مورد استفاده قرار می گیرند .
شبکه MLP معمولا از یک لایه ورودی یک یا چند لایه پنهان و یک لایه خروجی تشکیل شده است . جهت بیان ساختار شبکه چند لایه ، از نمایش عبارتی (R-S-S-S-) استفاده می شود که در آن R تعداد ورودی های و S تعداد نورون ها در لایه i ام می باشد.
الگوریتم پس انتشار خطا پر استفاده ترین روش برای آموزش شبکه های چند لایه است خطای شبکه پس انتشار خطا حد اقل کردن این خطا از طریق تعدیل مجموعه وزن ها در هر چرخه است .
اسلاید 18 :
زمانی که خطای شبکه در محدوده از پیش تعیین شده ای قرار گیرد ، فرآیند آموزش پس انتشار خطا متوقف می شود برآورد MLP گام های زیر را در بر دارد :
1 . انتخاب معماری
2 . تحریک یادگیری با مجموعه آموزشی
3 . بررسی کارایی با مجموعه اعتبار سنجی
4 . تعیین معماری جدید
5 . تکرار گام های 2 ، 3، 4
6 انتخاب بهترین معماری برای استفاده به عنوان ابزار پیش بینی
اسلاید 19 :
منطق فازی:
مفاهیم نادقیق بسیاری در پیرامون ما وجود دارند که آنها را به صورت روزمره در قالب عبارتهای مختلف بیان میکنیم. به این جمله دقت کنید: " هوا خوب است." هیچ کمیتی برای خوب بودن هوا مطرح نیست تا آن را اندازه بگیریم بلکه این یک حس کیفی است. در واقع مغز انسان با در نظر گرفتن عوامل گوناگون و بر پایه تفکر استنتاجی جملات را تعریف و ارزش گذاری مینماید که الگوبندی آنها به زبان و فرمولهای ریاضی اگر غیر ممکن نباشد کاری بسیار پیچیده خواهد بود. منطق فازی فناوری جدیدی است که شیوههایی را که برای طراحی و مدل سازی یک سیستم نیازمند ریاضیات پیچیده و پیشرفته است، با استفاده از مقادیر زبانی و دانش فرد خبره جایگزین میسازد.
اسلاید 20 :
اگر از ما پرسیده شود منطق فازی چیست شاید سادهترین پاسخ بر اساس شنیدهها این باشد که منطق فازی یک نوع منطق است که روشهای نتیجه گیری در مغز بشر را جایگزین میکند. مفهوم منطق فازی توسط دکتر لطفی زاده، استاد دانشگاه کالیفورنیا در برکلی، ارائه گردید و نه تنها به عنوان روششناسی کنترل ارائه شد بلکه راهی برای پردازش دادهها، بر مبنای مجاز کردن عضویت گروهی کوچک به جای عضویت گروهی دستهای ارائه کرد. به جهت نارسا و نابسنده بودن قابلیت رایانههای ابتدایی تا دهه 70 این فرضیه در سیستمهای کنترلی به کار برده نشد.
پروفسور لطفی زاده اینطور استدلال کرد که بشر به ورودیهای اطلاعاتی دقیق نیازی ندارد بلکه قادر است تا کنترل تطبیقی را به صورت بالایی انجام دهد. پس اگر ما کنترل کنندههای بازخورد را در سیستمها طوری طراحی کنیم که بتواند دادههای مبهم را دریافت کند، این دادهها میتوانند به طور ساده تر و موثرتری در اجرا به کار برده شوند.