PDA

مشاهده نسخه کامل : تاپیک مرجع شبکه ی عصبی مصنوعی (Artificial Neural Network)



ravegoat
29-03-12, 16:50
شبكه ي عصبي مصنوعي نوعي شبيه سازي شبكه ي عصبي در مغز انسان است كه با پياده سازي آن روي يك سيستم قابل برنامه ريزي، آن سيستم داراي قدرت آموختن مي شود. اين ويژگي سبب مي شود ما با شبكه ي عصبي بتوانيم سيستم هايي را مدل كنيم كه اطلاعات چنداني پيرامون آن سيستم ها نداريم. به عنوان مثال تحليل ديناميكي يك ربات خاص به دليل پيچيدگي اش بسيار دشوار است. در نتيجه كنترل حركت اين ربات نيز پيچيده خواهد بود. لذا ما يك شبكه ي عصبي تعريف مي كنيم تا رفتار هاي حركت ربات را فرا گيرد كه بعد از اين فراگيري ما مي توانيم از اين شبكه ي عصبي جهت كنترل حركت آن ربات استفاده كنيم.

شبكه ي عصبي از تعداد زيادي سلول عصبي به نام نرون (Neuron) تشكيل شده است. هر نرون سيگنال هايي را از نرون هاي مختلف دريافت كرده و با تقويت يا تضعيف آن ها سيگنال، يك سيگنال را به عنوان خروجي توليد مي كند و آن را به سوي نرون هاي بعدي مي فرستد.
شبيه سازي يك نرون در ANN به اين صورت است:

نرون هر سيگنال ورودي خود را كه به صورت يك عدد است، در عدد مخصوصي مربوط به همان ورودي به نام وزن (Weight) ضرب مي كند:


ai -> wi x ai



نرون حاصل ضرب تمام ورودي ها در وزنشان را با هم جمع مي كند:


w1 x a1 + w2 x a2 + … + wn x an



نرون ممكن است حاصل جمع را با يك ورودي داخلي به نام باياس (Bias) جمع كند:


w1 x a1 + w2 x a2 + … + wn x an + b



در نهايت حاصل جمع فوق به عنوان ورودي وارد تابع تحريك يا فعال سازي مي شود تا سيگنال خروجي توليد شود.

توابع تحريك (Activation Functions) وظيفه ي نگاشت حاصل جمع به يك بازه ي دلخواه (برد تابع) را بر عهده دارند. به عنوان مثال برد تابع Sigmoid Bipolar، (-1,1) است و خروجي تابع در اين بازه محدود مي شود. مدل يك نرون را در زير ملاحظه مي كنيد:


6716

انتخاب تابع تحريك بستگي به نوع مسئله دارد. توابع Sigmoid، Gaussian و Linear از جمله ي مهم ترين توابع فعال سازي هستند كه هر كدام براي كاربرد خاصي مناسب هستند.


شبكه ي عصبي چندلايه
در شبكه هاي عصبي چند لايه، هر لايه شامل چند نرون است. يك لايه سيگنال هايي را از لايه قبلي خود دريافت كرد و آن سيگنال ها را با نرون هايي كه در لايه وجود دارند، پردازش مي كند و سيگنال هاي خروجي را به لايه ي بعدي مي فرستد.
تعداد لايه ي بيش تر الزاما“ به معني كارايي بهتر شبكه ي عصبي نيست. شبكه ي عصبي سه لايه جز بهينه ترين نوع شبكه هاي عصبي است كه لايه هاي ورودي، مخفي و خروجي را شامل مي شود. متاسفانه يكي از ضعف هاي شبكه ي عصبي، نبود راهكاري مشخص جهت تعيين معماري شبكه ي عصبي براي حل يك مسئله است.


6717

ravegoat
29-03-12, 16:59
وجود نرون ها در شبكه يه عصبي به شبكه قابليت يادگيري نمي دهد بلكه بايد از يك الگوريتم يادگيري جهت آموزش (Training) شبكه ي عصبي استفاده كرد.

يادگيري نظارتي يا Supervised

در اين روش تعدادي ورودي و خروجي صحيح به شبكه ي عصبي داده مي شوند تا شبكه آموزش ببيند. شبكه با دريافت ورودي ها، خروجي ها را توليد مي كند و خروجي هاي توليدي را با خروجي هاي صحيح مقايسه مي كند. شبكه مي تواند با قوانيني مثل Delta Rule مقدار خطا را محاسبه كرده و بر اساس خطاي به دست آمده وزن هاي جديد را به دست آورد.
به عنوان مثال در يك شبكه ي عصبي براي تخمين يك تابع تعدادي نقطه به صورت زوج (x, f(x)) را براي آموزش در اختيار شبكه ي عصبي قرار مي دهيم و آموزش را شروع مي كنيم. در اين مثال x ها ورودي و f(x) ها خروجي محسوب مي شوند. شبكه با دريافت يك x يك تقريب از تابع را براي آن ارايه مي كند و اين مقدار را با f(x) مقايسه كرده تا خطا را بيابد. آن گاه بر اساس ميزان خطا، وزن هاي جديد محاسبه مي شوند و اين بار تقريب براي مبناي وزن هاي جديد اجرا مي شود. اين روند تا آن جا ادامه مي يابد تا شبكه تا حد لازم به مقدار واقعي نزديك شود. در نهايت اين شبكه قادر است براي هر x دلخواهي (نه الزاما“ x هايي كه براي آموزش به شبكه داده شده بود) يك مقدار تقربي از f(x) را ارايه كند.
بديهي است كه هر چه تعداد نقاط براي آموزش و گام هاي يادگيري بيش تر باشند، همگرايي شبكه (converge) بهتر خواهد بود.


يادگيري تقويتي يا Reinforcement (Only the registered members can see the link)

در اين نوع يادگيري شبكه بر اساس حالات محيط دستوراتي را روي محيط اعمال كرده و نتيجه را مشاهده مي كند. محيط بر اساس ميزان خوب بودن يا بد بودن تصميم، به شبكه پاداش مي دهد و يا آن را مجازات مي كند. آن گاه شبكه با ثبت كنش خودش و واكنش محيط سعي مي كند تا پاداش بيش تري بگيرد و كم تر مجازات شود. با ادامه ي اين روند يادگيري در نهايت شبكه رفتار بهينه اي پيدا مي كند.
Reinforcement كابرد گسترده اي در كنترل ربات ها و تطبيق رفتار آن ها با محيط دارد. از جمله الگوريتم هاي متداول در اين روش، استفاده از Q-Learning است.

يادگيري غير نظارتي يا Unsupervised

در اين روش داده هايي جهت نظارت بر يادگيري وجود ندارد بلكه شبكه خود الگو هاي يادگيري را خلق مي كند و تكنيك ها را فرا مي گيرد. پياده سازي يك شبكه ي Unsupervised در مقايسه با روش Supervised به مراتب دشوار تر است اما همگرايي آن سريع تر و انعطاف يادگيري آن بيش تر است.



در ادامه آموزش خود را تنها به يادگيري نظارتي محدود مي كنيم ولي منابع آموزش ساير يادگيري ها نيز براي مطالعه ي بيش تر قرار داده خواهد شد.

ravegoat
01-04-12, 12:37
براي آشنايي با نحوه ي عملكرد يك شبكه ي عصبي مصنوعي از يك مثال كمك مي گيريم. مي خواهيم با يك Neural Net يك نرم افزار تشخيص دست خط (OCR) بسيار ساده طراحي كنيم. كاربر فضايي به اندازه ي 10x10 پيكسل در اختيار دارد كه مي تواند كاركتر مورد نظر خود را در آن وارد كند. هر يك از اين پيكسل ها مي توانند سفيد و يا سياه باشند. در واقع از چينش اين پيكسل هاي سياه و سفيد در كنار هم، كاركتر ورودي شكل مي گيرد. براي ساده سازي محاسبات قصد داريم از فضاي دو قطبي (Bipolar) استفاده كنيم كه در اين صورت هر پيكسل سياه معادل عدد 1 وهر پيكسل سفيد معادل عدد -1 خواهد بود (در حالت Unipolar، مقدار معادل پيكسل سفيد 0 مي شد.)


6749

اين 100 پيكسل ورودي هاي نرون هاي ما خواهند بود. براي سادگي كار ما تنها از 6 نرون استفاده مي كنيم كه هر نرون وظيفه ي تشخيص يك حرف را بر عهده خواهد داشت؛ نرون اول براي حرف A ، نرون دوم براي حرف B و به همين ترتيب تا نرون ششم براي حرف F . هر كدام از اين 100 پيكسل كه در واقع يا 1 هستند و يا -1 در 100 وزن (Weight) متفاوت ضرب مي شوند. چون 6 نرون داريم در مجموع 600 وزن خواهيم داشت. مقادير اوليه ي تمام وزن ها را در ابتدا 0 در نظر مي گيريم. همان طور كه در پست اول توضيح داده شد، در هر نرون مقادير تمام پيكسل ها در وزن هاي نظيرشان ضرب مي شود و نهايت اعداد حاصله با هم جمع مي گردند. حاصل جمع اين اعداد خود ورودي تابع تحريك (x) خواهد بود. تابع تحريك ما در اين مثال Sigmoid Bipolar است:



f(x) = -1 + 2/(1 + e-x)

مقدار f(x) خروجي نرون خواهد بود. با توجه به خاصيت تابع، اين مقدار قطعا" بين -1 تا 1 است.
مشتق اين تابع تحريك نيز به شكل زير خواهد بود:



f'(x) = 0.5 * (1 + f(x) * (1 - f(x))


آموزش شبكه ي عصبي
براي آموزش شبكه ي عصبي بايد چندين بار كاركتري را در ورودي شبكه ي عصبي ترسيم كنيم و به شبكه ي عصبي بگوييم كه اين مقدار ورودي فرضا" كاركتر A است. اين دقيقا" مفهوم يادگيري Supervised است. اين كار آن قدر بايد تكرار شود تا شبكه به اندازه ي كافي رشد كند و به جواب مطلوب همگرا گردد. براي آموزش شبكه ي عصبي در اين مثال از الگوريتم Delta Rule استفاده مي كنيم. فرض كنيم كه كاربر كاركتر زير را وارد كرد و به شبكه ي عصبي گفته شده كه اين كاركتر حرف F است:



6750

الگوريتم Delta Rule طبق يك رابطه ي رياضي مقدار تمامي وزن ها را طي فرآيند يادگيري اصلاح مي كند و در نهايت سبب مي شود كه ANN پاسخ مطلوب را به ما ارايه دهد:



wij (new) = wij (old) + k * (tj - yj)*f'(xj) * ai

كه:


wij (new) مقدار جديد وزن پيكسل i ام و نرون j ام
wij (old) مقدار قديمي وزن پيكسل i ام و نرون j ام
k نزخ يادگيري (Learning Rate)
tj خروجي مطلوب نرون j ام
yj خروجي نرون j ام
f'(xj) مشتق تابع تحريك براي نرون j ام
ai مقدار پيكسل i ام

با توجه به مثال:
مقدار i عددي بين 1 تا 100 است چون 100 پيكسل داريم.

مقدار j عددي بين 1 تا 6 است چون 6 نرون داريم.

نرخ يادگيري عددي بين 0 تا 1 است. هر چه اين مقدار كم تر باشد، همگرايي شبكه كند تر خواهد بود ولي اگر مقدار آن خيلي بزرگ باشد (نزديك به 1) شبكه جوابي نوساني خواهد داشت. مقدار زير 0.1 براي آن در OCR مطلوب است.

خروجي مطلوب براي هر نرون متفاوت است. چون قرار است كه F پاسخ درست شبكه باشد، خروجي نرون هاي 1 تا 5 مقدار -1 خواهد بود ولي براي خروجي 6 ام كه مربوط به حرف F است، خروجي مطلوب 1 است.

خروجي هر نرون در واقع مقدار y = f(x) است كه f تابع تحريك ما است. چون تابع تحريك را Bipolar Sigmoid انتخاب كرديم، خروجي نرون بين -1 تا 1 است. هر چه خروجي به 1 نزديك تر باشد، نشان مي دهد ورودي آن نرون را بيش تر تحريك كرده است و هر چه خروجي به -1 نزديك تر شود، نشان مي دهد كه ورودي آن نرون را كم تر تحريك مي كند.
مشتق تابع تحريك Bipolar Sigmoid نيز در ابتداي پست آورده شده است.


در نهايت شبكه ي عصبي ما با دريافت 100 ورودي 6 خروجي به ما ارايه مي دهد. همان طور كه اشاره شد مقدار هر كدام از اينن خروجي ها بين -1 تا 1 است. طبق معماري در نظر گرفته شده اگر مقدار خروجي نرون اول از بقيه بيش تر باشد با احتمال قوي تري كاركتر ورودي حرف A است. اگر مقدار خروجي نرون دوم از بقيه بيش تر باشد، احتمال مي رود كه كاركتر ورودي حرف B باشد و به همين شكل تا نرون آخر.



سورس VB.NET مثال فوق بر گرفته شده از Only the registered members can see the link پيوست شد.

ravegoat
01-04-12, 13:39
از ظهور ايده ي شبكه ي عصبي مصنوعي تا كنون الگوريتم ها و معماري هاي متنوعي در اين زمينه ارايه شده است تا كارايي شبكه ي عصبي را در حل مسايل مختلف به حداكثر برساند. كتابخانه هايي شبكه ي عصبي نظير NeuronDotNet (Only the registered members can see the link) اين امكان را فراهم مي كنند كه تحت فناوري برنامه نويسي .NET (Only the registered members can see the link) بتوانيم از شبكه ي عصبي جهت حل مسايل فراوان استفاده كنيم بدون آن كه درگير پيچيدگي هاي نظريه هاي نو در اين زمينه شويم.


6754 (Only the registered members can see the link)حل مسئله ي فروشنده ي دوره گرد با ANN


همان طور كه اشاره شد معماري ها و الگو هاي يادگيري مختلفي براي شبكه ي عصبي وجود دارد از جمله يادگيري Reinforcement و Unsupervised . يادگيري تقويتي در مسايلي كه نياز داريم سيستم نسبت به محيط واكنش لحظه اي نشان دهد كاربرد دارد. به هم دليل از اين نوع يادگيري به طور گسترده در نظريه ي كنترل و نظريه ي بازي ها استفاده مي شود. به علاوه يادگيري تقويتي اين امكان را فراهم مي كند تا بتوانيم در فضا هاي پيوسته نظير فضاي زمان از آن بهره ببريم. براي آشنايي بيش تر با اين موارد مي توانيد به مقالات موجود در پيوست مراجعه كنيد.

ravegoat
11-05-14, 12:28
شبکه ی هاپفیلد یک شبکه ی عصبی بازگشتی (Recurrent) است که توسط جان هاپفیلد ابداع شد. این شبکه براساس مکانیزم حافظه ی انسان الگو های دودویی (Binary) را فرا می گیرد. سپس اگر نمونه ای به این شبکه عرضه شود، براساس یک روش یادگیری بدون نظارت (Unsupervised Learning)، نمونه به سمت نقطه ی کمینه ی محلی (یعنی الگویی که بیش ترین شباهت را با نمونه دارد) سوق پیدا می کند.


10183

کد متلب مربوط به شبکه ی هاپفیلد از پیوست قابل دریافت است.

ravegoat
13-05-14, 07:08
ALOPEX مخفف عبارت ALgorithm Of Pattern EXtraction بوده که یک الگوریتم یادگیری براساس فرآیند های تصادفی است و سعی دارد برخلاف الگوریتم هایی نظیر پس انتشار خطا (Backpropagation) به جای میل کردن به نقطه ی کمینه ی محلی، نقطه ی کمینه ی مطلق را بیابد. مقاله ی پیوست شده نحوه ی به کارگیری این روش را همراه با الگوریتم تبرید شبیه سازی شده (Simulated Annealing) جهت آموزش شبکه های Feed-Forward و Recurrent شرح داده است.

ravegoat
17-05-14, 06:15
الگوریتم یادگیری Hebbian یک الگوریتم یادگیری بدون نظارت است که اساس آن این گونه شکل گرفته است که وزن بین دو نرون که مدام یکدیگر را تحریک می کنند باید تقویت شود. برای اطلاعات بیش تر می توانید فایل پیوست را مطالعه بفرمایید.

ravegoat
17-05-14, 19:53
طبق درخواست دوستان مدل سازی، شبیه سازی و تحلیل یادگیری Spiking Neural Network در نرم افزار MATLAB پیوست شده که امیدوارم مفید باشه. همچنین یه جعبه ابزار خوب در این زمینه nSTAT (Only the registered members can see the link) هستش که دیدنش خالی از لطف نیست.

آرمین :11():

ravegoat
26-05-14, 21:30
آموزش پیوست شده به معرفی شبکه های عصبی ای می پردازد که می توان آن ها را معادل با تکنیک PCA جهت فروکاهی داده (Data Reduction) به کار برد.

ravegoat
26-06-14, 19:27
شبکه های رقابتی یا Competitive Networks شبکه هایی هستند که در آن ها براساس یک روش یادگیری بدون نظارت (Only the registered members can see the link)، نرون ها با یکدیگر رقابت می کنند تا پاسخ مناسبی را نسبت به ورودی شبکه از خود نشان دهند. در نهایت نرون با خروجی بزرگ تر ماهیت ورودی را تعیین خواهد کرد. در پیوست مجموعه ای اسلاید پیرامون شبکه های رقابتی قرار داده شده که موارد زیر شامل می شود:

Hamming Network
Competitive Layer
Self-Organizing Feature Map یا Kohonen Map
Vector Quantization

همچنین نمونه سورس متلب (Only the registered members can see the link) شبکه ی همینگ و Compet در این مجموعه قرار گرفته شده است.

ravegoat
08-08-14, 08:32
شبکه های خود تنظیم (Self-Organizing Map) گونه ای از شبکه های عصبی هستنند که براساس یک روش یادگیری بدون نظارت قادر اند داده های ورودی را طبقه بندی نمایند. برای آشنایی با نحوه ی کار این نوع شبکه و کاربردی های آن می توانید به آموزش پیوست شده مراجعه فرمایید.

sh.j.20
18-01-15, 08:05
طبق درخواست دوستان مدل سازی، شبیه سازی و تحلیل یادگیری Spiking Neural Network در نرم افزار MATLAB پیوست شده که امیدوارم مفید باشه. همچنین یه جعبه ابزار خوب در این زمینه nSTAT (Only the registered members can see the link) هستش که دیدنش خالی از لطف نیست.

آرمین :11():
سلام
روابط رياضي عملکرد اين شبکه و نحوه انتشار پالس و مدل آن را میخاستم

ravegoat
18-01-15, 22:19
سلام
روابط رياضي عملکرد اين شبکه و نحوه انتشار پالس و مدل آن را میخاستم
با سلام!

دوست گرامی به شهر سخت افزار خوش آمدید.

برای آشنایی با مدل این شبکه می تونید به پیوند های زیر مراجعه کنید:
Only the registered members can see the link
Only the registered members can see the link

برای آشنایی با نحوه ی یادگیریش هم می تونید به لینک های زیر مراجعه کنید:
Only the registered members can see the link
Only the registered members can see the link

sh.j.20
19-01-15, 09:23
سلام
با تشکر از پاسخ شما
در موردمدل سازی، شبیه سازی و تحلیل یادگیری Spiking که قرار داده اید راهنمای کاربری یا گزارش ندارید؟
من خیلی احتیاج دارم راهنمای کنید
باتشکر

ایناز
19-01-15, 10:28
باسلام خسته نباشیدمن به شبکه های عصبی NARXنیاز دارم فقط لطفا منبع فارسی باشه بخاطراینکه من یه منبع انگلیسی (مقاله)ترجمه کردم فقط میخوام گزارش کاربنویسم از عملکردو ساختار ورابطه ریاضی این شبکه ممنونم لطفا راهنمایی کنید.

ravegoat
20-01-15, 08:15
سلام
با تشکر از پاسخ شما
در موردمدل سازی، شبیه سازی و تحلیل یادگیری Spiking که قرار داده اید راهنمای کاربری یا گزارش ندارید؟
من خیلی احتیاج دارم راهنمای کنید
باتشکر

خواهش می کنم...

خیر، پیشنهاد می کنم آخرین پیوند در همان پست (پست 13) را حتما مطالعه بفرمایید. اطلاعات کاملی پیرامون این قضیه در آن مطرح شده است.

موفق باشید
آرمین

ravegoat
20-01-15, 08:23
باسلام خسته نباشیدمن به شبکه های عصبی NARXنیاز دارم فقط لطفا منبع فارسی باشه بخاطراینکه من یه منبع انگلیسی (مقاله)ترجمه کردم فقط میخوام گزارش کاربنویسم از عملکردو ساختار ورابطه ریاضی این شبکه ممنونم لطفا راهنمایی کنید.
با سلام!

دوست گرامی به شهر سخت افزار خوش آمدید.

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

موفق باشید
آرمین

kebriya
13-05-15, 01:33
سلام در مورد GrowingSOM هم میشه اطلاعات بدین. نحوه کارکرد و الگوریتمش

ravegoat
13-05-15, 19:11
سلام در مورد GrowingSOM هم میشه اطلاعات بدین. نحوه کارکرد و الگوریتمش
با سلام!

همون طور که از اسم GSOM بر میاد این شکبه جز دسته ی شبکه های خود تنظیم (SOM (Only the registered members can see the link)) قرار می گیره به طوری که در اون گره های برنده طی هر بار یادگیری رشد می کنند و به عبارتی گره های جدیدی رو ایجاد می کنند. در نتیجه اندازه ی Map به شکل بهتری تعیین میشه.

برای آشنایی با الگوریتم این کار سه پیوند زیر را مطالعه بفرمایید:
Only the registered members can see the link
Growing self-organizing map - Wikipedia, the free encyclopedia (Only the registered members can see the link)
PCA, SOM and GSOM (Only the registered members can see the link)

آرمین