Filter by دسته‌ها
آموزش هوش مصنوعی و انواع آن
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
پایتون و ابزارهای یادگیری عمیق
کتابخانه‌ های یادگیری عمیق
یادگیری با نظارت
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
اخبار
رسانه‌ها
آموزش پردازش زبان طبیعی
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
رویدادها
کاربردهای هوش مصنوعی
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
 زمان کنار گذاشتن شبکه های عصبی بازگشتی و حافظه‌ کوتاه‌مدت طولانی فرا رسید

زمان کنار گذاشتن شبکه های عصبی بازگشتی و حافظه‌ کوتاه‌مدت طولانی فرا رسید

برای مدتی شبکه های عصبی بازگشتی Recurrent Neural Networks  و حافظه‌ کوتاه‌مدت طولانی Long Short-Term Memory  از جذابیت زیادی برخوردار بودند و اکنون زمان آن رسیده که آن‌ها را کنار بگذاریم.

در سال 2014، شبکه های عصبی بازگشتی و حافظه‌ کوتاه‌مدت طولانی بازگشت باشکوهی به عرصه‌ یادگیری ماشین داشتند. اما این مربوط به سال‌ها قبل است، زمانی که تجربه‌ کافی نداشتیم. راهکاری که در گذشته برای Sequence learning  و یادگیری توالی‌هاSequence translation  (seq2seq) و ترجمه توالی Sequence translation وجود داشت،

استفاده از همین شبکه‌ها بود که در تبدیل گفتار به نوشتار و خلق Siri، Cortana، دستیار صوتی گوگل و Alexa نیز به نتایج بسیار خوبی دست یافت. علاوه بر این‌ها، شبکه های عصبی بازگشتی و حافظه‌ کوتاه‌مدت طولانی در ترجمه‌ ماشینی (ترجمه‌ اسناد و مدارک به زبان‌های مختلف)، ترجمه‌ ماشینی عصبی Neural Machin Translation، برگردان تصاویر به نوشتار، نوشتار به تصاویر، زیرنویس‌گذاری برای ویدئوها Captioning videos و مواردی از این دست نیز کاربرد دارند.

سپس در سال‌های 2015-2016 شبکه‌ ResNet و مکانیزم توجه attention مطرح شدند. بر اساس این دستاوردها راحت‌تر می‌شد دریافت که حافظه‌ کوتاه‌مدت طولانی یک راهبرد میانبر هوشمندانه است. علاوه بر این، مکانیزم توجه نشان داد که شبکه‌ پرسپترون چندلایه‌ای Multilayer Perceptron را می‌توان با شبکه‌های میانگین‌گیری Averaging networks که تحت تأثیر یک بردار زمینه‌ای Context vector قرار گرفته‌اند، جایگزین کرد.

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

برای دیدن شواهد این گفته می‌توانید به Google، Facebook و یا Salesforce مراجعه کنید؛ این شرکت‌ها شبکه های عصبی بازگشتی و مشتقات آن را با مدل‌های توجه‌محور Attention-based models جایگزین کرده‌اند؛ اما این هنوز آغاز کار است. شبکه های عصبی بازگشتی در حال حذف شدن از همه‌ برنامه‌های کاربردی است؛ زیرا نسبت به مدل‌های توجه‌محور، آموزش و اجرای آن‌ها نیازمند منابع بیشتری است.

چرا شبکه های عصبی بازگشتی در حال حذف شدن است؟

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

شبکه های عصبی بازگشتی
پردازش ترتیبی در RNN

همانطور که در تصویر مشاهده می‌کنید، اطلاعات بلندمدت قبل از رسیدن به سلول پردازشی فعلی باید به ترتیب از همه‌ سلول‌ها بگذرند. این مسیر به خاطر ضرب چندین باره در اعداد کوچک (کوچک‌تر از 0)، به راحتی می‌تواند مختل شود. این مشکل دلیل ناپدیدشدگی گرادیان‌ها Vanishing gradients می‌­باشد.

ماژول حافظه‌ کوتاه‌مدت طولانی برای حل این مسئله طراحی شد. حافظه‌ کوتاه‌مدت طولانی را امروزه به صورت چندین دریچه‌ تبدیل Switch gate می‌بینید که (تا حدودی شبیه ResNet) می‌تواند واحدها را میانبر زده و بدین ترتیب برای گام‌های زمانی طولانی‌تری (اطلاعات را) به خاطر داشته باشد. بنابراین حافظه‌ کوتاه‌مدت طولانی قادر است برخی از مشکلات مربوط به ناپدیدشدگی گرادیان‌ها را حل کند.

[irp posts=”23395″]
پردازش ترتیبی در LSTM
پردازش ترتیبی در LSTM

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

بدون شک حافظه‌ کوتاه‌مدت طولانی، GRU و مشتقات آن‌ها می‌توانند اطلاعات بسیار بلندمدت‌تری را بیاموزند. با این حال، تنها می‌توانند توالی‌های 100 تایی را به یاد آورند و نه توالی­‌های 1000 تایی و 10000 تایی (یا بیشتر).

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

چه باید کرد؟

در حال حاضر ما این روش را پیشنهاد می‌کنیم: شبکه‌ عصبی مبتنی بر یک کانولوشن دوبُعدی 2-D convolution همراه با یک کانولوشن معمولی Casual convolution؛ این شبکه می‌تواند عملکرد بهتری از مدل‌هایی داشته باشد که بر مبنای RNN/LSTM و مکانیزم توجه (همچون مدل‌های transformer) عمل می‌کنند.

مدل transformer  از سال 2017 تا زمانی که مقاله‌ مذکور منتشر شد از محبوبیت خوبی برخوردار بود. این مدل‌ها از نظر آزمایش و تعداد پارامترها مزایای زیادی دارند.

اگر از پردازش ترتیبی اجتناب شود، می‌توانیم از واحدهای نگاه به جلو Look-ahead (آینده) یا نگاه به عقب Look-back (گذشته) استفاده کنیم؛ از آنجا که ما بیشتر اوقات با دادگان بلادرنگ علی سروکار داریم، داده­‌های گذشته را می­‌دانیم و قصد داریم بر روی تصمیمات آینده تأثیر بگذاریم.

اما در مسائلی همچون ترجمه‌ جملات یا تجزیه و تحلیل ویدئوهای ضبط‌شده، همه‌ داده‌ها را در دست داریم و طی مدت زمان بیشتری می‌توانیم بر اساس آن داده‌ها استدلال انجام دهیم. این واحدهای نگاه به جلو و نگاه به عقب در واقع ماژول‌های عصبی توجه Neural attention modules هستند که قبلاً توضیح داده شده‌اند.

برای حل این مشکلات، رمزگذار عصبی سلسله‌مراتبی توجه Hierarchical neural attention encoder از طریق ترکیب چندین ماژول عصبی توجه طراحی شده است؛ به شکل پایین توجه کنید:

رمزگذار عصبی سلسله‌مراتبی
رمزگذار عصبی سلسله‌مراتبی

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

توجه داشته باشید که این‌جا یک سلسله‌ از ماژول‌های توجه داریم که شباهت زیادی به سلسله‌ شبکه‌های عصبی دارند. این ساختار به شبکه‌ پیچشی زمانی Temporal Convolutional Network (TCN) که در نوشتار 3 معرفی شده نیز شبیه هستند.

در رمزگذار عصبی سلسله‌مراتبی توجه، چندین لایه (ماژول) توجه وجود دارد که می‌توانند به قسمت کوچکی از گذشته‌ نزدیک (برای مثال 100 بردار) نگاه کنند، لایه‌های بالایی نیز می‌توانند به 100 عدد از این ماژول‌ها نگاه کنند؛ در نتیجه نهایتاً اطلاعات مربوط به 100×100 بردار به صورت یکپارچه جمع‌آوری می‌شود. بدین ترتیب قابلیت رمزگذار عصبی سلسله‌مراتبی تا 10000 بردار گذشته افزایش می‌یابد.

[irp posts=”23025″]

از این طریق می‌توان به گذشته نگاه کرد و قابلیت تأثیرگذاری بر آینده را به دست آورد.

اما نکته‌ مهم‌تر مربوط به طول مدتی از گذشته است که برای ورود بردار بازنمایی به خروجی شبکه لازم است؛ این مقدار در شبکه‌های سلسله مراتبی متناسب با مقدار log(N) است (N تعداد لایه‌های موجود در سلسله است). این ویژگی با تعداد گام‌هایی (T) که در یک شبکه عصبی بازگشتی لازم می‌باشد در تناقض است (T حداکثر طول توالی یادآوری‌شده است، و T >> N).

یادآوری توالی‌­ها اگر از روی 3-4 گام پرش داشته باشید، نسبت به 100 گام، آسان‌تر خواهد بود.

این معماری شبیه به ماشین تورینگ عصبی Neural Turing Machine است، با این تفاوت که به شبکه‌ عصبی اجازه می‌دهد در مورد این‌که چه چیزی از حافظه از طریق مکانیزم توجه خوانده می‌شود، تصمیم بگیرد. در نتیجه یک شبکه‌ عصبی واقعی می‌تواند تصمیم بگیرد کدام بردارها از گذشته در تصمیم‌گیری در مورد آینده مهم هستند.

معماری بالا از لحاظ ذخیره‌سازی در حافظه، همه‌ بازنمایی‌های قبلی را در حافظه ذخیره می‌کند (برخلاف ماشین تورینگ عصبی). این کار می‌تواند کارآیی را کاهش دهد؛ برای مثال تصور کنید می‌خواهید بازنمایی همه‌ فریم‌ها را در یک ویدئو ذخیره کنید. از آن‌جایی که اغلب اوقات بردار بازنمایی فریم به فریم تغییر نمی‌کند، در این صورت مقدار زیادی از یک چیز را ذخیره خواهید کرد! می‌توان به منظور جلوگیری از ذخیره‌ داده‌های همبسته یک واحد دیگر اضافه کرد.

برای مثال ذخیره نکردن بردارهایی مشابه با بردارهایی که از پیش ذخیره شده‌­اند. اما این روش تنها یک میانبر است. برای حل مسئله، بهترین کار این است که به برنامه اجازه دهیم شبکه را در انتخاب بردارهایی که باید ذخیره شوند راهنمایی کند. هدف مطالعات پژوهشی حاضر نیز همین است.

اطلاعات بیشتر در مورد شبکه های عصبی بازگشتی و حافظه‌ کوتاه‌مدت طولانی

آموزش شبکه های عصبی بازگشتی و حافظه‌ کوتاه‌مدت طولانی کار دشواری است، زیرا به محاسباتی نیاز دارند که محدود به پهنای باند حافظه Memory-bandwidth هستند؛ امری که کابوس هر طراح سخت‌افزاری است و می‌تواند کاربردی بودن راهکارهای شبکه‌ عصبی را محدود کند. حافظه‌ کوتاه‌مدت طولانی برای اجرا در هر سلول و هر گام زمانی متوالی به 4 لایه‌ خطی Linear layers (لایه‌ MLP) نیاز دارد. برای محاسبه‌ لایه‌های خطی به پهنای باند زیادی از حافظه نیاز داریم؛

در واقع لایه‌های خطی نمی‌توانند از واحدهای محاسباتی زیادی استفاده کنند، زیرا پهنای باند حافظه‌ سیستم برای تغذیه‌ این تعداد واحد محاسباتی Compute units کافی نیست. اضافه کردن واحدهای محاسباتی کار آسانی است، اما افزایش پهنای باند حافظه دشوار خواهد بود (خط‌های کافی روی یک تراشه Enough lines on a chip، سیم‌های بلند از پردازش‌گرها به حافظه، و غیره). در نتیجه می‌توان گفت شبکه های عصبی بازگشتی و حافظه‌ کوتاه‌مدت طولانی و مشتقات آن‌ها برای شتاب‌دهی به سخت‌افزارها مناسب نیستند. راهکاری که برای این مشکل مطرح می‌شود، انجام محاسبات در دستگاه‌های حافظه است.

[irp posts=”14096″]

یادداشت‌ها

  1. عملکرد توجه عصبی سلسله‌مراتبی شبیه به ایده‌ای است که در شبکه‌ WaveNet مطرح شده است. با این تفاوت که به جای استفاده از شبکه‌ عصبی پیچشی از ماژول‌های توجه سلسله‌مراتبی استفاده می‌شود. علاوه بر این، توجه عصبی سلسله‌مراتبی می‌تواند دوسویه Bi-directional باشد.
  2. شبکه های عصبی بازگشتی و حافظه‌ کوتاه‌مدت طولانی مشکلاتی مربوط به محدودیت پهنای باند حافظه دارند. واحد(های) پردازشی بسته به تعداد عملیات‌، نیاز به پهنای باند حافظه‌ دارند و این موضوع کاربرد کامل آن‌ها را غیرممکن می‌سازد. برای حل این مشکل، افزودن پهنای باند بیرونی کافی نیست؛ راهکار دیگری که ممکن است مفیدتر باشد استفاده از کش‌های داخلی Internal caches سریع با پهنای باند وسیع است. اما بهترین راه استفاده از تکنیک‌هایی است که برای حرکت در طول حافظه، به تعداد پارامترهای زیادی نیاز ندارند و می‌توانند برای چندبار محاسبه و به ازای تعداد بیت‌های منتقل‌شده چندین بار مورد استفاده قرار گیرند (شدت محاسباتی بالا).
  3. پیش از این در مقالات CNN و شبکه های عصبی بازگشتی مقایسه شده‌اند. شبکه‌های پیچشی زمانی (TCN) در مقایسه با شبکه‌های بازگشتی متعارف (همچون حافظه‌ کوتاه‌مدت طولانی) در مسائل گوناگون و روی دیتاست‌های مختلف، عملکرد بهتر و حافظه‌ کارآمد و بلندمدت‌تری دارند.
  4. در همین راستا باید گفت دانش کمی در مورد چگونگی یادگیری و یادآوری در مغز انسان در دست داریم. ما اغلب توالی‌های طولانی را به صورت قسمت‌های کوچک‌تر می‌آموزیم و به یاد می‌آوریم. برای مثال، شماره تلفن 8585342230 را به صورت چهار قسمت به خاطر می‌سپاریم. آزمایشات رفتاری نشان می‌دهند انسان‌ها و برخی از حیوانات برای تجزیه‌ توالی‌های رفتاری یا شناختی به مسائل کوچک گوناگون از همین راهکار استفاده می‌کنند. این قسمت‌ها (مسائل) کوچک مانند شبکه‌های پیچشی یا توجهی کوچکی هستند که در حل توالی‌های کوچک‌تر کاربرد دارند و می‌توانند در رمزگذارهای عصبی سلسله‌مراتبی توجه و شبکه‌های پیچشی زمانی (TCN) کنار یکدیگر قرار گیرند. با توجه به پژوهش‌های دیگر شاید بتوان نحوه‌ کارکرد حافظه را شبیه به شبکه های عصبی بازگشتی دانست که از شبکه‌های یاخته­‌های عصبی بازگشتی واقعی استفاده می‌کنند و گنجایش بسیار پایینی دارند. از سوی دیگر، قشر مغز cortex و هیپوکامپ Hippocampus (بخش دیگری از مغز) ما را قادر می‌سازند توالی‌های خیلی طولانی از گام‌ها را به خاطر بیاوریم (برای مثال: محل پارک ماشین 5 روز قبل در فرودگاه). بنابراین هرچه توالی‌ها طولانی‌تر باشند، مسیرهای موازی‌تری برای یادآوری آن‌ها لازم است؛ مکانیزم توجه نیز مانند دروازه برای قسمت‌های مهم عمل می­‌کند و قسمت‌هایی از توالی که به هدف یا مسئله‌ نهایی ربطی ندارند را در نظر نمی­‌گیرد.
  5. تجربه نشان داده ما به صورت متوالی نوشته‌ها را نمی‌خوانیم. بلکه حروف، کلمات و جملات را به عنوان یک گروه تفسیر می‌کنیم. یک ماژول توجه‌محور یا پیچشی توالی را ادراک کرده و یک بازنمایی در ذهن ما تصویر می‌کند.
  6. اخیراً در مقاله‌ای یک مدل بدون نظارت transformer را با استفاده از مکانیزم توجه آموزش دادند و به عملکردی عالی در یادگیری انتقالی دست یافتند. این پژوهش در ادامه‌ مطالعات جرمی و سباستین Jeremy and Sebastian در مورد یک حافظه‌ کوتاه‌مدت طولانی با رویه‌های آموزشی بود که می‌توانست به صورت بدون نظارت بیاموزد کلمه‌ بعدی یک توالی در متن را پیش‌بینی کرده و این دانش را به سایر مسائل نیز منتقل کند.
  7. پیش از این معماری transformer و گردش‌کار آن به خوبی توضیح داده شده است.

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
لطفاً برای تکمیل این فرم، جاوا اسکریپت را در مرورگر خود فعال کنید.