Hamipaper Logo

چهارشنبه, 23 تیر 1395 ساعت 15:44

کاربرد آنالیز اجزای اصلی(PCA) در آموزش شبکه های عصبی:

نوشته شده توسط
معمولا قبل از آغاز آموزش شبکه های عصبی یکسری پیش پردازش بر روی داده ها انجام می شود که  باعث افزایش کارایی شبکه های عصبی می شود مانند :نرمالایز کردن داده ها و قرار دادن آن ها در یک فاصله مشخص مثلا بین -1 و 1.
 
در بعضی وضعیت ها ابعاد بردار ورودی بسیار بزرگ است، اما اجزا بردارها،همبستگی بالایی دارند. مفید است که در این وضعیت ابعاد بردار ورودی را کاهش دهیم. یک رویه مناسب برای این عمل استفاده از آنالیز اجزای اصلی است.این عمل سه اثر دارد: متعامد سازی اجزا بردار ورودی (بنابراین آنها هیچ وابستگی با یکدیگر ندارند) ، این کار اجزا متعامد(اصلی) را مرتب می کند و موثر ترین آن ها در اولین اولویت قرار می گیرد ، و در نتیجه می توان اجزایی که تغییرات کوچکتری در مجموعه داده ها ایجاد می کنند ،حذف کرد.
 
در برنامه متلب(MATLAB) این کار را می توان به صورت زیر انجام داد:
 [pn,ps1]=mapstd(p)
 
[ptrans,ps2]=processpca(pn,0.02)
ابتدا بردار ورودی را با انحراف معیار یک و میانگین صفر نرمالایز می کنیم(این رویه استاندارد مطلب  است زمانی که از اجزا اصلی استفاده می کنیم ).دستور دوم آنالیز اجزا اصلی را انجام می دهد،دومین آرگومان ورودی، را 0.02 تنظیم کرد ه ایم، این یعنی که اجزا ورودی که تغییرات کمتر از دو درصد در مجموعه داده های ورودی ایجاد می کند را توسط این دستورحذف می شود.
 
حذف این عناصر اضافی سرعت آموزش شبکه های عصبی را افزایش می دهد و در صورتی که ابعاد مسئله خیلی بزرگ باشد کارایی شبکه را بهبود می بخشد، به خصوص زمانی که از الگوریتم های تکاملی مانند: الگوریتم های ژنتیک،بهینه سازی انبوه ذرات و... برای آموزش شبکه های عصبی استفاده می شود.
load final
[all_64_1,ps1]=mapstd(all_64);
[all_64_2,ps2] = processpca(all_64_1,0.02);
Input = all_64_1;
Input1 = all_64_2;
Target = targ;
Network1 = newff(Input1,Target);
[Network3,tr1,outtrain1,errortrain1]=train(Network1,Input1,Target);
mse4=tr1.perf(tr1.best_epoch+1)
 

 
 
clear all
clc
tic
load final
[all_64_1,ps1]=mapstd(all_64);
[all_64_2,ps2] = processpca(all_64_1,0.02);
Input = all_64_1;
Input1 = all_64_2;
Target = targ;
%%%%%%%%%%%%%%%%%%%%%%%%
Network = newff(Input,Target);
[Network2,tr,outtrain,errortrain]=train(Network,Input,Target);
mse1=tr.perf(tr.best_epoch+1)
%%%%%%%%%%%%%%%%%%%%%%%%
Network1 = newff(Input1,Target);
[Network3,tr1,outtrain1,errortrain1]=train(Network1,Input1,Target);
mse2=tr1.perf(tr.best_epoch+1)
 
خواندن 99 دفعه آخرین ویرایش در چهارشنبه, 23 تیر 1395 ساعت 16:25
ارتباط با ما

 

 آدرس:

  شعبه1:  تهران، خ 17 شهریور

  شعبه2:  قم (بزودی)

 تلفن:  09301201180
 ایمیل:  Hamipaper@outlook.com