**یادگیری توالیبهتوالی با شبکههای عصبی** **مرتضـی ذاکـری** ؛ *آبانماه 1396*. [نسخه PDF (فاز اول)](https://www.dropbox.com/s/b3n2nfc1hgmvkhh/Zakeri_NLP961_project_p1_rc01.pdf?dl=0) [مرجع اصلی](https://www.dropbox.com/s/ikyd12fytka91f3/2014_sequence-to-sequence-learning-with-neural-networks.pdf?dl=0) ---------- **چکــیده** یادگیری ژرف شاخهای نسبتا جدید از یادگیری ماشین است که در آن توابع محاسباتی بهشکل گرافهای چند سطحی یا ژرف برای شناسایی و تخمین قانون حاکم بر حل یک مسئله پیچیده بهکار بسته میشوند. شبکههای عصبی ژرف ابزاری برای طراحی و پیادهسازی این مدل یادگیری هستند. این شبکهها در بسیاری از وظایف یادگیری ماشینی سخت، موفق ظاهر شدهاند. بهمنظور استفاده از شبکههای ژرف در وظایفی که ترتیب ورودی داده در انجام آن مؤثر است مانند اکثر وظایف حوزه پردازش زبان طبیعی، شبکههای عصبی مکرر ابداع گشتند که بازنمایی مناسبی از مدلهای زبانی ارایه میدهند. این مدلها در حالت ساده برای همه وظیفههای یک مدل زبانی مناسب نیستند. در این گزارش مدل خاصی از شبکههای مکرر تحت عنوان مدل توالیبهتوالی یا کدگذار-گدگشا بررسی میشود که برای وظایفی که شامل توالیهای ورودی و خروجی با طول متفاوت هستند؛ نظیر ترجمه ماشینی، توسعه داده شده و توانسته است نتایج قابل قبولی را در این زمینه تولید کند. **کلیدواژهها:** مدل توالیبهتوالی، شبکه عصبی مکرر، یادگیری ژرف، ترجمه ماشینی. # مقدمه مدلها و روشهای یادگیری بهکمک شبکههای عصبی ژرف (DNNs)[^1] اخیرا، با افزایش قدرت محاسباتی سختافزارها و نیز حل برخی از چالشهای اساسی موجود بر سر راه آموزش و یادگیری این شبکهها، بسیار مورد توجه واقع شدهاند. DNNها در انجام وظایف سخت یادگیری ماشین مانند تشخیص گفتار، تشخیص اشیاء و غیره، فوقالعاده قدرتمند ظاهر شدهاند و در مواردی روشهای سنتی را کاملاً کنار زدهاند. قدرت بازنمایی زیاد DNNها به این دلیل است که قادر هستند محاسبات زیادی را به صورت موازی در چندین لایه انجام داده، با تعداد زیادی پارامتر پاسخ مسئله داده شده را تخمین زده و مدل مناسبی از آن ارایه دهند. درحال حاضر DNNهای بزرگ میتوانند با استفاده از الگوریتم پسانتشار[^2] بهصورت بانظارت[^3] روی یک مجموعه آموزش برچسبزده و بهقدر کافی بزرگ آموزش ببینند. بنابراین در مواردی که ضابطه حاکم بر یک مسئله دارای پارامترهای بسیار زیادی است و یک مقدار بهینه از این پارامترها وجود دارد (صرفا با استناد به این که مغز انسان همین مسئله را خیلی سریع حل میکند)، روش یادگیری پسانتشار این تنظیم از پارامترها (مقدارهای بهینه) را یافته و مسئله را حل میکند [1]. بسیاری از وظایف یادگیری ماشین به حوزه پردازش زبان طبیعی (NLP)[^4] مربوط میشوند؛ جایی که در آن معمولا ترتیب ورودیها و خروجیهای یک مسئله مهم است. برای مثال در ترجمه ماشینی دو جمله با واژههای یکسان ولی ترتیب متفاوت، معانی (خروجیهای) مختلفی دارند. این وظایف اصطلاحا مبتنی بر توالی[^5] هستند. در واقع ورودی آنها به صورت یک توالی است. شبکههای عصبی رو به جلو ژرف[^6] برای این دسته از وظایف خوب عمل نمیکنند؛ چرا که قابلیتی برای بهخاطر سپاری و مدلسازی ترتیب در آنها تعبیه نشده است.شبکههای عصبی مکرر (RNNs)[^7] خانوادهای از شبکههای عصبی برای پردازش وظایف مبتنی بر توالی هستند. همانطور که شبکههای عصبی پیچشی (CNNs)[^8]، ویژه پردازش یک تور[^9] از مقادیر، برای مثال یک تصویر، طراحی شدهاند؛ یک RNN نیز همسو با پردازش یک توالی از مقادیر ورودی $$ x\quad =\quad <{ x }^{ (1) },\quad { x }^{ (2) },\quad ...,\quad { x }^{ (n) }> $$ساخته شده است [2]. خروجی RNNها نیز مانند ورودی آنها در اغلب وظایف یک توالی است. این قابلیت پردازش توالی توسط شبکههای عصبی، آنها را برای استفاده در وظایف NLP، بسیار درخور ساخته است. ## شرح مسئله و اهمیت موضوع برخلاف انعطاف پذیری و قدرت بالای RNNها، در حالت ساده این شبکهها یک توالی ورودی با طول ثابت را به یک توالی خروجی با همان طول نگاشت میکنند. این موضوع اما یک محدودیت جدی است؛ زیرا، بسیاری از مسائل مهم، در قالب توالیهایی که طولشان از قبل مشخص نیست، به بهترین شکل قابل بیان هستند و در نظر گرفتن یک طول ثابت از پیش تعیین شده برای ورودی و خروجی به خوبی مسئله را مدل نمیکند. برای مثال ترجمه ماشینی (MT)[^10] و تشخیص گفتار[^11] مسائلی از این دست هستند. همچنین سیستم پرسش و پاسخ را نیز میتوان به صورت نگاشت یک توالی از واژهها بهعنوان پرسش، به یک توالی دیگر از واژهها به عنوان پاسخ، در نظر گرفت. بنابراین پُر واضح است که ایجاد یک روش مستقل از دامنه برای یادگـیری نگاشت توالیبهتولی مفید و قابل توجیه خواهد بود [1]. ## اهداف و راهکارها همانطور که دیدیم طیف وسیعی از وظایف NLP مبتنی بر نگاشت توالیهای با طول نامشخص و متغیر به یکدیگر است. همچنین روشهای سنتی مثل n-garm دارای محدودیتهای خاص خود در حل این دسته مسائل هستند و استفاده از روشهای یادگیری ژرف به وضوح امید بخش بوده است. بنابراین هدف ارایه یک مدل مبتنی بر RNNها جهت نگاشت توالیبهتوالی است. در این گـزارش راهکار مطرح شده در [1] و نتایج آن بهتفصیل شرح داده میشود. Stuskever و همکاران [1] نشان دادند که چگونه یک کاربرد ساده از شبکه با معماری حافظه کوتاهمدت بلند (LSTM)[^12] میتواند مسائل نگاشت توالیبهتوالی را حل کند. ایده اصلی استفاده از یک LSTM برای خواندن توالی ورودی، بهصورت یک نمونه در هر مرحله زمانی، جهت اقتباس برداری بزرگ با بعد ثابت و سپس استفاده از یک LSTM دیگر برای استخراج توالی خروجی از آن بردار است. LSTM دوم دقیقا یک مدل زبانی مبتنی بر RNN است با این تفاوت که حاوی احتمال شرطی نسبت به توالی ورودی نیز هست. قابلیت LSTM در یادگیری موفق وابستگیهای مکانی طولانی مدت نهفته درون توالیها، آن را برای استفاده در مدل پیشنهادی مناسب ساخته است. شکل (1) یک طرحواره از این مدل را به صورت عام نشان میدهد. ![شکل (1) یک طرحواره از مدل توالیبهتوالی متشکل از دو RNN. این مدل توالی ABC را بهعنوان ورودی خوانده و توالی WXYZ را بهعنوان خروجی تولید میکند. مدل پس از تولید نشانه EOS روند پیشبینی خود را متوقف میکند [1]. ](https://boute.s3.amazonaws.com/290-fig1.PNG) ## دادهها و نتایج مدل پیشنهادی در بخش قبل، برروی وظیفه ترجمه ماشینی عصبی (NMT)[^13] مورد آزمایش قرار گرفته است. برای انجام آزمایشها از مجموعه داده ترجمه انگلیسی به فرانسوی WMT’14 استفاده شده است [3]. همچنین مجموعه داده کوچکتری در [4] وجود دارد که برای آموزش مدلهای آزمایشی و غیر واقعی مناسب است. این مجموعه شامل ترجمههای انگلیسی به فارسی نیز هست. نتایج حاصل شده از این کار بدین قرار است. بر روی مجموعه داده WMT’14 با استخراج مستقیم ترجمه از پنج LSTM ژرف با 380 میلیون پارامتر، در نهایت امتیاز BLEU معادل 34.81 کسب گردیده است. این امتیاز بالاترین امتیازی است که تا زمان ارایه این مقاله از طریق NMT حاصل شده است. بهعنوان مقایسه امتیاز BLEU برای ترجمه ماشینی آماری (SMT)[^14] برروی همین مجموعه داده برابر 33.30 است. این درحالی است که امتیاز 34.81 با احتساب اندازه واژهنامه 80هزار کلمه بهدست آمده و هرجا که کلمه ظاهر شده در ترجمه مرجع در واژهنامه نبوده این امتیاز جریمه شده است. بنابراین نتایج نشان میدهد که یک معماری مبتنی بر شبکه عصبی تقریبا غیر بهینه، که نقاط زیادی برای بهبود دارد، قادر است تا روشهای سنتی مبتنی بر عبارتِ سیستم SMT را شکست دهد [1]. # مفاهیم اولیه در این قسمت پیرامون سه مفهوم اصلی گزارش پیشرو، یعنی مدل زبانی (LM)[^15]، شبکههای عصبی مکرر و ترجمه ماشینی عصبی، بهصورت مختصر توضیحاتی ارایه میگردد. ## مدل زبانی مدل زبانی یک مفهوم پایه در NLP است که امکان پیشبینی نشانه بعدی در یک توالی را فراهم میکند. بهبیان دقیقتر LM عبارت است از یک توزیع احتمالی روی یک توالی از نشانهها (اغلب واژهها) که احتمال وقوع یک توالی داده شده را مشخص میکند. در نتیجه میتوان بین چندین توالی داده شده برای مثال چند جمله، آن را که محتملتر است، انتخاب کرد [5]. LM برای توالی $$ x\quad =\quad <{ x }^{ (1) },\quad { x }^{ (2) },\quad ...,\quad { x }^{ (n) }> $$ عبارت است از: ![](https://boute.s3.amazonaws.com/290-rel1.PNG) مدلهای سنتی n-gram برای غلبه بر چالشهای محاسباتی، با استفاده از فرض مارکوف رابطه (1) را به درنظر گرفتن تنها n-1 نشانه قبلی محدود میکنند. بههمین دلیل برای توالیهای طولانی (بیشتر از 4 یا 5 نشانه) و دیده نشده مناسب نیستند. مدلهای زبانی عصبی (NLMs)[^16] که بر مبنای شبکههای عصبی عمل پیشبینی واژه بعدی را انجام میدهند، در ابتدا برای کمک به n-gramها با آنها ترکیب شدند که منجر به ایجاد پیچیدگیهای زیادی شد؛ در حالی که مشکل توالیهای طولانی همچنان وجود داشت [5]. اخیرا اما، معماریهای جدیدی برای LM که کاملا بر اساس DNNها است، ایجاد شدهاند. سنگبنای این مجموعه معماریها RNNها بوده که در بخش بعدی معرفی میشوند. ## شبکههای عصبی مکرر شبکههای عصبی مکرر کلاسی از شبکههای عصبی هستند که بهصورت یک **_گراف جهتدار دوری_** بیان میشوند. بهعبارت دیگر ورودی هریک از لایه(های) پنهان یا خروجی علاوه بر خروجی لایه قبل، شامل ورودی از مرحله قبل بهصورت بازخورد نیز میشود. شکل (2) یک RNN را نشان میدهد. همانطور که پیداست، لایه پنهان از مراحل قبلی هم بازخورد میگیرد. در هر مرحلهزمانی t از (t=1 تا t=n) یک بردار x<sup>(t)</sup> از توالی ورودی $$ x\quad =\quad <{ x }^{ (1) },\quad { x }^{ (2) },\quad ...,\quad { x }^{ (n) }> $$ پردازش میشود. در حالت کلی معادلههای بروزرسانی (گذرجلو[^17]) یک RNN در t عبارتند از [2]: ![](https://boute.s3.amazonaws.com/290-rel2_5.PNG) که در آن بردارهای b و c بایاس و ماتریسهای _U_، _V_ و _W_ بهترتیب وزن یالهای لایه ورودی به پنهان، پنهان به خروجی و پنهان به پنهان، تشکیلدهنده مجموعه پارامترهای شبکه هستند. Φ تابع انگیزش است که معمولا یکی از توابع ReLU[^18] یا سیگموید[^19] انتخاب میشود. لایه آخر را نیز تابع بیشینه هموار[^20] تشکیل میدهد که احتمال وقوع هر نشانه خروجی را مشخص میکند. ![شکل (2) گراف محاسباتی مربوط به یک نوع RNN که یک توالی ورودی از مقادیر x را به یک توالی خروجی از مقادیر o نگاشت میکند. فرض شده است که خروجی o احتمالات نرمال نشده است، بنابراین خروجی واقعی شبکه یعنی ŷ از اعمال تابع بیشینه هموار روی o حاصل میشود. چپ: RNN بهصورت یال بازگشتی. راست: همان شبکه بهصورت باز شده در زمان، بهنحوی که هر گره با یک برچسب زمانی مشخص شده است [2].](https://boute.s3.amazonaws.com/290-fig2.PNG) در شکل (2)، RNN با یک لایه پنهان نشان داده شده است. اما میتوان RNNژرف با چندین لایه پنهان نیز داشت. همچنین طول توالیهای ورودی و خروجی میتواند بسته به مسئله مورد نظر متفاوت باشد. karpathy در [6] RNNها را از منظر طول توالی ورودی و طول توالی خروجی به چند دسته تقسیمبندی کرده است. شکل (3) این دستهبندی را نشان میدهد. ![شکل (3) طرح وارهای از حالتهای مختلف RNN. (الف):شبکه عصبی استاندارد، (ب):شبکه یک به چند، (پ): شبکه چند به یک، (ت)و (ث): شبکههای چند به چند [6].](https://boute.s3.amazonaws.com/290-fig3.PNG) تصویر karpathy از حالتهای مختلف RNN بعد از انتشار مقاله منتخب در این گزارش میباشد؛ با این حال در بخش 4 خواهیم دید که چگونه میتوان از ترکیب این طرحها نیز برای ایده معماری توالیبهتولی الهام گرفت. ## ترجمه ماشینی عصبی بهطور کلی MT را می توان با یک LM که به جمله زبان مبدأ مشروط شده است، مدلسازی کرد. بر همین اساس NMT را میتوان یک مدل زبانی مکرر در نظر گرفت که مستقیما احتمال شرطی p(y|x) را در ترجمه جمله زبان مبدأ $$ x\quad =\quad <{ x }^{ (1) },\quad { x }^{ (2) },\quad ...,\quad { x }^{ (n) }> $$به جمله زبان مقصد $$ y\quad =\quad <{y }^{ (1) },\quad { y }^{ (2) },\quad ...,\quad { y }^{ (m) }> $$مدل میکند. دقت شود که طول جمله مبدأ یعنی n و جمله مقصد یعنی m الزاما برابر نیست. بنابراین در NMT هدف محاسبه این احتمال و سپس استفاده از آن در تولید جمله به زبان مقصد، هر دو به کمک DNNها است [5]. # کارهای مرتبط کارهای زیادی در زمینه NLMs انجام شده است. در بیشتر این کارها از شبکههای عصبی روبهجلو یا مکرر استفاده شده و کاربرد آن معمولا در یک وظیفه MT با امتیازدهی مجدد n فهرست بهتر[^21]، اعمال شده و نتایج آن معمولا نشان از بهبود امتیازهای قبلی داشته است [1]. اخیرا کارهایی در زمینه فشردن اطلاعات زبان مبدأ در NLM انجام شده است. برای نمونه Auli و همکاران [7] NLM را با مدل عنوان[^22] جمله ورودی ترکیب کردهاند که نتایج بهبود بخشی داشته است. کار انجام شده در مقاله [1] به کار [8] بسیار نزدیک است. در مقاله [8] نویسندگان برای اولین بار توالی ورودی را در یک بردار فشرده کرده و سپس آن را به توالی خروجی تبدیل کردند. البته در این کار، برای تبدیل توالی به بردار، از CNNs استفاده شده که ترتیب واژهها را حفظ نمیکند. چُـــو و همکاران [9] یک معماری شبهِ LSTM را برای نگاشت توالی ورودی به بردار و سپس استخراج توالی خروجی و نهایتا ترکیب آن با SMT استفاده کردهاند. معماری آنها از دو RNN با عنوانهای کدگذار و کدگشا تشکیل شده که RNN اول وظیفه تبدیل یک توالی با طول متغیر به یک بردار با طول ثابت را قابل یک سلول زمینه c دارد و RNN دوم وظیفه تولید توالی خروجی را با لحاظ کردن c و نماد شروع جمله مقصد بر عهده دارد. معماری پیشنهادی آنها تحت عنوان کلی RNNکدگذار-کدگشا در شکل (4) نشان داده شده است. چون آنها از LSTM استفاده نکرده و بیشتر تلاش خود را معطوف به ترکیب این روش با مدلهای قبلی SMT کردهاند، برای توالیهای ورودی و خروجی طولانی همچنان مشکل عدم حفظ حافظه وجود دارد. Bahdanau و همکاران [10] یک روش ترجمه مستقیم با استفاده از شبکه عصبی پیشنهاد دادهاند که از سازوکار _attention_ برای غلبه بر کارآمدی ضعیف روش [9] روی جملات طولانی استفاده میکند و به نتایج مطلوبی دست یافتند. ![شکل (4) مدل RNN کدگذار-کدگشا، که برای یادگـیری تولید توالی خروجی (فرمول درست چاپ نشده)$$ <{ y }^{ (1) },\quad ...,\quad { y }^{ { { (n }_{ y }) } }>$$ از روی توالی ورودی $$ <{ x }^{ (1) },\quad ...,\quad { x }^{ { { (n }_{ x }) } }>$$ بهکار میرود [2].](https://boute.s3.amazonaws.com/290-fig4.PNG) # مدل توالیبهتوالی در مدل توالیبهتوالی از دو RNN با واحدهای LSTM استفاده شده است. هدف LSTM در اینجا تخمین احتمال شرطی $$ p(<{ y }^{ (1) },\quad ...,\quad { y }^{ (m) }>\quad |\quad <{ x }^{ (1) },\quad ...,\quad { x }^{ (n) }>) $$ است که قبلا هم دیده بودیم (بخش 2-3). LSTM این احتمال شرطی را ابتدا با اقتباس بازنمایی بعد ثابت v برای توالی ورودی $$ <{ x }^{ (1) },\quad ...,\quad { x }^{ (n) }> $$ از آخرین مقدار حالت پنهان و در ادامه با محاسبه احتمال $$<{ y }^{ (1) },\quad ...,\quad { y }^{ (m) }> $$ از رابطه استاندارد مطرح در LM (رابطه (1)) و درنظر گرفتن برای حالت پنهان آغازین بهصورت داده شده در رابطه زیر، حساب میکند: ![](https://boute.s3.amazonaws.com/290-rel6.PNG) در رابطه (6) هر توزیع احتمالی $$ p({ y }^{ (t) }\quad |\quad v,\quad y^{ (1) },\quad ...,\quad y^{ (t-1) }) $$ بهوسیله یک تابع بیشینه هموار روی همه واژههای داخل واژهنامه بازنمایی میشود. برای LSTM از روابط [11] استفاده شده است. هر جمله در این مدل نیاز است تا با یک علامت خاص مثل EOS خاتمه یابد. این امر مدل را قادر میسازد تا بتواند توزیع احتمالی را روی توالی با هر طول دلخواهی تعریف کند. شمای کلی مدل در شکل (1) نشان داده شده است. در این شکل LSTM بازنمایی توالی ورودی $$ <'A','B','C',EOS> $$را حساب و سپس از این بازنمایی برای محاسبه احتمال توالی خروجی $$ <'W','X','Y','Z',EOS> $$ استفاده میکند. در عین حال این مدل را میتوان ترکیبی از قسمتهای پ و ت شکل (3) دانست. مدل پیادهسازی شده در عمل از سه جنبه با مدل معرفی شده در بالا تفاوت دارد. اول، از دو LSTM جداگانه استفاده شده است: یکی برای توالی ورودی و دیگری برای توالی خروجی؛ زیرا، انجام این کار پارامترهای مدل را با هزینه محاسباتی اندکی، به تعداد بسیار زیادی افزایش میدهد. دوم اینکه LSTMهای ژرف بهشکل قابل توجهی LSTMهای سطحی را شکست میدهند، به همین دلیل LSTM با ژرفای چهار لایه بهکار گرفته شده است. سوم اینکه نویسندگان در این مقاله یافتهاند که وارون کردن توالی ورودی در سرعتِ همگرایی آموزش شبکه و نیز دقت پیشبینی آن تأثیر شگرفی ایفا میکند. بنابراین بهجای نگاشت مستقیم توالی $$ a,b,c $$ به توالی $$ \alpha ,\beta ,\gamma $$ LSTM برای نگاشت $$ c,b,a $$ به $$ \alpha ,\beta ,\gamma $$ آموزش داده میشود که در آن $$ \alpha ,\beta ,\gamma $$ ترجمه یا خروجی متناظر با $$ a,b,c $$ است. توجیه علت این پدیده آن است که در نگاشت به روش وارون ابتدای عبارتها که متناظر با یکدیگر هستند بههم نزدیک شده و این امر سبب زودتر همگرا شدن الگوریتم SGD و نزدیک شدن به مقادیر بهینه میشود [1]. ## آموزش شبکه مدل توالیبهتوالی پس از معرفی توسط Sutskever و همکاران [1]، بارها و بارها تا به امروز مورد ارجاع دیگران قرار گرفته و تبدیل به یک مدل مرجع در NMT شده است. این مدل در رساله دکتری آقای لانگ [5] بهتفصیل و همراه با برخی اصلاحات توضیح داده شده است. در این بخش به برخی جزئیات آموزش شبکه مدل توالیبهتوالی میپردازیم. شکل (5) یک نمایش دقیقتر از مدل ذکر شده در شکل (1) را نشان میدهد. آموزش شبکه بدین نحو است: ابتدا جمله زبان مقصد، سمت راست جمله متناظر خود در زبان مبدأ قرار داده میشود. نشان ‘-‘ در اینجا نقش EOS را دارد که البته میتواند پایان جمله مبدأ یا آغاز جمله مقصد را مشخص کند. بنابراین به هر کدام از دو گروه قابل تعلق است. LSTM سمت چپ یا همان شبکه کدگذار، در هر مرحلهزمانی یک واژه از جمله زبان مبدأ را خوانده پس از تبدیل به نمایش مناسب حالت داخلی لایه پنهان را بروزرسانی میکند. در مرحله پردازش آخرین واژه مقادیر لایههای پنهان بردار ثابت که اکنون نماینده کل جمله ورودی زبان مبدأ است را تشکیل میدهد. سپس LSTM دوم یا شبکه کدگشا اولین واژه زبان مقصد را به همراه بردار v، بهعنوان ورودی دریافت میکند و پیشبینی خود را انجام میدهد. برچسب واقعی این داده در واقع واژه بعدی در جمله زبان مقصد است. پس از مقایسه و محاسبه خطا، الگوریتم پسانتشار روی هر دو شبکه با شروع از شبکه کدگشا اجرا میشود و پارامترها را در خلاف جهت گرادیان تنظیم میکند. این روند تا پایان یافتن جمله زبان مقصد ادامه پیدا میکند. البته در عمل ممکن است ورودی به صورت یک دسته[^23] به شبکه داده شود. ![شکل (5) نمایش نحوه عملکرد و آموزش مدل توالیبهتوالی روی وظیفه ترجمه ماشینی عصبی [5].](https://boute.s3.amazonaws.com/290-fig5.PNG) در مرحله آزمون به جای مقایسه با برچسب و محاسبه خطا فقط احتمال آمدن واژه بعدی محاسبه و واژه از روی واژگان پیدا میشود. سپس خروجی مرحله t به عنوان ورودی مرحله t+1 به شبکه کدگشا داده میشود. این روش اصطلاحا teacher forcing نامیده میشود[2]. ## جزئیات آموزش شبکه در مقاله [1] از LSTMژرف با چهار لایه و 1000 سلول حافظه در هر لایه استفاده شده است. همچنین اندازه واژگان ورودی 160هزار و اندازه واژگان خروجی 80هزار کلمه است. حاصل کار یک شبکه LSTM با مجموع 380میلیون پارامتر بوده که 64میلیون آن اتصالات برگشتی هستند. دیگر جزئیات پارامترها و آموزش شبکه عبارتند از: + پارامترها با مقادیر تصادفی از توزیع یکنواخت در بازه [0.08+ و 0.08-] مقداردهی اولیه شدهاند. + برای آموزش از SGD استاندارد با نرخ یادگیری 0.7 استفاده شده است. بعد از گذشت پنج دوره[^24]، نرخ یادگیری در هر نیمدور، نصف میشود. در ضمن تعداد کل دورههای آموزش برابر 7.5 بوده است. + گرادیان بر روی دستههای 128تایی از توالیها محاسبه شده و به اندازه دسته، یعنی 128، تقسیم میشود. + هرچند LSTMها از معضل میرایی گرادیان[^25] رنج نمیبرند، اما ممکن است مشکل انفجار گرادیان[^26] را داشته باشند. بنابراین محدودیت سختی بر مقدار نورم گرادیان اعمال میشود بهاین نحو که هنگامی که نورم از مقدار آستانهای بیشتر شد، مجددا تنظیم شود. برای هر دسته در مجموعه آموزش مقدار $$ s={ ||g|| }_{ 2 }$$ محاسبه میشود که در آن g مقدار گرادیان پس از تقسیم بر 128 است. اگر s>5 شد آنگاه قرار داده میشود: $$ g=\frac { 5g }{ s }. $$ + جملات مختلف طولهای مختلفی دارند. بیشتر آنها کوتاه هستند (طولی بین 20 تا 30 دارند) اما برخی از آنها طولانی هستند (طولی بیشتر از 100 دارند)؛ بنابراین دستههای 128تایی از جملات که تصادفی انتخاب میشوند تعداد کمی جمله طولانی داشته و تعداد زیادی جمله کوتاه و در نتیجه سبب میشود تا بیشتر محاسبات داخل هر دسته هدر روند. برای غلبه بر این موضوع سعی شده است همه جملات داخل یک دسته طول تقریبا مساوی داشته باشند. این امر انجام محاسبات را تا 2 برابر تسریع کرده است. # آزمایشها روش یادگیری توالیبهتوالی معرفی شده روی وظیفه ترجمه ماشینی انگلیسی به فرانسوی در دو حالت مختلف آزمایش گردیده است. در حالت اول مدل، برای ترجمه مستقیم جملات انگلیسی به فرانسوی بهکار گرفته شده و در حالت دوم برای امتیاز دهی مجدد n فهرست بهتر از جملات در وظیفه SMT استفاده شده است. در این قسمت نتایج آزمایشهای انجام گرفته در قالب امتیازهای ترجمه کسب شده، نمونه جملات ترجمه شده و بلاخره مصورسازی بازنمایی جملات ورودی، بیان شده است. ## پیادهسازی پیادهسازی مدل اولیه با زبان ++C انجام شده است. این پیادهسازی از LSTM ژرف با پیکربندی شرح داده شده در بخش 4-1-2 روی یک GPU، تقریبا 1700 واژه بر ثانیه را پردازش میکند. این سرعت برای پردازش حجم داده زیادی مثل مجموعه WMT بسیار پایین است. برای این منظور مدل به صورت موازی شده روی 8 عدد GPU اجرا میگردد. هر لایه از LSTM روی یک GPU اجرا شده و فعالیتهای خود را به محض محاسبه به GPU یا لایه بعدی میدهد. چون مدل چهار لایه دارد، چهار GPU دیگر برای موازیسازی بیشینه هموار استفاده شدهاند بنابراین هر GPU مسئول محاسبه یک ضرب ماتریسی (ماتریس با اندازه 2000 × 1000) است. نتیجه حاصل از این موازیسازی در سطح GPU، رسیدن به سرعت پردازش 6300 واژه بر ثانیه است. فرایند آموزش در این شیوه پیادهسازی، 10 روز به طول انجامید [1]. علاوه بر پیادهسازی اولیه، پیادهسازیهای دیگری نیز از این مدل در زبانها و چهارچوبهای مختلف ارایه شده است؛ از جمله دو پیادهسازی خوب با زبان پایتون و روی چهارچوبهای کاری Tensorflow و Keras. پیادهسازی Tensorflow سازوکارهای جدیدتر مثل سازوکار _attention_ را نیز اضافه کرده است [12]. پیادهسازی Keras هم به جای واژه، در **سطح کاراکتر** انجام شده است [13]. اگرچه در همه پیادهسازیها ترجمه ماشینی، بهعنوان وظیفه انتخاب شده است. اما این مدل عام بود و برای هر وظیفهای که شامل نگاشت یک توالی ورودی به یک توالی خروجی با طولهای متفاوت است، قابل اعمال خواهد بود. ## جزئیات مجموعه داده این قسمت در فاز دوم تکمیل میگردد. ## کدگشایی و امتیازدهی مجدد این قسمت در فاز دوم تکمیل میگردد. ## وارونسازی جملات مبدأ این قسمت در فاز دوم تکمیل میگردد. ## ارزیابی نتایج این قسمت در فاز دوم تکمیل میگردد. ## کارآمدی روی جملات طولانی این قسمت در فاز دوم تکمیل میگردد. ## تحلیل مدل این قسمت در فاز دوم تکمیل میگردد. # نتیجهگیری و کارهای آتی این قسمت در فاز دوم تکمیل میگردد. *** [^25]: vanishing gradient [^26]: exploding gradient [^24]: epoch [^23]: batch [^22]: topic model [^21]: n-best list [^18]: rectified linear unit [^19]: sigmoid [^20]: softmax function [^17]: forward pass [^16]: neural language models [^15]: language model [^14]: statistical machine translation [^13]: neural machine translation [^12]: long-short term memory [^10]: machine translation [^11]: speech recognition [^1]: deep neural networks [^2]: backpropagation [^3]: supervised [^4]: natural language processing [^5]: sequence [^6]: deep feed-forward neural networks [^7]: recurrent neural networks [^8]: convolutional neural networks [^9]: grid # مراجع [1] Q.V. Le Ilya Sutskever, Oriol Vinyals, I. Sutskever, O. Vinyals, and Q. V. Le, “Sequence to sequence learning with neural networks,” _Nips_, pp. 1–9, 2014. [2] I. Goodfellow, Y. Bengio, and A. Courville, _Deep learning_. MIT Press, 2016. [3] “ACL 2014 ninth workshop on statistical machine translation.” [Online]. Available: http://www.statmt.org/wmt14/medical-task/index.html. [Accessed: 13-Nov-2017]. [4] “Tab-delimited bilingual bentence pairsfrom the tatoeba project (good for anki and similar flashcard applications).”[Online]. Available: http://www.manythings.org/anki/. [Accessed: 13-Nov-2017]. [5] M. T. Luong, “Neural machine translation,” Stanford university, 2016. [6] A. Karpathy, “Connecting images and natural language,” Stanford University, 2016. [7] M. Auli, M. Galley, C. Quirk, and G. Zweig, “Joint language and translation modeling with recurrent neural networks.,” _Emnlp_, no. October, pp. 1044–1054, 2013. [8] N. Kalchbrenner and P. Blunsom, “Recurrent continuous translation models,” _Emnlp_, no. October, pp. 1700–1709, 2013. [9] K. Cho _et al._, “Learning phrase representations using RNN encoder-decoder for statistical machine translation,” 2014. [10] D. Bahdanau, K. Cho, and Y. Bengio, “Neural machine translation by jointly learning to align and translate,” pp. 1–15, 2014. [11] A. Graves, “Generating sequences with recurrent neural networks,” pp. 1–43, 2013. [12] M.-T. Luong, E. Brevdo, and R. Zhao, “Neural machine translation (seq2seq) tutorial,” _https://github.com/tensorflow/nmt_, 2017. [13] “Sequence to sequence example in Keras (character-level),” 2017. [Online]. Available: https://github.com/fcholle/keras/blob/master/examples/lstm_seq2seq.py. [Accessed: 13-Nov-2017]. # واژهنامه **واژهنامه فارسی به انگلیسی** | **واژهی فـارسی** | | **معادل انگلیسی** | |:-----------------------:|:------:|:---------------------------------:| | انفجار گرادیان | | Exploding Gradient | | بانظارت | | Supervised | | تابع بیشینه هموار | | Softmax Function | | پردازش زبان طبیعی | | Natural Language Processing (NLP) | | پسانتشار | | Backpropagation | | ترجمه ماشینی | | Machine Translation (MT) | | ترجمه ماشینی آماری | | Statistical Machine Translation (SMT) | | ترجمه ماشینی عصبی | | Neural Machine Translation (NMT) | | تشخیص گفتار | | Speech Recognition | | توالی | | Sequence | | حافظه کوتاه مدت بلند | | Long-Short Term Memory (LSTM) | | دوره | | Epoch | | شبکه عصبی پیچشی | | Convolutional Neural Network (CNN)| | شبکه عصبی رو به جلو ژرف | | Deep Feed-forward Neural Network | | شبکه عصبی ژرف | | Deep Neural Network (DNN) | | شبکه عصبی مکرر | | (RNN) Recurrent Neural Network | | گذر جلو | | Forward Pass | | مدل زبانی | | Language Model (LM) | | مدل زبانی عصبی | | Neural Language Model (NLM) | | میرایی گرادیان | | Vanishing Gradient | ** پانوشتها**