شما اینجا هستید

پس انتشار خطا از تمام گره‌های خروجی

پیغام خطا

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls در book_prev() (خط 775 در /home/molavy/public_html/modules/book/book.module).

 
تصویر زیر یک شبکه عصبی ساده با دو گره ورودی را نشان میدهد. اما این بار دو گره خروجی داریم.
 
هر دو گره خروجی میتوانند خطا داشته باشند – در حقیقت وقتی این درست است که ما شبکه را آموزش نداده باشیم. همانطور که می بینید این دو خطا نشان میدهند که نیاز است که وزن های داخلی اتصال های شبکه‌ها را بهبود دهیم. میتوانیم به همان شیوه قبلی عمل کنیم. وقتی خطای خروجی را به ازای اتصال های مشارکت کننده تقسیم می کنیم. به هر اتصال به مقدار وزن اتصال و میزان مشارکت آن در به وجود آمدن خطا درصدی از مقدار خطا را به آن میدهیم. یعنی مقداری از خطا را به نحوی که متانسب با وزن آن باشد به اتصال ها اعمال می کنیم.
 
 
اینکه ما بیشتر از یک گره خروجی داشته باشیم هم چیزی را تغییر نمی دهد. تنها کافی است که برای خروجی گره دوم هم مثل اولی عمل کنیم. چرا اینقدر ساده است؟ دلیل آن این است که اتصال های مرتبط به یک گره خروجی هیچ وابستگی و ارتباط مشترکی با ارتباط های گره‌های خروجی دیگر ندارد. یعنی هیچ وابستگی بین ارتباط های مربوط به یک گره خروجی با یک گره خروجی دیگر نیست
 
دوباره به تصویر نگاه کنید. ما خطای گره خروجی اول را به نام e1 برچسب زدیم.  یادتان هست که ما تفاوت بین خروجی کنونی گره  و خروجی واقعی در داده‌های آموزش  را حساب می کردیم. 
خروجی داده شده در داده‌های آموزش = t1
خروجی کنونی از گره = o1
برای محاسبه خطا
e1=(t1-o1)
خطای گره دوم خروجی با برچسب e2 خورده است.
 
می‌توانید ببینید که خطای e1 بر روی اتصال های مرتبط مرتبط منتشر شده است. این اتصال ها با w11 و w21 هستند. به همین شکل برای e2 خطا بر روی  وزن های w21 و w22 تقسیم شده اند.
بیایید این تقسیم شدن‌ها را بنویسیم. خطای e1 برای بهبود هر دو وزن w11 و w21 استفاده می شود.  خوب این یک تقسیم است پس سهم w11 از مقدار e1 برابر است با:
 
به همین ترتیب سهم w21 از این تقسیم برابر است با:
 
 
خوب این تقسیم ها ممکن است کمی گیج‌کننده باشد. بیایید ببینیم این‌ها چه هستند. در پشت تمام این نماد ها یک ایده خیلی ساده است. خطای e1 باید به وزنی که بزرگ‌تر است بیشتر برسد تا وزنی که کوچک‌تر است. 
مثلاً اگر w11 دوبرابر w21 بزرگ باشد. برای نمونه w11=6 و w21=3 ، پس سهم e1 برای بروزرسانی w11 برابر می‌شود با (  علامت / به معنای تقسیم است)
6/(6+3)=6/9=2/3
پس 1/3 خطای e1 باید به وزن کوچکتر یعنی w21 برسد. میتوانیم این موضوع را با این معادله تأیید کنیم:
3/(6+3)=3/9=1/3
 
 
اگر وزن ها یکی بودند کسر ها به صورت نصف در می آمدند. همانطور که انتظار داریم. برای اینکه مطمئن شویم امتحان می‌کنیم
بیاید بگویم w11=4 و w21=4 است. حالا تقسیم برابر می‌شود با
4/(4+4)=4/8=1/2
 
 
 
قبل از اینکه جلو تر برویم. بیایید همینجا مکثی داشته باشیم. کمی از موضوع فاصله بگیریم و از آنجا به کارهایی که کردیم نگاهی بیندازیم.  ما میدانیم که باید از خطا به عنوان راهنمایی برای بهبود پارامتر های داخل یک شبکه استفاده کنیم. در اینجا منظورمان از پارامتر وزن های اتصال ها است. همین الان دیدیم که چطور این کار را برای وزن های اتصال های متصل به یک گره خروجی انجام دهیم. همچنین در صورتی که چندین گره خروجی داشته باشیم نیز پیچیدگی وجود ندارد. همین کار را برای تمام گره‌های خروجی انجام می دهیم. خیلی هم عالی
 
سؤال بعدی حالا این است که اگر بیشتر از دو لایه داشته باشیم چی؟ چطور وزن اتصال هایی لایه‌هایی را که مستقیماً به خروجی وصل نشده‌اند را بروز کنیم

 

دیدگاه‌ها

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

دیدگاه جدیدی بگذارید