مدل Encoder-Decoder بصورت گسترده در ساختار يادگيری عميق استفاده می شه، هدف از اين نوشته اينه که بفهميم منظور از مدل Encoder-Decoder چيه؟
در این پست، به معرفی مدل Encoder-Decoder (رمزگذار-رمزگشا) می پردازیم، در برخی موارد به عنوان مدل sequence to sequence (seq2seq) نیز شناخته می شود. برای فهم بهتر این مدل، بهتر است آشنایی ابتدایی ای از شبکه RNN داشته باشیم.
مدل های Encoder-Decoder شرایطی را برای یک مدل یادگیری ماشین فراهم می کند تا بتواند برای یک تصویر یک توصیف ارائه کند. در این روش، مدل یک تصویر را به عنوان ورودی دریافت کرده و سپس دنباله ای از کلمات را به عنوان توصیف به خروجی ارائه می کند. این روش در ویدیو نیز کاربرد دارد.
مدل های Encoder-Decoder معنا و احساسات را درک می کنند. به عنوان ورودی به آنها جمله داده می شود و خروجی آنها شامل سطح و نوع احساس نهفته در آن جمله است. سطح بندی احساسات شامل؛ 1- (برای احساس منفی)، 1 (برای احساس مثبت) و 0 (برای احساس طبيعی و خنثی) است. اين مورد، برای تجزيه و تحليل احساسات مشتری های يک محصول که از طريق پيام صوتی و يا پيام متنی، حس خود را منتقل می کنند استفاده می شود.
مدل Encoder-Decoder جمله را به عنوان ورودی گرفته و آن را می خواند سپس پيام و مفهوم آن را فهميده و در نهايت به يک زبان ديگر ترجمه می کند. سرويس ترجمه گوگل براساس ساختار Encoder-Decoder ساخته شده است، براي بدست آوردن اطلاعات بيشتر در اين مورد مي توانيد اين مقاله را مطالعه کنيد.
بهترين راه برای فهميدن مفهوم مدل Encoder-Decoder، توجه به بازی پيکشنری (Pictionary) است. قوانين در اين بازی بسيار ساده هستند، بازيکن شماره 1 بصورت تصادفی يک کلمه یا عبارت را از داخل يک ليست بيرون می کشد و سپس معنای آن را نقاشی می کشد. بازیکن شماره 2 وظیفه تجزیه و تحلیل نقاشی را برعهده دارد و معنای نقاشی را در قالب یک کلمه می بایست توصیف کند. در این مثال، ما سه عنصر مهم داریم، بازیکن 1 (شخصی که عبارت را به نقاشی تبدیل می کند)، نقاشی (اسب) و شخصی که می بایست نقاشی ترسیم شده را حدس بزند (بازیکن 2). این همه اون چیزی است که ما برای فهم مدل Encoder-Decoder نیاز داریم، در ادامه ما یک مقایسه ی تطبیقی بین بازی پيکشنری (Pictionary) و مدل Encoder-Decoder برای ترجمه فارسی به انگلیسی ارائه می کنیم.
اگر تصوير بالا را به مفاهيم يادگيری ماشين تبديل کنيم، تصوير زير بدست خواهد آمد. در ادامه به بررسی هر يک از اجزا می پردازيم.
رمزگذاری (Encoding) به معنای تبديل داده به فرمت مورد نياز است. در مثال پيکشنری (Pictionary) ما يک عبارت را که متن بود به يک نقاشی که يک تصوير است تبديل کرديم. در زمينه يادگيری ماشين، ما دنباله ای از کلمات فارسی را به بردار دو بعدی تبديل می کنيم، اين بردار دو بعدی به عنوان حالت پنهان (Hidden State) شناخته می شود. Encoder با استفاده از شبکه عصبی بازگشتی (RNN) ساخته می شود. علت استفاده از RNN اين است که به مدل اجازه می دهد تا متن و وابستگی های دنباله ای کلمات را به يکديگر درک کند. خروجی مرحله Encoder، حالت پنهان يا Hidden State است، که وضعيت آخرين مرحله زمانی از شبکه RNN است.
خروجی Encoder، يک بردار دو بعدی که معنای کل دنباله ورودی را کپسوله می کند. طول بردار وابسته به تعداد نورون های شبکه RNN است.
رمزگشايی به معنای تبديل يک پيام رمز شده به يک فرمت قابل فهم است. شخص دوم در بازي پيکشنری (Pictionary) تصوير طراحی شده را به يک عبارت تبديل می کند. در مدل يادگيری ماشين، نقش رمزگشا، تبديل بردار دو بعدی به دنباله خروجی، يعنی جمله انگليسی است. Decoder با استفاده از لايه های شبکه RNN برای پيش بينی کلمات انگليسی ساخته می شود.
يکی از مزيت های اين مدل آن است که ممکن است طول دنباله های ورودی و خروجی با يکديگر متفاوت باشد. اين ويژگی امکان خوبی را برای کارهايی مانند؛ ايجاد خودکار زيرنويس برای ويديوها و سيستم های پرسش و پاسخ فراهم می کند. درک مدل های Encoder-Decoder برای آخرين پيشرفت های NLP کليدی است، زيرا اين مدل يکی از موارد اصلی و زيربنای مدل های attention و transformerها است.