شبکه عصبی LSTM
با یک پست دیگر از پستهای سریالی آموزش یادگیری عمیق رایگان هوسم در خدمت شما هستم. در این پست میخواهم توضیح دهم که شبکه عصبی LSTM چیست. شبکه عصبی LSTM یک شبکه بازگشتی است که اگرچه جدید نیست، اما از بهترین شبکههای بازگشتی محسوب میشود. با آکادمی هوش مصنوعی هوسم همراه باشید…
شبکه عصبی LSTM چیست
شبکه عصبی LSTM یک نوع معماری شبکه عصبی بازگشتی (RNN) است. این شبکه مشکل محو گرادیان موجود در شبکه RNN را حل میکند. شبکه LSTM یکی از پرکاربردترین معماریهای خانواده بازگشتی برای مدلسازی دادههای دنبالهای مانند متن، سری زمانی و صوت است.
ترجمه فارسی Long Short-Term Memory چه میشود؟ حافظه بلند و کوتاه مدت! یعنی ما با شبکهای سروکار داریم که هم حافظه کوتاه مدت و هم حافظه بلندمدت دارد. اما یک ویژگی مهم دیگر شبکه LSTM، فراموشی است. این شبکه، میتواند در هرلحظه تعیین کند که چه مقدار از اطلاعات گذشته فراموش یا حفظ شود.
پس بهصورت خلاصه، شبکه مهم LSTM شامل ویژگیهای مهم زیر است:
• حافظه کوتاهمدت دارد.
• حافظه بلندمدت دارد.
• قابلیت فراموشی اطلاعات گذشته را دارد.
این پاسخ کوتاهی به سوال “شبکه عصبی LSTM چیست” است. در ادامه به تشریح این شبکه خواهیم پرداخت.
آشنایی با شبکه عصبی LSTM
شبکه عصبی LSTM اولین بار توسط Hochreiter و Schmidhuber در سال 1997 معرفی شد. البته، در سالهای بعد این کار توسط بسیاری از افراد بهبود داده شد. شبکه LSTM یک شبکه نسبتا قدیمی است. اما در طیف وسیعی از مسائل استفاده میشود و هنوز از محبوبیت بالایی برخودار است. به این نمودار که از سایت paperswithcode برداشتم، نگاه کنید؛ میبینید که با گذشت زمان، میزان استفاده از LSTM بهشدت رشد داشته است.
میزان استفاده از شبکه LSTM در تسکهای مختلف
همچنین، بازهم از سایت paperswithcode، نمودار زیر را آوردم که به میزان استفاده LSTM در کاربردهای مختلف اشاره دارد. Other اشاره به تسکهای مختلف و کمتر شناختهشده دارد. Other را کنار بگذاریم، میبینیم که بیشترین میزان استفاده از LSTM در دادههای سری زمانی است.
ساختار کلی شبکه عصبی LSTM
شبکه عصبی LSTM هم مانند شبکه RNN به صورت زنجیرهای پشت سرهم قرار میگیرد. شکل زیر این ساختار زنجیرهای را نشان میدهد. درادامه این ساختار را بیشتر بررسی میکنیم.
یک داستان جالب از شبکه عصبی LSTM
شبکه LSTM در سال 1995 توسط آقای Schmidhuber و همکارش برای کنفرانس NIPS ارسال شد. اما مقاله ریجکت شد. مقاله جلوتر از زمان خودش بود! یک شبکه پیچیده که به راحتی نمیشود به عملکرد آن پی برد. در زیر، توئیتی از آقای Schmidhuber مشاهده میکنید که گفته 25 سال از ریجکت مقاله LSTM در کنفرانس NIPS میگذرد. نگران ریجکت شدن مقالات نباشید…
چند نکته ساده هم بگویم:
- کنفرانس NIPS همچنان یکی از معتبرترین کنفرانسهای هوش مصنوعی دنیاست. چند سال پیش نامش اندکی تغییر پیدا کرد و الان با NeuroIPS شناخته میشود. بخوانید نوریپس…
- داستان ردن شدن مقاله LSTM، برای بسیاری از افراد الهامبخش هست. چون به این فکر میکنند که ریجکت شدن مقاله پایان راه نیست و نباید ناامید شد. البته، بهنظرم بعضیها زیادهروی میکنند. بعد از اینکه نتیجه داوری مقالات در یک کنفرانس میآید، باید نگاهی به توئیتر بیندازید!
- طبق این صفحه، آقای Schmidhuber چندان میانه خوبی با LBH (Lecun Bengio Hinton) ندارد! او میگوید این افراد جامعه هوش مصنوعی را گمراه کردهاند! توضیحات کامل را خودتان بخوانید…
اهمیت شبکه عصبی LSTM
در جلسه قبل درباره شبکه عصبی بازگشتی RNN صحبت کردیم. لزوم وجود شبکه بازگشتی را توضیح دادیم و سپس شبکه RNN ساده را بررسی کردیم. آیا شبکه عصبی LSTM نقطه قوتی نسبت به شبکه RNN دارد یا اینکه صرفا یک نوع شبکه بازگشتی است؟ واقعیت این است که شبکه RNN ضعفهایی دارد و LSTM برای حل ضعف RNN پیشنهاد شده است. ضعفهای قابل توجهی که نمیتوان آنها را نادیده گرفت. بیایید یک مورد از این ضعفها را بررسی کنیم.
شبکه عصبی RNN و وابستگی بلندمدت
شبکه عصبی RNN مشکل وابستگی بلندمدت یا Long Term Dependency دارد. یعنی اینکه، نمیتواند در جملهها، پاراگرافها و تمامی دنبالههای طولانی از دادهها عملکرد خوبی از خود نشان دهد. بگذارید یک مثال برای شما بزنم. به این جمله دقت کنید:
من در ایران به دنیا آمدم، کم و بیش بلد هستم که … صحبت کنم.
در چنین جملهای اگر به ما بگویند جای خالی را پر کن، چه میکنیم؟ طبیعتا، نیازی نداریم که همه دادههای قبل از جای خالی را بررسی کنیم. به کلمه “ایران” و “صحبت” نگاه میکنیم و سپس میگوییم جای خالی کلمه “فارسی” است. برای پی بردن به کلمه جای خالی نیازی نبود که به کلمات همسایه قبل از جاخالی نگاه کنیم. کلماتی مثل: که، هستم، کم و بیش، آمدم و غیره. اتفاقا نگاه کردیم فایدهای هم نداشت! پس آنقدر عقب رفتیم تا به مقصود رسیدیم. این مساله چندان عجیب نیست که در یک جمله، فاصله زیادی بین کلمات مرتبط وجود داشته باشد.
متاسفانه، شبکه RNN ساده نمیتواند چنین ارتباط فاصلهداری را یاد بگیرد. این یک نقطه ضعف بزرگ است. اگرچه به ساختار شبکه RNN که نگاه میکنیم، به نظر میرسد که میتواند حتی اطلاعات اولین کلمات را هم به آخرین کلمات انتقال دهد. اما در عمل چنین اتفاقی نمیافتد و شبکه RNN ضعف وابستگی بلندمدت دارد.
آیا درست است بگوییم که شبکه RNN حافظه بلندمدتش خوب کار نمیکند؟ بله، ایکاش شبکه RNN یک سبد حافظه داشت. همینطور که کلمه به کلمه در متن جلو میرویم، بعضی از کلمات خیلی مهم و کلیدی را در آن سبد بگذاریم. بعدا، هرجایی که خواستیم از آنها استفاده میکنیم. مثلا، شبیه شکل زیر، ایران و دنیا را درون سبد حافظه بلندمدت میگذاشتیم تا در قسمت ? استفاده کنیم.
شبکه LSTM آن سبد بالا را دارد. یعنی میتواند یکسری از اطلاعات مهم در هرلحظه در را حافظه بلندمدتش بریزد. برویم بیشتر با LSTM آشنا شویم…
شبکه عصبی LSTM و وابستگی بلندمدت
شبکه LSTM مخفف عبارت Long Short Term Memory است. احتمالا حالا برای شما معنی Long Term Memory مشخص شده است. یعنی حافظه بلندمدت دارد و دقیقا نقطه مقابل شبکه RNN است که از این مشکل رنج میبرد.
شبکه LSTM قادر به یادگیری وابستگی بلندمدت هست.
اما چگونه وابستگی بلندمدت را یاد میگیرد؟ باید وارد معماری و جزئیات شبکه عصبی LSTM شویم تا بتوانیم به جواب این سوال برسیم. پس دیگر مقدمات کافی است، برویم سراغ بحث اصلی یعنی، معماری شبکه عصبی LSTM…
معماری شبکه LSTM
شبکه عصبی RNN را به یاد دارید؟ این شبکه یک ورودی و خروجی داشت (شکل زیر سمت چپ). درواقع یک مسیر بین ورودی و خروجی شبکه RNN شکل میگیرد. اما شبکه LSTM متفاوت است. این شبکه دو ورودی و خروجی دارد (شکل زیر سمت راست).
بین این ورودی و خروجیها، یکی از ورودیها مستقیم به خروجی متصل شده است! به شکل زیر نگاه کنید؛ ورودی Ct-1 مستقیما به خروجی Ct متصل شده است. این اتصال همینطور ساده از اول تا آخر دنباله ادامه دارد. C مخفف Cell State هست و یک مولفه کلیدی در LSTM است. به Cell State، حافظه بلندمدت یا Long Term Memory هم گفته میشود. بله، عملکردی شبیه همان سبد شکل 5 دارد.
این خط ورودی-خروجی از ازل تا ابد، همه بلوکهای LSTM در استپهای زمانی مختلف را بههم متصل میکند. در گذر زمان، در این حافظه بلندمدت ما (C) اطلاعاتی ذخیره یا از آن حذف میشود. این حافظه بلندمدت دو خاصیت مهم و جالب دارد:
- میتوانیم اطلاعات در آن را پاک کنیم. یعنی، همان فراموش کردن.
- میتوانیم به آن اطلاعاتی اضافه کنیم. یعنی، همان بهخاطر سپردن.
آن علامتهای x و + را روی خط Ct-1Ct میبینید؟ آنها به ترتیب مربوط به فراموش کردن و بهخاطرسپردن هستند. درادامه، میخواهم در دو بخش جداگانه به شما بگویم که چگونه این فراموشی/بهخاطرسپردن اتفاق میافتد.
فراموشی در شبکه LSTM
به علامت × روی خط حافظه بلندمدت در شکل زیر نگاه کنید. این عملگر دو ورودی دارد که یکی همان Ct-1 است. دومی هم یک ورودی است که نمیدانیم از کجا آمده است. ولی طبق شکل زیر ورودی قبل از اعمال از یک تابع سیگموید میگذرد. این تابع سیگموید باعث میشود که خروجی عددی بین 0 تا 1 شود.
توجه توجه داشته باشید که هر دو ورودی از جنس بردار با طول یکسان هستند که بهصورت درایه به درایه درهم ضرب میشوند و به عنوان خروجی یک بردار ایجاد میکنند.
حالا به نظر شما خروجی عملگر x چه خاصیتی دارد؟ قبول دارید خروجی همان Ct-1 است با اندک تغییراتی که ورودی ft روی آن ایجاد میکند؟ این تغییرات ممکن است به شکل زیر باشد:
- هر درایهای از ft اگر 0 باشد، یعنی به درایه متناظرش در Ct-1 اجازه نمیدهد به خروجی برود. یعنی میگوید بریز دور!
- هر درایهای از ft اگر 1 باشد، یعنی تمام ورودی Ct-1 به خروجی میرود و دستنخورده باقی میماند.
- اگر هم عددی بین 0 تا 1 باشد، طبیعتا تا حدی روی ورودی تاثیر میگذارد. پس اینگونه میتوانیم اطلاعاتی را از داخل Ct-1 حذف کنیم!
اما ورودی ft چگونه تشکیل میشود؟ مطابق شکل زیر، این ورودی را یک شبکه عصبی کوچک با دو ورودی xt و ht-1 تشکیل میدهد. این شبکه عصبی کوچک، وظیفه فراموشی بخشی از اطلاعات موجود در حافظه بلندمدت را دارد. به این شبکه عصبی گیت فراموشی (forget gate) گفته میشود.
احتمالا با کلمه فراموشی مشکلی ندارید، چون وظیفهاش همین است. اما چرا گفته شده گیت؟ منظور از گیت، یک دریچه یا پیچ قابل تنظیم هست که به ما امکان کنترل میدهد. به شکل زیر نگاه کنید؛ این شکل، یک ورودی و خروجی دارد. اما یک پیچ یا تنظیمکننده هم وجود دارد که میزان جریان ورودی به خروجی را میتواند کنترل کند (کم/زیاد کند). منظور ما از گیت فراموشی هم همین است؛ گیتی که به شبکه LSTM این قابلیت را میدهد که بعضی از مولفههای موجود در Ct-1 فراموش شوند.
گیت فراموشی یکی از ارکان مهم شبکه LSTM هست. بیایید دقیقتر آنرا بررسی کنیم.
گیت فراموشی در شبکه LSTM
ساختار گیت فراموشی به ساختار داخلی شبکه عصبی بازگشتی خیلی شبیه هست. آنهایی که پست آموزش شبکه عصبی بازگشتی را خواندهاند، درادامه این تشابه را خواهند دید. این شبکه دو ورودی xt و ht-1 دارد. این دو ورودی با هم ترکیب میشوند و سپس از یک لایه سیگموید میگذرند. لایه سیگموید عددی بین 0 تا 1 ایجاد میکند که در بردار ورودی Ct-1 ضرب درایه به درایه میشود. تکرار میکنم، ft یک بردار است نه یک عدد اسکالر تنها. این بردار به اندازه Ct-1 است. تعیین میکند که هر درایه Ct-1 باید در چه عددی از 0 تا 1 ضرب شود. هر درایه از ft اگر به عدد 1 نزدیک باشد، معنایش اینست که این درایه از Ct-1 باید حفظ شود. اگر به 0 نزدیک باشد، یعنی این درایه از Ct-1 را دور بریز.
اما دو بردار ورودی xt و ht-1 چگونه باهم ترکیب میشوند؟ بسیار ساده و با بهره گیری از شبکه عصبی mlp. همانطور که در شبکه بازگشتی گفتم، کافی است این دو بردار را به دو لایه فولیکانکتد بدهیم. سپس این دو را باهم جمع کنیم. فرمول و شکل گیت فراموشی به صورت زیر هست:
در شکل بالا، دو لایه فولیکانکتد با وزنهای whf و wif داریم. این دولایه بهترتیب برای ورودی ht-1 و xt هستند. اندیس hf مخفف عبارت hidden و forget هست. اندیس if مخفف عبارت input و forget هست. چرا درباره اندیسها توضیح میدهم؟ جلوتر این اندیسها زیاد میشوند. این را یادتان باشد که دومین اندیس به نام گیت اشاره میکند.
بسیارخب؛ بیایید بخش مربوط به فراموشی را در شبکه LSTM روشن کنیم:
در شکل بالا، دو ورودی ft و Ct-1 بهصورت زیر باهم ترکیب شدهاند. علامت بین دو متغیر در شکل زیر، اشاره به ضرب درایه به درایه دو بردار ورودی دارد.
گیت فراموشی در کارش بسیار سختگیر است و به درایههای Ct-1 بهراحتی اجازه عبور نمیدهد. گیت فراموشی، یک نگهبان امنیتی ویژه است!
درمورد گیت فراموشی و وظیفه آن در حفظ یا پاک کردن اطلاعات موجود در Ct-1 صحبت کردیم. احتمالا انتظار دارید که درمورد نحوه ذخیره اطلاعات در Ct-1 (همان به خاطر سپردن) صحبت کنیم.
به خاطر سپردن در شبکه عصبی LSTM
بعد از گذر از عملگر x، به عملگر + روی مسیر Ct-1Ct میرسیم (شکل 7). اینجا قرار است با ورودی C چیزی جمع شود. یعنی اطلاعات جدیدی به آن اضافه خواهد شد. همان به خاطر سپردن اتفاق میافتد. دو ورودی داریم که یکی Ct است. ورودی دوم را فعلا نمیدانیم چیست. اما هرچه هست، برداری هماندازه ورودی C است. ببینید، در استپ زمانی جاری (t) پردازشهایی انجام دادهایم و حالا میخواهیم اینها را به سلول حافظه بسپاریم که برای ما نگه دارد.
میخواهیم چه اطلاعاتی از حال حاضر (t) را در حافظه بلندمدت ذخیره کنیم؟ به شکل زیر نگاه کنید؛ این اطلاعات با استفاده از یک شبکه عصبی محاسبه میشود. این شبکه عصبی همانند گیت ورودی شامل دو ورودی xt و ht-1 است. بازهم این ورودیها باید از دو لایه فولیکانکتد (wig و whg) عبور کنند و بعد باهم جمع شوند. حالا این ورودی از یک تابع تانژانت هایپربولیک باید عبور داده شود. خروجی gt بین 1- تا 1 خواهد بود. چرا بین 1- تا 1 نیاز داریم؟ ساده هست، برای اینکه ممکن است بخواهیم اثر تعدادی از درایهها یا مولفههای موجود در C را کاهش دهیم. یعنی با مقادیر بین 1- تا 1 میتوانیم اثر بعضی مولفهها را زیاد یا کم کنیم. این هم فرمول تشکیل خروجی:
اما یک مشکل وجود دارد؛ ما در خروجی gt یک مقداری اطلاعات داریم. اما شاید این ورودی آنقدر ارزش نداشته باشد که بخواهیم Ct-1 را آپدیت کنیم. بله، میدانیم که این ورودی هم شامل اطلاعاتی است، اما شاید آنقدر ارزش نداشته باشد که بخواهیم به حافظه بلندمدت بسپاریم! فرض کنید الان در لحظه t در موقعیت کلمه “را” در جمله زیر هستیم:
دو تیم رئال مادرید و بارسلونا برای جلوگیری از همهگیری کرونا، درخواست تعویق بازی را دارند.
این کلمه هم برای خودش اطلاعاتی دارد و یک خروجی برای gt تولید کرده است. اما واقعا به خاطر سپردن این کلمه چقدر برای کلمات بعدی مفید است؟ بسیار کم! پس بهتر است همین جا در لحظه قیدش را بزنیم و به حافظه بلندمدت انتقال ندهیم. ما انسانها هم در لحظه گاهی اتفاقی برایمان میافتد که تلاش زیادی میکنیم که آنرا فراموش کنیم. ارزشش را ندارد بایتهای ذهنمان را اشغال کنیم!
بسیار خب، چطور میتوانیم این خروجی را بررسی کنیم که ارزش دارد یا نه؟ کافی است نگاهی به گیت فراموشی بیندازیم. اگر از یک گیتی مشابه با ساختار گیت فراموشی استفاده کنیم و آنرا بر سر راه خروجی gt قرار دهیم، میتوانیم به راحتی تنظیم کنیم که این خروجی چقدر ارزش دارد. پس بازهم یک گیت یا دریچه مشابه شکل 11 نیاز داریم. به این گیت جدید، گیت ورودی (input gate) گفته میشود. برویم با گیت ورودی بیشتر آشنا شویم.
گیت ورودی در شبکه عصبی LSTM
گیت ورودی، ارزیاب میزان ارزش اطلاعات موجود در gt است. ساده بگویم، گیت ورودی، ورود یکسری اطلاعات جدید به حافظه بلندمدت را بررسی میکند. بههمین خاطر نامش را گیت ورودی گذاشتهاند. مشابه گیت فراموشی، ممکن است مقادیر موجود در بردار it نزدیک به صفر باشد، بنابراین اثر gt را کم میکند.
برعکس، ممکن است مقادیر بردار it نزدیک به 1 باشد، دراینصورت gt میرود تا در حافظه بلندمدت ذخیره شود. اما ساختار این گیت به شکلی است؟ دقیقا مشابه با گیت فراموشی… به شکل زیر دقت کنید؛ گیت ورودی، دو ورودی xt و ht-1 را وارد دو لایه فولیکانکتد میکند و سپس اینها را باهم جمع میکند و درنهایت از تابع سیگموید عبور میدهد. این هم رابطه گیت ورودی، رابطه نحوه تشکیل خروجی نهایی (g’t) و البته آپدیت Ct:
یک فرآیند موثر بهنام گیت با ساختاری کاملا شبیه به RNN بارها در LSTM تکرار شده است.
این هم از بخش ذخیره اطلاعات که با استفاده از گیت ورودی انجام شد. تا الان به این پرداختیم که چگونه اطلاعاتی از گذشته را فراموش کنیم و چگونه اطلاعاتی در Ct-1 ذخیره کنیم. اما هنوز کار داریم! هنوز هیچ مسیری بین ht-1 و ht نساختهایم. بالاخره چه اطلاعاتی را به عنوان خروجی این استپ زمانی خواهیم داشت؟ برویم سراغ ادامه کار… خسته شدید؟ طاقت بیار رفیق ما داریم میرسیم!
ساخت خروجی ht در شبکه LSTM
شبکه بازگشتی LSTM برای ساختن خروجی ht به چه چیزی نیاز دارد؟ چطور است که همان Ct که تازه آپدیت شده را به خروجی متصل کنیم؟ چه چیزی بهتر از حافظه بلندمدت با اینهمه زحمتی که برایش کشیدیم! پس خروجی Ct را از یک تانژانت هایپربولیک عبور میدهیم، سپس آماده میشویم که آنرا به خروجی ht متصل کنیم. در شکل زیر نشان داده شده است.
اما یک سوال! تصور کنید، از فردی میپرسید تا حالا دو تیم استقلال و پرسپولیس چندبار باهم بازی کردند؟ بعد مخاطب بگوید: “سلام، دو تیم استقلال و پرسپولیس اولین بار در سال فلان باهم بازی کردند که حاصل آن مساوی بود. در بازی دوم، … در بازی سوم و …” همینطور بگوید و بگوید تا اینکه برسد به آخرین بازی و درنهایت بگوید بنابراین، تابحال 80 بار باهم بازی کردهاند. درحالیکه، جواب این سوال یک کلمه بود، آنهم 80! حالا اگر ما اینهمه اطلاعات موجود در Ct را به ht منتقل کنیم، دقیقا مشابه با همان جواب طولانی است. بهتر است آنقدری که نیاز است را برداریم و به خروجی ht منتقل کنیم. این کار چگونه انجام میشود؟ ساده هست، حدس بزنید! یک گیت دیگر بهنام گیت خروجی (output gate). بازهم گیت؟؟
گیت خروجی در شبکه LSTM
گیت خروجی تعیین میکند چقدر از حافظه بلندمدت باید به خروجی منتقل شود. در دل گیت خروجی چه میگذرد؟ ساده هست و تکراری، همه باهم یکصدا:
گیت خروجی، دو ورودی xt و ht-1 را وارد دو لایه فولیکانکتد میکند(1)
و اینها را باهم جمع میکند(2)
و درنهایت از تابع سیگموید عبور میدهد(3).
درنهایت، خروجی تولیدشده از گیت خروجی ot باید در خروجی تابع سیگموید ضرب میشود تا آنقدری که نیاز است به خروجی ht منتقل شود. این هم از فرمولها و شکلهای این بخش:
اما، این پایان کار نیست، دو گیت دیگر هم داریم! نه شوخی کردم 😃 معماری شبکه LSTM تمام شد. در شکل زیر، یک نسخه کامل از شبکه عصبی LSTM همراه با تمامی فرمولها را گذاشتم:
بسیارخب، بیایید مروری کنیم که چه المانهایی دیدیم.
شبکه LSTM در یک نگاه
دیدید که شبکه LSTM با این ظاهر پیچیده، شامل چند ایده جذاب و ساده هست. بیایید مباحث این جلسه را مرور کنیم:
- حافظه بلندمدت داریم و هم اطلاعاتی را فراموش میکنیم و هم به خاطر میسپاریم.
- گیتهایی داریم که شبیه شیر قابل تنظیم، جریان ورودی به خروجی را کنترل میکنند.
- سه گیت با نامهای گیت فراموشی، گیت ورودی و گیت خروجی داشتیم.
- گیت فراموشی برای این بود که اطلاعات غیرضروری گذشته را فراموش کنیم.
- گیت ورودی برای این بود که بررسی کنیم اطلاعات بهدست آمده از لحظه جاری (t) ارزش ذخیره در حافظه بلندمدت را دارند یا خیر.
- گیت خروجی برای این بود که همه اطلاعات موجود در Ct را به خروجی ht منتقل نکنیم. آنقدری را که نیاز داریم به خروجی ht ببریم.
- گیتها همواره خروجیشان بین 0 و 1 هست.
- گیتها همیشه در یک ورودی دیگر درایه به درایه ضرب میشوند.
- هر گیت دو ورودی دارد: xt و ht-1. دو ورودی در دو لایه فولیکانکتد ضرب میشوند و بعد باهم جمع میشوند و درنهایت از تابع سیگموید عبور میکنند.
- با استفاده از تانژانت هایپربولیک، اطلاعات همواره بین بازه 1- و 1 قرار دارند.
- شبکه LSTM، چهار برابر شبکه RNN پارامتر و هزینه محاسبات دارد. سه تا گیت دارد و یک شبکه هم برای محاسبه ورودی حافظه (C’t) دارد.
- شبکه LSTM یک شبکه بازگشتی مبتنی بر گیت هست.
- نسخههای مختلفی از شبکه LSTM در بازار وجود دارد! 😃 حواستان باشد که با شکلها و فرمولهای مختلف گمراه نشوید. همه آنها شامل ایده گیتهای (فراموشی، ورودی و خروجی) میشوند.
- یک شکل معروف برای شبکه LSTM وجود دارد که در زیر نشان دادم. این شکل خلاصه نشان داده شده و هیچیک از لایههای فولیکانکتد را نشان نداده. همان شکل خودمان هست، فقط خلاصهاش کردند.
تمام شد! با یک عالمه حرف ناگفته، شبکه عصبی LSTM هم تمام شد. برای شروع همین اندازه کافی است. بعدا برمیگردم و شبکه LSTM را از ابعاد مختلف مورد بررسی قرار میدهم. فعلا میخواهم شبکه عصبی GRU را شروع کنم. این کار بهصورت تیمی انجام شده و امیدواریم که رضایت شما عزیزان را جلب کند. نظرهایتان را میخوانیم و برایمان مهم هست. لطفا هوسم را در Cell State مغزتان قراردهید! یا علی…
مطالب زیر را حتما مطالعه کنید
شبکه عصبی mlp
شبکه ترنسفورمر
مدل MobileLLM
یادگیری عمیق چیست
آموزش یادگیری عمیق رایگان
شبکه عصبی کانولوشن
149 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
با سلام
خیلی خوب توضیح دادید اما کاش منبعی که استفاده کردین را هم می گفتین برای اینکه کار شما حرفه ای باشد بهتر است که این منبع ذکر شود من آدرس منبع را برایتان می گذارم
###
سلام
ممنون از شما بابت فیدبک و خوشحالیم که آموزش شبکه LSTM برای شما مفید بوده.
فقط لازم هست روشن کنیم که محتوا و تمامی تصاویر این آموزش توسط تیم هوسم تولید شده. متاسفانه در لینک مدنظر شما، بدون اجازه و ذکر منبع از محتوای ما استفاده شده. کافی هست تاریخ انتشار دو آموزش رو مقایسه کنید.
پینوشت: طبق قوانین سایت، قرار دادن لینک در کامنتها مجاز نیست، به همین دلیل لینک مذکور حذف شده. اگر کنجکاو هستید که مطلب مورد اشاره رو بررسی کنید، میتونید در سایت medium آیدی نویسنده رو جستجو و آموزش LSTM ایشون رو مشاهده کنید.
آیدی نویسنده در مدیوم: amiralizadeh1992
خیلی خیلی ممنونم که اینقدر ساده و قابل فهم توضیح میدید. هر مبحثی یادگیریش سخت باشه برام میام تو سایت شما ببینم مطلبی منتشر شده در موردش یا نه. خیلی ممنونم.
سلام نعیمه عزیز 🌹
خیلی ممنون بابت کامنت. باعث افتخاره 🙏
سلام و وقتبخیر
خیلی خیلی شیوا، روان و قابل درک و فهم توضیح داده بودین. عالی بود به نظرم و برای شروع بسیار مفید میتونه باشه برای هرکس که اطلاعات کمی داره و نیاز داره کاملا شهودی و روان یاد بگیره.
عالی و خداقوت.
سلام علی عزیز 🌹
خوشحالیم که چنین نظری دارید 🙏
عالی
سپاس 🌹
با سلام و عرض ادب
بالاتر و بخهینه تر از روش LSTM کدام روش می تواند باشد جهت پیش بینی تولید منابع تجدید پذیر
.
با سلام و عرض ادب
بسیار سپاسگزارم بابت مطالب علمی خوبتون من برای رساله دکتری جهت پیش بینی عدم قطعیت ها دنبال دقیق ترین روش پیش بینی هستم به نظر شما روش L S T M مناسب این کار است اگر نیست برای پیش بینی دقیق عدم قطعیت ها و تولید تجدید پذیرها بالاتر از این روش چه گزینه ای می تواند باشد .
فقط میتونم بگم “با همین فرمون برید!”
سلام حسین عزیز 🌹
سپاس 😊
سلام. سپاس بیکران.
🙏🌺
سلام
ممنون از شما که بی شک بهترین هستید و همیشه کاملترین توضیحات رو در هر مبحثی بابیانی شیوا و روان قرار میدید.
بینظیرید
سلام،
ممنون از لطفتون 😊🌹
سلام توضیحات عالی بود ،lstm با run,مقایسه شد میشه ترکیب رو باyoloتوضیح بدید و آیا کاربردی است سپاس
سلام
ترکیب شبکه LSTM و شبکه YOLO مرسوم نیست و شاید کاربردی هم نباشه. البته، بهتر است جستجوی بیشتری انجام بدید.
موفق باشید 🌹🙏
سلام. مقاله ی خوبی بود. ته مقالتان به یک دنیا حرف نزده اشاره کردید.آیا پارت دومی در راه هست 😃😃😃😃
سلام
ممنون از آموزش خوبتون. در شبکه lstm با چند ورودی و جند خروجی (مثلا 5 ورودی و 2 خروجی) و زمان استفاده از تابع predictAndUpdateState با خطا مواجه شدم. آیا نمونه کد برای آن دارید؟
عالی بود.
یک موضوع اگر درست متوجه شده باشم برای ورودی که مثالا 4 ویژگی داشته باشد (سری زمانی با 4 متغیر) باید خروجی نیز 4 تا باشد.
درود بیکران
واقعاً عالی توضیح دادین. چند وقته پیگیر هستم. هوش مصنوعی پیچیده ست ولی اینگونه اگر آموزش داده بشه خیلی جذابتر میشه.
سپاس
سلام، خیلی عالی بود
زبان طنزتون عالیترش کرد، یعنی در کنار فهم خوب لبخندی بابت طنزتون روی لب ضاهر میشه، خلاصه که عالی بود دستتون درد نکنه، به خصوص آخرش :
“اما، این پایان کار نیست، دو گیت دیگر هم داریم! نه شوخی کردم 😃 ”
اولش گفتم ای وااای، 😃😃😃
سلام و وقت بخیر
بسیار ممنون بابت توضیح شیواتون
فقط ای کاش درمرد کدنویسی و اجرای برنامه در متلب هم مطالبی قرار بدید. اکثرا با پایتون مطالب هست ولی متلب هیچی نیست
اگر سایت یا منبع مناسب میشناسید معرفی کنید شدیدا بهش نیاز دارم برای پایان نامم
ممنونم ازتون
سلام
تمرکز آکادمی هوسم در حوزه هوش مصنوعی، روی متلب نیست. جامعه فعال هوش مصنوعی سالهاست که از متلب گذر کرده و از پایتون و فریمورکهاش استفاده میکنه. ما هم در هوسم، همین مسیر رو دنبال میکنیم و برنامهای برای متلب نداریم. منبع مناسبی در این زمینه نمیشناسیم.
چنانچه به آموزش جامعی در حوزه یادگیری عمیق، شبکه بازگشتی و کدنویسی اونها نیاز داشتید، میتونید دوره یادگیری عمیق 2022 هوسم رو مشاهده بفرمایید:
https://howsam.org/downloads/deep-learning-2022/
همچنین، چنانچه تصمیم گرفتید با پایتون کار کنید، دوره زیر رو به شما پیشنهاد میکنیم:
https://howsam.org/downloads/python-for-ai/
موفق باشید
عالی بود
سلام و خسته نباشید. منابع مختلفی دنبال می کنم اما همانند یه سری قسمت های دیگه . این قسمت بسیار دقیق تر و ساده تر از منابع دیگر نوشته شده بود . تشکر از زحمات نویسندگان این مطلب. صرفا جهت پیشنهاد عرض میکنم. به دلیل اینکه کامنت ها معمولا خیلی زیاد هستند پیشنهاد می کنم در صفحه کامنت ها را به صورت جداگانه در باکسی قرار دهید که scroll bar مجزای خودش را داشته باشد و به اسکرول بار محتوای صفحه کاری نداشته باشد. وقتی خواستم مطلب را شروع کنم اسکرول خوفناک بود یهو دیدم سریع تموم شد و بقیه اش کامنت هست !
مجدد سلام
یه سوال داشتم خدمتتون
“حالا این ورودی از یک تابع تانژانت هایپربولیک باید عبور داده شود. خروجی gt بین 1- تا 1 خواهد بود. چرا بین 1- تا 1 نیاز داریم؟ ساده هست، برای اینکه ممکن است بخواهیم اثر تعدادی از درایهها یا مولفههای موجود در C را کاهش دهیم”
وقتی میخواهیم اثر تعدادی از درایهها یا مولفههای موجود در C را کاهش دهیم، چرا از تابع سیگمویید استفاده نکردیم. چرا برای ما اهمیت داره که خروجی gt عددی بین 1 و -1 باشه نه عددی بین 0 تا 1؟
سلام. گاهی میخوایم اثر تعدادی از درایه ها رو از بین ببریم اما گاهی میخوایم اثر برخی رو کاهشی کنیم. این دو با هم متفاوت اند. اگر بخوایم اثر درایه ها رو صفر کنیم از سیگمویید و اگر بخوایم اثر درایه ها رو کاهشی کنیم از تانژانت هایپربولیک استفاده میکنیم.
سلام
وقت بخیر
خیلی عالی و آموزنده بود. فقط جسارتا فرمول بالای تصویر 14 نیاز به اصلاح داره.
به جای تابع سیگموید از تابع تانژانت هایپربولیک باید استفاده میشد
سلام خیلی ممنون از بیان شفافتون:)
سلام، عالی،
اگر شما سال 1995 بودید، مقاله به دلیل پیچیدگی رد نمیشد😁
عالی👌
سلام. سال نو رو به همه گردانندگان سایت تبریک میگم. در تعریف فرمول گیت g به جای تابع tanh از تابع sigmoid استفاده شده. این مورد سهوی هست یا فرمول این طور نوشته میشه؟
سلام خیلی عالی بود. یه سوال گفتید شکلها و فرمولهای مختلف یکسانن. میشه این مقاله (https://doi.org/10.48550/arXiv.1801.01078) Recent Advances in Recurrent Neural Networks رو ببینید من هر کاری کردم نتونستم با فرمولها تطبیق بدم.
تو گیت فراموشی، ورودی و خروجی مقدار c(t-1) رو هم جمع کرده
علاوه بر این تو محاسبه c(t) علاوه برا مقدار c(t-1) مقدار گیت فراموشی رو هم ضرب میکنه
شکلش رو هم اگر نگاه کنید از cell به گیت خروجی ورودی مستقیم داره
لطف میکنید اگر توضیح بدید
سلام
یک دنیا سپاس برای توضیحات زیباتون
سوالی دارم. داخل یک مقاله برای گیت ها دو تا بایاس نگذاشته فقط یکی گذاشته it = σ (Wihht−1 +Wixxt + bi ). معماری این گیتها بازم هم دو لایه فولی کانکتد هست؟ بایاس را توضیح میدید لطفا؟ من دفاع از پایان نامه دارم و برام سواله خیلی خیلی ممنون
سپاس از توضیحات عالی و مطلب کاربردی تون
سلام اقا خدا خیرت بده
زحمت کشیدی
واقعا عالی بود
چیارو میخونی که انقد خوب مسلطی به ما هم معرفی کن
سلام
نکته اینجاست که تسلط، فقط با خوندن منابع مختلف بدست نمیاد. مجموعهای از کارهای مختلف هست که باعث میشه شما به تسلط خوبی در یک مبحث برسید. کد زدن، پروژه انجام دادن، پیادهسازی از صفر، توضیح دادن به دیگران (مثل درس دادن، وبلاگ نوشتن) و … ازجمله کارهایی هست که برای تسلط به یک مبحث باید انجام بشه.
تا حالا انقد روون و باحال در باره ماشین لرنینگ مطلب نخونده بودم. فقط کسی که واقعا به یه موضوعی مسلطه میتونه انقد جالب توضیح بده مطالب رو.
مرسی
خیلب عالی توضیح دادید. فقط کاشکی اضاقه میکردید هر کئام شبکه ها در کدام دیتاست ها بیشتر استفاده میشود.
فقط لطفا امکانش هست منابع رو هم ذکر کنید
باز هم ممنون از آموزش بسیار خوبتون
سلام
برای این آموزش از منبع خاصی استفاده نشده.
سلام
حرف ندارید،
یک دنیا سپاس
بسیار ساده، عالی و کاربردی بود. سپاس
سلام
وقتتون بخیر
برای پیش بینی مصرف انرژی از شبکه lstm بخواهیم استفاده کنیم و در لایه پنهان دوتا لایه lstm داشته باشیم، ورودی های لایه اول و ورودی های لایه دوم چه چیزی هایی میتونن باشن؟
توضیحی بسیار عالی و واضح، متشکرم.
عالی بود ممنون
سلام و درود.
بسیار سپاسگزارم بخاطر آموزش خوبتون. بسیار با حوصله و با تصاویر دقیق.
یک سوال هم داشتم. میخواستم بدونم وقتی تعداد hidden unit ها بیشتر از یک میشه چه اتفاقی میوفته؟ مثلا وقتی این مقدار بشه 2 چرا تعداد وزن های h میشه یک ماتریس دو بعدی به ابعاد 8در2؟
و همینطور فرمودید ورودی ها وکتور هستن، آیا وجود 2 یونیت به معنی این هست که طول وکتور ها میشه 2؟
واقعا لذت بردم.شفاف و واضح توضیح دادید.طوری که آدم احساس میکنه خودش رفته تو گیت ذخیره.
خیلی خیلی عالی.
باسلام
از نیمه مطلب به بعد، برای بنده گویا نبود.
سلام
شبکه عصبی باید یک مجموعه داده رو بارها ببینه تا یاد بگیره. یعنی تکرار و تکرار تا رسیدن به کمترین خطا…
اگر فقط یک بار خوندید و متوجه نشدید، پس لازمه شما هم مثل شبکه عصبی بارها بخونید تا کم کم مطالب برای شما جا بیفته. شبکه عصبی LSTM ساده نیست…
موفق باشید ❤
اگر ساده بود مقالشون در سال 1997 رد نمی شد به بهانه نفهمیدن مقاله …واقعا بعضی مطالب در هوش مصنوعی قابل فهم نیستند یا مشکلند مثل شبکه cnn که پیچیدگی های خاصی داره
بازم ممنون از زحمات شما در پناه خدا سالم باشد
من عضو هیات علمی دانشکاه هستم با ۲۰ سال سابقه. بسیار بسیار زیبا و روان و جذاب بود سپاس گزارم از وجودتان. عالی بود تا تمام آن را نخواندم آب هم نخوردم. آفرین
سلام وقت بخیر. من یک سوال داشتم لطفا راهنماییم کنیم. دیتای آموزش من شامل 3000 سطر و سه ستون هست. که ستون ها در واقع همون ابعاد ویژگی هستن . بعد که دیتا رو به شبکه م میدم توی قسمت input_shape ارور میده . سرچ که زدم فهمیدم ورودی LSTM باید سه بعدی باشه . بعد اومدم reshape کنم به صورت (3000,3,1) باز ارور میده ، به صورت (1,3000,3)هم امتحان کردم باز ایراد میگیره بهش . نوع دیتامم array of float64 هست . نمیدونم چکار کنم. خواهش میکنم راهنماییم کنیم
ممنون این پست هم عالی بود
با این جمله “اما، این پایان کار نیست، دو گیت دیگر هم داریم!” هم کلی خندیدم 😀
چشمام قلبی شدن از این سایت و آموزش های فوق العادهعالی به زبان فارسی ♥♥ کارتون حرف نداره
سلام
منبع پست بالا رو لطف میفرمایید
دمون گرم
عاالی بود
امکان donate هم نذاشتید یه حالی بدیم بهتون و تشکر کنیم
بسیار عالی و قابل فهم توضیح دادید. ممنون از شما و تیم خوبتون
واقعا دمتون گرم چقدر کامل و قابل فهم تدریس میکنید. راستش من دانشگاه بیرمنگهام هستم و بعضی از مطالب مثل همین که جدید هستن واسمون یادگیریش به انگلیسی سختر میشود ولی با مرور اون اینجا کامل قابل درک میشه واسم و جالب که وقتی به دوستانم این روشو پیشنهاد میکنم خیلی ها میگن ما همچین سورس هایی به زبان خودمون نداریم. واقعا افتخار میکنم ما ایرانی ها تو علم روز دنیا چقدر خوب امدیم و پیشرفت کردیم.
عااااااااااااااااااااااااااااااااااااااالی بود
فقط بی زحمت BI-LSTM هم بزنید تنگش
خیلی عاااالی بود ممنون از توضیحات کاملتون
سپاس 🌹🙏
خیلی خیلی عالی و قابل فهم و ساده بیان شده بود
ممنون 🌹🙏
بسیار عالی خیلی حال کردم، موفق و سربلند باشید.
ممنون 😊🌹🙏
مثل همیشه عالی
خیلی مفهوم را گویا بیان کرده بودید واقعا درک کردم مرسی از گریز های به جا در کاربرد مثال های ملموس برای فهم این مطلب
تشکر
ممنون 😊🌹🙏
خیلی خوب بود. بعد از کلی سرچ تو اینترنت ،این سایت رو دیدم و مطلب را خیلی خوب درک کردم. بی نهایت سپاسگزارم.
خیلی خوشحالیم که مطالب هوسم به شما کمک کرده.
ممنون 🌹🙏
سلام
ممنون از توضیح عالی تون. بسیار ساده و روان بیان کردید.
با توجه به اینکه ft و it و ot از یک ورودی و شبکه عصبی استفاده می کنند چرا نباید مقدار یکسانی داشته باشند؟ یعنی آیا ft و it و ot مقدار یکسانی خواهند داشت به عنوان خروجی شبکه عصبی کوچک؟ ممنون میشم دلیلش هم بفرمایید.
و اینکه برای یادگیری شبکه عصبی های کوچک علاوه بر ورودی به خروجی تعیین شده هم نیاز هست. چگونه این خروجی ها که ft و it و ot هستند در پروسه یادگیری NN کوچک تعیین می شوند؟
سلام
1- دقت کنید که اگرچه ورودیها در o، i و f یکسان هست، اما وزن شبکهها متفاوت هست. یعنی سه شبکه متمایز داریم. زیر هر شکل از LSTM، وزنهای w رو نوشتیم.
2- شبکههای کوچک اسمی هست که ما گذاشتیم تا بهتر مطالب رو به خواننده انتقال بدیم. چنین شبکهای وجود نداره. همه این شبکههای کوچک در دل همون شبکه عصبی LSTM قرار میگیرن.
سلام
من به تازگی در حال یادگیری مفاهیم شبکه های عصبی هستم و بیان شفاف و روان مطالب در این سایت بسیار عالی است و از تیم هوسم ممنونم.
سوالی نیز برایم مطرح است که ممنون میشم راهنمایی کنید. در طراحی mlp بر چه اساسی تعداد لایه ها و نرون های هر لایه را مشخص میکنیم و در شبکه LSTM نیز تعداد سلها را ؟
سلام
از اینکه تونستیم در برداشتن گامهای اول در شبکه عصبی کمکتون کنیم، خوشحالیم.
مواردی که اشاره کردید، از طریق تجربه حاصل میشه. یعنی شما باید پروژههای ساده تا پیچیده رو انجام بدید تا درک کنید که تعداد لایه و نورون رو چطور تنظیم کنید.
پیشنهاد ما این هست که برای یک پروژه ساده مثل دستهبندی اعداد دستخط، تعداد لایه و نورون رو تغییر بدید و بعد نتایج رو توی یک جدول بنویسید و تحلیل کنید.
ممنونم🌹🙏
سلام، بسیار بسیار عالی و مفید بود، خیلی لذا بردم از مطالعه و فهمش و یک دنیا ممنون، تعداد سلها مگه همون تعداد Lstm ها یعنی همون تعداد ورودی ها نیست؟
و یه چیز دیگه time sliding window تو این مبحث یعنی چی؟
من متن زیاد خوندم ولی حقیقتا این عالی ترین توضیح بود که خوندم.
بسیار عالی خیلی ممنون از سایت خوبتون
یه متن علمی همراه با شوخی
خستگی مطالعات امروز در اومد:)
تشکر
ممنون 😊
سلام در مورد فرمول پائین شکل 11
بیشتر توضیح میدهید؟
من تصورم این است که فرمول نوشته شده پائین شکل 11 برای خروجی لایه hidden است که مجددا باید تابع سیگموید بر روی آن اعمال شود؟ این درست است؟
سلام
شکل و فرمول 11، مربوط به نحوه ترکیب هیدن استیت و ورودی هست. کل فرآیند به صورت زیر هست:
* عبور هیدن استیت از لایه فولی کانکتد wh
* عبور ورودی از لایه فولی کانکتد wi
* جمع دو مورد بالا
* عبور از لایه سیگموید
این شکل و فرمول رو در پست شبکه عصبی بازگشتی بیشتر توضیح دادیم.
یه دستِ قشنگ باید بزنیم به افتخار مطالب خیلی خوب آکادمی هوسم
ممنون بابت انرژی مثبت 🌹🙏😊
سلام دستتون درد نکنه عالی بود
ممنون از شما بابت کامنت 🌹🙏
بسيار عالي ، ساده و روان
ممنون محمد عزیز 🌹🙏
جدا از مطلب كه خيلي خوب توضيح داده شده بود. اون قسمت گيف ها و شوخي ها عاااااالي بود.:D
سلام
ممنون 😅🙏
سلام
ممنون از توضیحات خوبتون و خسته نباشید.
در شکل 14 ،خروجی gt از یک تابع محرک tanh رد شده که در فرمول بالای اون توی کادر قرمز رنگ ، تابع سیگموئید نوشته شده. چند بار هم تکرار شده توی مطلب.
در آخر که شکل رایج و کلی شبکه LSTM رو گذاشتید ، شکل 19، اون جا درست نوشته شده و با C تیلدا نمایش داده شده. لطفا چک بفرمایید.
سلام
ممنون. انشالله در اولین بروزرسانی این مورد رو اصلاح میکنیم.
خیلی سخت بود. ولی عالی گفتین.
اگر کد عملی را هم بگین خیلی عالی میشه. خیلی چیزا هست که تو تئوری مهمه ولی تو کدنویسی خیلی مهم نیست
خیلی عالی گفتین حتما تو گروه هایی که عضوم اسم سایتتون را میگم.
بی نهایت ممنون. خدا خیرتون بده.
سلام
از اینکه به مجموعه هوسم اعتماد دارید و به دیگران معرفی میکنید، خوشحالیم.
بسیار ممنون 🌹🙏
سلام و خسته نباشید.
توضیحاتتون واقعا مفید بود.بسیار بهتر از حتی ویدیو ها و کلاس های آموزشی ای که در دسترس هستند با زبان ساده و با شکل های واضح مطالب رو لقمه کردید و به دست مخاطب دادید.
اگر با مثال عملی هم توضیح بدید فوق العاده خواهد بود، بررسی یک سری کدهای ران شده روی مثال های عملی هم خالی از لطف نیست.
ممنون از تلاش هاتون.
سلام
ما هم از شما ممنونیم بابت این پیام پر از انرژی و انگیزه 🌹🙏
سلام
مطالبتون بسیار مفید بود و خیلی لذت بردم به بهترین شکل ممکن توضیح دادین در صورتی که شبکه بسیار پیچیده ای هست
با تشکر از شما
سلام
ممنون. دیدن چنین پیامهایی برای ما خیلی لذتبخش هست.
با آرزوی موفقیت 🌹🙏
دم شما گرم خیلی خوب بود
واقعا لذت بردم از خواندنش
سلام
دم شما گرم که کامنت گذاشتید. 😊🙏🌹
سلام
خیلی ممنونم برای این آموزش روان. تسلط شما روی مطلب به خواننده مطلب هم اعتماد به نفس میده که تا آخر حتی اگه تخصصش هوش مصنوعی نباشه، پیش بره. منتظر آموزش های بعدی شما هستم.
سلام
ما تلاش میکنیم مطالب رو ساده و روان توضیح بدیم که یادگیری اونها برای مخاطبامون ساده بشه. این فوق العاده هست که اعتماد به نفستون بره بالا و بعد به سمت بیشتر یاد گرفتن حرکت کنید.
ممنون بابت کامنت 🌹🙏
سلااااااااام، ممنون از تیم خوبتون.
به امید موفقیت بیشتر شما.
دیگه خوندن منابع مختلف انگلیسی دل آدمو میزنه، به این اندازه که شما آسون و رووون بیان کردین
چشم در اره GRU هستیم
سلام
ممنون که کامنت گذاشتید و بهمون انرژی دادید. از اینکه ما رو با منابع انگلیسی مقایسه کردید، خیلی خوشحالیم. انشالله بتونیم حجم زیادی مطالب آموزشی با کیفیت آماده کنیم.
ممنون 🌹🙏
با سلام
بی نهایت عالی توضیح دادین و بنده رو از سردرگمی در آوردین. شما تخصص پیاده سازی این الگوریتم ها در پایتون دارید؟
سلام
بله
بسیار عالی
حتما با این روال موفق خواهید بود
سلام
ممنون 🌹🙏
سلام
خیلی عالی و روان و ساده توضیح دادین
ممنون از زحماتتون
سلام
ممنون از شما که کامنت گذاشتید 🌹🙏
عالی بود .
روان و کاربردی ،
خیلی مفید بود
ممنون
سلام
خوشحالیم که آموزش برای شما مفید بوده.
سپاس 🌹🙏
سلام
این شبکه GRU را هم بذارید لطفا، تا کی باید منتظر باشیم آخه؟ 😉
سلام
ببخشید 😊🙏🌹
زمان نمیدیم ولی انشالله آموزش رو مینویسیم.
البته، سه شبکه بازگشتی RNN GRU LSTM در دوره یادگیری عمیق تدریس شده.
سلام
مطالب شما خیلی روان و آموزنده است.
به من کمک زیادی کرد.
در رابطه با کمک به پیش بینی بازارسهام کدام یک از شبکه های عصبی را معرفی می کنید که شروع کنم؟
سلام
خوشحالیم که آموزش برای شما مفید بوده.
شبکه عصبی LSTM و GRU ازجمله شبکههای مناسب برای کار پیشبینی بورس هست.
پیشنهاد میکنیم پروژه هوش مصنوعی در بورس را مطالعه بفرمایید.
از ساعت ۲ شب تا الان (ساعت۹:۲۳ صبح) نشستم از پایه این پکیج یادگیری عمیق
آنقد ساده و روان که خسته نشدم
البته با یه صبحونه و یه چایی درست کردن
یه قهوه برم بزنم و اخریش موبایل نت هم بخونم
فقط یع جمله :
ناموسا دم نویسنده ش گرم :)🙏
خوندن پیامتون خیلی لذتبخش بود. 👌😊
نویسنده آموزشها مهندس اشرفی هستن. پیامتون رو به ایشون میرسونیم. 🌹🙏
ممنون
سلام برای پیش بینی سری زمانی با استفاده از شبکه های بازگشتی مثل lmst مقاله زیاد مطالعه کردم ولی تمام مقاله ها و یا حتی اموزش هایی ک در سایت های دیگر وجود داره فقط تا جایی تدریس میکنن ک شبکه با یکسری از داده ها اموزش می بیند و هیچ کدام از شبکه موجود برای پیش بینی اینده پس از به روز رسانی پارامترهای شبکه استفاده نمیکنند!!حتی خود تولباکس متلب هم فقط شبکه را اموزش میده و در قسمت سری زمانی هیچ پیش بینی از اینده به ما بر نمیگردونه.ایا واقعا نمیشه جلوتر از این رفت؟؟؟ اصلا ما شبکه رو اموزش میدیم برای پیش بینی دیگه!!!
سلام
احتمالا به این خاطر هست که قسمت سخت مبحث رو پوشش میدن و از توضیح تکراری برای بخش ساده کار صرفنظر میکنن. مثلا برای ارزیابی یک شبکه برای پیشبینی سری زمانی، فرآیندی مشابه آموزش شبکه طی میشه. به این شکل:
1- داده ارزیابی به شبکه داده میشه. دقیقا به همون شکلی که داده آموزش به شبکه داده شد.
2- خروجی آخرین استپ زمانی از شبکه گرفته میشه.
3- این خروجی، همون پیشبینی شبکه هست. علاوهبراین، این خروجی رو میتونیم به معیار ارزیابی بدیم. در آموزش شبکه، این خروجی رو به تابع اتلاف میدادیم.
پیشنهاد میکنیم پروژه آموزش هوش مصنوعی در بورس هوسم رو در وبلاگ مطالعه بفرمایید.
موفق باشید 🌹🙏
با سلام
در قسمتی از متن گفته شد بردارهای ورودی باید هم اندازه باشن لطفا بفرمایید برای کلماتی که اندازه طول انها متفاوت است چگونه این کار اجام میشود ؟ سوال دیگر آنکه وقتی تعدادی LSTM پشت سر هم قرار میگیرند خروجی h هر کدام چگونه قابل دسترسی است ؟؟
سلام
جواب سوال اول: اصولا کلمات طول یکسانی دارن. یعنی برای هرکلمه یک بردار به طول ثابت و مشخص (مثلا 512) داریم. بنابراین، اینطور نیست که در یک جمله، کلمه “که” و “ایران” دو بردار با طول متفاوت باشن.
البته، طول جملات میتونه متفات باشه. طول LSTM (تعداد زنجیره) تابعی از طول جمله هست.
جواب سوال دوم: اگر شما ده لایه LSTM روی هم قرار بدید، h و c در اینها بهصورت جدا تعریف میشه. یعنی، h و c در لایه اول متفاوت با h و c سایر لایههاست. پس ده تا h و c داریم. حالا که جدا هستن، دسترسی بهشون راحت هست و بقیه این ماجرا میشه صرفا کدنویسی…
سلام
من یکساله برای پایان نامم اموزش شبکه هایlstm و orelm رو لازم دارم و هرچی میگشتم منبع خوب پیدا نمیکردم یا چیزی ازش متوجه نمیشدم
عالی عالی عالی
خداخیرتون بده میخواستم سمیناربدم و هنوز چیزی نمیدونستم
از اول متن که شروع کردم خوندن کلی دعاتون کردم بعدازهر چیزی که یادگرفتم
فقط یه انتقاد سازنده!
وقتی رسیدم به اینکه فرمودید «شبکه فولی کانکتد که قبلا توی اموزش شبکه عصبی بازگشتی گفتم …»
دیدم حیفه که این عبارت رو لینک نکردید تا هرکس خواست همونجا بره و اون روهم بخونه
اینطوری بازدید تون هم شبکه ای میره بالا و سئوتون قوی میشه
راستی اگر اموزش orelm رو دارید توی سایت یا میتونید کمکی بکنید لطفا اطلاع بدید
خیلی ممنونم
خداخیرتون بده
سلام
خدا رو شکر، ما هم از خوندن چنین پیامهایی خیلی خوشحال میشیم و انرژی میگیریم.
بابت دعای خیر هم سپاس 🌹🙏
پیشنهادتون درباره لینک هم درست هست. انشالله در بازنگری لینک اضافه میکنیم.
درمورد ORELM متاسفانه آموزشی نداریم و آموزش مناسبی نمیشناسیم.
موفق باشید
سلام ممنون از توضیحات عالی شما.من خیلی به آموزش شبکه GRU احتیاج دارم.
و در شکل 14 در ضابطه مربوطه به نظر به اشتباه بجای تانژانت هایپربولیک تایع سیگموید تایپ شده.
سلام
بله حق با شماست. در اولین فرصت اصلاح میکنیم. از شما ممنونیم. 🌹🙏
متاسفانه هنوز شبکه عصبی GRU آماده نشده.
خیلی هم عالی
سپاس 🌹🙏
فوق العاده بود
دم شما گرم!
بعد از مطالعه چند منبع مختلف، با توضیحات جالب شما بود که فهمیدم چی به چیه!! واقعا عالی. خداقوت
سلام
ممنون از شما بابت کامنت که به ما انرژی داد. 🌹🙏
بسیار عالی…
خدا قوت…
سلام
سپاس 🌹🙏
سلام
خیلی خوب بود…
مقایسه ایی بین انواع شبکه ها دارید ؟
سلام
خیر مقایسه نداریم. ولی موضوع خوبی هست، انشالله در آینده به این موضوع میپردازیم.
سپاس 🌹🙏
اگ شعور اساتید ما نصف شما بود… دنیا جای بهتری بود
عالی بود. خدا قوت
سلام
سپاس 🌹🙏
با عرض سلام و خسته نباشید
ممنون از اینکه این مطالب پیچیده رو به صورت شیوا و ساده بیان میکنید
(جزاکم الله خیرا)
سلام
سپاس بابت کامنت و البته دعای خیر 🌹😊🙏
مطالب پیچیدرو خیلی شیرین و قابل فهم بیان کردین. تبریک و خداقوت بهتون
سلام
خوشحالیم که از آموزش راضی بودید.
سپاس 🌹🙏
سلام و سپاس فراوان 🌹 هوسم کماکان رقبای خودش رو شکست داده و به هر گیتی میرسه خروجیش یک میشه(به غیر از فراموشی) و در جواب اخر ht فقط خودش مانده که جواب تمام سوالات است! اگر درست فهمیده باشم😃
چشم به راه gru هستیم
سلام
سپاس 🌹🙏
چه خفن و سخت 😅
البته ما رقیب نداریم، ما همه باهم رفیقیم…
توی یه مقاله، که از یک یونیت LSTM برای RNN استفاده کرده بود. سوالم اینجاست که آیا ورودی ها به داخل LSTM می تونن اعداد حقیقی باشن و یا اینکه حتما باید به صورت باینری باشن؟ چونتوی مقاله با تبدیل کردن یک ماتریس اعداد حقیقی به اعداد صفر و یک، به نظر من کلی از دیتای با اهمیت رو ندیده گرفته بود.
سلام
معمولا دادههای ورودی بهصورت حقیقی به شبکه داده میشه. همونطور که گفتید، با باینری کردن ممکن هست اطلاعاتی از دست بره.
آخ جووووووووون lstm هم گذاشتین
😃🙏🌹