به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

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

1- ما انتظار داریم وقتی عمیق یک شبکه رو افزایش میدیم دقتش افزایش پیدا کنه....... واسه همین مقاله فوق میاد دو تا شبکه با معماری یکسان که یکیشون از اون یکی عمیق تره رو آموزش میده و تست میکنه..... ولی برخلاف انتظار خطای شبکه عمیق تر از خطای شبکه کم عمق بیشتره..... و لایه هایی که به شبکه اضافه شدن مثل تابع همانی عمل می کنند(یعنی همونی که به عنوان ورودی می گیرن رو میدن به خروجی)....(یعنی چیز جدیدی تولید نکردن)......حالا مقاله میاد ایده میده که این لایه ها به جای یاد گرفتن تابع همانی تابع 0=(x)f رو یاد بگیرن و از طریق یه میان بر ورودی رو میده به خروجی بلوک(که باز همون تابع همانی تولید میشه) و میگه شبکه این تابع رو بهتر یاد میگره
حالا سوال من اینه....... اگه این لایه ها مثل تابع همانی عمل میکنن(یعنی هرچی میاد به ورودی همون رو میدن به خروجی) دیگه چه لزومی داره توی معماری قرارشون بدیم....ولی از اون طرف تو نتایج می بینیم که مفید هستن(آیا فقط واسه این هست که گرادیان بهتر پارامترها رو بروز رسانی کنه)
سوال بعدم اینکه گفته شبکه راحت تر می تونه تابع F(x)+x و بهینه کنه تا تابع همانی رو..... این چجوره؟
من برداشتم اینه که چیزی که باعث افزایش دقت این شبکه ها شده افزایش عمقشون نیست بلکه نوع معماریه که ارایه دادن(و توی این معماری گرادیان راحت تر می تونه وزن ها رو بروزرسانی کنه)

ممنون میشم راهنمایی بفرمایید.... نکات تاریک موضوع واسم روشن بشه

توسط (107 امتیاز)
ویرایش شده توسط

1 پاسخ

+1 امتیاز

سلام
ما در این رابطه تو ورکشاپ چهارشنبه صحبت کردیم و احتمالا طی روزهای اینده من یکسری مطلب در این باره در سایت بزارم. علی الحساب بطور خلاصه سعی میکنم یکسری توضیحاتی بدم تا شاید بحث یکم روشن تر بشه. (اینجا بحثها مرتبط با چیزی که در مقاله مطرح شده عنوان میشه و گرنه بحث دقت کم و... عمق و... خیلی موارد دیگه رو هم در بر میگیره مثل pld و pls و ... و degradation فقط منحصر به این مساله نیست)
1.بحث اینجا بوده که ما یک معماری داریم با عمق x ترین میدیم به دقت خوبی میرسیم . منتها وقتی چندتا لایه دیگه بهش اضافه میکنیم میبینیم دقت ترینینگ بدتر میشه . چرا؟ میدونیم اگر یک معماری کم عمق داشته باشیم که به دقت خوبی میرسه ما میتونیم دقیقا یک نسخه عمیق تر از اون رو هم داشته باشیم که همون دقت رو ارائه بده یا بهتر بگیم خطای بیشتری از اون بدست نده. برای اون کار هم "ما" میتونیم وزنهای مربوط به معماری کم عمق رو منتقل کنیم به معماری جدید و لایه های جدید همه تابع همانی باشن.
. این فرضی هست که "ما" میکنیم و انتظار داریم سالور ما هم دقیقا همین عمل رو انجام بده. یعنی با اضافه شدن لایه یا لایه های جدید یک مجموعه لایه یک تابعی رو تقریب میزنن حالا یا این تابع جدید باعث بهتر شدن نتیجه و کارکرد شبکه میشه یا بدتر شدن اون. اگر بدتر بشه فرض ما اینه که سالور با دونستن فرضی که ما میدونیم شروع به ایجاد تابع همانی کنه. یعنی ببینه تا یک سطحی توابعی که داره دارن خوب عمل میکنن و از سطح دیگه توابع جدید در جهت بهبود عمل نمیکنن پس بهتره مقادیر قبلی مورد استفاده قرار بگیرن و لایه های جدید بنوعی نادیده گرفته بشن (تابع همانی).
این فرض یعنی همون تعداد لایه هایی که تا الان h(x) رو یاد میگرفتن الان باید بتونن h(x)-x رو یاد بگیرن . این یعنی چی ؟ یعنی یک مقدار بعدیمثل (h(x) رو (که خروجی چندتا لایه هست) تابعی در نظر بگیرید که چندتا لایه پشت سرهم تقریب میزنن) با مقدار ورودیش برابر باشه.
یعنی خروجی چند لایه برابر با ورودی اون باشه که این به خودی خود یعنی فراگرفتن h(x) = x .
این در عمل اتفاق نمی افته چون اگر قرار بر اتفاق افتادنش بود سالور همون اول تابع همانی رو ارائه میکرد. برای همین ما فرمول رو کمی تغییر میدیم تا بطور صریح این مساله رو لحاظ کنیم . ما تابعی که چند لایه پشت سر هم قراره تقریب بزنن رو اینطور لحاظ میکنیم h(x) = f(x)+x . این چه فرقی با فرمول قبلی داره ؟ ما یک جابجایی خیلی ساده انجام دادیم اما فرقش در اینه که اینجا برای اینکه h(x) =x باشه کافیه مقدار f(x) رو برابر صفر قرار بدیم . در عبارت اولیه برای بدست اوردن ایدنتی ضروری بود که h(x) کار پیچیده تری انجام بده و عینا x رو فرا بگیره (و در عمل هم شکست میخورد) . اپتمایزر ما صفر کردن وزنهای یکسری لایه براش خیلی راحت تره و اینکار خیلی سریعتر و بهتر صورت میگیره و به همین خاطر با وجود یک skip connection براحتی میشه این مساله رو پیاده کرد. (خود residual به معنای باقی مونده یا خطا هست در اصل قراره اینجا بنوعی حالت h(x)در زمان t+1 مساوی h(x) در زمان t باشه (بشه به این رسید و کار اپتمایزر هم اینجا کمینه کردن این خطا هست تا زمانی که به هدف مورد نظر برسیم)
در لایه های قبلتر که توابع قرار نیست identity باشن و توابع مفید تقریب زده میشه این skip connection ها حکم فراهم کردن information pool های بهتری رو ایفا میکنن و البته در بحث انتقال گرادیان هم خوب تاثیر مثبت دارن .

چرا حالا اینکارو میکنیم ؟ بحث اینجاست که ما نمیدونم عمق بهینه چنده برای همین یک معماری عمیق طراحی میکنیم و بعد اینو میزاریم به عهده شبکه که ببینه تا چه عمقی بهترین کارایی رو بدست میاره هرچندتا لایه هم که اضافه باشن به شکلی که صحبتش رفت مدیریت میشن. البته روشهای دیگه ای هم هست که میشه استفاده کرد بجای این شهودی که اینجا مطرح شده.

توسط (4.3k امتیاز)
خیلی ممنون از راهنمایتون...... یک دنیا تشکر...... مطلب واسم جا افتاد.....
گاهی واسه جواب بعضی سوالام اینقد این در و اون در میزنم و بجایی نمیرسم...... اگه جایی کسی بشون جوابی بده.... جوابشو اونقد ذره ذره و خرد خرد می خونم  که می ترسم زود تموم بشه..... اینم از اون حس ها بود....چو مستسقی که در بیابان به آب رسد
بازم تشکر بابت راهنمایی کاملتون
خواهش میکنم . هرجایی سوالی هست یا بخشی گنگ هست بپرسید. خوبی این بحثا اینه که عزیزانی که بعدا همین مشکل رو داشته باشن با سرچ میتونن ببینن و مشکلشون برطرف بشه.
من انشاءالله باز سعی میکنم طی چند روز اینده این بحث رو بصورت کاملتر در سایت مطرح کنم.
سلام
ممنون از وقتی که گذاشتید تا سوال رو جواب بدید.
...