Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > محاسبات نرم > شبکه های عصبی (Neural Networks)


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۱۰-۱۲-۱۳۹۰, ۰۱:۵۱ قبل از ظهر   #1 (لینک دائم)
عضو فوق فعال
 
آواتار mahdigh
 
تاريخ عضويت: خرداد ۱۳۸۹
محل سكونت: تهران
پست ها: 56
تشكرها: 64
60 تشكر در 21 پست
My Mood: Shad
ارسال پيغام Yahoo به mahdigh
پيش فرض الگوریتم یادگیری نورون مصنوعی Adaline

دوستان سلام.

اگه میشه الگوریتم یادگیری نورون عصبی Adaline (تک نورون) رو شرح بدید.

ویکیپدیا یه چیزایی نوشته:

(در اینجا)

میشه بگید این عمل ریاضی رو روی چی و چطور انجام بدم؟ منظورم اینه اینجا w کدوم یک از وزن ها هست؟ این کار رو چند بار باید روی چی انجام بدم؟ به ازای هر ورودی؟ یا ...

اگه میشه خوب توضیح بدید!‌ :دی

سپاس!
__________________
یک سمپادی دوم دبیرستانی هستم

خودم اینجام...
وبلاگم هم اینجاست...
mahdigh آفلاين است   پاسخ با نقل قول

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
قديمي ۱۰-۱۲-۱۳۹۰, ۱۱:۰۸ قبل از ظهر   #2 (لینک دائم)
عضو فعال
 
آواتار farshad_pickup
 
تاريخ عضويت: دي ۱۳۸۸
محل سكونت: تهران
پست ها: 12
تشكرها: 4
4 تشكر در 4 پست
My Mood: Badhal
پيش فرض

سلام دوست من اگر منظورت اینه که این فرمول از کجا اومده که به صورت خلاصه بگم که همون طوری که میدونی گرادیان(مشتق جزئی روی هر درایه یک بردار) نرخ بیشترین تغییرات را نشان می دهد حال اگر منفی گرادیان رو داشته باشیم چیزی که به دست می آوریم بیشترین نرخ کاهش(یا همان نزول در امتداد گرادیان می باشد ) حال اگر شاخص را
least squares error
در نظر بگیریم و بر روی این شاخص نزول در امتداد گرادیان را انجام بدهیم پس کمترین نرخ خطا را خواهیم داشت
حال در این فرمولی که برای آموزش مطرح کرده اید یک ضریب اصلاح (اِتا) مطرح شده که وظیفه تعیین گام رو داره و اگه خیلی کوچیک باشه امکان داره در حین نزول در مینیمم های محلی گیر کنیم و اگر هم بزرگ باشه مشکلات دیگری به وجود میاد در سینتکس شما هم وo نشان دهنده خروجی واقعی و d نشان دهنده خروجی فعلی می باشد(چون ویدرو هاف یک یادگیری با نظارت می باشد ما خروجی های صحیح را میدانیم) پس با این ضرایب وزن را اصلاح می کنیم
البته من الان سر کارم !!!! نتونستم کامل تر توضیح بدم اگه جایی مشکل داشتیبگو رفتم خونه کامل تر توضیح میدم

میشه بگید این عمل ریاضی رو روی چی و چطور انجام بدم؟ این عمل برای آموزش شبکه(در اینجا تک نورون) و باید روی wها انجام بدی
منظورم اینه اینجا w کدوم یک از وزن ها هست؟
كد:
w new = w old + . . .
این کار رو چند بار باید روی چی انجام بدم؟ تا وقتی که شبکه همگرا بشه
به ازای هر ورودی؟ در اینجا هم دو روش داریم یکی بتچ و یکی یکی یکی:دی یعنی یک بار یک دور همه ورودی ها رو وارد می کنی بعد وزن به روز میشه ولی در حالت دیگه یکی یکی به روز میشه
__________________

ويرايش شده توسط farshad_pickup; ۱۰-۱۲-۱۳۹۰ در ساعت ۱۱:۱۰ قبل از ظهر دليل: املا
farshad_pickup آفلاين است   پاسخ با نقل قول
از farshad_pickup تشكر كرده است:
mahdigh (۱۰-۱۲-۱۳۹۰)
قديمي ۱۰-۱۲-۱۳۹۰, ۰۵:۳۹ بعد از ظهر   #3 (لینک دائم)
عضو فوق فعال
 
آواتار mahdigh
 
تاريخ عضويت: خرداد ۱۳۸۹
محل سكونت: تهران
پست ها: 56
تشكرها: 64
60 تشكر در 21 پست
My Mood: Shad
ارسال پيغام Yahoo به mahdigh
پيش فرض

میشه بگید تابع من چه مشکلی داره؟
كد:
   Dim Valid As Boolean
    Dim c As Integer = 0
    Do
        Valid = True
        c += 1

        For i As Integer = 0 To ListBox1.Items.Count - 1
            Dim s() As String = Microsoft.VisualBasic.Split(ListBox1.Items(i), " ")
            Dim y As Single = (W(1) * CInt(s(0)) + W(2) * CInt(s(1)) + W(3) * 1)
            W(1) += Alpha * CSng(CInt(s(2)) - y) * CSng(CInt(s(0)))
            W(2) += Alpha * CSng(CInt(s(2)) - y) * CSng(CInt(s(1)))
            W(3) += Alpha * CSng(CInt(s(2)) - y) * 1.0
        Next
        For i As Integer = 0 To ListBox1.Items.Count - 1
            Dim s() As String = Microsoft.VisualBasic.Split(ListBox1.Items(i), " ")
            Dim y As Single = (W(1) * CInt(s(0)) + W(2) * CInt(s(1)) + W(3) * 1)
            If CInt(s(2)) = 1 Then
                If y < 1 Then
                    Valid = False
                End If
            Else
                If y >= 1 Then
                    Valid = False
                End If
            End If
        Next
    Loop Until ((Valid) Or (c > 100000))
    If c > 10000 Then
        MsgBox("I Can't Learn!", MsgBoxStyle.Exclamation)
    End If
که در کد، هر کدوم اینا معنیشون اینه:
كد:
s(0) = voroodie avval
s(1) = voroodie dovom
s(2) = khoroojie matloob
این قراره یک AND یا OR ساده رو یاد بگیره. ولی یاد نمیگیره.

برنامه ی کامل رو هم پیوست کردم. (در برنامه Hebb و پرسپترون یاد میگیرن، ولی آدالاین نه...)
من نفهمیدم مشکلش چیه...

سپاس!
فايل ضميمه
نوع فايل: zip Shabake Asabi.zip (121.5 كيلو بايت, 80 نمايش)
__________________
یک سمپادی دوم دبیرستانی هستم

خودم اینجام...
وبلاگم هم اینجاست...
mahdigh آفلاين است   پاسخ با نقل قول
قديمي ۱۰-۱۲-۱۳۹۰, ۱۱:۱۰ بعد از ظهر   #4 (لینک دائم)
عضو فعال
 
آواتار farshad_pickup
 
تاريخ عضويت: دي ۱۳۸۸
محل سكونت: تهران
پست ها: 12
تشكرها: 4
4 تشكر در 4 پست
My Mood: Badhal
پيش فرض

قسمت آموزش کدتون درسته (البته من با سینتکس وی بی خیلی آشنا نیستم )شما شرط valid بودن رو بردارید و فقط با تکرار مثلا 20 تست کنید اگه جواب داد اشکال از مقدار بایاسِ ، متاسفانه من VS ندارم تا کد رو چک کنم ولی اگه میشه تغییر وزن ها رو با ورودی و خروجی برای 12 تکرار اول اینجا بزارید تا دلیل واگرایی رو راحت تر با هم پیدا کنیم
نقل قول:
نوشته اصلي بوسيله mahdigh نمايش پست
میشه بگید تابع من چه مشکلی داره؟
كد:
   Dim Valid As Boolean
    Dim c As Integer = 0
    Do
        Valid = True
        c += 1

        For i As Integer = 0 To ListBox1.Items.Count - 1
            Dim s() As String = Microsoft.VisualBasic.Split(ListBox1.Items(i), " ")
            Dim y As Single = (W(1) * CInt(s(0)) + W(2) * CInt(s(1)) + W(3) * 1)
            W(1) += Alpha * CSng(CInt(s(2)) - y) * CSng(CInt(s(0)))
            W(2) += Alpha * CSng(CInt(s(2)) - y) * CSng(CInt(s(1)))
            W(3) += Alpha * CSng(CInt(s(2)) - y) * 1.0
        Next
        For i As Integer = 0 To ListBox1.Items.Count - 1
            Dim s() As String = Microsoft.VisualBasic.Split(ListBox1.Items(i), " ")
            Dim y As Single = (W(1) * CInt(s(0)) + W(2) * CInt(s(1)) + W(3) * 1)
            If CInt(s(2)) = 1 Then
                If y < 1 Then
                    Valid = False
                End If
            Else
                If y >= 1 Then
                    Valid = False
                End If
            End If
        Next
    Loop Until ((Valid) Or (c > 100000))
    If c > 10000 Then
        MsgBox("I Can't Learn!", MsgBoxStyle.Exclamation)
    End If
که در کد، هر کدوم اینا معنیشون اینه:
كد:
s(0) = voroodie avval
s(1) = voroodie dovom
s(2) = khoroojie matloob
این قراره یک AND یا OR ساده رو یاد بگیره. ولی یاد نمیگیره.

برنامه ی کامل رو هم پیوست کردم. (در برنامه Hebb و پرسپترون یاد میگیرن، ولی آدالاین نه...)
من نفهمیدم مشکلش چیه...

سپاس!
__________________
farshad_pickup آفلاين است   پاسخ با نقل قول
قديمي ۱۰-۱۳-۱۳۹۰, ۱۲:۰۴ بعد از ظهر   #5 (لینک دائم)
عضو فوق فعال
 
آواتار mahdigh
 
تاريخ عضويت: خرداد ۱۳۸۹
محل سكونت: تهران
پست ها: 56
تشكرها: 64
60 تشكر در 21 پست
My Mood: Shad
ارسال پيغام Yahoo به mahdigh
پيش فرض

آخه این کد کلا یاد نمیگیره. تا مثلا 100000 سایکل انجام میده ولی یاد نمیگیره.

اشکال از اینجا نیست؟ :
خروجی شبکه باید از تابع هم رد بشه؟
یعنی متغیر y باید همین باشه؟ یا اینکه شرط داشته باشه که اگه y بیشتر یا مساوی با یک بود٬ خروجی شبکه 1 توی رابطه یادگیری تأثیر داده بشه و اگه کمتر از یک بود٬ -1 تأثیر داده بشه؟
__________________
یک سمپادی دوم دبیرستانی هستم

خودم اینجام...
وبلاگم هم اینجاست...
mahdigh آفلاين است   پاسخ با نقل قول
قديمي ۱۰-۱۳-۱۳۹۰, ۰۷:۰۴ بعد از ظهر   #6 (لینک دائم)
عضو فعال
 
آواتار farshad_pickup
 
تاريخ عضويت: دي ۱۳۸۸
محل سكونت: تهران
پست ها: 12
تشكرها: 4
4 تشكر در 4 پست
My Mood: Badhal
پيش فرض

آخه برای یک or یا AND ساده حد اکثر 4 تا 6 سایکل با alpha = 0.1 باید یاد بگیره
بعد یک موضوع دیگه چرا شرط valid بودن رو y>1 گرفتین ! این باید صفر باشه البته به نظر من در ورودی هاتون هم به جای صفر منطقی عدد 1- بگیرید تا سرعت همگرایی زیاد بشه
من الان کدتون رو تو متلب شبیه سازی !! می کنم ببینم جواب میده یا نه ;-)
__________________
farshad_pickup آفلاين است   پاسخ با نقل قول
قديمي ۱۰-۱۳-۱۳۹۰, ۰۷:۱۸ بعد از ظهر   #7 (لینک دائم)
عضو فوق فعال
 
آواتار mahdigh
 
تاريخ عضويت: خرداد ۱۳۸۹
محل سكونت: تهران
پست ها: 56
تشكرها: 64
60 تشكر در 21 پست
My Mood: Shad
ارسال پيغام Yahoo به mahdigh
پيش فرض

سپاس!
من منتظر پاسخ شما هستم!
__________________
یک سمپادی دوم دبیرستانی هستم

خودم اینجام...
وبلاگم هم اینجاست...
mahdigh آفلاين است   پاسخ با نقل قول
قديمي ۱۰-۱۳-۱۳۹۰, ۰۷:۲۳ بعد از ظهر   #8 (لینک دائم)
عضو فعال
 
آواتار farshad_pickup
 
تاريخ عضويت: دي ۱۳۸۸
محل سكونت: تهران
پست ها: 12
تشكرها: 4
4 تشكر در 4 پست
My Mood: Badhal
پيش فرض

کدتون درست کار می کنه و همونجوری که گفتم توی چهار مرحله همگرا میشه
كد:
s = [-1 -1  1 1;
     -1  1 -1 1;
     -1 -1 -1 1];
 %first row of s show first input of AND 
 %second row of s show second input of AND
 %3th row show out put
w = [rand();rand();1]
%set random initial weight
s_c = 1;
alpha = 0.1;
iteration_c = 1;

for iteration_c = 1:4
    for s_c = 1:4
        y = (w(1)*(s(1,s_c)))+(w(2)*(s(2,s_c)))+(w(3));
        w(1) = w(1) + (alpha.*(s(3,s_c) - y).*s(1,s_c));
        w(2) = w(2) + (alpha.*(s(3,s_c) - y).*s(2,s_c));
        w(3) = w(3) + (alpha.*(s(3,s_c) - y));
    end
end
w
for s_c = 1:4
    end_value = (w(1).*(s(1,s_c)))+(w(2).*(s(2,s_c)))+w(3)
end
خروجی هم اینه
كد:
w =

    0.9597
    0.3404
    1.0000


w =

    0.5926
    0.5525
   -0.2758


end_value =

   -1.4210


end_value =

   -0.3159


end_value =

   -0.2358


end_value =

    0.8693
که w اولی که نشون داده شده وزن اولیه است و w بعدی هم وزن بعد از آموزش
همونطوری که میبینی خروجی برای سه داده اول منفی شده یعنی صفر و برای 1 و 1 مثبت شده یعنی 1
اینم نمود گرافیکی این سلول
خط سبز وزن اولیه
خط های قرمز چهار مرحله آخر
(البته مال یک اجرای دیگه چون وزن ها تصادفی انتخاب میشن و من قسمت هار رسم شکل رو از کد حذف کردم که قابل فهم تر بشه)
__________________
farshad_pickup آفلاين است   پاسخ با نقل قول
قديمي ۱۰-۱۳-۱۳۹۰, ۰۷:۲۸ بعد از ظهر   #9 (لینک دائم)
عضو فوق فعال
 
آواتار mahdigh
 
تاريخ عضويت: خرداد ۱۳۸۹
محل سكونت: تهران
پست ها: 56
تشكرها: 64
60 تشكر در 21 پست
My Mood: Shad
ارسال پيغام Yahoo به mahdigh
پيش فرض

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

فقط سوالم اینه که اگه هدفم این باشه که معیار کوچک تر یا بزرگتر از یک بودن باشه٬ بخش یادگیری چه تفاوتی میکنه؟

سپاس!
__________________
یک سمپادی دوم دبیرستانی هستم

خودم اینجام...
وبلاگم هم اینجاست...
mahdigh آفلاين است   پاسخ با نقل قول
قديمي ۱۰-۱۳-۱۳۹۰, ۰۷:۳۹ بعد از ظهر   #10 (لینک دائم)
عضو فوق فعال
 
آواتار mahdigh
 
تاريخ عضويت: خرداد ۱۳۸۹
محل سكونت: تهران
پست ها: 56
تشكرها: 64
60 تشكر در 21 پست
My Mood: Shad
ارسال پيغام Yahoo به mahdigh
پيش فرض

و یک درخواست دیگه
میشه برای xor هم یک نمودار مثل این بذارید؟
می دونم یاد نمیگیره. فقط می خوام ببینم این خطه چطور میشه.
__________________
یک سمپادی دوم دبیرستانی هستم

خودم اینجام...
وبلاگم هم اینجاست...
mahdigh آفلاين است   پاسخ با نقل قول
پاسخ

Tags
adaline, neuron



كاربران در حال ديدن تاپيک: 1 (0 عضو و 1 مهمان)
 

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۶:۰۱ بعد از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design