شبکههای عصبی توالی به توالی یا همان sequence to sequence که به اختصار Seq2Seq نیز نامیده میشود ابتدا توسط گوگل جهت انجام عملیات ترجمهی ماشینی (machine translation) ارائه شد. این شبکهها که به نوعی همان شبکههای عصبی بازگشتی (RNN) هستند، توانایی دریافت توالی از ورودیها و تبدیل آنها به توالی از خروجیها را دارند.
فرض کنید مجموعهی دادهای مانند شکل زیر داریم که توسط یک فرد متخصص از فارسی به انگلیسی ترجمه شده است:
متن انگلیسی | متن فارسی |
I went home, yesterday | دیروز به خانه رفتم |
The teas was so hot | چایی بسیار داغ بود |
I turned the laptop on | من لپتاپ را روشن کردم |
… | … |
میخواهیم الگوریتم توسعه دهیم که با مشاهدهی مجموعهی دادهی بالا، یادگیری را انجام دهد و بعد از یادگیری، بتواند متون فارسی را به انگلیسی ترجمه کند. برای این کار مانند شکل زیر میتوان یکی یکی جملات را به همراه ترجمهی آنها به الگوریتم Seq2Seq داد و این الگوریتم با دریافت توالی کلمات فارسی در هر جمله، میتواند توالی کلمات خروجی به انگلیسی را نمایش دهد:
هر کدام از بلوکهای نمایش داده شده در شکل بالا یک شبکهی عصبی بازگشتی (برای مثال RNN ساده یا LSTM یا GRU) است که در دروس قبلی به آنها پرداخته شد که در کنار یکدیگر یک شبکهی عصبی Seq2Seq را تشکیل میدهند که برای هدفِ ترجمهی ماشینی ساخته شده است. این شبکهی عصبی، مجموعهای از جملات را به همراه ترجمهی آنها به انگلیسی دریافت کرده و با مشاهدهی این مجموعهی داده، میتواند یادگیری را انجام دهد. بعد از فازِ یادگیری، الگوریتم میتواند از این به بعد با مشاهدهی یک جملهی فارسی، جملهی معادل انگلیسی آنها تولید کند حتی اگر دقیقا مشابه همین جملهی جدید را قبلاً ندیده باشد.
در واقع الگوریتم در فرآیند یادگیری و با مشاهدهی مجموعهی دادههای آموزشی با آپدیت کردن وزنها در بلوکهای RNN میتواند الگوی ترجمه را مانند یک انسان یادگرفته و با توجه به ترکیبی از کلمات از زبان مبدا، ترکیبی از کلمات به زبان مقصد را ترجمه کند و این کار توسط روشهایی مانند روشِ Seq2Seq شکلِ بالا با دقت مناسبی انجام میشود.
همانطور که در شکل بالا مشخص است، شبکههای عصبی Seq2Seq دارای دو فاز هستند. فاز اول کدگذاری (encode) و فاز دوم کدگشایی (decode). در فاز اول یعنی همان کدگذاری (encode) الگوریتم، ترتیبی از ورودی را گرفته (مثلاً ترتیبی از کلمات داخل یک جمله را گرفته) و به یک مجموعه عدد در فضای اقلیدسی تبدیل میکند (به یک وکتور عددی تبدیل میکند). در واقع الگوریتم ورودیهای گرفته شده را به یک زبانِ میانیِ ریاضی تبدیل میکند. حال در فاز دوم، خروجیِ فاز اول (که همان زبانِ میانیِ ریاضی بود) گرفته شده و توسط بلوکهای کُدگشا، کُدگشایی میشوند. در فرآیند کُدگشایی (decode)، خروجی نهایی با توجه مقادیر دریافتی از فازِ قبلی (encode) تولید میشوند. برای نمونه در مثالِ ترجمهی ماشینی، در فازِ دوم، کُدگشا (decoder) مجموعه عددِ تولید شده توسط کدگذار (encoder) را گرفته و به ترتیبی از کلمات در زبان مقصد تبدیل میکند.
در شکل زیر این دو فاز به همراه محصول میانی مشخص شدهاند:
به عنوان تشبیهی ساده فرض کنید یک شرکت تولید آبمیوه میخواهد از میوههای مختلف، آبمیوه تولید کند. معمولاً این کار در دو فاز انجام میشود. در فاز اول، میوهها از طریق یک کدگذار (encoder) به کنساترهی خشک تبدیل شده و در محلی نگهداری و حمل میشود. بعد از آن در فازِ بعدی یک کدگشا (decoder) این کنساترهی خروجی از فاز اول را دریافت کرده و با اضافه کردن شکر، ویتامینهای مختلف و آب، به یک آبمیوه تبدیل میکند.
ویدیو زیر یک تصویر متحرک از نحوهی کار کردن شبکههای عصبی توالی به توالی یا همان Seq2Seq را برای مسئلهی ترجمهی ماشینی نمایش میدهد:
همانطور که احتمالاً متوجه شدید، در شبکههای عصبی Seq2Seq یادگیری در وزنهای موجود در هر کدام از بلوکهای RNN انجام میشود و تحقیقات مختلف نشان داده است که استفاده از این شبکهها، میتواند دقت را در بسیاری از الگوریتمهای یادگیری ماشین که نیاز به ترتیبی از ورودی به ترتیبی از خروجی دارند، بسیار بهبود ببخشد.
کاربردهای بسیار زیاد و متنوعی برای این دسته از شبکههای عصبی وجود دارد که علاوه بر ترجمهی هوشمند میتوان به تولید توضیحات با توجه به یک تصویر (image captioning) و یا تولید یک تصویر از روی توضیحات (text to image) و یا تولید ادامهی فریمهای یک ویدیو (video completion) اشاره کرد.
- ۱ » یادگیری عمیق (Deep Learning) چیست؟
- ۲ » تفاوت یادگیری عمیق (Deep Learning) با یادگیری ماشین کلاسیک
- ۳ » تفاوت شبکههای عصبی (Neural Networks) با یادگیری عمیق (Deep Learning) چیست؟
- ۴ » مشکل محوشدگی گرادیان (Gradient Vanishing) در شبکههای عصبی عمیق
- ۵ » مشکل انفجار گرادیان (Exploding Gradients) در شبکههای عصبی عمیق
- ۶ » توابع فعالسازی (Activation Functions) در شبکههای عصبی عمیق
- ۷ » شبکه عصبی پیچشی (Convolutional Neural Network) در یادگیری عمیق
- ۸ » شبکه عصبی بازگشتی (Recurrent Neural Network)
- ۹ » انواع شبکههای عصبی بازگشتی (RNN) و کاربرد آنها
- ۱۰ » شبکه عصبی بازگشتی با حافظهی طولانی کوتاه مدت (LSTM)
- ۱۱ » شبکه عصبی واحد بازگشتی دروازهدار (GRU)
- ۱۲ » شبکههای عصبی عمیق توالی به توالی (Seq2Seq)