برای مطالعه قسمت های بعدی این مقاله و مقاله های پیرامون موضوع شبکه های عصبی، کلیک کنید:
تاریخچه شبکه عصبی و یادگیری عمیق ___ (قسمت اول)
تاریخچه یادگیری عمیق و شبکه عصبی ___ (قسمت دوم)
یادگیری عمیق از دهه 2000 تا 2010 میلادی __ قسمت آخر تاریخچه شبکه عصبی
شبکه عصبی بازگشتی چیست ؟ آشنایی با شبکههای عصبی بازگشتی (RNN) و (LSTM)
شبکه عصبی کانولوشن یا Convolutional چیست ؟ __ راهنمای جامع به روش ELI5
شبکه عصبی چیست ؟ ___ آشنایی با شبکه های عصبی مصنوعی
شبکههای عصبی تصمیم میگیرند
پس از کشف کاربرد شبکههای عصبی در یادگیری بدون نظارت، اکنون اجازه دهید به سرعت نحوه استفاده از آنها را در شاخه سوم یادگیری ماشین نیز بیاموزیم: یادگیری تقویتی (reinforcement learning).
این مورد برای توضیح رسمی به بیشترین نماد ریاضی احتیاج دارد، اما همچنین هدفی دارد که توصیف آن به صورت غیررسمی بسیار آسان است: یادگیری خوب تصمیم گرفتن.
با داشتن برخی عوامل تئوری (به عنوان مثال یک برنامه نرم افزاری کوچک)، ایده این است که بتوانیم آن عامل را قادر کنیم که بر اساس وضعیت (state) فعلی خود، در مورد یک اقدام (action) تصمیم گیری کند؛ با دریافت پاداش (reward) برای هر اقدام و با قصد دستیابی به حداکثر سودمندی (utility) در بلند مدت.
بنابراین، در حالی که یادگیری تحت نظارت به الگوریتم یادگیری میگوید که دقیقا باید چه چیزی را برای تولید در خروجی یاد بگیرد، یادگیری تقویتی به عنوان یک محصول جانبی تصمیم گیری خوب در طول زمان، “پاداش” میدهد. و تصمیمات صحیح را به طور مستقیم به الگوریتم نشان نمیدهد.
از ابتدا این یک مدل تصمیم گیری انتزاعی بود. تعداد محدودی از حالتها و مجموعهای مشخص از اقدامات با پاداشهای معین برای هر حالت وجود داشت. این امر، نوشتن معادلات بسیار زیبا برای یافتن مجموعه بهینه اقدامات را آسان میکرد. اما بکارگیری آن را در مسائل واقعی یعنی مسائلی با حالتهای پیوسته یا پاداشهایی که به سختی قابل تعریف است، سخت میکرد.
اینجا بود که شبکههای عصبی وارد میدان شدند. به طور کلی یادگیری ماشین، و به طور خاص شبکههای عصبی، در برخورد با دادههای پیوسته نامرتب یا برخورد با توابعی که تعریف آنها دشوار است، خوب عمل میکنند؛ با یادگیری آنها از روی نمونهها.
اگرچه دستهبندی برای شبکههای عصبی حکم نان شب را دارد (!). اما این شبکهها به قدری عمومی هستند که بتوانند برای بسیاری از مسائل مفید باشند. به عنوان مثال، از نسل آدالین برنارد ویدرو (Bernard Widrow) و تد هوف (Ted Hoff) برای فیلترهای تطبیقی در زمینه مدارهای الکتریکی استفاده شد.
و بنابراین، به دنبال احیای تحقیقات ناشی از انتشار رو به عقب، مردم به زودی روشهایی را برای استفاده از قدرت شبکههای عصبی در راستای انجام یادگیری تقویتی ابداع کردند. یکی از نمونههای اولیه آن، حل یک مسئله ساده و در عین حال کلاسیک بود: تعادل یک چوب روی یک سکوی متحرک، که برای دانشجویان در کلاسهای کنترل در همه جا با عنوان مسئله پاندول معکوس شناخته میشود.
مشابه فیلتر تطبیقی، این تحقیق نیز به شدت مرتبط با رشته مهندسی برق بود. جایی که نظریه کنترل دههها قبل از ورود شبکههای عصبی، به عنوان یک زیرشاخه اصلی مطرح بود.
اگرچه این حوزه، روشهایی را برای مقابله با بسیاری از مسائل از طریق تحلیل مستقیم طراحی کرده بود، اما داشتن وسیلهای برای مقابله با شرایط پیچیدهتر از طریق یادگیری مفید بود. همانطور که با 7000 (!) نقل قول از مقاله “شناسایی و کنترل سیستمهای پویا با استفاده از شبکههای عصبی” (Identification and control of dynamical systems using neural networks) در سال 1990، این قضیه کاملا مشهود است.
همانطور که احتمالا قابل پیشبینی بود، زمینه دیگری جدا از یادگیری ماشین وجود داشت که شبکههای عصبی در آن مفید بودند: رباتیک. یک مثال اصلی از استفاده اولیه شبکه عصبی برای رباتیک، از آزمایشگاه NavLab CMU با مقالهای تحت عنوان “آلوین: یک وسیله نقلیه زمینی خودران با یک شبکه عصبی” (Alvinn: An autonomous land vehicle in a neural network) در سال 1989 منتشر شد.
هم رویش منتشر کرده است:
آموزش شبکه عصبی مصنوعی -- از صفر به زبان ساده
همانطور که در این مقاله مورد بحث قرار گرفته بود، شبکه عصبی در این سیستم یاد گرفت که وسیله نقلیه را کنترل کند. آن هم از طریق یادگیری تحت نظارت ساده با استفاده از دادههای حسگر و فرمان ثبت شده هنگام رانندگی انسان.
همچنین، تحقیقاتی در مورد آموزش رباتها با استفاده از یادگیری تقویتی به طور خاص منتشر شد. به عنوان مثال پایان نامه دکتری با عنوان “یادگیری تقویتی برای رباتها با استفاده از شبکههای عصبی” (Reinforcement learning for robots using neural networks) که در سال 1993منتشر شد. این پایان نامه نشان داد که رفتارهایی مانند دنبال کردن دیوار (wall following) و عبور از درها، در مدت زمان معقولی به رباتها قابل آموزش است. که با توجه به کار قبلی در مورد پاندول معکوس که برای آموزش نیاز به مدت زمانی طولانی داشت، خوب بود.
این کاربردهای متفاوت در زمینههای دیگر مطمئناً جالب هستند. اما طبیعتا بیشترین تحقیقات در زمینه یادگیری تقویتی و شبکههای عصبی، در بستر هوش مصنوعی و یادگیری ماشین انجام میشد. و در اینجا، یکی از مهمترین نتایج در تاریخ یادگیری تقویتی بدست آمد: یک شبکه عصبی که آموزش دید تا یک بازیکن بازی تخته نرد در سطح جهانی باشد.
این شبکه عصبی که TD-Gammon نامیده میشد، با استفاده از یک الگوریتم یادگیری تقویتی استاندارد آموزش داده شد. و یکی از اولین نمایشهای یادگیری تقویتی به شمار میآمد که قادر بود عملکردی بهتر از انسانها در کارهای نسبتاً پیچیده ارائه دهد.
و این به طور خاص یک روش یادگیری تقویتی بود که در اینجا کار کرد، چرا که همان تحقیقات نشان داد فقط استفاده از یک شبکه عصبی بدون یادگیری تقویتی، عملکرد چندان خوبی ندارد.
اما، همانطور که قبلاً در هوش مصنوعی شاهد بودیم و باز هم شاهد آن خواهیم بود، تحقیقات به بن بست خورد. مشکل بعدی قابل پیشبینی برای مقابله، با استفاده از روش TD-Gammon، توسط سباستین ترون (Sebastian Thrun) در سال 1995 تحت عنوان “یادگیری بازی شطرنج” (Learning To Play the Game of Chess) مورد بررسی قرار گرفت و نتایج خوب نبود.
با این که شبکه عصبی بازی مناسب را آموخت، آن هم بهتر از یک فرد مبتدی در بازی، اما هنوز بسیار بدتر از یک برنامه رایانهای استاندارد (GNU-Chess) بود. که مدتها قبل پیادهسازی شده بود. همین امر در مورد چالش دائمی دیگر هوش مصنوعی، یعنی بازی Go صادق بود.
ببینید، TD -Gammon به نوعی تقلب کرده بود. این الگوریتم، ارزیابی موقعیتها را به خوبی آموخته بود. و بنابراین میتوانست از انجام هرگونه جستجو در چندین حرکت آینده جلوگیری کند. و در عوض، فقط یکی را انتخاب کند که منجر به بهترین موقعیت بعدی شود.
اما همین کار، به سادگی در شطرنج یا بازی Go امکان پذیر نیست. بازیهایی که دقیقاً به این دلیل برای هوش مصنوعی چالش برانگیز هستند. که باید به دنبال حرکتهای زیادی در آینده باشیم. و ترکیبی از چندین حرکت احتمالی را پیش رو داریم.
علاوه بر این، حتی اگر الگوریتم هوشمندتر بود، سخت افزار آن در مدت زمان مناسبی عمل نمیکرد. تورن گزارش داد که:
“شطرنج عصبی (NeuroChess) کار ضعیفی انجام میدهد، زیرا بیشتر وقت خود را صرف محاسبه ارزیابیهای تخته میکند. محاسبه یک تابع شبکه عصبی بزرگ، دو برابر بیشتر از ارزیابی تابع ارزیابی خطی بهینه (مانند GNU-Chess) طول میکشد.”
ضعف رایانههای آن زمان نسبت به نیازهای شبکههای عصبی، یک مشکل واقعی بود و همانطور که خواهیم دید تنها به همین مورد ختم نمیشد…
پیش از این در همرویش فیلم شبکه عصبی کانولوشنی به زبان ساده منتشر شد. برای دیدن فیلم معرفی این آموزش بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:
برای دریافت بسته کامل این آموزش بر روی لینک زیر کلیک کنید:
شبکه عصبی کانولوشن به زبان ساده
شبکههای عصبی، حلقهای میشوند
به همان اندازه که یادگیری بدون نظارت و یادگیری تقویتی، تمیز و شسته و رفته هستند، من فکر میکنم یادگیری تحت نظارت همچنان مورد علاقه من برای استفاده در شبکههای عصبی است. مطمئناً یادگیری مدلهای احتمالاتی دادهها جالب است، اما هیجان داشتن برای حل مسائل توسط انتشار رو به عقب، به مراتب سادهتر است.
ما قبلاً دیدیم که چگونه یان لکان، به تشخیص خوبی از متن دست نویس (تکنولوژی که مدتی بعد، برای خواندن چکها در سطح ملی به کار گرفته شد) دست یافت. اما یک کار بسیار مهم و آشکار دیگر نیز در همان زمان انجام شد: درک گفتار انسان.
همانند نوشتن، درک گفتار انسان نیز به دلیل تنوع تقریباً نامحدود در نحوه تلفظ یک کلمه مشابه، بسیار دشوار است. اما، در اینجا یک چالش اضافی وجود دارد: دنبالههای طولانی ورودی.
ببینید، در مورد تصاویر، بسیار ساده است که یک حرف را از یک تصویر برش دهید و یک شبکه عصبی، به شیوه ورودی-خروجی به شما بگوید که این کدام حرف است. اما در مورد صدا، این خیلی ساده نیست. تفکیک گفتار به کاراکترها کاملاً غیرعملی است. و حتی یافتن تک تک کلمات در گفتار نیز سختتر است. به علاوه، اگر به گفتار انسان فکر کنید، به طور کلی درک کلمات شنیده شده در یک بستر و چارچوب، راحتتر از درک آنها به صورت جدا جداست.
در حالی که این ساختار برای پردازش چیزهایی مانند تصاویر یک به یک، به سبک ورودی-خروجی بسیار خوب عمل میکند، به هیچ وجه مناسب جریانهای طولانی اطلاعات مانند صدا یا متن نیست. شبکه عصبی هیچ “حافظه”ای ندارد که با آن، یک ورودی بتواند ورودی دیگری را که بعدا پردازش میشود تحت تأثیر قرار دهد. اما ما انسانها دقیقاً به همین شیوه، صدا یا متن را پردازش میکنیم: یک رشته از کلمهها یا صداهای ورودی، به جای یک ورودی بزرگ.
نکته اینجاست:
محققان برای حل مسئله درک گفتار، به دنبال اصلاح شبکههای عصبی بودند تا ورودی را به عنوان یک جریان ورودی از گفتار پردازش کنند نه به عنوان یک دسته تصویر.
یک رویکرد در این زمینه، توسط الکساندر وایبل (Alexander Waibel) و همکارانش (از جمله هینتون)، در سال 1989 با عنوان “تشخیص واج با استفاده از شبکههای عصبی با تاخیر زمانی” (Phoneme recognition using time-delay neural networks) معرفی شد. این شبکههای عصبی با تاخیر زمانی (TDNN) شباهت زیادی به شبکههای عصبی معمولی داشتند، به جز اینکه هر نورون، تنها یک زیر مجموعه از ورودی را پردازش میکرد و چندین مجموعه وزن برای تاخیرهای مختلف دادههای ورودی داشت.
به عبارت دیگر، برای دنبالهای از یک ورودی صوتی، یک “پنجره متحرک” از صدا به شبکه وارد میشود. و با حرکت پنجره، همان قطعه صوت توسط هر یک از سلولهای عصبی با مجموعه وزنهای مختلف پردازش میشود. بر این اساس که قطعه صوت در کجای پنجره قرار دارد. این موضوع را میتوان با یک نمایش سریع درک کرد:
به یک معنا، این کاملاً شبیه به آن چیزی است که شبکههای عصبی کانولوشنی (CNN) انجام میدهند. یعنی به جای نگاه کردن به کل ورودی به صورت یکجا، هر واحد، فقط به یک زیر مجموعه ورودی در هر زمان نگاه میکند. و محاسبه یکسانی را برای هر زیرمجموعه کوچک انجام میدهد.
تفاوت اصلی در اینجا این است که در CNN، هیچ تصوری از زمان وجود ندارد؛ “پنجره” ورودی برای هر نورون، همیشه در کل تصویر ورودی برای محاسبه نتیجه حرکت داده میشود. در حالی که در TDNN در واقع دنبالهای از دادههای ورودی و خروجی وجود دارد.
یک حقیقت جالب: به گفته هینتون، ایده TDNNها، الهامبخش لکان برای توسعه شبکههای عصبی کانولوشنی است. اما نکته جالب اینجاست که در حالی که CNNها برای پردازش تصویر ضروری بودند، در تشخیص گفتار، رویکردی بهتر از TDNNها مورد استفاده قرار گرفت: شبکههای عصبی بازگشتی (recurrent neural nets یا RNNs).
ببینید، تمام شبکههایی که تاکنون مورد بحث قرار گرفتهاند، شبکههای پیشخور (feedforward) بودهاند. بدین معنا که خروجی نورونها در یک لایه مشخص، فقط به عنوان ورودی نورونهای لایه بعدی عمل میکند. اما، لازم نیست که چنین باشد. هیچ چیز نمیتواند ما دانشمندان شجاع کامپیوتر را از اتصال خروجی آخرین لایه به عنوان ورودی به لایه اول یا اتصال خروجی نورون به خودش منع کند! با بازگرداندن خروجی شبکه به خود شبکه به شکل یک حلقه، مشکل حافظه دار کردن شبکه نسبت به ورودیهای گذشته، بسیار زیبا حل میشود!
خب، این چندان ساده نیست. به مسئله دقت کنید: اگر انتشار رو به عقب، متکی به “انتشار” خطا از لایه خروجی به سمت عقب است. اگر لایه اول به لایه خروجی متصل باشد، سیستم چگونه کار میکند؟ این خطا به سمت جلو میرود و از لایه اول به لایه خروجی منتقل میشود و فقط در شبکه به طور نامحدود دور میخورد.
راه حلی که به طور مستقل توسط چندین گروه به دست آمد، انتشار رو به عقب در طول زمان (backpropagation through time) است.
اساساً، ایده اصلی این است: باز کردن شبکه عصبی بازگشتی بدینصورت که هر حلقه (دور) در شبکه عصبی به عنوان ورودی به شبکه عصبی دیگر تلقی شود و دور زدن فقط به تعداد محدود انجام شود.
این ایده نسبتاً ساده، واقعا جواب داد. امکان آموزش شبکههای عصبی بازگشتی وجود داشت. و در واقع، چندین نفر کاربرد RNNها را در تشخیص گفتار مورد بررسی قرار دادند. اما، اینجا یک نکته وجود دارد که اکنون باید بتوانید آن را پیشبینی کنید: این رویکرد چندان خوب عمل نکرد.
برای پی بردن به علت آن، بیایید با یکی دیگر از غولهای مدرن یادگیری عمیق آشنا شویم: یوشوا بنگیو (Yoshua Bengio). او با شروع فعالیت در زمینه تشخیص گفتار با شبکههای عصبی در حدود سال 1986، مقالههای زیادی پیرامون استفاده از شبکههای عصبی مصنوعی و بازگشتی، برای تشخیص گفتار نوشت. و در آزمایشگاه Bell AT&T در مورد این مشکل کار کرد؛ درست همان زمانی که یان لکان در آنجا بر روی CNNها کار میکرد.
در واقع، آنها در سال 1995 یک مقاله خلاصه با عنوان “شبکههای کانولوشنی برای تصاویر، گفتار و سریهای زمانی” (Convolutional Networks for Images, Speech, and Time-Series) نوشتند. این اولین همکاری بین آنها بود. اما، قبل از آن، بنگیو در سال 1993 مقالهای با عنوان “یک رویکرد ارتباطی برای تشخیص گفتار” (A Connectionist Approach to Speech Recognition) نوشت. در اینجا، او شکست کلی در آموزش موثر RNNها را بدین شکل خلاصه کرده است:
“اگرچه شبکههای بازگشتی میتوانند در بسیاری موارد از شبکههای ایستا بهتر عمل کنند، اما به نظر میرسد که آموزش بهینه آنها دشوارتر است. آزمایشهای ما نشان میدهد که پارامترهای آنها در یک راه حل غیر مطلوب قرار میگیرد که وابستگیهای کوتاه مدت را در نظر میگیرد اما وابستگیهای بلند مدت را در نظر نمیگیرد. به عنوان مثال در آزمایشات توصیف شده در (ctation) ما متوجه شدیم که محدودیتهای ساده مدت زمان در واجها، به هیچ وجه توسط شبکه بازگشتی ضبط نشده است.
اگرچه این یک نتیجه منفی است، اما درک بهتر این مشکل میتواند در طراحی سیستمهای جایگزین برای یادگیری نگاشت دنبالههای ورودی به دنبالههای خروجی با وابستگیهای طولانی مدت کمک کند؛ مثلاً برای یادگیری ماشینهای حالت محدود (finite state machines)، گرامرها و سایر کارهای مرتبط با زبان.
از آنجا که روشهای مبتنی بر گرادیان برای این نوع مشکلات ناکافی به نظر میرسند، ما میخواهیم روشهای بهینهسازی جایگزین را در نظر بگیریم که نتایج قابل قبولی را ارائه میدهند، حتی اگر تابع معیار، هموار (smooth) نباشد.”
شبکههای عصبی شروع به حرف زدن میکنند
صحبت از بنگیو شد. مشارکتهای وی در رابطه با شبکههای عصبی بسیار فراتر از کار با CNNها و RNNها است. این تاریخچه، به طور خاص، بدون پوشش مقاله اصلی او در سال 2003 با عنوان “یک مدل احتمالاتی عصبی زبان” (A Neural Probabilistic Language Model) کامل نخواهد شد.
همانطور که از عنوان آن مشخص است، این کار مربوط به استفاده از شبکههای عصبی برای مدلسازی زبان بود. یک کار اساسی در زمینه پردازش زبان طبیعی، که به پیشبینی کلمات بعدی با مشاهده کلمات قبلی میانجامید (در اصل همان تکمیل خودکار).
این کار برای مدت طولانی با برخی رویکردهای کلاسیک مورد مطالعه قرار گرفته است. نظیر شمارش تعداد تک تک کلمات و ترکیبهای مختلف کلمات در یکبخش از متن (که با عنوان n-grams شناخته میشوند) و سپس استفاده از این شمارش برای تخمین احتمال اینکه کلمه بعدی چه کلمهای است:
در حالی که این رویکرد بسیار موفقیت آمیز بود، اما ذاتاً نیز محدود بود. زیرا برای پیشبینی محل قرارگیری یک کلمه، نیاز به دیدن کلمه یا ترکیبی از کلمات داشت. و زبان انسان دارای تعداد زیادی کلمه است که دارای ترکیباتی هستند که تعدادشان بصورت تصاعدی افزایش مییابد.
در مقابل، ما انسانها نه تنها زبان را از منظر آنچه دیدهایم استدلال میکنیم، بلکه در مورد معنای هر کلمهای که میدانیم هم برداشت میکنیم. اگر ما فقط جمله “من یک سگ خانگی دارم” را دیدهایم و سپس یاد گرفتهایم که کلمهای مانند “گربه” وجود دارد که یک حیوان خانگی رایج نیز هست، مشکلی نداریم. که جمله “من یک گربه خانگی دارم”را به عنوان چیزی که به احتمال زیاد یک نفر میگوید، تصور کنیم.
بنابراین، چگونه میتوانیم به رایانهها بفهمانیم که کلمات متفاوت، چقدر شبیه به هم هستند؟ از این گذشته، معنای کلمات کاملاً ظریف است، و بنابراین کارهایی ساده مانند مقایسه تعاریف کلمات از نظر کلمات موجود در آنها، به احتمال زیاد خوب عمل نمیکند. به نظر میرسد که ظرافت معنایی کلمات را میتوان در قالبی ثبت کرد که به راحتی امکان ارزیابی شباهت را نیز فراهم کند: لیستی از اعداد.
همانطور که هر نقطه (x,y) در یک فضای دو بعدی، دارای فاصله مشخصی از هر نقطه دیگر در آن فضا است، به همین ترتیب هر نقطه در یک فضای 100 بعدی دارای فاصله از سایر نقاط است و میتوان گفت نقاط نزدیکتر، مشابهت بیشتر و نقاط دورتر، مشابهت کمتری دارند. بنابراین، اگر بتوانیم هر کلمه را به نقطهای مناسب در یک فضای چندبعدی نگاشت کنیم، به گونهای که کلمات مشابه در نقاط نزدیک به هم نگاشته شوند، برای مدلسازی زبان بسیار مفید خواهد بود.
هینریش شوتز (Hinrich Schütze)، این ایده را در مقالههای خود با عنوان “فضای کلمه” (Word Space) در سال 1993 معرفی کرد. او در این مقالات، نحوه محاسبه “بردارهای کلمه” (Word Vectors) را با پردازش ماتریسی بر روی تعداد همزمانی عبارات (phrase co-occurences) نشان داد و در نتیجه، میتوانست مشابهترین کلمات را برای هر کلمه مورد پرسش پیدا کند:
بنابراین، شبکههای عصبی از کجا وارد این تصویر میشوند؟ خب، راههای زیادی برای بدست آوردن بردارهای کلمه وجود دارد، و رویکرد مقاله فوق فقط یکی از آنها بود. چه میشود اگر در عوض، از بردارهای کلمه به عنوان ورودی یک شبکه عصبی که برای مدلسازی صحیح زبان بهینه شده است استفاده کنید؟
و سپس هر دو بردار مرتبط با کلمه و توانایی شبکه عصبی کل برای انجام صحیح مدلسازی زبان را میتوان به طور مشترک با استفاده از انتشار رو به عقب از تابع خطای مناسب بهینه کرد. و اینجاست که ما به یک مدل احتمالاتی عصبی زبان (A Neural Probabilistic Language Model) باز میگردیم، زیرا این همان چیزی است که مقاله اساسا توصیف میکند.
این کار در حال حاضر بسیار مورد استناد است، اما مانند سایر مواردی که در بالا مشاهده کردهایم، مدتی طول کشید تا مفید بودن بردار کلمه و شبکههای عصبی برای مدلسازی زبان مورد توجه قرار گیرد. و بعداً خواهیم دید چرا …
زمستانی جدید آغاز میشود
برگردیم به دهه 90: یک مشکل وجود داشت. یک مشکل بزرگ. و این مشکل، اساساً چیزی بود که اخیراً پیشرفت بزرگی به حساب میآمد: انتشار رو به عقب (backpropagation).
ببینید، شبکههای عصبی کانولوشنی تا حدی مهم بودند؛ زیرا انتشار رو به عقب، برای شبکههای عصبی معمولی با لایههای زیاد، خوب عمل نمیکرد. و این کلید اصلی یادگیری عمیق است: داشتن لایههای زیاد، در سیستمهای امروزی تا 20 لایه یا بیشتر. اما در اواخر دهه 1980، مشخص شد که شبکههای عصبی عمیق که با انتشار رو به عقب آموزش دیدهاند، خیلی خوب کار نمیکنند و به طور خاص، به خوبی شبکههایی با لایههای کمتر کار نمیکنند.
دلیل آن، از نظر اصولی، این است که انتشار رو به عقب، متکی بر یافتن خطا در لایه خروجی و تقسیم پی در پی تقصیر آن بر روی لایههای قبلی است. خب، با وجود لایههای زیاد، این تقسیم تقصیر مبتنی بر محاسبات، با اعداد بزرگ یا کوچک به پایان میرسد و شبکه عصبی حاصله به خوبی کار نمیکند؛ یعنی “مشکل گرادیان محوشونده یا منفجرشونده“.
هم رویش منتشر کرده است:
آموزش ساخت شبکه عصبی با پایتون (و دیگر زبانها) از صفر
یورگن اشمیدوبر (Jurgen Schmidhuber)، یکی دیگر از دانشمندان یادگیری عمیق، توضیحات رسمیتر را به خوبی و بصورت خلاصه، اینچنین بیان میکند:
“یک پایان نامه دیپلم (هوکرایتر، 1991) نشانگر نقطه عطفی در تحقیقات صریح یادگیری عمیق بود. همانطور که دربخش 5.6 ذکر شد، در اواخر دهه 1980، آزمایشها نشان داده بود که آموزش شبکههای سنتی عمیق پیشخور یا بازگشتی، با انتشار رو به عقب (BP) دشوار است (بخش 5.5).
کارهای هوکرایتر (Hochreiter) رسما دلیل اصلی را شناسایی کرد: شبکههای عصبی عمیق متداول، از یک مشکل معروف به نام گرادیان محوشونده یا منفجرشونده رنج میبرند.
با توابع فعالسازی استاندارد (بخش 1)، سیگنالهای تجمعی خطای منتشرشده رو به عقب (بخش 5.5.1) یا به سرعت کوچک میشوند یا خارج از محدوده رشد میکنند. در واقع، آنها به صورت تصاعدی از نظر تعداد لایهها یا عمق CAP (بخش 3) محو میشوند، یا منفجر میشوند.”
انتشار رو به عقب در طول زمان، اساساً معادل یک شبکه عصبی با لایههای بسیار زیاد است. بنابراین آموزش شبکههای عصبی بازگشتی با انتشار رو به عقب بسیار مشکل بود. هوکرایتر به توصیه اشمیدوبر، و یوشوا بنگیو، هر دو مقالاتی در مورد ناتوانی یادگیری اطلاعات طولانی مدت به دلیل محدودیتهای انتشار رو به عقب منتشر کردند.
تحلیل این مشکل، یک راه حل را آشکار کرد. اشمیدوبر و هوکرایتر در سال 1997 یک مفهوم بسیار مهم را مطرح کردند که اساسا مشکل نحوه آموزش شبکههای عصبی بازگشتی را حل میکرد، همانطور که CNNها برای شبکههای عصبی پیشخور این کار را انجام دادند: حافظه طولانی کوتاه مدت (Long Short Term Memory یا LSTM).
به عبارت ساده، همانند شبکههای عصبی کانولوشنی، دستیابی به پیشرفت LSTM به یک تغییر کوچک در مدل شبکه عصبی معمولی تبدیل شد:
“ایده اصلی LSTM بسیار ساده است. برخی از واحدها، چرخ فلک خطای ثابت (Constant Error Carousel یا CEC) نامیده میشوند. هر CEC به عنوان یک تابع فعالسازی f، از تابع همانی استفاده میکند و با وزن ثابت 1/0 به خود اتصال دارد. با توجه به مشتق تابع f که برابر با عدد ثابت 1 است، خطاهای منتشر شده به عقب از طریق CEC، نمیتوانند محو یا منفجر شوند (بخش 5.9). بلکه همانطور که هستند میمانند (مگر اینکه آنها از CEC به سایربخش های شبکه عصبی، معمولابخش های تطبیقی آن، جریان پیدا کنند).
این CECها به چندین واحد تطبیقی غیر خطی (برخی با توابع فعالسازی ضربی) مورد نیاز برای یادگیری رفتار غیر خطی متصل هستند. تغییرات وزن این واحدها غالباً از سیگنالهای خطا که در زمانهای گذشته از طریق CEC منتشر شدهاند، ناشی میشود.
CECها دلیل اصلی این موضوع هستند که چرا شبکههای LSTM میتوانند اهمیت رویدادهایی که هزاران گام قبل رخ داده است را کشف کنند (و به خاطر بسپارند)، در حالی که RNNهای قبلی در حداقل تاخیر زمانی 10 گامی شکست خوردهاند.”
اما، این راه حل، برای رفع مشکل بزرگتر ادراک، با توجه به اینکه شبکههای عصبی بیکیفیت بودند و خیلی خوب کار نمیکردند، کم بود. کار با آنها به نظر خیلی پرزحمت بود؛ کامپیوترها به اندازه کافی سریع نبودند، الگوریتمها به اندازه کافی هوشمند نبودند و مردم خوشحال نبودند. بنابراین، در اواسط دهه 90، یک زمستان هوش مصنوعی جدید برای شبکههای عصبی شروع به ظهور کرد و جامعه بار دیگر ایمان خود را به آنها از دست داد.
یک روش جدید به نام ماشینهای بردار پشتیبان (Support Vector Machines)، که به زبان ساده میتوان آن را به عنوان یک روش بهینه ریاضیاتی برای آموزش، معادل یک شبکه عصبی دو لایه توصیف کرد، توسعه داده شد و به عنوان روشی برتر از روشهای سخت کار با شبکههای عصبی شناخته شد.
در حقیقت، لکان و همکارانش در مقاله منتشر شده در سال 1995 با عنوان “مقایسه الگوریتمهای یادگیری برای تشخیص رقم دست نویس” (Comparison of Learning Algorithms For Handwritten Digit Recognition) دریافتند که این رویکرد جدید، مشابه یا بهتر از همه شبکههای عصبی با بهترین طراحی عمل میکند:
“دستهبندی کننده [ماشین بردار پشتیبان] دقتی عالی دارد، که بسیار قابل توجه است، زیرا برخلاف سایر دستهبندی کنندهها با کارایی بالا، به دانش قبلی از مسئله نیاز ندارد.
در واقع، اگر پیکسلهای تصویر توسط یک نگاشت ثابت جایگزین شوند، این دستهبندی کننده همچنان خوب عمل میکند. البته هنوز نسبت به شبکههای کانولوشنی، بسیار کندتر و تشنه حافظه است. با این حال، هنوز جای پیشرفت دارد چون یک تکنیک نسبتاً جدید است.”
همچنین اثبات شد که سایر روشهای جدید، از جمله روش جنگلهای تصادفی، بسیار مؤثر بوده و از تئوریهای ریاضیاتی دوست داشتنی پیروی میکنند.
بنابراین، علیرغم این واقعیت که CNNها از عملکرد به روز و بالایی برخوردار بودند، اشتیاق به شبکههای عصبی از بین رفت و جامعه یادگیری ماشین بار دیگر آنها را نفی کرد. زمستان برگشته بود.
اما نگران نباشید، بعداً خواهیم دید که چگونه گروه کوچکی از محققان در این شرایط تحقیقاتی استقامت کردند و در نهایت یادگیری عمیق را به آنچه امروز هست رساندند.
“از هر کس در حوزه یادگیری ماشین بپرسید که چه چیزی تحقیقات شبکه عصبی را زنده نگه داشت، احتمالاً یکی از این سه نام یا هر سه را خواهید شنید: جفری هینتون، یوشوا بنگیو کانادایی و یان لکان از فیس بوک و دانشگاه نیویورک.”
+ پیش از این آموزش اجرای پروژه یادگیری ماشین با پایتون در همرویش منتشر شد. برای دیدن فیلم معرفی این آموزش بر روی این لینک (+) و یا پخش کننده زیر کلیک کنید:
دریافت این بسته آموزشی در لینک زیر:
آموزش اجرای یک پروژه یادگیری ماشین با پایتون
کلیدواژگان
شبکه های عصبی چیست – شبکه های عصبی – شبکه عصبی – شبکه عصبی چیست – شبکه های عصبی عمیق چیست – شبکه های عصبی فازی چیست – شبکه های عصبی بازگشتی چیست – یادگیری تقویتی – یادگیری تقویتی چیست – یادگیری تقویتی عمیق – مقاله یادگیری تقویتی – شبکه عصبی بازگشتی – تاریخچه شبکه عصبی کانولوشن – مقاله شبکه عصبی مصنوعی – تحقیق در مورد شبکه های عصبی – تاریخچه شبکه عصبی – تاریخچه یادگیری ماشین – تاریخچه یادگیری عمیق – مفاهیم یادگیری ماشین – تاریخچه یادگیری ماشینی – مقدمه یادگیری ماشین – الگوریتم یادگیری ماشین
منبع
دوره های آموزشی مرتبط
- آموزش بینایی کامپیوتر با پایتون و OpenCV ___ بسته جامع ۲۹۸,۰۰۰ تومان
- آموزش یادگیری ماشین از صفر --- یادگیری سریع و آسان ۶۸,۰۰۰ تومان