شبکه عصبي شعاعي مبنا در متلب

شبکه عصبي RBN(Radial Basis Network)

برای درک شبکه عصبي شعاعي مبنا اول به تحلیل شبکه های پرسپترونی می پردازیم. در پرسپترون تک و چند لایه (MLP)، ما فقط قابلیت تفکیک خطی داریم زیرا آنها از لایه های ورودی و خروجی تشکیل شده اند (تعدادي لایه های پنهان در MLP). برای مثال، توابع AND، OR به صورت خطی قابل جداسازی هستند و تابع XOR به صورت خطی قابل جداسازی نیست.

and or xor gate
قابلیت جداسازی خطی توابع AND، OR، XOR

ما حداقل به یک لایه پنهان نیاز داریم تا تفکيک غیر خطی داشته باشيم. RBNN با تبدیل سیگنال ورودی را به شکل دیگری با اعمال داده های نگاشت داده شده به شبکه، تفکيک خطی آن را ممکن مي کند. RBNN از نظر ساختاری مشابه پرسپترون (MLP) است.

mlp and rbf
تمایز بین MLP و RBF

RBN متشکل از لایه ورودی، پنهان و خروجی است. RBN تنها مجاز به داشتن یک لایه پنهان است که به عنوان بردار ویژگی نيز شناخته مي شود. RBN ابعاد بردار ویژگی را افزایش می دهد که اين امر منجر به افزايش احتمال جداسازي خطي مي شود.
یک مسئله قابل تفکیک غیر خطی (مسئله طبقه بندی الگو) در فضای با ابعاد بالا بسیار قابل تفکیک است تا در فضای کم ابعاد.[قضیه Cover]

layerrbf layer
نماي ساده اي از RBF

لايه هاي RBN

شبکه‌های تابع پایه ارتباطی (RBF) معماری اساساً متفاوتی نسبت به اکثر معماری‌های شبکه عصبی دارند. بیشتر معماری شبکه های عصبی از لایه های زیادی تشکیل شده که ماهیت غیرخطی بودن آن با اعمال مکرر توابع فعال ساز غیرخطی محقق می شود. شبکه هاي RBF يک نوع شبکه پيشخور feed forward هست که تنها شامل سه لايه ي، ورودی، یک لایه پنهان و یک لایه خروجی مي باشند.

پروسه آموزش شبکه RBF به صورت مراحل زير مي باشد:

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

لايه ورودي

لایه ورودی به سادگی داده ها را به لایه های پنهان ارسال می کند. در نتیجه، تعداد نورون‌ها در لایه ورودی باید با ابعاد داده‌ها برابر باشد. در لایه های ورودی، مانند شبکه های عصبی مصنوعی استاندارد، هیچ محاسباتی انجام نمی شود. نورون های ورودی به طور کامل به نورون های پنهان متصل هستند و ورودی خود را به جلو هدايت می کنند.

input layer
لايه ورودي

لايه پنهان

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

rbf network
لايه مخفي و روابط رياضي

طبق قضیه کاور تعداد نورون ها در لایه پنهان باید بیشتر از تعداد نورون ورودی باشدولي تعداد نورون‌های لایه پنهان باید کمتر یا برابر با تعداد نمونه‌های مجموعه آموزشی نيز باشد. وقتی تعداد نورون‌های لایه پنهان با تعداد نمونه‌های مجموعه آموزشی برابر باشد، می‌توان این مدل را تقریباً معادل یادگیرنده‌های کرنلي مانند رگرسیون کرنل و ماشین‌های بردار پشتیبان کرنل در نظر گرفت.

همانطور که مي دانيد هر تابع گوسي با يک مرکز μ و مقدار واريانس σ تعريف مي شود.اصولا براي پيدا کردن اين دو پارامتر براي هر نرون لايه پنهان از روش خوشه بندي K_MEAN استفاده مي شود و بخش يادگيري بدون ناظر شبکه عصبي مي باشد.

gaussian kernel
کرنل گوسي

هر نورون شباهت بین بردار ورودی و بردار الگو اولیه آن را محاسبه می کند. محاسبات در لایه پنهان را می توان به صورت ریاضی به صورت زیر نوشت:

kernel rbf

لايه خروجي

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

fitness function

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

شبکه RBN در متلب

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

Network Architecture
معماري شبکه

خوشبختانه متلب با دو تابع newrb , newrbe تمام بخش هاي نامبرده شده را انجام مي دهد يک مثال از هلپ متلب در زير اشاره شده است.

X = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ...
      .1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ...
      .3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
eg = 0.02; % sum-squared error goal
sc = 1;    % spread constant
net = newrb(X,T,eg,sc);

X = -1:.01:1;
Y = net(X);
plot(X,T,'+');
xlabel('Input');
hold on;
plot(X,Y);
hold off;
legend({'Target','Output'})

کد نوشته شده براي تقريب تابع مي باشد که نتيجه زير را بهمراه دارد :

نتيجه رگرسيون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *