سلام
اصل ایده از اینجا میاد که گفتن اگه ما یه شبکه داشته باشیم مثلا 10 لایه و دقتش 80% باشه روی test set ، پس اگه چند تا لایه دیگه به شبکه اضافه کنیم، مثلا 5 تا لایه دیگه اضافه کنیم به جاهای مختلف شبکه، دقت نباید از این کمتر بشه، چرا؟ چون اگه یه الگوریتم خوب برای یادگیری داشته باشیم، و این لایه هایی که اضافه کردیم به کار نیاد، خوده فرایند بهینه سازی باید بفهمه که این لایه های باید نقشی نداشته باشن و تابع همانی بشن یعنی f(x) = x
اما مقاله رو هم ببینید گفتن که این اتفاقی نیست که می افته و نمودارهایی هم که گذاشتن خیلی جالبه و نکات قشنگی داره حتما توصیه می کنم مقاله رو دقیق بخونید
خلاصه دیدن که لایه اضافه میکنیم سخت برا شبکه بفهمه اگه نیاز نداره تابع همانی رو یاد بگیره و دقت افت می کنه. اومدن گفتن که ما این اتصالات رو بین چند تا لایه اضافه می کنیم تا اون لایه ها وسط فقط لازم باشه تفاضل بین ورودی و خروجی مد نظر رو یاد بگیرن یعنی اگه قرار بوده اون لایه های وسط، x رو بگیرن و H رو تحویل بدن، با اضافه کردن این اتصال، فقط لازمه که H(x) - x رو یاد بگیرن
خب حالا اگه شبکه بفهمه اون لایه های وسط به کار نمیان، به جای اینکه تابع همانی یاد بگیره، تابع صفر یعنی f(x) = 0 رو یاد میگیره که خیلی ساده تر از یاد گرفتن تابع همانیه، چون فقط کافیه همه وزن ها به سمت صفر میل کنن توی اون لایه ها(با فرض تابع اکتیوشن relu ). یعنی ورودی با اتصالات که اضافه کردیم بدون هیچ تغییری میره لایه بعد
ایده ایده کلی بوده که بر اساسش residual connection ها معرفی شدن، اما ایده جدیدی هم نبوده و مثل اینکه هینتون می گفت من این ایده رو همون حدودای سال 2006 2007 داشتم، حیف که بیشتر پیگیریش نکردم :)))
از طرف backprob هم بهش نگاه کنید، این residual connection ها باعث میشه که گرادیان از لایه های بالاتر خیلی بهتر به لایه های پایین تر انتقال پیدا کنه.
همین ایده پایه که توی ResNet مطرح شده، بعدا توی مقالاتی مثل stochastic depth یا DenseNet خیلی بیشتر هم استفاده شده و نتایج خوبی به دست اومده