در یادگیری ماشین به دنبال نگاشت ورودی ها مانند تصویرها به Target یا کلاس یا برچسبی مانند سگ یا گربه بودن هستیم. برای این نگاشت دو چیز نیاز است، یک مجموعه داده که با مشاهدات () انجام می شود و سپس ساخت یک مدل با مجموعه داده ها نمونه های در دسترسی و یک الگوریتم یادگیری تا بتوانیم، ورودی های تازه را به یکی از Target یا کلاس های در دسترس، نگاشت دهیم. در واقع به دنبال پیش بینی از روی ورودی های تازه هستیم.

یادگیری شبکه عصبی پرسپترون

یادگیری شبکه عصبی پرسپترون با مقدار دهی اولیه وزن ها انجام می شود. این مقداردهی اولیه وزن ها به صورت تصادفی از شماره هایی از یک توزیه نرمال (Normal Distribution) انجام می شود. همچنین می توانیم گرادیان کاهشی (Gradient Descent) برای بهبود یادگیری شبکه عصبی به کار ببریم. در واقع گرادیان کاهشی برای کمینه کردن تابع خطا (Error Function) است. در شکل زیر مدل ریاضی یک شبکه عصبی را می بینید که در آن 𝝈 تابع فعال سازی سیگوید برای انجام طبقه بندی دودویی بر پایه یک مقدار آستانه (Threshold) است.

یک شبکه عصبی مصنوعی که به خوبی آموزش دیده باشد، دارای وزن هایی است که سیگنال را تقویت و نوزها را کم می کند. ورودی های که در وزن های بزرگتر ضرب شوند، بر تفسیر شبکه از داده ها بیشتر تاثیر می گذارند تا ورودی هایی که در وزن های کوچکتر ضرب شده اند. این به مدل ما کمک می کند تا یاد بگیرد که پیش بینی کننده ها (یا ویژگی ها – Features) به کدام خروجی ها گره خورده اند و وزن ها و بایاس را مطابق با آن تنظیم می کند.

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

در بیشتر مجموعه داده ها، ویژگی های خاصی به طور مشخص با برچسب های خاص در ارتباط هستند. برای نمونه مساحت یا اندازه خانه برحسب متر مربع بر قیمت نهایی خانه تاثیر گذار است. شبکه های عصبی این رابطه ها را با انجام حدس هایی بر پایه ورودی ها و وزن هابه صورت کورکورانه می آموزند و سپس تخمین می زنند که تا چه اندازه برآیندها (نتیجه ها) دقیق هستند.

اما هنوز یک پرسش بزرگ مانده است: دقیقاً چگونه می توان فهمید که بردارهای پارامتر (Parameter Vectors) که همان وزن همه اتصال ها در شبکه عصبی هستند، چه باید باشند؟ به یاد داشته وزن ها پارامترهای شبکه عصبی هستند. این کار با فرآیندی انجام می شود که معمولاً به آن آموزش یاد یادگیری (Training) گفته می شود.

در حین آموزش ، تعداد زیادی نمونه آموزشی (Training Data) را به شبکه عصبی می دهیم و به طور تکراری وزنه ه را تغییر می دهیم یا بهتر است بگوییم بروز می کنیم تا خطاهایی را که در نمونه های آموزش ایجاد می کنیم به حداقل برسانیم. پس از نمونه های کافی ، انتظار داریم شبکه عصبی ما در حل کارهایی که برای انجام آن آموزش دیده اند کاملاً مؤثر باشد.

مفهوم Back-Propagation

Backpropagation یکی از روش های یادگیری در شبکه های عصبی است که برجسته ترین بخش از خطا در مدل شبکه عصبی است. در شبکه های عصبی MLP می خواهیم با به پیش (Forward) فرستادن ورودی ها، خروجی را بدست بیاوریم. اگر خروجی مطابق با یک برچسب یا کلاس یا Target درون مسئله بود، پس به پاسخ دلخواه رسیده ایم ولی اگر خروجی مطابق با برچسب نباشد، بنابراین وزن های چسبانده شده به پیوندهای (اتصال های) شبکه را باید دوباره تنظیم کنیم. 

در شبکه های عصبی در آغاز شماره های وزن ها تصادفی با توزیع نرمال (Normal Distributed) گزینش می شوند. وزن ها شمارهای پیوست شده به پیوندهای میان گره های میان لایه ها هستند که در ورودی ها ضرب می شوند. این ورودی ها می توانند داده های ورودی از لایه پیوندی باشند یا اینکه داده های درون لایه های میانی یا همان لایه های پنهان باشند. به هر روی، از لایه ورودی داده ها به سوی لایه خروجی پیش می روند.

سپس گرادیان محاسبه شده و پس از آن وزن ها بروز می شوند. بنابراین با بازگشت از پایان شبکه به آغاز شبکه (Back-propagation) برای بهبود کارایی شبکه و ساخت مدل درست، وزن ها بروز می شوند. شبکه MLP (یا پرسپترون چند لایه) را شبکه Feed-Forward نیز می گویند.

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

در شبکه های عصبی MLP یک مجموعه از وزن ها داریم و از این رو در هر لایه مقدار نورون ها در وزن ها ضرب می شود. یادگیری در شبکه عصبی MLP تکرار شدنی (Iterative) است که در برگیرنده دو گام یا فاز Forward Propagation یا رو به پیش (جلو) است و گام دیگر برای بروز کردن پارامترها (وزن ها و بایاس) گام Back Propagation است.

 گام Forward Propagation زمانی رخ می دهد که داده های ورودی به شبکه وارد شده و تا پایان شبکه پیش می روند تا در لایه خروجی برچسب پیش بینی شود. داده ها از لایه ورودی وارد شبکه شده و هر نورون مقداری را محاسبه کرده و به نورون های لایه دیگر (لایه پَسین) می فرستند تا اینکه در لایه خروجی برآیند شبکه که همان برچسب است، بدست بیاید.

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

پس از آنکه ارزش نادرستی (خطای) شبکه بدست آمد، این ارزش (یا مقدار) نادرستی، پَسگَرد (Backward) می شود و از این رو واژه را Back-Propagation برای آن به کار می بریم.  شکل زیر ساختار یک شبکه عصبی MLP با دو فاز رو به پیش (Forward) و پسگرد را نشان می دهد.