شبکه‌ی رزنت (ResNet) یا به‌صورت کامل، Residual Network یکی از شبکه‌های عمیق معروف است. این شبکه را شِیوکینگ رن (Shaoqing Ren)، کِیمینگ هی (Kaiming He)،  ژان سان (Jian Sun) و زایانگیا ژوئنگ (Xiangyu Zhang) در سال ۲۱۰۵ معرفی کردند. مدل رزنت تاکنون یکی از محبوب‌ترین و موفق‌ترین مدل‌های یادگیری عمیق بوده است. این مدل برنده‌ی چالش ILSVRC در سال ۲۰۱۵ بود. دلیل موفقیت شبکه‌ی رزنت (ResNet) این است که به ما امکان آموزش شبکه‌های عصبی بسیار عمیق با بیش از ۱۵۰ لایه را داد. قبل از رزنت (ResNet) شبکه‌های عصبی بسیار عمیق، به‌دلیل مشکل محوشدگی گرادیان (Vanishing Gradient)، دچار مشکل می‌شدند.

شبکه‌ی رزنت (ResNet)

شبکه‌ی رزنت (ResNet) چیست و کاربردهای آن کجاست؟

طی چند سال اخیر، در حوزه‌ی بینایی ماشین (Computer Vision) پیشرفت‌های چشمگیری صورت گرفته است؛ به‌خصوص با معرفی شبکه‌های عصبی عمیق کانولوشن (CNN)، نتایج بسیار خوبی را در زمینه‌ی مسائلی مانند طبقه‌بندی تصاویر (Image Classification) و شناسایی تصاویر (Image Recognition) به دست آورده‌ایم.

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

در این مطلب با رزنت (ResNet) و معماری آن بیشتر آشنا خواهیم شد.

مزیت‌های شبکه‌ی رزنت چیست؟

شبکه‌ی رزنت (ResNet) یک شبکه‌ی عصبی عمیق است که در سال ۲۰۱۵ توانست رتبه‌ی اول را در رقابت ILSVRC کسب کند. قبل از معرفی این شبکه استفاده از شبکه‌های عصبی با لایه‌های زیاد دچار مشکل بود. با افزایش تعداد لایه‌ها شبکه دچار مشکل محوشدگی گرادیان (Vanishing Gradient)  می‌شد؛ شبکه‌ی رزنت توانست با ارائه‌ی راه‌حلی این مشکل را تا حد زیادی برطرف کند؛ به‌همین دلیل، این شبکه قادر است حتی تا ۱۵۲ لایه هم داشته باشد.

پیش از Residual Network

شبکه‌های یادگیری عمیق معمولی، مانند AlexNet، ZFNet و VGGNet، اغلب لایه‌های کانولوشنی و سپس لایه‌های کاملاً متصل (Fully Connected) برای طبقه‌بندی دارند، بدون هیچ‌گونه اتصال میان‌بر. ما در اینجا آن‌ها را شبکه‌های ساده (Plain Networks) می‌نامیم. وقتی شبکه‌ی ساده (Plain Networks) عمیق‌تر هستند (یعنی لایه‌ها افزایش می‌یابند)، مشکل محوشدگی گرادیان (Vanishing Gradient) یا انفجار گرادیان (Exploding Gradient) رخ می‌دهد؛ بنابراین عمیق‌ترکردن شبکه کار راحتی محسوب نمی‌شد که تنها با اضافه‌کردن لایه به شبکه آن را عمیق‌تر کنیم. اینجا بود که شبکه‌ی رزنت (ResNet) معرفی شد تا این مشکل را حل کند. این شبکه می‌تواند تا ۱۵۲ لایه داشته باشد.

اما رزنت (ResNet) چطور این مشکل را حل کرد؟

اتصالات میان‌بر، نقطه‌قوت رزنت

اتصالات میانبر (Skip Connections) یا اتصالات اضافی (Residual Connections) راه‌حلی بود که شبکه رزنت (ResNet) برای حل مشکل شبکه‌های عمیق ارائه کرد. در شکل ۱ یک بلاک اضافی (Residual Block) را مشاهده می‌کنیم. همان‌طور که در تصویر مشخص است، فرق این شبکه با شبکه‌های معمولی این است که یک اتصال میان‌بر دارد که از یک یا چند لایه عبور می‌کند و آن‌ها را در نظر نمی‌گیرد؛ درواقع به‌نوعی میان‌بر می‌زند و یک لایه را به لایه‌ي دورتر متصل می‌کند.

اتصال میان‌بر در یک بلاک Residual

برای آشنایی با شبکه‌ی عصبی الکس‌نت این مطلب را مطالعه کنید:

معماری الکس نت (AlexNet) را به‌صورت کامل بشناسید!

طرز کار شبکه رزنت با اتصالات میان‌بر

با توجه به اینکه اکنون یک اتصال اضافی داریم، بنابراین خروجی این بلاک دیگر مانند قبل نیست؛ درواقع قبل از اضافه‌شدن این اتصال مقدار ورودی x در وزن متناظرش ضرب می‌شد و با مقدار بایاس (Bias) جمع می‌شد و درنهایت یک تابع فعال‌ساز ReLU روی آن اعمال می‌شد.

H(x)=f(wx + b)

یا به‌عبارت دیگر:

H(x)=f(x)

اما اکنون که اتصال میان‌بر را نیز داریم، مقدار x اتصال میان‌بر هم به مقدار F(X) اضافه می‌شود.

H(x)=f(x)+x

اما اینجا یک مشکل وجود دارد؛ از آنجا که در طول شبکه‌ی خروجی لایه‌های مختلف کانولوشن ابعاد مختلفی را دارد، بنابراین ممکن است مقدار x که اتصال میان‌بر از لایه‌های قبلی به f(x) اضافه می‌کند ابعاد متفاوتی را رقم بزند. برای حل این مشکل دو راه‌حل وجود دارد:

ابعاد اتصال میان‌بر را با استفاده از فرایند لایه‌گذاری با صفر (Zero padding) افزایش می‌دهیم و از لایه‌های کانولوشن 1*1 برای کاهش ابعاد ورودی استفاده می‌کنیم؛ در این حالت مقدار خروجی به‌این صورت محاسبه می‌شود:

H(x)=f(x)+w1.x

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

معماری شبکه‌ی رزنت (ResNet)

رزنت از یک شبکه‌ی ۳۴ لایه‌ای ساده استفاده می‌کند که از معماری VGGNet الهام گرفته شده و به این شبکه‌ی اتصالات میان‌بر اضافه شده است. این شکل نمایی از معماری رزنت (ResNet) را نشان می‌دهد.

معماری رزنت

البته شبکه رزنت نسخه‌های ۵۰، ۱۰۱ و ۱۵۲ لایه نیز دارد. هر قدر شبکه عمیق‌تر می‌شود، پیچیدگی زمانی نیز افزایش می‌یابد. برای حل این مشکل راه‌حلی ارائه شد که در بخش بعد می‌بینیم.

طراحی گلوگاه (Bottleneck Design)

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

طراحی گلوگاه (Bottleneck)

راه‌حل به این شکل بود که به اول و آخر هر لایه کانولوشن یک لایه‌ی کانولوشن ۱×۱ اضافه شد. تکنیک کانولوشن ۱×۱ در شبکه‌ی گوگل‌نت (GoogleNet) استفاده شده است و نشان می‌دهد کانولوشن‌های ۱×۱ می‌توانند تعداد پارامترهای شبکه را کاهش دهند و درعین‌حال کارایی آن را کاهش ندهند. با طراحی این گلوگاه رزنت ۳۴ لایه به ۵۰، ۱۱۰ و ۱۵۲ نیز افزایش یافت.

نسخه‌های مختلف رزنت

برای آشنایی با شبکه‌ی عصبی گوگل‌نت این مطلب را مطالعه کنید:

گوگل نت (GoogleNet) چیست و از چه ساختاری تشکیل شده است؟

جمع‌بندی مطالب درباره‌ی شبکه‌ی رزنت (ResNet)

شبکه‌ی رزنت یک مدل بسیار قدرتمند است که به‌طور مکرر در کارهای مربوط به حوزه‌ی بینایی ماشین (Computer Vision) استفاده می‌شود. این شبکه با حل مشکل محوشدگی گرادیان (Vanishing Gradient) و انفجار گرادیان (Exploding Gradient) به استفاده از شبکه‌های عمیق کمک بزرگی کرد. در این مقاله ما این شبکه و معماری آن را بررسی کردیم و متوجه شدیم ایده‌ای که این شبکه را در مقایسه با شبکه‌های قبل از آن متمایز می‌کند چیست.

با کافه‌تدریس صفر تا صد علم داده را یاد بگیرید!

یادگیری علم داده به شما کمک می‌کند به دنیایی شگفت‌انگیز وارد شوید و بتوانید با یادگیری این مهارت فرصت‌های شغلی بی‌نظیری را هم برای خود فراهم کنید. اگر دوست دارید علم داده را یاد بگیرید و به دنیای دیتا ساینس وارد شوید، پیشنهاد ما شرکت در کلاس‌های آنلاین آموزش علم داده کافه‌تدریس است.

کلاس‌های آنلاین آموزش علم داده کافه‌تدریس به‌صورت کاملاً پویا و تعاملی و در قالب دوره‌های مقدماتی و پیشرفته برگزار می‌شود. شکل برگزاری این کلاس‌ها به‌صورت کارگاهی و مبتنی بر کار روی پروژه‌های واقعی علم داده است.

شرکت در این کلاس‌ها به شما کمک می‌کند هر جایی که هستید به بهترین و به‌روزترین آموزش علم داده دسترسی داشته باشید.

برای آشنایی با کلاس‌های آنلاین آموزش علم داده کافه تدریس و مشاوره‌ی رایگان برای ورود به دنیای دیتا ساینس روی این لینک کلیک کنید:

کلاس‌های آنلاین علم داده کافه‌تدریس

هفت‌خوان: مطالعه کن، نظر بده، جایزه بگیر!

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

جوایز هفت‌خوان

  • ۱,۵۰۰,۰۰۰ تومان جایزه نقدی
  • ۳ کلاس رایگان ۵۰۰,۰۰۰ تومانی

پرسش‌های مسابقه

برای شرکت در هفت‌خوان کافه‌تدریس در کامنت همین مطلب به این پرسش‌ها پاسخ دهید:

  • شبکه‌ی رزنت (ResNet) چه کاربرد‌هایی دارد و در کدام زمینه‌ها مورد استفاده قرار می‌گیرد؟
  • یکی از مزیت‌های اصلی شبکه‌ی رزنت نسبت به سایر شبکه‌های عصبی چیست؟
  • اتصالات میان‌بر در شبکه‌ی رزنت چگونه به بهبود عملکرد کمک می‌کنند و اصول اصلی کار آن‌ها چیست؟

هفت‌خوان‌پلاس

برای بالابردن شانس‌تان می‌توانید این مطلب را هم مطالعه کنید و به پرسش‌های آن پاسخ دهید:

۶ کاربرد پردازش زبان طبیعی در پزشکی