مدل ترنسفورمر (Transformer Model) یا مدل انتقالی یک مدل یادگیری عمیق (Deep Learning) است که از مکانیزم توجه  (Attention Mechanism) استفاده می‌کند. این مدل برای اولین بار در سال ۲۰۱۷ معرفی شد. مدل ترنسفورمر (Transformer Model) به‌طور معمول در تحقیقات پردازش زبان های طبیعی (NLP / Natural Language Processing) استفاده می‌شود. در این مطلب تلاش کرده‌ایم تا با بیانی ساده، مدل ترنسفورمر را توضیح دهیم.

ساختار مدل ترنسفورمر (Transformer Model)

اگر در نظر بگیریم که کار مدنظر در اینجا ترجمه‌ی متن است، پس یک مدل ترنسفورمر یا مدل انتقالی در ورودی جمله‌ای را دریافت و در خروجی ترجمه‌ی آن را تحویل می‌دهد. شکل ۱ نمایی از یک مدل ترنسفورمر (Transformer Model) را نمایش می‌دهد.

شکل ۱. نمای کلی از مدل ترنسفورمر (Transformer Model)

همان‌طور که در شکل می‌بینید، این مدل دسته‌ای انکودر (Encoder) و دیکودر (Decoder) دارد که با هم در ارتباط هستند. در مقاله‌ی اصلی تعداد این انکودر و دیکودر ها ۶ در نظر گرفته شده است که البته می‌توان هر تعدادی را در نظر گرفت، اما باید در نظر بگیریم که تعداد انکودر و دیکودر‌ها برابر است. ساختار تمامی انکودر‌ها مشابه یکدیگر است و ساختار دیکودر‌ها نیز مشابه هم است.

شکل ۲. نمایی از مدل ترنسفورمر و دسته‌های انکودر و دیکودر آن

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

ساختار انکودر در مدل ترنسفورمر

هر انکودر دو زیرلایه‌ی مجزا‌ دارد که لایه‌ی اول لایه Self-Attention و لایه‌ی دوم یک شبکه عصبی پیشخور (Feedforward Neural Network) است.

شکل ۳. لایه‌های تشکیل‌دهنده‌ی هر انکودر

ورودی انکودر ابتدا از یک لایه‌ی Self-Attention عبور می‌کند که به انکودر کمک می‌کند تا در حین انکودکردن یک کلمه به کلمه‌های دیگر موجود در جمله هم توجه کند. خروجی لایه‌ی Self-Attention  به یک لایه‌ی شبکه‌ی عصبی پیشخور وارد می‌شود.

ساختار دیکودر در مدل ترنسفورمر

هر دیکودر نیز دو لایه‌ی Self-Attention و شبکه‌ی عصبی پیشخور دارد، با این تفاوت که در دیکودرهای لایه توجه دیگری به‌نام Encoder-Decoder Attention  وجود دارد که به دیکودر کمک می‌کند تا روی کلمه‌های مرتبط تمرکز کند. درواقع این لایه دقیقاً همان کاری را می‌کند که سازوکار توجه در مدل های ترتیبی (Seq2Seq Models) انجام می‌دهد.

شکل ۴. لایه‌های تشکیل‌دهنده‌ی دیکودر

حال که ساختار کلی مدل ترنسفورمر (Transformer Model) را بررسی کردیم، به توضیح جزئیات بیشتر درباره‌ی آن می‌پردازیم.

جزئیات ساختار یک مدل ترنسفورمر

در پردازش زبان‌های طبیعی اولین قدم تبدیل کلمات ورودی به بردار است تا برای ماشین فهمیدنی باشد. این کار را الگوریتم‌های تعبیه کلمات (Word Embedding) انجام می‌دهند.

تعبیه‌ی کلمات در مدل ترنسفورمر فقط در اولین انکودر (پایین ترین انکودر) صورت می‌گیرد. همه‌ی انکودر‌ها فهرستی از بردارها به سایز ۵۱۲ را دریافت می‌کنند که در اولین انکودر همان بردار تعبیه است و در انکودر‌های دیگر بردار خروجی انکودر قبلی است. اندازه‌ی این فهرست یک هایپر‌‌پارامتر است که براساس بلند‌ترین جمله‌ی موجود در مجموعه‌ی داده‌ها مشخص می‌شود.

شکل ۶. ورود بردار کلمات و عبور از لایه‌های مختلف انکودر

بعد از اینکه هر کلمه‌ی ورودی را به بردار مدنظر تبدیل کردیم و به‌اصطلاح بعد از فرایند تعبیه، هر یک از دو زیرلایه‌ی موجود در انکودرها عبور می‌کنند. در اینجا این نکته مهم است که این کلمات به‌طور موازی وارد انکودر می‌شوند که این یکی از ویژگی‌های متمایزکننده مدل ترنسفورمر (Transformer Model) محسوب می‌شود.

نکته ای که در اینجا باید به آن توجه کنیم این است که در مدل ترنسفورمر ترتیب کلمات ورودی با انکودینگ موقعیتی (Positional Encoding) مدنظر قرار می‌گیرد. به‌این شکل که در مدل ترنسفورمر به هر بردار تعبیه‌ی ورودی یک بردار دیگر هم اضافه می‌شود. این بردار درواقع یک الگوی مشخص را که مدل یاد می‌گیرد دنبال می‌کنند و این به مدل کمک می‌کند تا موقعیت هر کلمه یا فاصله‌ی موجود بین کلمه‌های مختلف را در توالی ورودی تشخیص دهد.

شکل ۷. اضافه‌کردن انکودینگ موقعیتی به بردار کلمات ورودی

حال اگر عمیق‌تر به ساختار مدل ترنسفورمر (Transformer Model) توجه کنیم باید به این نکته نیز اشاره کنیم که هر زیرلایه موجود در انکودر و دیکودر یک اتصال دیگر نیز دارند و درواقع هر یک دارای یک گام نرمالیزه‌کردن لایه (Layer-Normalization Step) هستند.

شکل ۸. لایه‌ی نرمالیزه‌ی موجود در انکودر

شکل کلی یک مدل ترنسفورمر با دو انکودر و دو دیکودر به‌این صورت خواهد بود:

شکل ۸. لایه‌ی نرمالیزه‌ی موجود در انکودر

حالا نحوه‌ی کار بخش انکودر و دیکودر را بررسی می‌کنیم.

نحوه‌ی کار یک مدل ترنسفورمر

در ابتدا انکودر شروع به پردازش توالی ورودی می‌کند و خروجی آخرین لایه‌ی انکودر به دو بردار توجه K و V تبدیل می‌شود ( شکل ‍۱۰). این دو بردار در لایه‌ی Encoder-Decoder Attention  هر دیکودر استفاده می‌شوند تا به دیکودر کمک کنند به کلمات مرتبط و مناسب در توالی توجه کند. در شکل‌های زیر در مثالی این مرحله‌ها را در بخش انکودر مشاهده می‌کنید:

شکل ۱۰. خروجی بخش انکودر، دو بردار K و V
شکل ۱۱. ورود خروجی بخش انکودر به دیکودر اول
شکل ۱۲. ورود خروجی بخش انکودر به دیکودر دوم و تولید کلمه‌ی اول در خروجی

این مراحل انجام می‌شود تا زمانی که دیکودر در آخر یک خروجی ارائه کند که نشان می‌دهد کار دیکودر تمام شده است. هر خروجی که در هر گام زمانی ایجاد می‌شود در گام زمانی بعدی به اولین دیکودر وارد می‌شود و مرحله‌به‌مرحله به دیکودرهای بعدی وارد می‌شود. در اینجا، همانند کاری که در ورودی بخش انکودر انجام دادیم، هر ورودی بخش دیکودر تعبیه و انکودینگ موقعیتی هم به آن اضافه می‌شود تا موقعیت هر کلمه‌ی ورودی مشخص شود. در شکل‌های این مرحله‌ها را که در بخش دیکودر اتفاق می‌افتد در گام‌های زمانی مختلف مشاهده می‌کنید:

شکل ۱۳. ورود خروجی گام زمانی قبلی به دیکودر و تولید خروجی بعدی در گام زمانی جدید
شکل ۱۴. ورود خروجی گام قبلی به دیکودر و تولید خروجی بعدی در گام سوم
شکل ۱۵. ورود خروجی گام قبلی به دیکودر و تولید خروجی بعدی در گام چهارم
شکل ۱۶. ورود خروجی گام قبلی به دیکودر و تولید خروجی نهایی

در دیکودرها لایه‌های Self-Attention عملکرد متفاوتی در مقایسه با لایه‌های Self-Attention در انکودرها دارند، به‌این شکل آن‌ها فقط اجازه‌ی دسترسی به موقعیت‌های قبلی در توالی خروجی را دارند و نه بعدی. این کار با عملیات پنهان‌کردن یا مسک‌کردن (Masking) موقعیت‌های بعدی انجام می‌شود.

لایه‌ی سافت‌مکس (Softmax)

از آنجا که خروجی دست‌های دیکودر یک بردار است و لازم است این بردار به کلمات تبدیل شوند، درنهایت یک لایه‌ی سافت‌مکس (Softmax) و خطی داریم تا این کار را انجام دهد. لایه‌ی خطی یک شبکه‌ی عصبی کاملاً متصل (Fully Connected Neural network) است که بردار خروجی بخش دیکودر را به یک بردار بسیار بزرگتر به‌نام logits تبدیل می‌کند که اندازه‌ی آن برابر با تعداد کلماتی است که مدل یاد گرفته است؛ برای مثال، اگر مدل ۲۰هزار کلمه را یاد گرفته باشد، پس بردار logits ۲۰هزار سلول دارد که هر یک از آن‌ها عدد یا امتیاز هر کلمه را مشخص می‌کند. به‌کمک همین بردار ما قادر به تفسیر خروجی مدل با لایه‌ی خطی هستیم.

شکل ۱۷. لایه‌های سافت‌مکس و خطی در مدل ترنسفورمر

لایه‌ی سافت‌مکس در آخر این امتیازها را به احتمالات تبدیل می‌کند، به‌طوری که همه مثبت باشند و جمع‌ آن‌ها با هم ۱ باشد. سلولی که بالاترین احتمال را داشته باشد انتخاب و کلمه‌ی مرتبط با آن در خروجی در آن گام زمانی نشان داده می‌شود.

حرف آخر

با ورود مدل ترنسفورمر (Transformer Model) انقلابی در معماری انکودر‌ـ‌دیکودر شکل گرفت. قبل از مدل ترنسفورمر، شبکه‌ی عصبی بازگشتی (RNN / Recurrent Neural Network) و انواع جدید‌تر آن، یعنی LSTM  و GRU، در پردازش داده‌های ترتیبی (Sequential Data) استفاده می‌شدند. با ظهور مدل ترنسفورمر که در ساختار خود از مکانیزم توجه (Attention Mechanism) استفاده می‌کند، شبکه‌های RNN، LSTM و GRU جایگزین شده‌اند و حالا در زمینه پردازش داده‌های ترتیبی، مدل ترنسفورمر حرف اول را می‌زند.

یادگیری دیتا ساینس با کلاس‌های آنلاین آموزش علم داده کافه‌تدریس

اگر به یادگیری دیتا ساینس و ماشین لرنینگ علاقه دارید، کلاس‌های آنلاین آموزش علم داده کافه‌تدریس به شما امکان می‌دهد در هر نقطه‌ی جغرافیایی به بروزترین و جامع‌ترین آموزش علم داده دسترسی داشته باشید.

کلاس‌های آنلانی آموزش علم داده کافه‌تدریس به‌صورت تعاملی و پویا و کارگاهی و براساس کار روی پروژه‌های واقعی علم داده برگزار می‌شود و صفر تا صد مباحث آموزشی را دربرمی‌گیرد.

برای آشنایی بیشتر با کلاس‌های آنلاین آموزش علم داده کافه‌تدریس و مشاوره‌ی رایگان برای شروع یادگیری روی این لینک کلیک کنید:

دوره جامع آموزش علم داده (Data Science)

هفت‌خوان: مطالعه کن، نظر بده، جایزه بگیر!

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

جوایز هفت‌خوان

  • ۱,۵۰۰,۰۰۰ تومان جایزه نقدی
  • ۳ کلاس رایگان ۵۰۰,۰۰۰ تومانی

پرسش‌های مسابقه

برای شرکت در هفت‌خوان کافه‌تدریس در کامنت همین مطلب به این پرسش‌ها پاسخ دهید:

  • لایه‌ی سافت‌مکس در نحوه‌ی کار مدل ترنسفورمر چگونه عمل می‌کند؟
  • انکودر در مدل ترنسفورمر چه نقشی ایفا می‌کند؟
  • مدل ترنسفورمر چه ساختاری دارد؟

هفت‌خوان‌پلاس

برای بالابردن شانس‌تان می‌توانید این مطلب را هم مطالعه کنید و به پرسش‌های آن پاسخ دهید:

۶ کاربرد پردازش زبان طبیعی در پزشکی