ترنسفورمر (یادگیری عمیق)

بندانگشتی|ترنسفورمرها (یادگیری ماشین)
**ترنسفورمر** یا مُبَدِّل، روشی است که به رایانه اجازه می‌دهد تا یک دنباله از نویسه‌ها را به دنباله دیگری از نویسه‌ها تبدیل کند. این روش می‌تواند برای مثال برای ترجمه متن از یک زبان به زبان دیگر استفاده شود. برای این کار، ترانسفورمور با استفاده از یادگیری ماشین بر روی مجموعه بزرگی از داده‌های نمونه آموزش داده می‌شود و سپس مدل آموزش‌دیده برای ترجمه استفاده می‌شود.

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

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

ترانسفورمر در مقایسه با معماری‌های حافظه بلندمدت کوتاه‌مدت (LSTM) کارایی بیشتری دارد و پایه و اساس بسیاری از مدل‌های یادگیری ماشین پیش‌آموزشی مانند BERT و GPT است. از مبدل‌ها همچنین به عنوان Evoformer در AlphaFold2 استفاده می‌شود.

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

مانند شبکه عصبی بازگشتی (RNN)، ترنسفورمرها برای مدیریت داده‌های ورودی mdhmd، مانند زبان طبیعی، برای کارهایی مانند ترجمه و خلاصه متن طراحی شده‌اند. با این حال، برخلاف شبکه عصبی بازگشتیها، ترنسفورمرها لزوماً داده‌ها را به ترتیب پردازش نمی‌کنند. در عوض، مکانیسم توجه زمینه را برای هر موقعیتی در دنباله ورودی فراهم می‌کند. به عنوان مثال، اگر داده ورودی یک جمله زبان طبیعی باشد، ترانسفورمر نیازی به پردازش ابتدای جمله قبل از پایان ندارد. در عوض، زمینه ای را مشخص می‌کند که به هر کلمه در جمله معنا می‌بخشد. این ویژگی اجازه می‌دهد تا موازی سازی بیشتر از شبکه عصبی بازگشتیها باشد و بنابراین زمان آموزش را کاهش می‌دهد.

ترنسفورمرها در سال ۲۰۱۷ توسط تیمی در گوگل برینمعرفی شدند و به‌ طور فزاینده ای به عنوان بهترین مدل در حل مسائل NLP مورداستفاده قرار می‌گیرند  و جایگزین مدل‌های شبکه عصبی بازگشتی مانند حافظه کوتاه‌مدت طولانی شدند. قابلیت موازی‌سازی آموزش در ترانسفورمرها امکان آموزش بر روی مجموعه داده‌های بزرگتر را می‌دهد که تا پیش از حضور آنها به سختی ممکن بود. این موضوع منجر به توسعهسیستم‌های از پیش آموزش‌دیده مانند برت (نمایش رمزگذار دوطرفه از ترنسفورمرها) و GPT (ترنسفورمر تولیدگر از پیش آموزش‌دیده)، که با مجموعه داده‌های زبانی بزرگ، مانند ویکی‌پدیا و Common Crawl آموزش دیده‌اند، و می‌توان آنها را برای کارهای خاص به‌خوبی تنظیم کرد.

## پس زمینه
بندانگشتی|مبدل
قبل از ظهور ترنسفورمرها، در بیشتر سیستم‌های NLP پیشرفته، نسخه‌های اولیه مکانیسم توجه را به شبکه‌های عصبی بازگشتی دروازه‌دار (مانند حافظه کوتاه-مدت طولانی و واحد بازگشتی دروازه‌ای ) اضافه کرده بودند. در شبکه های عصبی بازگشتی، مجموعه داده ها با توجه به توالی آنها مورد پردازش قرار میگیرند. ترنسفورمرها بر اساس مکانیسم توجه، و بدون استفاده از ساختار شبکه عصبی بازگشتی ساخته شده‌اند، و این واقعیت را برجسته می‌کند که مکانیسم‌های توجه تنها با استفاده از "توجه" می‌توانند با عملکرد شبکه عصبی بازگشتیها رقابت کنند.

### پردازش متوالی
شبکه عصبی بازگشتیهای دروازه ای توکن‌ها را به صورت متوالی پردازش می‌کنند و یک بردار حالت را حفظ می‌کنند که حاوی نمایشی از داده‌هایی است که بعد از هر نشانه مشاهده می‌شود. برای پردازش علامت n ام، مدل حالتی را که جمله را تا توکن n-1 نشان می‌دهد با اطلاعات نشانه جدید برای ایجاد یک حالت جدید، نشان دهنده جمله تا نشانه n. از نظر تئوری، اطلاعات یک توکن می‌تواند به‌طور دلخواه در طول توالی منتشر شود، اگر در هر نقطه، وضعیت به رمزگذاری اطلاعات متنی در مورد نشانه ادامه دهد. در عمل، این مکانیسم ناقص است: مسئله گرادیان محوشونده وضعیت مدل را در پایان یک جمله طولانی بدون اطلاعات دقیق و قابل استخراج دربارهٔ نشانه‌های قبلی ترک می‌کند.
وابستگی محاسبات توکن به نتایج محاسبات توکن‌های قبلی نیز موازی کردن محاسبات روی سخت‌افزار یادگیری عمیق مدرن را دشوار می‌کند. این می‌تواند آموزش شبکه عصبی بازگشتیها را ناکارآمد کند.

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

مثال واضحی از ارزش توجه در ترجمه ماشینی است، که در آن زمینه برای تعیین معنای یک کلمه در جمله ضروری است. در سیستم ترجمه انگلیسی به فرانسوی، احتمالاً اولین کلمه خروجی فرانسوی به شدت به چند کلمه اول ورودی انگلیسی بستگی دارد. با این حال، در یک مدل کلاسیک حافظه طولانی کوتاه-مدت، برای تولید اولین کلمه خروجی فرانسوی، مدل فقط بردار حالت کلمه انگلیسی «آخرین» را به مدل داده می‌شود. از نظر تئوری، این بردار می‌تواند اطلاعات مربوط به کل جمله انگلیسی را رمزگذاری کند و تمام دانش لازم را به مدل بدهد. در عمل، این اطلاعات اغلب به خوبی توسط حافظه طولانی کوتاه-مدت حفظ می‌شود. یک مکانیسم توجه می‌تواند برای رفع این مشکل اضافه شود: رمزگشا به بردارهای وضعیت هر کلمه ورودی انگلیسی دسترسی دارد، نه فقط آخرین کلمه، و می‌تواند وزن‌های توجه را یاد بگیرد که میزان توجه به هر بردار حالت ورودی انگلیسی را تعیین می‌کند.

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

## معماری
### معماری رمزگذار-رمزگشا
مانند مدل‌های قبلی seq2seq، مدل اولیه ترانسفورمر از معماری «رمزگذار-رمزگشا» استفاده می‌کرد. رمزگذار از لایه‌های رمزگذاری تشکیل شده‌است که ورودی را به‌طور مکرر یکی پس از دیگری پردازش می‌کند، در حالی که رمزگشا شامل لایه‌های رمزگشایی است که همان کار را با خروجی رمزگذار انجام می‌دهد.

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

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

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

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

برای هر واحد توجه، مدل ترانسفورمر سه ماتریس وزن را یادمی‌گیرد. وزن پرس و جو W_Q، وزن کلید W_K و وزن مقدار W_V. برای هر نشانه  i ، ورودی جاسازی کلمه  x_i  با هر یک از سه ماتریس وزن ضرب می‌شود تا یک بردار پرس و جو تولید شود  q_i = x_i W_Q ، یک بردار کلید  k_i = x_iW_K ، و یک بردار مقدار  v_i = x_iW_V . وزن توجه با استفاده از پرس و جو و بردارهای کلید محاسبه می‌شود: وزن توجه a_{ij} از نشانه  i  تا نشانه j حاصل ضرب نقطه ای بین  q_i  و  k_j . وزن‌های توجه بر جذر ابعاد بردارهای کلیدی تقسیم می‌شوند، \sqrt{d_k}، که گرادیان‌ها را در طول تمرین تثبیت می‌کند و از یک بیشینه هموار عبور می‌کند که وزن‌ها را عادی می‌کند. این واقعیت که W_Q و W_K ماتریس‌های متفاوتی هستند باعث می‌شود توجه غیر متقارن باشد: اگر نشانه  i  به نشانه j (یعنی  q_i \ cdot k_j  بزرگ است، این لزوماً به این معنی نیست که نشانه j به نشانه  i  (یعنی q_j\cdot k_i  خواهد آمد k_i  می‌تواند کوچک باشد). خروجی واحد توجه برای نشانه  i  مجموع وزنی بردارهای ارزش همه نشانه‌ها است که با a_{ij} وزن شده‌است، توجه از نشانه  i  به هر نشانه.

محاسبه توجه برای همه نشانه‌ها را می‌توان به عنوان یک محاسبه ماتریس بزرگ با استفاده از بیشینه هموار بیان کرد که به دلیل بهینه‌سازی عملیات ماتریس محاسباتی که به سرعت عملیات ماتریس را محاسبه می‌کند برای آموزش مفید است. ماتریس‌های Q، K و V به‌عنوان ماتریس‌هایی تعریف می‌شوند که در آن ردیف‌های  i  بردار هستند. به ترتیب  k_i  و  v_i  و q_i

\begin{align}
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\mathrm{T}}{\sqrt{d_k}}\right)V
\end{align}

#### توجه چند سر
یک مجموعه از ماتریس‌های \left(W _Q, W_K, W_V \right) «سر توجه» نامیده می‌شود و هر لایه در یک مدل ترانسفورمر دارای سرهای توجه متعددی است. در حالی که هر سر توجه به نشانه‌های مربوط به هر نشانه توجه می‌کند، با سرهای توجه متعدد، مدل می‌تواند این کار را برای تعاریف مختلف «ارتباط» انجام دهد. علاوه بر این، میدان تأثیر نشان دهنده ارتباط می‌تواند به تدریج در لایه‌های متوالی گشاد شود. بسیاری از سرهای توجه ترانسفورمر روابط مرتبطی را رمزگذاری می‌کنند که برای انسان معنادار است. برای مثال، سرهای توجه می‌توانند بیشتر به کلمه بعدی توجه کنند، در حالی که دیگران عمدتاً از افعال به مفعول مستقیم خود توجه می‌کنند. محاسبات برای هر سر توجه را می‌توان به صورت موازی انجام داد، که امکان پردازش سریع را فراهم می‌کند. خروجی‌های لایه توجه به هم متصل می‌شوند تا به لایه‌های شبکه عصبی پیش‌خور منتقل شوند.

### رمزگذار
هر رمزگذار از دو جزء اصلی تشکیل شده‌است: یک مکانیسم توجه به خود و یک شبکه عصبی پیشخور. مکانیسم توجه به خود کدهای ورودی را از رمزگذار قبلی می‌پذیرد و ارتباط آنها را با یکدیگر برای تولید کدهای خروجی می‌سنجد. شبکه عصبی پیشخور بیشتر هر کدگذاری خروجی را به صورت جداگانه پردازش می‌کند. این کدهای خروجی سپس به رمزگذار بعدی به عنوان ورودی آن و همچنین به رمزگشاها ارسال می‌شود.

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

### رمزگشا
هر رمزگشا از سه جزء اصلی تشکیل شده‌است: مکانیسم توجه به خود، مکانیسم توجه روی رمزگذاری‌ها و شبکه عصبی پیش‌خور. رمزگشا به روشی مشابه رمزگذار عمل می‌کند، اما مکانیسم توجه اضافی درج شده‌است که در عوض اطلاعات مربوطه را از رمزگذاری‌های تولید شده توسط رمزگذارها می‌گیرد.

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

### جایگزین‌ها
آموزش معماری‌های مبتنی بر ترانسفورمر می‌تواند گران باشد، به خصوص برای ورودی‌های طولانی. معماری‌های جایگزین شامل Reformer است (که بار محاسباتی را از O(N^2) به O(N\ln N)) کاهش می‌دهد. یا مدل‌هایی مانند ETC/ BigBird (که می‌تواند آن را به O(N) کاهش دهد) که در آن N طول توالی. این کار با استفاده از درهم‌سازی حساس به محلی  و لایه‌های برگشت‌پذیر انجام می‌شود.
یک معیار برای مقایسه معماری ترانسفورمر در اواخر سال ۲۰۲۰ معرفی شد.

## آموزش
ترنسفورمرها معمولاً تحت یادگیری نیمه‌نظارتی شامل یادگیری بی‌نظارت پیش آموزش و سپس تنظیم دقیق نظارت شده قرار می‌گیرند. به دلیل در دسترس بودن محدود داده‌های آموزشی برچسب‌گذاری‌شده، معمولاً پیش‌آموزش بر روی مجموعه داده‌های بزرگ‌تری نسبت به تنظیم دقیق انجام می‌شود. وظایف پیش‌آموزشی و تنظیم دقیق معمولاً عبارتند از:

* مدل‌سازی زبان
* پیش‌بینی جمله بعدی
* پاسخ به پرسش
* درک مطلب
* تحلیل احساسات
* پارافریزی

## برنامه‌های کاربردی
ترانسفورمر موفقیت زیادی در پردازش زبان طبیعی (NLP) داشته‌است، به عنوان مثال وظایف ترجمه ماشینی و سری‌های زمانی پیش‌بینی بسیاری از مدل‌های از پیش آموزش دیده مانند GPT-2، GPT-3، برت (مدل زبانی), XLNet و RoBERTa توانایی ترنسفورمرها را برای انجام طیف گسترده‌ای از وظایف مرتبط با NLP نشان می‌دهند و پتانسیل یافتن برنامه‌های کاربردی در دنیای واقعی را دارند

اینها ممکن است شامل موارد زیر باشد:

* ترجمه ماشینی
* خلاصه‌سازی اسناد
* تولید سند

* شناسایی نهاد نامگذاری شده

* آنالیز دنباله بیولوژیک
* نوشتن برنامه‌های رایانه‌ای
* درک تصویری (ویدیویی)

علاوه بر برنامه های کاربردی NLP، در زمینه های دیگری مانند بینایی کامپیوتر یا برنامه های تاشوندگی پروتئین (مانند AlphaFold ) نیز موفق بوده است.

در سال ۲۰۲۰، نشان داده شد که معماری ترانسفورمر، به‌طور خاص GPT-2، می‌تواند برای بازی شطرنج تنظیم شود ترنسفورمرها برای پردازش تصویر با نتایج قابل رقابت با شبکه عصبی پیچشی به کار رفته‌اند.

## پیاده‌سازی‌ها
مدل ترانسفورمر در چارچوب‌های یادگیری عمیق استاندارد مانند تنسورفلو و پای‌تورچ پیاده‌سازی شده‌است.

*ترنسفورمر* یک کتابخانه است که توسط هاگینگ فیس  تولید شده است و معماری‌های مبتنی بر ترانسفورمر و مدل‌های از پیش آموزش‌دیده را ارائه می‌دهد.

## جستارهای وابسته
* درک
* واحد بازگشتی دروازه‌ای
* GPT-3
* وو دائو
* ترانسفورمرهای بینایی

## منابع

## ادامه مطلب
* Hubert Ramsauer *et al.* (2020), "Hopfield Networks is All You Need", preprint submitted for ICLR 2021. ; see also authors' blog
::– Discussion of the effect of a transformer layer as equivalent to a Hopfield update, bringing the input closer to one of the fixed points (representable patterns) of a continuous-valued Hopfield network

## پیوند به بیرون
* Alexander Rush, The Annotated transformer, Harvard NLP group, ۳ آوریل ۲۰۱۸
رده:شبکه‌های عصبی مصنوعی
رده:معماری شبکه‌های عصبی
رده:نرم‌افزارهای گوگل