![]() |
الگوریتم یادگیری نورون مصنوعی Adaline
دوستان سلام.
اگه میشه الگوریتم یادگیری نورون عصبی Adaline (تک نورون) رو شرح بدید. ویکیپدیا یه چیزایی نوشته: http://upload.wikimedia.org/wikipedi...64281a8409.png (در اینجا) میشه بگید این عمل ریاضی رو روی چی و چطور انجام بدم؟ منظورم اینه اینجا w کدوم یک از وزن ها هست؟ این کار رو چند بار باید روی چی انجام بدم؟ به ازای هر ورودی؟ یا ... اگه میشه خوب توضیح بدید! :دی سپاس! |
سلام دوست من اگر منظورت اینه که این فرمول از کجا اومده که به صورت خلاصه بگم که همون طوری که میدونی گرادیان(مشتق جزئی روی هر درایه یک بردار) نرخ بیشترین تغییرات را نشان می دهد حال اگر منفی گرادیان رو داشته باشیم چیزی که به دست می آوریم بیشترین نرخ کاهش(یا همان نزول در امتداد گرادیان می باشد ) حال اگر شاخص را
least squares error در نظر بگیریم و بر روی این شاخص نزول در امتداد گرادیان را انجام بدهیم پس کمترین نرخ خطا را خواهیم داشت حال در این فرمولی که برای آموزش مطرح کرده اید یک ضریب اصلاح (اِتا) مطرح شده که وظیفه تعیین گام رو داره و اگه خیلی کوچیک باشه امکان داره در حین نزول در مینیمم های محلی گیر کنیم و اگر هم بزرگ باشه مشکلات دیگری به وجود میاد در سینتکس شما هم وo نشان دهنده خروجی واقعی و d نشان دهنده خروجی فعلی می باشد(چون ویدرو هاف یک یادگیری با نظارت می باشد ما خروجی های صحیح را میدانیم) پس با این ضرایب وزن را اصلاح می کنیم البته من الان سر کارم !!!! نتونستم کامل تر توضیح بدم اگه جایی مشکل داشتیبگو رفتم خونه کامل تر توضیح میدم میشه بگید این عمل ریاضی رو روی چی و چطور انجام بدم؟ این عمل برای آموزش شبکه(در اینجا تک نورون) و باید روی wها انجام بدی منظورم اینه اینجا w کدوم یک از وزن ها هست؟ كد:
w new = w old + . . . به ازای هر ورودی؟ در اینجا هم دو روش داریم یکی بتچ و یکی یکی یکی:دی یعنی یک بار یک دور همه ورودی ها رو وارد می کنی بعد وزن به روز میشه ولی در حالت دیگه یکی یکی به روز میشه |
1(ها)ضميمه
میشه بگید تابع من چه مشکلی داره؟
كد:
Dim Valid As Boolean كد:
s(0) = voroodie avval برنامه ی کامل رو هم پیوست کردم. (در برنامه Hebb و پرسپترون یاد میگیرن، ولی آدالاین نه...) من نفهمیدم مشکلش چیه... سپاس! |
قسمت آموزش کدتون درسته (البته من با سینتکس وی بی خیلی آشنا نیستم :60:)شما شرط valid بودن رو بردارید و فقط با تکرار مثلا 20 تست کنید اگه جواب داد اشکال از مقدار بایاسِ ، متاسفانه من VS ندارم تا کد رو چک کنم ولی اگه میشه تغییر وزن ها رو با ورودی و خروجی برای 12 تکرار اول اینجا بزارید تا دلیل واگرایی رو راحت تر با هم پیدا کنیم :111:
نقل قول:
|
آخه این کد کلا یاد نمیگیره. تا مثلا 100000 سایکل انجام میده ولی یاد نمیگیره.
اشکال از اینجا نیست؟ : خروجی شبکه باید از تابع هم رد بشه؟ یعنی متغیر y باید همین باشه؟ یا اینکه شرط داشته باشه که اگه y بیشتر یا مساوی با یک بود٬ خروجی شبکه 1 توی رابطه یادگیری تأثیر داده بشه و اگه کمتر از یک بود٬ -1 تأثیر داده بشه؟ |
آخه برای یک or یا AND ساده حد اکثر 4 تا 6 سایکل با alpha = 0.1 باید یاد بگیره
بعد یک موضوع دیگه چرا شرط valid بودن رو y>1 گرفتین ! این باید صفر باشه البته به نظر من در ورودی هاتون هم به جای صفر منطقی عدد 1- بگیرید تا سرعت همگرایی زیاد بشه من الان کدتون رو تو متلب شبیه سازی !! می کنم ببینم جواب میده یا نه ;-) |
سپاس!
من منتظر پاسخ شما هستم! |
کدتون درست کار می کنه و همونجوری که گفتم توی چهار مرحله همگرا میشه
كد:
s = [-1 -1 1 1; كد:
w = همونطوری که میبینی خروجی برای سه داده اول منفی شده یعنی صفر و برای 1 و 1 مثبت شده یعنی 1 اینم نمود گرافیکی این سلول خط سبز وزن اولیه خط های قرمز چهار مرحله آخر (البته مال یک اجرای دیگه چون وزن ها تصادفی انتخاب میشن و من قسمت هار رسم شکل رو از کد حذف کردم که قابل فهم تر بشه) http://farshadafshari68.persiangig.c...e/untitled.jpg |
یک سوالی
شما الان معیار رو منفی یا مثبت بودن خروجی گرفتید٬ ولی من کوچکتر یا بزرگتر از یک بودن٬ فکر کنم اشکال از اینجا باشه... الان وقت ندارم (فردا امتحان دارم :دی) بعدا اینو تست میکنم. فقط سوالم اینه که اگه هدفم این باشه که معیار کوچک تر یا بزرگتر از یک بودن باشه٬ بخش یادگیری چه تفاوتی میکنه؟ سپاس! |
و یک درخواست دیگه
میشه برای xor هم یک نمودار مثل این بذارید؟ می دونم یاد نمیگیره. فقط می خوام ببینم این خطه چطور میشه. |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۲:۵۸ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.