جستجو برای:
  • فروشگاه
  • وبلاگ
  • آموزش‌های رایگان
    • آموزش پایتون رایگان
    • آموزش یادگیری ماشین رایگان
    • آموزش یادگیری عمیق رایگان
    • آموزش pytorch رایگان
    • آموزش گوگل کولب
    • آموزش رایگان matplotlib
    • آموزش متلب رایگان
    • دوره‌های خارجی
  • نقشه راه AI
  • کلاس خصوصی
  • همکاری با ما💚
  • حساب کاربری
  • اساتید
  • درباره ما
     
    • 0902-546-9248
    • howsam.mail@gmail.com
    آکادمی هوش مصنوعی هوسم
    • فروشگاه
    • وبلاگ
    • آموزش‌های رایگان
      • آموزش پایتون
      • آموزش یادگیری ماشین رایگان
      • آموزش یادگیری عمیق
      • آموزش pytorch
      • آموزش گوگل کولب
      • آموزش رایگان matplotlib
      • آموزش متلب
      • دوره‌های خارجی
    • نقشه راه AI
    • کلاس خصوصی
    • درباره ما
      • اساتید
      • پشتیبانی
      • هوسم در اینستا و تلگرام
        • اینستاگرام هوسم (howsam_org@)
        • تلگرام هوسم (howsam_org@)
        • تلگرام پایتورچ (pytorch_howsam@)
    • همکاری با ما💚
    0

    ورود و ثبت نام

    بلاگ

    آکادمی هوش مصنوعی هوسم وبلاگ یادگیری عمیق شبکه عصبی GRU

    شبکه عصبی GRU

    2022/09/11
    ارسال شده توسط سید سجاد اشرفی
    یادگیری عمیق
    4.19k بازدید

    در این آموزش می‌خواهم درباره شبکه عصبی GRU صحبت کنم. شبکه عصبی GRU یک شبکه بازگشتی است که از دو شبکه عصبی RNN و LSTM جدیدتر هست. نسبتا محبوب هم هست. برای آشنایی با ساختار این شبکه با آکادمی هوش مصنوعی هوسم همراه باشید…

    فهرست مطالب نمایش
    1. آشنایی با شبکه عصبی GRU
    2. ورودی و خروجی در شبکه عصبی GRU
    3. ساختار داخلی شبکه GRU
    3.1. گیت یا Gate در شبکه عصبی GRU
    3.2. گیت ریست در شبکه GRU
    3.3. گیت کاندیدا در GRU
    3.4. گیت آپدیت در GRU
    3.5. معماری شبکه GRU

    آشنایی با شبکه عصبی GRU

    شبکه GRU در سال 2014 توسط Kyunghyun Cho و همکارانش ارائه شد. لازم به ذکر هست که همکارانش آدم‌های بزرگی بودند. 😅 آقای Bengio یکی از بزرگان هوش مصنوعی، نامشان در این مقاله هست. حتما نام ایشان را در اینترنت سرچ کنید.

    سه مرد اثرگذار در شکل‌گیری هوش مصنوعی مدرن؛ راست: Yoshua Bengio، وسط: Geoffrey Hinton و چپ: Yann LeCun.
    سه مرد اثرگذار در شکل‌گیری هوش مصنوعی مدرن؛ راست: Yoshua Bengio، وسط: Geoffrey Hinton و چپ: Yann LeCun. لینک

    شبکه عصبی GRU شبکه‌ای از جنس خانواده شبکه بازگشتی هست که محبوبیت و کارآیی بالایی دارد. اگر آموزش شبکه عصبی LSTM را مطالعه کرده باشید، می‌دانید که LSTM یک شبکه بازگشتی مبتنی بر گیت هست. ساختار شبکه عصبی GRU هم مبتنی بر گیت هست. اتفاقا از اسم این شبکه هم مشخص است که یک شبکه گیتی هست: Gated Recurrent Network حتما الان میگید اون که یه نیسان گیت داشت، احتمالا این یه کامیون گیت داره! 😫 اتفاقا نه!

    شبکه عصبی GRU ساده شده شبکه LSTM

    بله، GRU ساده‌تر است و پارامترها و گیت‌های کمتری دارد. در شبکه عصبی LSTM سه گیتِ ورودی، خروجی و فراموشی وجود دارد. اما شبکه عصبی GRU از دو گیتِ ریست و آپدیت تشکیل شده است. پس از همین جا خاطرتان باشد:

    شبکه GRU شامل دو گیت ریست و آپدیت

    البته، تحقیقات مختلف و آماروارقام نشان می‌دهد که عملکرد شبکه LSTM نسبت به GRU بهتر هست. نمودار زیر از سایت paperswithcode نشان می‌دهد که میزان استفاده از LSTM نسبت به GRU در مقالات بیشتر است. اما این‌طور نباشد که به کل GRU را کنار بگذارید. شبکه GRU قدرتمند است و درعین حال پارامترهای کمتری نسبت به LSTM دارد. ممکن هست، در مساله‌ای GRU هم‌سطح LSTM کار کند؛ در این شرایط، استفاده از GRU بهتر است.

    مقایسه میزان استفاده از LSTM و GRU در مقالات علمی
    مقایسه میزان استفاده از LSTM و GRU در مقالات علمی لینک

    پیشنهاد این آموزش وابسته به دو شبکه عصبی بازگشتی و شبکه عصبی LSTM هست. پیشنهاد می‌کنم، پیش از مطالعه شبکه GRU این دو آموزش را مطالعه کنید. اگر زمان کمی دارید، حداقل شبکه RNN را بخوانید. 

    بسیارخب، مقدمات کافی است. کم کم گرم کنیم برای بخش‌های جدی‌تر شبکه GRU! 😬

    ورودی و خروجی در شبکه عصبی GRU

    ابتدا بیایید همچون گذشته نگاهی به ورودی و خروجی در GRU و مقایسه آن با LSTM و RNN بپردازیم. واضح است که این شبکه از لحاظ ورودی-خروجی به شبکه RNN شبیه هست.

    ورودی و خروجی شبکه GRU در مقایسه با دو شبکه RNN و LSTM
    ورودی و خروجی شبکه GRU در مقایسه با دو شبکه RNN و LSTM

    اگر با شبکه LSTM آشنا باشید، می‌دانید که ct یا Cell State نقش حافظه بلندمدت را دارد. پس در شبکه GRU خبری از Cell State نیست! حال این سوال‌ها پیش می‌آید:

    • اگر Cell State نداریم، یعنی حافظه بلندمدت هم نداریم؟!
    • یعنی فراموشی در دنباله طولانی بازهم اتفاق خواهد افتاد؟!
    • قابلیت ذخیره در Cell State یا حذف اطلاعاتی از آن، ایده کلیدی در LSTM بود. اینها را در GRU نداریم؟!

    عجیب است! حافظه بلندمدت واقعا خوب بود، نه؟ جواب سوالات بالا این است که ما بازهم حفظ اطلاعات برای طولانی‌مدت و حذف اطلاعات را در شبکه GRU داریم. اما همه این کارها با دو گیت آپدیت و ریست انجام می‌شود.

    درادامه، درباره ساختار داخلی شبکه GRU و گیت‌های آن توضیح خواهم داد.

    ساختار داخلی شبکه GRU

    در شکل زیر، ساختار داخلی شبکه GRU نشان داده شده است. بخشی از ساختار داخلی را پررنگ و بخشی را کم‌رنگ کرده‌ام. بخش پررنگ، قلب تپنده شبکه GRU است. همان‌طور که بالاتر گفتم، ساختار داخلی شبکه GRU از دو گیت Update و Reset تشکیل شده است.

    ساختار داخلی شبکه GRU که شامل دو بخش اصلی Reset Gate و Update Gate هست.
    ساختار داخلی شبکه GRU که شامل دو بخش اصلی Reset Gate و Update Gate هست.

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

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

    • ابتدا، مفهوم گیت را به شما توضیح می‌دهم.
    • سپس، گیت ریست را تشریح می‌کنم.
    • نهایتا، گیت آپدیت را زیر تیغ جراحی می‌برم!

    بزن بریم…

    گیت یا Gate در شبکه عصبی GRU

    اگر کلمه Gate را در بخش Image گوگل کنید، با یک عالمه تصویر دروازه مواجه می‌شوید! من یکی از آنها را که خیلی قشنگ بود، برای شما آوردم! واقعیت این هست که در شبکه عصبی GRU/LSTM هم، گیت معنای همین دروازه را دارد.

    دروازه مدنظر در شبکه GRU 😁
    دروازه مدنظر در شبکه GRU 😁 لینک

    بیایید مرور کنیم که یک دروازه چه خاصیتی دارد:

    • در حالت بسته، موجب مسدود شدن مسیر می‌شود.
    • در حالت باز، مسیر باز و هوار هست.
    • در حالت نیمه‌باز، بسته به میزان باز بودن، امکان رد شدن وجود دارد/ندارد!

    شبیه به شیر آب‌های قدیمی که یک پیچ داشتند و بین مینیموم و ماکزیموم می‌توانستیم مقدار آب را تنظیم کنیم. اما این گیت‌ها در شبکه عصبی GRU به چه شکلی هستند؟ شبیه به ساختار داخلی شبکه RNN هستند! به شکل زیر نگاه کنید؛ این شکل، معماری گیت را نشان می‌دهد که به‌صورت زیر کار می‌کند:

    • دو ورودی xt و ht-1 وارد لایه‌های فولی کانکتد (همان MLP) می‌شوند. تعداد نورون‌های این دو لایه باهم برابر است.
    • سپس، بردارهای خروجی باهم درایه به درایه جمع می‌شوند.
    • درنهایت، این بردار از تابع فعال‌ساز سیگموید عبور می‌کند تا همه درایه‌ها عددی بین 0 تا 1 داشته باشند.
    ساختار گیت در شبکه عصبی GRU
    ساختار گیت در شبکه عصبی GRU

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

    البته، باتوجه به اینکه این گیت از لحاظ نمایش بسیار بزرگ و جاگیر هست، در شبکه‌های بازگشتی معمولا گیت را به ‌شکل نمادین نشان می‌دهند. نمادی که معمولا برای گیت به‌کار برده می‌شود، به شکل زیر هست. مشاهده می‌کنید که دو ورودی xt و ht-1 وارد یک بلوک مستطیلی شده‌اند. این بلوک معادل با لایه‌های فولی کانکتد است. یعنی، ورودی xt به لایه متناظر خود (Wx) می‌رود و ht-1 هم به لایه متناظر خود (Wh) می‌رود. اما به‌صورت یک‌جا و با یک بلوک نشان داده شده است. سپس، خروجی‌های این دو لایه باهم جمع می‌شوند. نهایتا، وارد دایره آبی (تابع فعال‌ساز سیگموید) می‌شوند و خروجی نهایی ساخته می‌شود.

    شکل نمادین گیت (gate) در شبکه‌های بازگشتی گیتی مثل GRU و LSTM
    شکل نمادین گیت (gate) در شبکه‌های بازگشتی گیتی مثل GRU و LSTM

    خب، دو سوال مهم از شما بپرسم! جواب سوال‌های زیر را کامنت کنید:

    سوال 1 چرا تعداد نورون‌های دو لایه فولی کانکتد x و h باهم برابر است؟

    سوال 2 چرا از تابع فعال‌ساز سیگموید استفاده شده است؟

    قبل از اینکه وارد بحث گیت ریست و آپدیت شویم، یک جمله مهم باید بگویم:

    ساختار گیت ریست و آپدیت برمبنای همان ساختار گیت بالا هست.

    پس حالا ما دیگر نگران ساختار گیت ریست و آپدیت نیستیم؛ آن چیزی که باید یاد بگیریم این هست که وظیفه این گیت‌ها در شبکه GRU چیست.

    گیت ریست در شبکه GRU

    همان‌طور که گفته شد، یکی از ارکان شبکه GRU همین گیت ریست هست. گیت ریست مسئول تعیین این هست که:

    چه مقدار از اطلاعات گذشته باید فراموش یا ریست شود.

    خروجی گیت ریست را با rt نشان می‌دهیم و طبق رابطه آشنای زیر بدست می‌آید:

    گفتیم مسئول تعیین مقدار اطلاعات فراموش یا ریست شده است. این فراموشی یا ریست شدن اطلاعات گذشته چگونه رخ می‌دهد؟ فکر کنید و بعد ادامه متن را بخوانید! طبق شکل زیر، باید خروجی گیت ریست (rt) را در اطلاعات گذشته (ht-1) ضرب هادامارد کنیم. یعنی درایه به درایه در هم ضرب کنیم. این دو بردار هم‌سایز هستند و بنابراین نگرانی عدم‌هماهنگی در سایز را نداریم.

    فراموشی یا ریست در شبکه GRU با گیت ریست
    فراموشی یا ریست در شبکه GRU با گیت ریست

    پس حاصل‌ضرب rt و ht-1 میزان فراموشی یا ریست شدن اطلاعات گذشته را تعیین می‌کند. چگونه؟ دقت کنید که تمامی درایه‌های rt عددی بین 0 تا 1 هستند. اگر یک درایه از rt در درایه متناظر از ht-1 ضرب شود، آنگاه اطلاعات ht-1 ممکن هست حفظ یا ریست شود:

    • اگر یک درایه از rt عدد 1 باشد، درایه متناظر از ht-1 فراموش نمی‌شود.
    • اگر یک درایه از rt عدد 0 باشد، درایه متناظر از ht-1 فراموش می‌شود.
    • اگر یک درایه از rt عددی بین 0 تا 1 باشد (0.5)، کمی فراموشی خواهیم داشت!

    تا اینجا من مدام از دو گیت ریست و آپدیت صحبت کردم؛ اما واقعیت این هست که در شبکه GRU یک گیت دیگر هم داریم! گیتی که ht کاندیدا را می‌سازد. در ادامه، این گیت را معرفی می‌کنم.

    گیت کاندیدا در GRU

    در شکل زیر، گیت کاندیدا در GRU نشان داده شده است. ساختاری مشابه با گیت ریست، با این تفاوت که بجای تابع فعال‌ساز سیگموید از tanh استفاده شده است. این گیت دو ورودی دارد:

    • ورودی xt
    • حاصل‌ضرب ht-1 و rt

    طبق توضیحات بالا، فرمول گیت کاندیدا به‌صورت زیر است:

    گیت کاندیدا در GRU
    گیت کاندیدا در GRU

    خروجی این مرحله ht کاندیدا یا Candidate Hidden State هست. درواقع، نامزد پُست ht شده، ولی هنوز این پُست را تصاحب نکرده است. کِی این پست را تصاحب می‌کند؟ ht کاندیدا منتظر گیت آپدیت هست. گیت آپدیت باید بیاید و تعیین تکلیف کند! پس برویم سراغ گیت آپدیت…

    سوال چرا از تابع فعال‌ساز tanh استفاده شده است؟ (جواب را کامنت کنید)

    گیت آپدیت در GRU

    گیت آپدیت ساختار مشابهی با گیت ریست دارد؛ یعنی، دو ورودی xt و ht-1 دریافت و پس از عبور از لایه‌های فولی کانکتد، باهم جمع می‌شوند و نهایتا تابع فعال‌ساز سیگموید اعمال می‌شود تا خروجی zt بدست آید.

    وظیفه گیت آپدیت در GRU این هست که:

    چه مقدار از اطلاعات گذشته (ht-1) باید حفظ شود.

    و همچنین:

    چه مقدار از اطلاعات لحظه جاری (xt) باید در حافظه (ht-1) ذخیره شود.

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

    • زمانی که zt در ضرب ht-1 می‌شود، وظیفه اول (تعیین میزان حفظ اطلاعات گذشته) انجام می‌شود.
    • زمانی که معکوس zt در ht کاندیدا ضرب می‌شود، وظیفه دوم (تعیین میزان حفظ اطلاعات جاری) انجام می‌شود.
    • درنهایت، نتیجه این دو وظیفه باید باهم جمع شوند تا ht نهایی ساخته شود.

    گیت آپدیت و نحوه اتصال این گیت دو بخش مختلف در شبکه GRU
    گیت آپدیت و نحوه اتصال این گیت دو بخش مختلف در شبکه GRU

    خب، این هم از گیت آپدیت… حالا دیگر تمامی اجزای داخلی شبکه GRU را پوشش داده‌ایم. بد نیست، یک بار به‌صورت کامل شبکه GRU را ببینیم…

    معماری شبکه GRU

    در شکل زیر، معماری داخلی شبکه GRU نشان داده شده است. دو گیت آپدیت و ریست نقش مهمی را در این شبکه عصبی ایفا می‌کنند. در کنار این دو گیت، یک گیت دیگر بنام گیت کاندیدا هم داریم که ht کاندیدا را تولید می‌کند. از ترکیب این ht کاندیدا با zt و ht-1، نهایتا ht ساخته می‌شود.

    معماری شبکه عصبی GRU
    معماری شبکه عصبی GRU

    همچنین، تمامی روابط شبکه GRU که در این آموزش توضیح دادیم:

    تـــمــــام! شبکه GRU هم تمام شد و من خوشحالم. البته، مثل همیشه چند بار این متن را می‌خوانم و اصلاحش می‌کنم. چطور بود؟ لطفا نظرتان را برای ما کامنت کنید. ما تک تک کامنت‌ها را می‌خوانیم. ممنون 🌹🙏

    اشتراک گذاری:

    مطالب زیر را حتما مطالعه کنید

    یادگیری انتقالی
    یادگیری انتقالی یا Transfer Learning به معنای استفاده از یک مدل از پیش آموزش‌دیده در...
    شبکه VGG
    شبکه VGG یکی از معماری‌های موفق و معروف در حوزه یادگیری عمیق است که در...
    مهندسی پرامپت
    امروزه، با ظهور ChatGPT و سایر ابزارهای هوش مصنوعی، طیف گسترده‌ای از افراد، از کاربران...
    مدل nanoGPT
    در سال ۲۰۱۹، OpenAI مدل GPT-2 را معرفی کرد. OpenAI، برخلاف مدل‌های بعدی (GPT-3 و...
    شگفت‌انگیزترین ایده هوش مصنوعی از نظر Andrej Karpathy
    هوش مصنوعی به سرعت در حال پیشرفت هست. به‌گونه‌ای که باید زمان و انرژی زیادی...
    شبکه ویژن ترنسفورمر
    شبکه ویژن ترنسفورمر (Vision Transformer) یا ViT یک شبکه عصبی مبتنی بر مدل ترنسفورمر هست...

    10 دیدگاه

    به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

    • کریمی گفت:
      2025/02/04 در 1:52 ق.ظ

      اگر نیاز بە راهنمایی بیشتری داشتە باشم،میتوانم از شما کمک بگیرم؟

      پاسخ
      • هوسم گفت:
        2025/02/04 در 9:49 ق.ظ

        سلام
        می‌تونید از طریق ایمیل برای مشاوره ساعتی درخواست بدید.
        howsam.mail@gmail.com

        پاسخ
    • کریمی گفت:
      2025/02/04 در 1:50 ق.ظ

      بسیار عالی.سپاس بی پایان🌹🙏

      پاسخ
    • رضا گفت:
      2025/01/23 در 5:06 ب.ظ

      Perfect❤️

      پاسخ
      • هوسم گفت:
        2025/01/25 در 10:27 ق.ظ

        ممنون 🙏🌹😊

        پاسخ
    • حسن گفت:
      2024/10/09 در 1:44 ب.ظ

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

      پاسخ
      • هوسم گفت:
        2024/10/10 در 9:53 ق.ظ

        بله، اصلاح شد. البته، در توضیحات متن بالای فرمول و تصویر معماری زیر فرمول چند بار ذکر شده که تابع tanh هست.

        پاسخ
    • آلاء گفت:
      2022/09/12 در 11:21 ب.ظ

      و بالاخره GRU.
      یادمه یه روزایی خیلی منتظر این پست بودم . میدونستم مثل بقیه مقاله هاتون عالی در میاد. بخاطر پایان نامم به شدت به GRU نیاز داشتم. والبته با وکمک خودتون این نیاز براورده شد و GRu رو پیاده سازی کردم. با اینکه الان دفاع کردم ولی کماکان مشتاقم ادامه پست رو بخونم.😄 امیدوارم به زودی منتشر بشه

      پاسخ
      • کژال گفت:
        2022/12/04 در 6:26 ب.ظ

        سلام منم الان واقعا به توضیحات GRU نیاز دارم میشه کمکم کنید؟

        پاسخ
        • هوسم گفت:
          2022/12/05 در 10:54 ق.ظ

          سلام
          در دوره یادگیری عمیق 2022، درمورد GRU توضیح داده شده. لینک دوره:
          https://howsam.org/downloads/deep-learning-2022/

          پاسخ

    دیدگاهتان را بنویسید لغو پاسخ

    جستجو برای:
    فهرست مطالب دوره
    • معرفی دوره یادگیری عمیق رایگان
    • جلسه 00: یادگیری عمیق چیست
    • جلسه 01: ساختار نورون مصنوعی
    • جلسه 02: یادگیری نورون مصنوعی
    • جلسه 03: شبکه عصبی mlp
    • جلسه 04: دسته بندی با mlp و تنسورفلو
    • جلسه 05: رگرسیون با mlp و تنسورفلو
    • جلسه 06: شبکه عصبی کانولوشنی (CNN)
    • جلسه 07: شبکه عصبی بازگشتی (RNN)
    • جلسه 08: شبکه عصبی LSTM
    • جلسه 09: شبکه GRU
    • جلسه 10: شبکه ترنسفورمر
    • جلسه 11: شبکه ویژن ترنسفورمر
    • جلسه 12: شبکه عصبی GAN
    • جلسه 13: شبکه اتوانکدر
    دوره‌های جامع هوسم
    • پیاده‌سازی ChatGPT از صفر با پایتورچ
    • آموزش OpenCV: از پردازش تا بینایی
    • دیپ کاتالیست: دوره افزایش مهارت
    • پایتون برای هوش مصنوعی 🤖
    • یادگیری ماشین جامع: از مفاهیم تا پیاده‌سازی🔥
    • یادگیری عمیق جامع: از مفاهیم تا پیاده‌سازی
    • دوره متلب سوپراستارتر
    درباره هوسم

    آکادمی هوش مصنوعی هوسم با آموزش‌های تخصصی در حوزه هوش مصنوعی در خدمت شماست. روی کمک هوسم حساب کنید…

    • گیلان- شهرستان رودسر- شهرک انصاری- کوچه لاله 9
    • 09025469248
    • howsam.mail@gmail.com
    دسترسی سریع
    • صفحه اصلی
    • وبلاگ
    • حساب کاربری
    • سبد خرید
    شبکه‌های اجتماعی

     

    logo-samandehi
    تمامی حقوق برای آکادمی هوسم محفوظ است.
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!

      ورود

      رمز عبور را فراموش کرده اید؟

      هنوز عضو نشده اید؟ عضویت در سایت