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

    N+1، همراه با MIPT، همچنان خواننده را با برجسته ترین جنبه های تحقیقات مدرن در زمینه هوش مصنوعی آشنا می کند. در ما نوشتیم اصول کلییادگیری ماشین و به طور خاص در مورد روش پس انتشار برای آموزش شبکه های عصبی. امروز گفتگوی ما والنتین مالیخ، محقق جوان در آزمایشگاه سیستم های عصبی و یادگیری عمیق است. همراه با او، ما در مورد یک کلاس غیر معمول از این سیستم ها صحبت خواهیم کرد - شبکه های عصبی مکرر، ویژگی ها و چشم اندازهای آنها، هم در زمینه انواع سرگرمی به سبک DeepDream و هم در مناطق "مفید". برو

    شبکه های عصبی بازگشتی (RNN) چیست و چه تفاوتی با شبکه های معمولی دارد؟

    بیایید ابتدا به یاد بیاوریم که شبکه های عصبی "معمولی" چیست و سپس بلافاصله مشخص می شود که تفاوت آنها با شبکه های تکراری چیست. ساده ترین شبکه عصبی - پرسپترون را تصور کنید. این یک لایه واحد از نورون ها است که هر یک از آنها یک قطعه داده ورودی (یک یا چند بیت، اعداد واقعی، پیکسل ها و غیره) را می گیرد، آن را با توجه به وزن خود تغییر می دهد و آن را ارسال می کند. در یک پرسپترون تک لایه، خروجی همه نورون ها به یک شکل ترکیب می شود و شبکه عصبی پاسخ می دهد، اما امکانات چنین معماری بسیار محدود است. اگر می‌خواهید قابلیت‌های پیشرفته‌تری داشته باشید، می‌توانید از راه‌های مختلفی پیش بروید، به عنوان مثال، تعداد لایه‌ها را افزایش دهید و یک عملیات کانولوشن اضافه کنید که داده‌های دریافتی را به قطعاتی در مقیاس‌های مختلف «طبقه‌بندی» می‌کند. در این مورد، شما به شبکه های کانولوشنال یادگیری عمیقی خواهید رسید که در پردازش تصویر و تشخیص گربه عالی هستند. با این حال، هر دو یک پرسپترون اولیه و یک شبکه عصبی کانولوشن دارای یک محدودیت مشترک هستند: هر دو داده ورودی و خروجی دارای یک اندازه ثابت و از پیش تعیین شده هستند، برای مثال، یک تصویر 100 × 100 پیکسل یا یک دنباله 256 بیتی. از نقطه نظر ریاضی، شبکه عصبی مانند یک تابع منظم، البته بسیار پیچیده عمل می کند: دارای تعداد آرگومان های از پیش تعیین شده، و همچنین فرمت تعیین شده ای است که در آن پاسخ تولید می کند. یک مثال ساده تابع x 2 است که یک آرگومان می گیرد و یک مقدار تولید می کند.

    وقتی صحبت از همان تصاویر یا توالی کاراکترهای از پیش تعریف شده می شود، ویژگی های فوق چندان دشوار نیستند. اما اگر بخواهید از یک شبکه عصبی برای پردازش متن یا موسیقی استفاده کنید، چه؟ در حالت کلی - هر توالی نامحدود مشروط که در آن نه تنها محتوا مهم است، بلکه ترتیبی که اطلاعات به دنبال دارد نیز مهم است. برای این وظایف، شبکه های عصبی تکراری اختراع شدند. متضادهای آنها، که ما آنها را "معمولی" نامیدیم، نام دقیق تری دارند - شبکه های عصبی پیشخور، زیرا در آنها اطلاعات فقط از طریق شبکه، از لایه ای به لایه دیگر، به جلو منتقل می شود. در شبکه‌های عصبی مکرر، نورون‌ها اطلاعات را با یکدیگر مبادله می‌کنند: به عنوان مثال، نورون علاوه بر یک قطعه جدید از داده‌های ورودی، اطلاعاتی در مورد وضعیت قبلی شبکه نیز دریافت می‌کند. بنابراین ، "حافظه" در شبکه پیاده سازی می شود که اساساً ماهیت کار خود را تغییر می دهد و به شما امکان می دهد هر توالی داده را تجزیه و تحلیل کنید که در آن مهم است که مقادیر به چه ترتیبی وارد شوند - از ضبط صدا تا قیمت سهام

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

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

    بیایید کمی به تاریخ بپردازیم: چه زمانی RNN ها اختراع شدند، برای چه وظایفی و همانطور که در آن زمان به نظر می رسید، مزیت آنها نسبت به یک پرسپترون معمولی باید چه باشد؟

    احتمالاً اولین RNN شبکه هاپفیلد بود (اولین بار در سال 1974 ذکر شد، سرانجام در سال 1982 شکل گرفت)، که در عمل یک سلول حافظه انجمنی را پیاده سازی کرد. تفاوت آن با RNN های مدرن در این است که با توالی هایی با اندازه ثابت کار می کند. در ساده ترین حالت، شبکه هاپفیلد دارای یک لایه از نورون های داخلی است که به یکدیگر متصل هستند و هر اتصال با وزن خاصی مشخص می شود که اهمیت آن را تعیین می کند. در ارتباط با چنین شبکه ای مقداری معادل "انرژی" فیزیکی است که به تمام وزن های موجود در سیستم بستگی دارد. با استفاده از شبکه می توان آموزش داد شیب نزولدر انرژی، زمانی که حداقل با حالتی مطابقت دارد که در آن شبکه یک الگوی خاص را به یاد می آورد 10101 . حال، اگر یک الگوی تحریف شده، پر سر و صدا یا ناقص به ورودی آن وارد شود، بگویید: 10000 ، او "به خاطر می آورد" و آن را به همان روشی که کار می کند بازیابی می کند حافظه انجمنیدر یک فرد این قیاس بسیار دور است، بنابراین آن را خیلی جدی نگیرید. با این وجود، شبکه‌های هاپفیلد با موفقیت از عهده وظیفه خود برآمدند و از نظر قابلیت‌ها، پرسپترون‌های موجود را دور زدند. جالب توجه است که انتشار اصلی جان هاپفیلد در مجموعه مقالات آکادمی ملی علوممنتشر شده در بخش "بیوفیزیک".


    مشکل حافظه بلندمدت در RNN های ساده: هر چه چرخه های بیشتری از دریافت این یا آن اطلاعات بگذرد، احتمال اینکه اهمیت این داده ها نقش زیادی در چرخه جدید کار نداشته باشد، بیشتر می شود.

    کریستوفر اولا / colah.github.io

    گام بعدی در تکامل RNN ها، «شبکه تکراری ساده» جف المان بود که در سال 1990 توصیف شد. در آن، نویسنده به طور مفصل به این سؤال پرداخت که چگونه ممکن است (و آیا اصلاً ممکن است) یک شبکه عصبی را برای تشخیص توالی های زمانی آموزش دهیم. به عنوان مثال، اگر ورودی وجود داشته باشد 1100 و 0110 ، آیا می توان آنها را همان مجموعه جابجا شده در زمان در نظر گرفت؟ البته، شما می توانید، اما چگونه یک شبکه عصبی را برای انجام این کار آموزش دهیم؟ یک پرسپترون معمولی به راحتی این الگو را برای هر نمونه ای که به آن ارائه می شود به خاطر می آورد، اما هر بار وظیفه مقایسه دو سیگنال مختلف خواهد بود، نه وظیفه تکامل یا جابجایی یک سیگنال. راه‌حل المان، بر اساس پیشرفت‌های قبلی در این زمینه، بر این واقعیت استوار بود که یک لایه «زمینه‌ای» دیگر به یک شبکه عصبی ساده اضافه شد، که در آن وضعیت لایه داخلی نورون‌ها به سادگی در هر چرخه شبکه کپی می‌شد. در همان زمان، ارتباط بین زمینه و لایه های داخلی می تواند آموزش داده شود. چنین معماری، بازتولید سری‌های زمانی و همچنین پردازش توالی‌هایی با طول دلخواه را نسبتاً آسان کرد، که به‌شدت RNN ساده المان را از مفاهیم قبلی متمایز کرد. علاوه بر این، این شبکه فقط بر اساس ترتیب کلمات قادر به تشخیص و حتی طبقه بندی اسامی و افعال در یک جمله بود که برای زمان خود یک پیشرفت واقعی بود و علاقه زیادی را در بین زبان شناسان و محققان آگاهی برانگیخت.

    RNN ساده المان با پیشرفت های بیشتر و بیشتری دنبال شد و در سال 1997 هوکرایتر و اشمیدهابر مقاله حافظه کوتاه مدت بلند مدت (تغییرهای ترجمه دیگری نیز وجود دارد) را منتشر کردند که پایه و اساس اکثر RNN های مدرن را پایه گذاری کرد. نویسندگان در کار خود اصلاحاتی را توصیف کردند که مشکل حافظه بلندمدت RNN های ساده را حل کرد: نورون های آنها اخیراً اطلاعات را به خوبی "به یاد می آورند"، اما قادر به ذخیره دائم چیزی در حافظه نیستند که چرخه های زیادی پیش پردازش شده است. مهم نیست که این اطلاعات چقدر مهم است. در شبکه های LSTM، نورون های داخلی "تجهیز شده اند" سیستم پیچیدهبه اصطلاح دروازه ها (دروازه ها) و همچنین مفهوم حالت سلولی (حالت سلولی) که نوعی حافظه بلند مدت است. از سوی دیگر، گیتس تعیین می کند که چه اطلاعاتی وارد حالت سلولی می شود، چه چیزی از آن پاک می شود و چه چیزی بر نتیجه ای که RNN در این مرحله می دهد تأثیر می گذارد. ما LSTM را با جزئیات تجزیه و تحلیل نخواهیم کرد، اما توجه داشته باشید که این تغییرات RNN هستند که اکنون به طور گسترده استفاده می‌شوند، به عنوان مثال، برای ترجمه ماشینی Google.


    اصل عملکرد RNN نوع LSTM: نورون های لایه های داخلی می توانند وضعیت سلول (حالت سلول) را بخوانند و تغییر دهند که عملکردهای حافظه کوتاه مدت و بلند مدت را ترکیب می کند.

    کریستوفر اولا / colah.github.io

    همه چیز در کلمات عالی به نظر می رسد، اما به هر حال RNS چه کاری می تواند انجام دهد؟ در اینجا آنها متنی به آنها دادند که بخوانند یا به موسیقی گوش دهند - و بعد چه؟

    یکی از زمینه های اصلی کاربرد RNN امروزه کار با مدل های زبان، به ویژه، تجزیه و تحلیل زمینه و ارتباط کلی کلمات در متن است. برای RNN ها، ساختار زبان اطلاعات بلندمدتی است که باید به خاطر بسپارید. این شامل دستور زبان و همچنین ویژگی های سبکی مجموعه متون است که آموزش بر روی آنها انجام می شود. در واقع، RNN ترتیبی که کلمات معمولاً دنبال می‌شوند را به خاطر می‌آورد و می‌تواند جمله را با دریافت مقداری دانه کامل کند. اگر این seed تصادفی باشد، می‌تواند به یک متن کاملاً بی‌معنی منجر شود که از نظر سبکی یادآور الگوی است که RNS روی آن آموخته است. اگر متن اصلی معنادار بود، RNN به استایل دادن به آن کمک می‌کند، اما در مورد دوم، یک RNN کافی نخواهد بود، زیرا نتیجه باید «مخلوطی» از متن تصادفی، اما سبک از RNN و یک متن معنادار باشد. اما بخش اصلی "بدون رنگ". این کار در حال حاضر به قدری یادآور مونه و ون گوگ است، که اکنون برای پردازش عکس ها محبوب هستند، که قیاسی بی اختیار خود را نشان می دهد.

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

    در نهایت، بیایید ببینیم که چرا موسیقی RNS حداقل نوشته شده است، اما در متون کامل تولستوی و داستایوفسکی مشکلاتی وجود دارد؟ واقعیت این است که در موسیقی دستگاهی، هر چقدر هم که وحشیانه به نظر برسد، وجود ندارد معنیبه همان معنایی که در اکثر متون وجود دارد. یعنی ممکن است موسیقی مورد پسند واقع شود یا نباشد، اما اگر کلمه ای در آن نباشد، بار اطلاعاتی ندارد (البته اگر رمز مخفی نباشد). RNS با معنی دادن به آثار آنها مشکل دارد: آنها می توانند گرامر زبان را به خوبی یاد بگیرند و به یاد بیاورند که چگونه باید شبیه بودن بهمتن در سبک خاصی است، اما RNS (هنوز) نمی تواند ایده یا اطلاعاتی را ایجاد و انتقال دهد.


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

    دنیل جانسون / hexahedria.com

    مورد خاص در این مورد نوشتن خودکار کد برنامه است. در واقع، از آنجایی که یک زبان برنامه نویسی، طبق تعریف، چنین است زبان، RNS می تواند آن را یاد بگیرد. در عمل، معلوم می شود که برنامه های نوشته شده توسط RNN ها با موفقیت کامپایل و اجرا می شوند، اما هیچ کار مفیدی انجام نمی دهند مگر اینکه از قبل وظیفه ای به آنها داده شود. و دلیل این امر همان است که در مورد متون ادبی وجود دارد: برای RNN ها، یک زبان برنامه نویسی چیزی بیش از یک سبک سازی نیست، که متأسفانه نمی توانند معنایی در آن بیاورند.

    "نسل دلیریوم" خنده دار است، اما بی معنی است، اما RNN ها برای چه کارهای واقعی استفاده می شوند؟

    البته RNS علاوه بر سرگرمی، باید اهداف عملگرایانه تری را نیز دنبال کند. به طور خودکار از طراحی آنها نتیجه می گیرد که حوزه های اصلی کاربرد آنها باید به زمینه و/یا وابستگی زمانی در داده ها نیاز داشته باشد که اساساً یکسان هستند. بنابراین، از RNN ها، به عنوان مثال، برای تجزیه و تحلیل تصویر استفاده می شود. به نظر می رسد که این منطقه معمولاً در زمینه شبکه های عصبی کانولوشنال درک می شود، با این حال، وظایفی در اینجا برای RNN ها وجود دارد: معماری آنها به شما امکان می دهد جزئیات را بر اساس زمینه و محیط به سرعت تشخیص دهید. به طور مشابه، RNN ها در حوزه های تحلیل و تولید متن کار می کنند. کارهای غیرعادی تر شامل تلاش برای استفاده از RNS اولیه برای طبقه بندی طیف کربن رزونانس مغناطیسی هسته ای مشتقات مختلف بنزن، و از نمونه های مدرن - تجزیه و تحلیل ظاهر بررسی های منفی محصول است.

    و موفقیت RNS در ترجمه ماشینی چیست؟ آیا از آنها در مترجم گوگل استفاده می شود؟

    در حال حاضر، گوگل از RNN های نوع LSTM برای ترجمه ماشینی استفاده می کند، که دستیابی به بالاترین دقت را در مقایسه با آنالوگ های موجود ممکن می سازد، با این حال، به گفته خود نویسندگان، ترجمه ماشینی هنوز با سطح انسانی بسیار فاصله دارد. مشکلاتی که شبکه های عصبی در کارهای ترجمه با آن مواجه هستند به چند عامل در آن واحد مربوط می شود: اول اینکه در هر کاری تبادلی اجتناب ناپذیر بین کیفیت و سرعت وجود دارد. در حال حاضر فرد در این شاخص بسیار جلوتر از هوش مصنوعی است. از آنجایی که ترجمه ماشینی اغلب در خدمات آنلاین استفاده می شود، توسعه دهندگان مجبور هستند دقت را فدای سرعت کنند. در پست اخیر گوگل در مورد این موضوع، توسعه دهندگان به طور مفصل بسیاری از راه حل هایی را که امکان بهینه سازی جریان فعلی را ممکن ساخته است، شرح می دهند. نسخه گوگلترجمه کنید، اما مشکل همچنان پابرجاست. به عنوان مثال، کلمات نادر، یا عامیانه، یا تحریف عمدی یک کلمه (مثلاً برای عنوان روشن تر) می تواند حتی یک مترجم انسانی را گیج کند، که باید برای یافتن مناسب ترین آنالوگ در زبان دیگر وقت بگذارد. چنین وضعیتی ماشین را در یک بن بست کامل قرار می دهد و مترجم مجبور می شود "دور بیاندازد" واژه مرکبو آن را بدون ترجمه رها کنید. در نتیجه، مشکل ترجمه ماشینی چندان مبتنی بر معماری نیست (RNS با آن به خوبی عمل می کند کارهای روتیندر این زمینه)، تا آنجا که پیچیدگی و تنوع زبان است. خبر خوب این است که این مشکل بیشتر فنی است تا نوشتن متون معنادار، که احتمالاً به یک رویکرد کاملاً جدید نیاز دارد.


    اصل کار دستگاه مترجم گوگلترجمه، بر اساس ترکیبی از چندین شبکه عصبی بازگشتی.

    research.googleblog.com / Google

    آیا راه های غیرعادی تری برای استفاده از RNS وجود دارد؟ اینجا یک ماشین تورینگ عصبی است، برای مثال، ایده اینجا چیست؟

    ماشین تورینگ عصبی که دو سال پیش توسط تیم Google DeepMind پیشنهاد شد، با دیگر RNN‌ها تفاوت دارد، زیرا این ماشین‌ها در واقع اطلاعات را به‌صراحت ذخیره نمی‌کنند - این ماشین در وزن‌های نورون و اتصالات رمزگذاری می‌شود، حتی در انواع پیشرفته‌ای مانند LSTM. در ماشین عصبی تورینگ، توسعه دهندگان به ایده قابل درک تر "نوار حافظه"، مانند ماشین تورینگ کلاسیک، پایبند بودند: در آن، اطلاعات به صراحت "روی نوار" نوشته می شود و در صورت لزوم می توان آنها را خواند. در همان زمان، ردیابی اطلاعات مورد نیاز بر روی یک کنترلر شبکه عصبی ویژه قرار می گیرد. به طور کلی می توان اشاره کرد که ایده NMT واقعاً با سادگی و در دسترس بودن برای درک آن مجذوب می شود. از سوی دیگر، به دلیل محدودیت های فنی سخت افزارهای مدرن، امکان اعمال HMT در عمل وجود ندارد، زیرا آموزش چنین شبکه ای فوق العاده طولانی می شود. از این نظر، RNNها یک پیوند میانی بین شبکه‌های عصبی ساده‌تر و NMT هستند، زیرا آنها «کست» خاصی از اطلاعات را ذخیره می‌کنند، که در عین حال، عملکرد آنها را محدود نمی‌کند.

    مفهوم توجه در رابطه با RNN چیست؟ چه کارهای جدیدی به شما اجازه می دهد انجام دهید؟


    مفهوم توجه راهی برای "گفتن" به شبکه است که هنگام پردازش داده ها توجه بیشتری را به چه چیزی اختصاص دهد. به عبارت دیگر، توجه در یک شبکه عصبی مکرر راهی برای افزایش اهمیت برخی از داده ها نسبت به سایرین است. از آنجایی که یک شخص نمی تواند هر بار نکاتی را ارائه دهد (این کار تمام مزایای RNN را خنثی می کند)، شبکه باید یاد بگیرد که خودش را تلقین کند. به طور کلی، مفهوم توجه ابزار بسیار قدرتمندی در کار با RNN ها است، زیرا به شما این امکان را می دهد که سریع و بهتر به شبکه بگویید که کدام داده ارزش توجه دارد و کدام یک نیست. همچنین، این رویکرد ممکن است در آینده مشکل عملکرد را در سیستم هایی با مقدار حافظه زیاد حل کند. برای درک بهتر نحوه عملکرد، باید دو مدل توجه را در نظر بگیریم: «نرم» (نرم) و «سخت» (سخت). در حالت اول، شبکه همچنان به تمام داده هایی که به آنها دسترسی دارد دسترسی خواهد داشت، اما اهمیت (یعنی وزن) این داده ها متفاوت خواهد بود. این باعث می شود RNN دقیق تر، اما نه سریع تر. در حالت دوم، از بین تمام داده های موجود، شبکه فقط به برخی دسترسی خواهد داشت (بقیه وزن صفر دارند)، که دو مشکل را همزمان حل می کند. نقطه ضعف مفهوم "سخت" توجه این واقعیت است که این مدل مستمر و در نتیجه قابل تمایز نیست، که کار آموزش آن را بسیار پیچیده می کند. با این حال راه حل هایی برای رفع این نقص وجود دارد. از آنجایی که مفهوم توجه در یکی دو سال اخیر به طور فعال توسعه یافته است، در آینده نزدیک باید منتظر اخباری از این حوزه باشیم.

    در نهایت، نمونه‌ای از سیستمی که از مفهوم توجه استفاده می‌کند، شبکه‌های حافظه پویا است که یک نوع پیشنهاد شده توسط بخش تحقیقاتی فیس‌بوک است. در آن، توسعه‌دهندگان یک «ماژول حافظه اپیزودیک» را توصیف می‌کنند که بر اساس حافظه رویدادهایی که به عنوان ورودی داده می‌شود، و همچنین سؤالی در مورد این رویدادها، «قسمت‌هایی» ایجاد می‌کند که در نهایت به شبکه کمک می‌کند پاسخ صحیح سؤال را پیدا کند. . . این معماری بر روی bAbI آزمایش شد، یک پایگاه داده بزرگ از وظایف تولید شده برای استنتاج منطقی ساده (به عنوان مثال، زنجیره ای از سه واقعیت ارائه شده است، شما باید پاسخ صحیح را بدهید: "مری در خانه است. او به حیاط رفت. مری کجاست؟ در حیاط.")، و نتایجی را نشان داد، برتر از معماری های کلاسیک مانند LSTM.

    در حال حاضر چه چیز دیگری در دنیای شبکه های عصبی مکرر اتفاق می افتد؟

    به گفته آندری کارپاتی، متخصص شبکه های عصبی و نویسنده یک وبلاگ عالی، "مفهوم توجه جالب ترین معماری اخیر در دنیای شبکه های عصبی است." با این حال، نه تنها توجه بر تحقیقات در زمینه RNS متمرکز شده است. اگر بخواهیم به طور خلاصه روند اصلی را فرموله کنیم، اکنون به ترکیبی از معماری های مختلف و استفاده از پیشرفت های سایر مناطق برای بهبود RNN تبدیل شده است. به عنوان مثال می‌توان به شبکه‌های عصبی قبلاً ذکر شده از Google اشاره کرد که از روش‌های برگرفته از کار یادگیری تقویتی، ماشین‌های عصبی تورینگ، الگوریتم‌های بهینه‌سازی مانند Normalization دسته‌ای و موارد دیگر استفاده می‌کنند - همه اینها با هم مستحق یک مقاله جداگانه است. به طور کلی، ما متذکر می شویم که اگرچه RNN ها به اندازه شبکه های عصبی کانولوشنال توجه عموم را به خود جلب نکرده اند، اما این تنها به دلیل این واقعیت است که اشیا و وظایفی که RNN ها با آنها کار می کنند به اندازه DeepDream یا Prisma قابل توجه نیستند. مثل داخل است در شبکه های اجتماعی- اگر پستی بدون عکس منتشر شود، هیجان کمتری در اطراف آن وجود خواهد داشت.

    پس همیشه با عکس پست کنید.


    تاراس مولوتیلین

    به یکی از انواع پیچیدهشبکه های عصبی مصنوعی (ANN) تکراری هستند که در آنها بازخورد وجود دارد. در اولین ANNهای مکرر، ایده اصلی یادگیری سیگنال خروجی در مرحله قبل بود. شبکه‌های مکرر مدل‌های غیرخطی را پیاده‌سازی می‌کنند که می‌توانند برای کنترل بهینه فرآیندهایی که در طول زمان تغییر می‌کنند، استفاده شوند، یعنی بازخورد امکان حافظه تطبیقی ​​رویدادهای زمانی گذشته را فراهم می‌کند. تعمیم شبکه های عصبی غیرخطی مکرر ایجاد ابزاری انعطاف پذیرتر برای ساخت مدل های غیرخطی را ممکن می سازد. برخی از معماری های ANN های مکرر را در نظر بگیرید.

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

    شبکه المان مانند شبکه جردن از پرسپترون چندلایه با معرفی بازخورد به دست می آید. فقط سیگنال‌های لایه ورودی از خروجی‌های شبکه نمی‌آیند، بلکه از خروجی‌های نورون‌های لایه پنهان می‌آیند. نمونه ای از معماری شبکه المان در شکل 1 نشان داده شده است. 1. خروجی های لایه پنهان { ج 1 , ج 2 ,…, c k} با تأخیر زمانی به نورون های ورودی با ضرایب وزنی تغذیه می شوند { w ij} -1 , جایی که من (من = 1,2,…, n) , j j = 1,2…, ک).

    برنج. 1. نمونه ای از معماری شبکه المان

    برای تعمیم ANNهای مکرر، این مقاله پیشنهاد می‌کند که یک تاخیر سیگنال‌های بازخورد لایه پنهان با چندین چرخه اضافه شود. برای این کار، حافظه پشته پویا را به لایه اضافه کنید. نمونه ای از معماری چنین ANN در شکل 1 نشان داده شده است. 2.

    برنج. 2. نمونه ای از معماری یک ANN بازگشتی با پویا پشته حافظهچندین خروجی لایه پنهان قبلی

    خروجی های لایه پنهان { ج 1 , ج 2 ,…, c k} به نورون های ورودی با ضرایب وزنی تغذیه می شود { w ij} - تی , جایی که من- شاخص نورونی که سیگنال به آن اعمال می شود (من = 1,2,…, n) , jشاخص سیگنال خروجی نورون لایه پنهان است ( j = 1,2…, ک) , تی- شاخص تاخیر زمانی (تی =1,2… متر). تعداد تأخیرهای زمانی از 1 تا متفاوت خواهد بود متر. بنابراین شبکه المان زمانی بدست می آید که متر= 1، و پرسپترون چند لایه - در متر=0.

    بررسی دقیق معماری شبکه تکراری نشان می دهد که بازخورد از لایه پنهان یا از خروجی شبکه را می توان با افزودن سیگنال های بازخورد به نمونه آموزشی حذف کرد.

    اجازه دهید فرآیند تبدیل نمونه آموزشی را برای حل مشکل پیش‌بینی سری‌های زمانی با استفاده از ANN بازگشتی با حافظه پشته پویا در نظر بگیریم. به عنوان مثال، ما از مقادیر متوسط ​​ماهانه چگالی شار تابش خورشیدی در طول موج 10.7 برای سال‌های 2010-2012 استفاده خواهیم کرد (جدول 1).

    جدول 1. داده های مربوط به چگالی شار تابش خورشیدی در طول موج 10.7 سانتی متر برای سال های 2010-2012

    مثال شماره تاریخ چگالی شار تشعشع 10 -22 [W/m2]
    1 ژانویه 2010 834,84
    2 فوریه 2010 847,86
    3 مارس 2010 833,55
    4 آوریل 2010 759,67
    5 می 2010 738,71
    6 ژوئن 2010 725,67
    7 جولای 2010 799,03
    8 آگوست 2010 797,10
    9 سپتامبر 2010 811,67
    10 اکتبر 2010 816,77
    11 نوامبر 2010 824,67
    12 دسامبر 2010 843,23
    13 ژانویه 2011 837,42
    14 فوریه 2011 945,71
    15 مارس 2011 1153,87
    16 آوریل 2011 1130,67
    17 می 2011 959,68
    18 ژوئن 2011 959,33
    19 جولای 2011 942,58
    20 آگوست 2011 1017,74
    21 سپتامبر 2011 1345,00
    22 اکتبر 2011 1372,90
    23 نوامبر 2011 1531,67
    24 دسامبر 2011 1413,55
    25 ژانویه 2012 1330,00
    26 فوریه 2012 1067,93
    27 مارس 2012 1151,29
    28 آوریل 2012 1131,67
    29 می 2012 1215,48
    30 ژوئن 2012 1204,00

    همانطور که در جدول 2 نشان داده شده است، سری های زمانی را با استفاده از روش پنجره کشویی تبدیل می کنیم.

    جدول 2. نمونه آموزش ANN برای حل مسئله پیش بینی، که در نتیجه تبدیل سری های زمانی به روش پنجره به دست آمده است.

    مثال شماره ورودی های ANN ( ایکس) خروجی های ANN ( y)
    x 1 x2 x 3 y 1
    1 834,84 847,86 833,55 759,67
    2 847,86 833,55 759,67 738,71
    3 833,55 759,67 738,71 725,67

    اجازه دهید لایه پنهان در ANN مکرر شامل سه نورون باشد، خروجی یک - یک نورون، پشته حافظه پویا - سیگنال های معکوس لایه پنهان با تاخیر دو چرخه (شکل 3).

    برنج. 3. ANN مکرر با حافظه دو سیگنال خروجی قبلی لایه پنهان

    از آنجایی که تعداد نورون‌هایی در لایه پنهان که دارای بازخورد با لایه ورودی هستند، سه است، اندازه بردار ورودی در طول آموزش ANN در هنگام به خاطر سپردن سیگنال خروجی قبلی یک قدم به عقب، سه و در هنگام به خاطر سپردن دو سیگنال قبلی، شش افزایش می‌یابد. سیگنال های خروجی اجازه دهید سیگنال های ورودی نمونه آموزشی را که در طول تبدیل تغییر نمی کنند به صورت ( ایکس 1 , ایکس 2 , ایکس 3 ، و سیگنال های بازخورد - ( ایکس 4 , ایکس 5 , ایکس 6 , ایکس 7 , ایکس 8 , ایکس 9 ). جدول 3 مجموعه آموزشی تبدیل شده را نشان می دهد.

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

    شماره p / p ورودی های ANN ( ایکس) خروجی های ANN ( y)
    x 1 x2 x 3 ایکس 4 ایکس 5 ایکس 6 ایکس 7 ایکس 8 ایکس 9 y 1
    1 834,84 847,86 833,55 0 0 0 0 0 0 759,67
    2 847,86 833,55 759,67 s 1 -1 ج 2 -1 ج 3 -1 0 0 0 738,71
    3 833,55 759,67 738,71 s 1 -1 ج 2 -1 ج 3 -1 ج 1 - 2 c2- 2 ج 3 - 2 725,67

    به ورودی ها ( ایکس 4 , ایکس 5 , ایکس 6 سیگنال های خروجی لایه پنهان با تاخیر یک چرخه تغذیه می شوند ( از 1-1،ج 2 -1 , ج 3 -1 ، به ورودی ها ( ایکس 7 , ایکس 8 , ایکس 9 ) سیگنال های خروجی لایه پنهان با تاخیر دو سیکل هستند ( از 1-2،ج 2 -2 , ج 3 -2 }.

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

    یک مدل شی گرا از یک ANN بازگشتی با حافظه پشته پویا در نمودار کلاس نشان داده شده است (شکل 4).

    برنج. 4. نمودار کلاس های اصلی که یک ANN بازگشتی را با حافظه پشته پویا پیاده سازی می کنند

    بر خلاف کلاس لایه، که محفظه ای برای نورون های پرسپترون چندلایه است، کلاس حافظه لایهحاوی حافظه است انباشته کردن، به عنوان پشته ای از سیگنال های لایه قبلی پیاده سازی شده است. اندازه پشته با استفاده از ویژگی تنظیم می شود stackSize. در نمودار (شکل 5)، حافظه لایه به صورت پشته ای از سیگنال های خروجی لایه نشان داده شده است. y -1 , y -2 , …, y - n)، جایی که n- اندازه پشته هر سلول پشته y - منشامل آرایه ای از خروجی های نورون لایه ( y 1, y 2, …, y n). پشته طوری سازماندهی شده است که پس از سرریز شدن حافظه، آخرین سلول y - nحذف می شود، کل صف یک موقعیت جابجا می شود، به طوری که y - من = y -(من -1) .

    برنج. 5. پیاده سازی لایه با حافظه ( حافظه لایه) برای ANN های تکرارشونده با حافظه پشته پویا

    بیایید میانگین چگالی ماهانه فعالیت خورشیدی در طول موج 10.7 سانتی متر را برای شش ماه اول سال 2012 بر اساس داده های جدول 2010-2011 پیش بینی کنیم. 1. برای انجام این کار، یک ANN تکراری با حافظه پشته پویا (شکل 3) با استفاده از یک شبیه‌ساز عصبی می‌سازیم و آموزش می‌دهیم. NeuroNADS. ما 24 مثال اول سری زمانی را برای نمونه آموزشی و شش مثال باقی مانده را برای نمونه آزمایشی می گیریم.

    ما با استفاده از یک الگوریتم ترکیبی آموزش خواهیم داد. پارامترهای الگوریتم: مرحله یادگیری - 0.3، حداکثر تعداد افراد در یک نسل - 10، ضریب جهش - 0.1. معیارهای توقف تمرین: ریشه میانگین مربعات خطا - 0.001، تعداد دوره ها - 1000.

    یکی از بهترین نتایج آموزش ANN در شکل 1 نشان داده شده است. 6 و در شکل. 7. شاخص های خطاهای پیش بینی سری های زمانی در جدول ارائه شده است. 4.

    طرح آبی سری زمانی اصلی؛
    نمودار قرمز مقادیر خروجی شبکه در مجموعه آموزشی؛
    نمودار سبز مقادیر پیش بینی شده شبکه

    برنج. شکل 6. نتایج یک بررسی از یک ANN مکرر با حافظه پشته پویا روی نمونه های آموزشی و آزمایشی (در امتداد محور آبسیسا - تعداد مثال، در امتداد محور ارتین - مقدار سری زمانی)

    برنج. شکل 7. نمودار تغییر تابع خطای ریشه میانگین مربع یک ANN تکراری با حافظه پشته پویا در طول تمرین (در امتداد محور آبسیسا تعداد دوره‌ها، در امتداد محور ارتین مقدار خطا است)

    جدول 4. نرخ خطای پیش‌بینی سری زمانی

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

    این مطالعه با حمایت مالی بنیاد تحقیقات پایه روسیه در چارچوب پروژه علمی شماره 14-01-00579 a انجام شد.

    کتابشناسی - فهرست کتب:

    1. Bodyansky E.V., Rudenko O.G. شبکه های عصبی مصنوعی: معماری، آموزش، برنامه های کاربردی. - خارکف: TELETECH، 2004. - 369 ص.
    2. Osovsky S. شبکه های عصبی برای پردازش اطلاعات / Per. از I.D لهستانی رودینسکی. - م.: امور مالی و آمار، 2002. - 344 ص.
    3. سیستم اطلاعاتی-تحلیلی [منبع الکترونیکی]: داده‌های مربوط به فعالیت خورشیدی و ژئومغناطیسی - حالت دسترسی: http://moveinfo.ru/data/sun/select (دسترسی رایگان) - Zagl. از صفحه نمایش - یاز. روسی
    4. Krug P.G. شبکه های عصبی و کامپیوترهای عصبی. M .: MPEI Publishing House, 2002 - 176 p.
    5. NeuroNADS neuroemulator [منبع الکترونیکی]: وب سرویس - حالت دسترسی: http://www.service.. از روی صفحه نمایش. - یاز. روسی
    6. Belyavsky G.I.، Puchkov E.V.، Lila V.B. الگوریتم و پیاده سازی نرم افزارروش آموزش ترکیبی برای شبکه های عصبی مصنوعی // محصولات و سیستم های نرم افزاری. Tver, 2012. شماره 4. ص 96 - 100.

    در مطالب امروز خود، مفهوم شبکه عصبی مصنوعی (ANN) و همچنین چیستی آنها را به خوانندگان یادآوری می کنیم و مسائل مربوط به حل مشکل پیش بینی استفاده از ANN به طور کلی و شبکه های عصبی تکراری به طور خاص را در نظر خواهیم گرفت.

    شبکه های عصبی

    ابتدا بیایید به یاد بیاوریم که شبکه عصبی مصنوعی چیست. در یکی از مقالات قبلی، قبلاً بحث کردیم که ANN شبکه ای از نورون های مصنوعی ("جعبه سیاه" با تعداد زیادی ورودی و یک خروجی) است که بردار سیگنال های ورودی (داده) را با استفاده از یک مقدار مشخص به بردار سیگنال های خروجی تبدیل می کند. تابعی که تابع فعال سازی نامیده می شود. در همان زمان، حداقل یک لایه میانی بین لایه نورون های "دریافت کننده" و لایه خروجی وجود دارد.

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

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

    اگر کمی با جزئیات بیشتر روی شبکه های عصبی مصنوعی مکرر تمرکز کنیم، معلوم می شود که مدرن ترین (و "موفق ترین" در نظر گرفته شده) آنها از ساختاری به نام پرسپترون چندلایه سرچشمه می گیرند. مدل ریاضیمغز - ANN انتشار مستقیم با لایه های میانی). در عین حال ، از زمان ظهور آنها ، آنها دستخوش تغییرات قابل توجهی شده اند - و ANN های "نسل جدید" بسیار ساده تر از پیشینیان خود هستند ، علیرغم این واقعیت که به ما امکان می دهند مشکلات مربوط به حفظ توالی ها را با موفقیت حل کنیم. بنابراین، به عنوان مثال، امروزه محبوب ترین شبکه Elman به گونه ای طراحی شده است که سیگنال بازگشتی از لایه داخلی به نورون های ورودی "اصلی" نمی رود، بلکه به ورودی های اضافی - به اصطلاح زمینه می رود. این نورون ها اطلاعات مربوط به بردار ورودی قبلی (محرک) را ذخیره می کنند. معلوم می شود که سیگنال خروجی (پاسخ شبکه) نه تنها به محرک فعلی، بلکه به محرک قبلی نیز بستگی دارد.

    حل مشکل پیش بینی

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

    در حالت کلی، وظیفه پیش‌بینی سری‌های زمانی با استفاده از ANN به ترتیب مراحل زیر کاهش می‌یابد:

    • جمع آوری داده ها برای آموزش (مرحله ای که یکی از سخت ترین مراحل در نظر گرفته می شود)؛
    • آماده سازی و عادی سازی داده ها (کاهش به شکل VR)؛
    • انتخاب توپولوژی ANN (در این مرحله تصمیم گیری در مورد تعداد لایه ها و وجود بازخورد گرفته می شود).
    • انتخاب تجربی (از طریق آزمایش) ویژگی های ANN.
    • انتخاب تجربی پارامترهای یادگیری؛
    • آموزش ANN؛
    • تأیید آموزش برای کفایت کار؛
    • تنظیم پارامترها با در نظر گرفتن مرحله قبل، آموزش نهایی؛
    • شفاهی ANN (توضیح به حداقل با استفاده از چندین توابع جبری یا منطقی) به منظور استفاده بیشتر.

    چرا ANN های مکرر؟

    واضح است که تصمیم در مورد توپولوژی ANN می تواند بر نتیجه تأثیر بگذارد. اما به ابتدای گفتگو برگردیم: چرا ما عمدا موضوع این مقاله را برای پیش بینی با استفاده از یک شبکه تکراری انتخاب کردیم؟ از این گذشته، اگر «گوگل» می‌کنید، پیش‌بینی واقعیت مجازی در کار معمولاً با استفاده از پرسپترون‌های چندلایه (به یاد می‌آوریم که این شبکه‌های پیش‌خور هستند) و روش انتشار پس‌انداز خطا انجام می‌شود. در اینجا لازم است توضیح داده شود: بله، در واقع، از نظر تئوری، چنین ANN هایی مشکل پیش بینی را به خوبی حل می کنند - به شرطی که درجه نویز (خطاها و حذفیات در داده های ورودی)، به عنوان مثال، سری زمانی اصلی حداقل باشد.

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

    استفاده از شبکه تکرارشونده Elman حل مشکل پیش‌بینی را حتی در سری‌های زمانی بسیار پر سر و صدا ممکن می‌سازد (این امر به ویژه برای تجارت مهم است). در حالت کلی، این ANN ساختاری از سه لایه و همچنین مجموعه‌ای از عناصر (ورودی‌ها) «زمینه» اضافی است. بازخوردها از لایه پنهان به این عناصر می روند. هر پیوند دارای وزن ثابتی است، برابر با یک. در هر بازه زمانی، داده های ورودی بین نورون ها در جهت رو به جلو توزیع می شود. سپس یک قانون یادگیری برای آنها اعمال می شود. با تشکر از ثابت بازخورد، عناصر زمینه همیشه یک کپی از مقادیر لایه مخفی مرحله قبل را نگه می دارند (زیرا قبل از اعمال قانون یادگیری بازگردانده می شوند). بنابراین، نویز سری زمانی به تدریج کاهش می‌یابد و خطا همراه با آن به حداقل می‌رسد: پیش‌بینی‌ای دریافت می‌کنیم که در حالت کلی، دقیق‌تر از نتیجه رویکرد کلاسیک خواهد بود، که به صورت تجربی توسط آن تأیید می‌شود. آثار غربی

    خلاصه

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

    (شبکه های عصبی مکرر، RNN) - مدل های محبوبمورد استفاده در پردازش زبان طبیعی (NLP). اول، آنها جملات دلخواه را بر اساس تعداد دفعات تکرار آنها در متون ارزیابی می کنند. این به ما معیاری از صحت دستوری و معنایی می دهد. از چنین مدل هایی در ترجمه ماشینی استفاده می شود. ثانیاً، مدل‌های زبان متن جدیدی تولید می‌کنند. آموزش مدل بر روی اشعار شکسپیر، متن جدیدی شبیه به شکسپیر تولید می کند.

    شبکه های عصبی مکرر چیست؟

    ایده RNN استفاده از اطلاعات به روشی ثابت است. شبکه های عصبی سنتی فرض می کنند که همه ورودی ها و خروجی ها مستقل هستند. اما برای بسیاری از کارها این مناسب نیست. اگر می خواهید کلمه بعدی یک جمله را پیش بینی کنید، بهتر است کلمات قبل از آن را در نظر بگیرید. RNN ها را تکرارشونده می نامند زیرا وظیفه یکسانی را برای هر عنصر دنباله انجام می دهند و خروجی آن به محاسبات قبلی بستگی دارد. تفسیر دیگری از RNN: اینها شبکه هایی هستند که دارای "حافظه" هستند که اطلاعات قبلی را در نظر می گیرند. در تئوری، RNN ها می توانند از اطلاعات در توالی های دلخواه طولانی استفاده کنند، اما در عمل آنها فقط به چند مرحله محدود می شوند (در ادامه در مورد آن بیشتر توضیح خواهیم داد).

    نمودار بالا نشان می دهد که RNN در داخل باز می شود شبکه کامل. با یک جارو، ما به سادگی شبکه را برای یک توالی کامل می نویسیم. به عنوان مثال، اگر دنباله یک جمله 5 کلمه ای باشد، Sweep از 5 لایه تشکیل می شود، یک لایه برای هر کلمه. فرمول هایی که محاسبات را در RNN تعریف می کنند به شرح زیر است:

    • x_t - ورودی در مرحله زمانی t. به عنوان مثال x_1 می تواند یک بردار یک داغ مربوط به کلمه دوم جمله باشد.
    • s_t حالت پنهان در مرحله t است. این «حافظه» شبکه است. s_t به عنوان یک تابع به حالت های قبلی و ورودی فعلی x_t بستگی دارد: s_t=f(Ux_t+Ws_(t-1)). تابع f معمولاً غیر خطی است، مانند tanh یا ReLU. s_(-1)، که برای محاسبه اولین حالت پنهان لازم است، معمولاً به صفر (بردار صفر) مقداردهی اولیه می شود.
    • o_t - از مرحله t خارج شوید. به عنوان مثال، اگر بخواهیم یک کلمه را در یک جمله پیش بینی کنیم، خروجی می تواند یک بردار احتمال در فرهنگ لغت ما باشد. o_t = softmax (Vs_t)

    چند نکته:

    • شما می توانید s_t را به عنوان حافظه شبکه تفسیر کنید. s_t حاوی اطلاعاتی درباره اتفاقاتی است که در مراحل قبلی قبلی رخ داده است. خروجی o_t صرفا بر اساس "حافظه" s_t محاسبه می شود. در عمل، همه چیز کمی پیچیده تر است: s_t نمی تواند حاوی اطلاعات بسیاری از مراحل قبلی باشد.
    • بر خلاف لایه عمیق سنتی که از پارامترهای متفاوتی در هر لایه استفاده می کند، RNN در تمام مراحل یکسان (U، V، W) دارد. این نشان دهنده این واقعیت است که ما در هر مرحله یک کار را تنها با استفاده از ورودی های مختلف انجام می دهیم. این به میزان زیادی تعداد کل پارامترهایی را که باید مطابقت دهیم کاهش می دهد.
    • نمودار بالا در هر مرحله خروجی دارد، اما بسته به کار، ممکن است به آنها نیازی نباشد. به عنوان مثال، هنگام تعیین رنگ آمیزی احساسی یک جمله، توصیه می شود فقط به نتیجه نهایی اهمیت دهید و نه به رنگ آمیزی بعد از هر کلمه. به همین ترتیب، ممکن است نیازی به وارد کردن داده در هر مرحله نداشته باشیم. ویژگی اصلی RNN حالت پنهان است که حاوی اطلاعاتی در مورد توالی است.

    شبکه های عصبی مکرر کجا استفاده می شوند؟

    شبکه های عصبی مکرر در بسیاری از وظایف NLP موفقیت زیادی از خود نشان داده اند. در این مرحله لازم به ذکر است که متداول ترین نوع RNN ها LSTM هستند که در گرفتن (حفظ) وابستگی های طولانی مدت بسیار بهتر از RNN ها هستند. اما نگران نباشید، آنها در اصل همان RNN هایی هستند که در این آموزش به آنها خواهیم پرداخت، آنها فقط روش متفاوتی برای محاسبه حالت پنهان دارند. LSTM را در پست دیگری با جزئیات بیشتر پوشش خواهیم داد. در اینجا چند نمونه از برنامه های RNN در NLP (بدون پیوند به لیست جامع) آورده شده است.

    مدل سازی زبان و تولید متن

    با توجه به دنباله ای از کلمات، می خواهیم احتمال هر کلمه (در فرهنگ لغت) را پیش بینی کنیم. مدل‌های زبان به ما امکان می‌دهند تا احتمال انتخاب را اندازه‌گیری کنیم، که سهم مهمی در ترجمه ماشینی است (زیرا احتمال درستی جملات بیشتر است). یکی از عوارض جانبی این توانایی، توانایی تولید متون جدید با انتخاب از احتمالات خروجی است. بسته به اینکه چه اطلاعاتی داریم، می توانیم چیزهای دیگری نیز تولید کنیم. در مدل‌سازی زبان، ورودی ما معمولاً دنباله‌ای از کلمات است (مثلاً به صورت یک بردار یک داغ کدگذاری می‌شود) و خروجی دنباله‌ای از کلمات پیش‌بینی‌شده است. هنگام یادگیری، خروجی قبلی o_t=x_(t+1) را به عنوان ورودی به لایه بعدی می‌دهیم، زیرا می‌خواهیم نتیجه مرحله t کلمه بعدی باشد.

    تحقیق در مورد مدل سازی زبان و تولید متن:

    ترجمه ماشینی

    ترجمه ماشینی شبیه مدل‌سازی زبان است زیرا بردار پارامتر ورودی دنباله‌ای از کلمات در زبان مبدأ (مثلاً آلمانی) است. ما می خواهیم دنباله ای از کلمات را در زبان مقصد (مثلا انگلیسی) بدست آوریم. تفاوت اصلی این است که ما این دنباله را تنها پس از مشاهده تمام پارامترهای ورودی دریافت خواهیم کرد، زیرا اولین کلمه جمله ای که باید ترجمه شود ممکن است به اطلاعاتی از کل دنباله کلمات ورودی نیاز داشته باشد.

    RNN برای ترجمه ماشینی

    تشخیص گفتار

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

    تولید توضیحات تصویر

    همراه با RNN، آنها به عنوان بخشی از مدل تولید توصیف تصویر بدون برچسب استفاده شدند. این شگفت انگیز است که چقدر خوب کار می کنند. مدل ترکیبی کلمات تولید شده را با ویژگی های موجود در تصاویر ترکیب می کند.

    ترکیبات بصری- معنایی عمیق برای تولید توضیحات تصویر.