ترنسفورمر (Transformer) چیست؟
ترنسفورمر یک معماری جدید شبکه عصبی است که در تسکهایی نظیر ترجمه ماشینی استفاده میشود. مزیت این روش نسبت به روشهایی نظیر شبکه های recurrent نظیر RNNها، LSTM و GRU علاوه بر افزایش دقت چشمگیر (در برخی از تسکها)، موازی سازی است. چرا که در یک واحد بازگشتی شما باید ورودی هر لحظه زمانی را به مدل بدهید و پس از به روز شدن حافظه آن واحد ورودی لحظهی بعدی را بدهید که این کار باعث کند شدن آموز و پاسخ مدل خواهد شد. اما در ترنسفورمرها ورودی در یک لحظه به مدل داده شده و با روش های دیگر ترتیب کلمات یا ورودی از جنس سری زمانی را به شبکه میفهمانیم.
معماری ترنسفورمر اولین بار در مقالهی Attention is All You Need مطرح شد. پیادهسازی تنسرفلوی آن نیز به عنوان بخشی از بسته Tensor2Tensor در دسترس است. همچنین گروه NLP دانشگاه هاروارد یک راهنمای حاشیه نویسی مقاله با پیاده سازی PyTorch ایجاد کرده که به درک مقاله میتواند کمکتان کند.
توجه یا Attention
توجه یک مفهوم است که به بهبود عملکرد برنامههای ترجمه ماشین (machine translation) شبکه عصبی کمک کرده است. اگر قبلا دورهی شبکههای بازگشتی (RNN) ها را دیده باشید، در قسمت آخر در مورد مکانیزم توجه صحبت شده است.
یک نگاه سطح بالا به ترنسفورمرها

با نگاه اولیه به داخل این جعبهسیاه، یک خودرمزگذار (اتوانکودر) شامل یک مؤلفهی رمزگذاری، یک مؤلفه رمزگشایی و اتصالات آنها را میتوان دید.
مؤلفه رمزگذاری شامل تعدادی رمزگذار(انکودر) پشت هم است (شش عدد از آنها را روی هم قرار می دهد – هیچ چیز جادویی در مورد عدد شش وجود ندارد، قطعاً می توان با ترتیبات دیگری آزمایش کرد). جزء رمزگشایی نیز شامل به همان تعداد واحد رمزگشا(دیکودر) است.
رمزگذارها از نظر ساختار همه باهم یکسانند، البته بدیهی است که هر رمزگذار وزن های خودش را دارد. هر واحد رمزگذار به دو زیر لایه مطابق تصویر زیر تقسیم می شود:
هر رمزگذار ابتدا ورودیش را به یک لایهی توجه-به-خود (Self-attention) میدهد. لایهای که به رمزگذار کمک میکند تا در کد کردن هر کلمه، کلمات دیگر در جمله ورودی را نیز در نظر بگیرد، دلیل اینکار در ادامه توضیح داد خواهد شد.
سپس خروجی لایهی توجه-به-خود به یک شبکه عصبی داده می شود. این شبکه عصبی بهطور مستقل برای هر موقعیت از کلمات یک جمله اعمال میشود.
رمزگشا نیز هر دو لایه را دارد، اما بین آنها یک لایه توجه وجود دارد که به رمزگشا کمک می کند تا روی قسمت های مربوطه جمله ورودی تمرکز کند (همان چیزی که مکانیزم توجه در مدل های seq2seq انجام می دهد).
درک تصویری تنسورها
اکنون که اجزای اصلی مدل را دیدیم، بیایید به بررسی بردارها/تنسورهای مختلف و چگونگی جران این تنسورها از ورودی تا خروجی یک مدل آموزش دیده بپردازیم.
همانطور که در اکثر کاربردهای پردازش زبان طبیعی یا NLP ما کلمات ورودی را به یک بردار امبدینگ (Embedding) تبدیل میکنیم، در اینجا هم همین کار را انجام میدهیم.


اکنون در حال رمزگذاری هستیم!

توجه-به-خود در سطح بالا
”The animal didn’t cross the street because it was too tired”
- “در طبیعت شیر به عنوان یک شکارچی خطرناک شناخته میشود.”
- “نوشیدن روزانه حداقل یک لیوان شیر برای رشد و استحکام استخوانها ضروری است.”

جزئیات بیشتر توجه-به-خود (Self-Attention)

دیدگاهتان را بنویسید