مقدمه
ترنسفورمرها، دستاوردی نوین در عرصهی یادگیری ماشین هستند که اخیراً سروصدای زیادی به پا کردهاند. این مدلها به طرز حیرتانگیزی در حفظ و دنبال کردن مفهوم (context) مهارت دارند و به همین دلیل متونی که تولید میکنند، از انسجام و معنای قابل قبولی برخوردارند. یکی از ویژگیهای کلیدی ترنسفورمرها، مکانیزم توجه (attention mechanism) است که به مدل اجازه میدهد تا به بخشهای مختلف داده ورودی با توجه متفاوتی نگاه کند و اطلاعات مرتبط را برجستهتر کند. در بخش مکانیزم توجه (Attention Mechanism) در یادگیری عمیق به تفصیل به شرح این مکانیزم پرداخته شده است.
هوشواره با بهرهگیری از مدلهای زبانی بزرگ مبتنی بر معماری ترانسفورمر، توانسته است پلتفرمی قدرتمند برای ارائه خدمات هوش مصنوعی و مدلهای زبانی بزرگ به کاربران ارائه دهد.
در این مقاله، به بررسی معماری ترنسفورمرها، نحوهی عملکرد آنها و به نقش مهم مکانیزم توجه در بهبود کیفیت نتایج تولید شده توسط این مدلها خواهیم پرداخت. این تکنیک نهتنها به افزایش دقت و کارایی ترنسفورمرها کمک میکند، بلکه آنها را به ابزاری قدرتمند در تحلیل زبان طبیعی و بسیاری دیگر از حوزههای یادگیری ماشین تبدیل کرده است.
ترنسفورمر چیست؟
ترنسفورمرها به عنوان یک تکنولوژی پیشگام ظاهر شدهاند و نحوه درک زبان انسانی توسط کامپیوترها را متحول کردهاند. برخلاف مدلهای سنتی که کلمات را یکی پس از دیگری پردازش میکنند، ترنسفورمرها میتوانند به طور همزمان به کل جمله نگاه کنند و این کار آنها را در تشخیص ظرافتهای زبان بسیار کارآمد میکند. در واقع، مکانیزم توجه (Attention)، کلید اصلی موفقیت ترنسفورمرهاست. به عبارت ساده، ترنسفورمرها به جای بررسی صرف کلمات مجزا در یک متن، به کل متن نگاه میکنند و "توجه" خود را به بخشهای مختلفی که در کنار هم معنی اصلی را میسازند، معطوف میکنند.
ترنسفورمر برای اولین بار در پژوهشی تحت عنوان " Attention Is All You Need" معرفی شد. آنها عمدتاً برای حل هر نوع مسئلهای که یک دنباله ورودی را به یک دنباله خروجی تبدیل میکند، مانند ترجمه گفتار، تبدیل متن به گفتار و غیره، توسعه داده شدهاند.
تحول در مدلهای زبانی با LLM ها
مدلهای یادگیری عمیق پیشین برای پردازش زبان طبیعی، مانند RNNs و LSTMs، اطلاعات را به صورت متوالی پردازش میکردند. این به این معنی بود که هر کلمه فقط بعد از پردازش کلمه قبلی قابل بررسی بود. این روش، در پردازش زبان طبیعی، محدودیتهای زیادی داشت، به ویژه در درک "مفهوم" و "رابطه" بین کلمات در جملات طولانی و پیچیده.
ترنسفورمرها، برخلاف این مدلها، اطلاعات را به صورت موازی (همزمان) پردازش میکنند. این به آنها اجازه میدهد که به طور همزمان به همه کلمات در یک جمله نگاه کنند و رابطه آنها را با هم بررسی کنند. به عبارت دیگر، ترنسفورمرها میتوانند "توجه" خود را به همه کلمات در یک جمله معطوف کنند و نه فقط به کلمهای که در حال حاضر پردازش میکنند.
این ویژگی منحصر به فرد، باعث میشود که ترنسفورمرها در درک پیچیدگی زبان و مفهومسازی آن بسیار قدرتمندتر از مدلهای قبلی باشند. به طور خلاصه، ترنسفورمرها به جای بررسی صرف کلمات مجزا، "رابطه" بین آنها را در نظر میگیرند و این امر، کارایی و توانایی آنها را به طور چشمگیری افزایش میدهد.
مزایای استفاده از Transformerها:
دقت بالا: به دلیل توانایی در مدلسازی روابط پیچیده بین کلمات.
سرعت بالا: به دلیل پردازش موازی دادهها.
مقیاسپذیری: قابلیت آموزش بر روی مجموعه دادههای بسیار بزرگ.
معایب استفاده از Transformer ها:
پیچیدگی محاسباتی: در مقایسه با RNNها، به قدرت محاسباتی بیشتری نیاز دارند.
نیاز به دادههای آموزشی زیاد: برای دستیابی به عملکرد optimal، به مجموعه دادههای بزرگ نیاز دارند.
معماری Transformer ها
معماری ترنسفورمر سنگ بنای تمام مدلهای زبانی مبتنی بر ترنسفورمر (LLM) است. این معماری در مقاله " Attention Is All You Need" که در دسامبر 2017 منتشر شد، معرفی شد. نسخه ساده شده معماری ترنسفورمر به این شکل است:
مرحله Embedding ورودیها
توکنسازی اولین قدم در پردازش زبان است. در این مرحله، کلمات، نشانههای نگارشی و سایر عناصر متن به توکنهای شناخته شده تبدیل میشوند. پس از توکنسازی، هر توکن به یک عدد با استفاده از embedding تبدیل میشود. embedding متن، هر قطعه متن را به یک وکتور عددی تبدیل میکند. وکتورهای متناظر قطعات متنی مشابه، به هم شبیه هستند و وکتورهای متناظر قطعات متنی متفاوت نیز متفاوت هستند.
رمزگذاری موقعیتی(Positional Encoding)
همانطور که گفته شد ابتدا هر کلمه یا نشانهای را که در جمله وجود دارد، به یک عدد (وکتور) تبدیل میکنیم. سپس، برای اینکه این وکتورها را به یک وکتور واحد برای پردازش تبدیل کنیم، معمولاً آنها را با هم جمع میکنیم. اما یک مشکل وجود دارد: اگر ترتیب این کلمات تغییر کند، جمع آنها یکسان میماند و این موضوع باعث میشود که جملات مختلفی که کلمات یکسانی دارند، به یک وکتور یکسان تبدیل شوند.
برای حل این مشکل، در ترنسفورمر از چیزی به نام "رمزگذاری موقعیتی" استفاده میکنیم. این روش به ما کمک میکند تا به هر وکتور یک شماره اضافه کنیم که نشاندهنده موقعیت آن کلمه در جمله است. به این ترتیب، حتی اگر کلمات یکسان باشند اما در ترتیبهای مختلف قرار بگیرند، وکتورهای متفاوتی خواهیم داشت.
به عنوان مثال، جمله "من ناراحت نیستم، من خوشحالم" و "من خوشحال نیستم، من ناراحتم" با وجود اینکه دارای کلمات یکسانی هستند اما کاملا معنی متفاوتی دارند. با استفاده از رمزگذاری موقعیتی، هر یک از آنها وکتورهای متفاوتی دریافت میکنند.
رمزگذار و رمزگشا(Encoder, Decoder)
معماری ترنسفورمرها از دو بخش اصلی تشکیل شده است: رمزگذار (Encoder) و رمزگشا (Decoder). رمزگذار (Encoder) وظیفه خواندن و پردازش متن ورودی را دارد. به عبارت دیگر، رمزگذار متن را به حالتی تبدیل میکند که مدل بتواند آن را درک کند. تصور کنید که رمزگذار مانند یک فردی است که یک جمله را میخواند و آن را به زبانی سادهتر و قابل فهمتر (عددها و وکتورها) تبدیل میکند. رمزگذار بخشی از شبکههای عصبی است که متن ورودی را پردازش کرده و مجموعهای از hidden state ها را تولید میکند. این hidden state ها قادرند معنا و زمینه متن را بهطور مؤثر در خود بازتاب دهند و اطلاعات ضروری را برای مراحل بعدی پردازش فراهم کنند.
پس از اینکه رمزگذار متن را تبدیل کرد، حال نوبت به رمزگشا میرسد. رمزگشا از اطلاعات پردازش شده استفاده میکند و مرحله به مرحله آن را پردازش میکند تا خروجی نهایی (مثلاً ترجمه جمله) تولید شود. میتوانید رمزگشا را به عنوان یک مترجم در نظر بگیرید که با استفاده از اطلاعاتی که دریافت کرده است، جمله را به زبان دیگری ترجمه میکند. رمزگشا با پیشبینی کلمات بعدی در یک دنباله، پاسخهای منسجمی تولید میکند.
این تعامل دو طرفه بین رمزگذار و رمزگشا یکی از ویژگیهای قدرتمند ترنسفورمرهاست. به همین دلیل است که این مدلها برای کارهایی مانند ترجمه بسیار مؤثر هستند.
در شکل زیر معماری ترنسفورمر را با جزئیات بیشتری میبینید:
همانطور که میبینیم Encoder شامل دنبالهای از لایهها میباشد که هر کدام شامل دو بخش اصلی multi-head self-attention و شبکه عصبی feedforward میباشد. مانند انکودر، دیکودر نیز از یک دنباله لایه تشکیل شده است. هر لایه شامل سه جزء اصلی است: multi-head self-attention و multi-head cross-attention (با خروجی انکودر به عنوان ورودی) و شبکه عصبی feedforward.
هر لایه در ترنسفورمر، خروجیهای ایجاد شده توسط لایه قبل را دقیقتر میکند. این امر به مدل کمک میکند تا الگوها و روابط پیچیدهتر را درک کند. پشته شدن لایهها به مدل اجازه میدهد تا ویژگیهای سلسله مراتبی را بیاموزد، بطوری که لایههای پایینتر اطلاعات محلی و لایههای بالاتر اطلاعات انتزاعی و global را درک میکنند.
Multihead Attention
در ترنسفورمر، ماژول attention محاسبات خود را چندین بار به طور موازی تکرار میکند. هر کدام از اینها "Attention Head" نامیده میشوند. ماژول توجه، پارامترهای Query، Key و Value خود را به N قسمت تقسیم میکند و هر قسمت را به طور مستقل از طریق یک سر جداگانه میگذراند. همه این محاسبات مشابه سپس با هم ترکیب میشوند تا یک امتیاز توجه نهایی تولید شود. این را توجه چند سر (Multihead Attention) مینامند و به ترنسفورمر قدرت بیشتری برای رمزگذاری روابط و ظرافتهای متعدد برای هر کلمه میدهد.
به عبارت دیگر، هر "Attention Head" به دنبال روابط و الگوهای خاص در متن است و به طور مستقل اطلاعات را پردازش میکند. با ترکیب تمام این سرها در انتهای محاسبات توجه، ترنسفورمر یک دید جامع تر از متن را بدست میآورد، همانطور که چندین فرد که هر کدام به یک جنبه خاص از یک موضوع مینگرند، با هم میتوانند درک بهتری از آن موضوع داشته باشند.
Self Attention
این مکانیزم که هم در رمزگذار و هم در رمزگشا وجود دارد، به مدل این امکان را میدهد تا اهمیت عناصر مختلف داخل یک دنباله ورودی یکسان را وزنگذاری کند. این قابلیت به مدل اجازه میدهد تا هنگام پیشبینی یا تولید خروجی، بر روی اجزای خاصی از دنباله تمرکز کند. این مکانیزم برای درک وابستگیهای بین عناصر دور از هم در دنباله بسیار حیاتی است و منجر به فهم بهتر محتوا میشود. نحوه عملکرد مکانیزم attention به تفصیل در بخش مکانیزم توجه (Attention Mechanism) در یادگیری عمیق آورده شده است.
مزایای Self Attention:
دریافت وابستگیهای بلندمدت:
Self Attention به مدل این امکان را میدهد که هنگام ایجاد یک نمایه برای هر عنصر، تمام عناصر دنباله ورودی را در نظر بگیرد. این قابلیت بهویژه در مسائلی که فهم محتوای عناصر دوردست اهمیت دارد، مانند ترجمه زبان یا خلاصهسازی اسناد، بسیار سودمند است.
مدیریت دنبالههای با طول متغیر:
از آنجا که Self Attention بهطور موازی کل دنباله را پردازش میکند، برای مدیریت دنبالههای با طول متغیر بسیار مناسب است. مدلهای ترتیبی سنتی در برخورد با این انعطافپذیری چالش دارند، اما توجه خودکار به ترنسفورمرها اجازه میدهد بدون نیاز به پنجرههای ثابت اندازه یا اضافه کردن padding، بهطور یکپارچه با طولهای مختلف ورودی سازگار شوند.
توجه متقابل (Cross Attention)
مکانیزم Cross-Attention در رمزگشا (Decoder) ترنسفورمرها مورد استفاده قرار میگیرد. این مکانیزم به مدل اجازه میدهد تا در حین تولید دنباله خروجی، اطلاعاتی از بخشهای مختلف دنباله ورودی را در نظر بگیرد. برخلاف Self-Attention که بر روی یک دنباله واحد تمرکز دارد، Cross-Attention تعامل بین دنبالههای ورودی و خروجی را امکانپذیر میکند. در واقع، این مکانیزم "پل ارتباطی" بین رمزگذار (Encoder) و رمزگشا (Decoder) ترنسفورمر است. این مکانیزم در موقعیتهایی که اطلاعات مورد نیاز برای تولید یک عنصر در دنباله خروجی در سراسر دنباله ورودی پراکنده شدهاند، بسیار مفید است.
نحوه عملکرد Cross Attention در Decoder
رمزگذار(Encoder) دنباله ورودی را دریافت میکند و با استفاده از Self-Attention یک نمایش برداری برای هر عنصر از دنباله ورودی تولید میکند.
رمزگشا(Decoder) ابتدا با استفاده از Self-Attention، محتوا را در دنباله خروجی تا آن نقطه که تولید شده است، پردازش میکند. سپس، Cross-Attention با استفاده از نمایش برداری تولید شده توسط رمزگذار، به رمزگشا اجازه میدهد تا به بخشهای مختلف دنباله ورودی نیز توجه کند.
رمزگشا با توجه به محتوای کنونی در دنباله خروجی، تصمیم میگیرد کدام قسمت از دنباله ورودی برای تولید عنصر بعدی در دنباله خروجی مهمتر است.
سپس رمزگشا با ترکیب اطلاعات انتخاب شده از دنباله ورودی و زمینه کنونی تا نقطهای که خروجی تولید شده، عنصر بعدی در دنباله خروجی را تولید میکند.
Cross-Attention به ترنسفورمرها این امکان را میدهد که:
ارتباطات بین دنباله ورودی و خروجی را حفظ کنند.
به اطلاعات مربوطه در دنباله ورودی توجه کنند، حتی اگر در فاصله دوری از عنصر خروجی فعلی باشند.
انعطاف پذیری بیشتری در تولید خروجی داشته باشند.
لایههای Add و سپس Normalization
لایههای Add از ایدهی ResNet جهت جلوگیری از مشکل vanishing gradient استفاده شده است. ایده اصلی این مفهوم این است که به ورودی یک لایه اجازه داده شود تا عملیات لایه را دور بزند و به طور مستقیم به خروجی لایه اضافه شود.
در اینجا لایه نرمالسازی وارد عمل میشود. این روش به عنوان یک ابزار قدرتمند، خروجی لایههای قبلی را در سراسر ویژگیها نرمال میکند و به این ترتیب مشکلات احتمالی ناشی از مقیاسبندی متفاوت ورودیها را حل میکند. با نرمالسازی لایه، خروجیها به طور موثر به یک مقیاس واحد منتقل میشوند و به شبکه عصبی کمک میکنند تا به طور کارآمدتر و موثرتر یاد بگیرد.
نتیجهگیری
ترنسفورمرها به طور چشمگیری چشمانداز هوش مصنوعی و پردازش زبان طبیعی را تغییر دادهاند. معماری منحصر به فرد آنها که قادر به درک زمینه و ظرافتهای زبان است، به پیشرفتهای قابل توجهی در وظایفی مانند ترجمه، خلاصهسازی متن و حتی فراتر از حوزه متن به سمت تشخیص تصویر و موارد دیگر منجر شده است.
نکته کلیدی اهمیت مکانیزم self attention است که به ترنسفورمرها اجازه میدهد تا به طور همزمان کل دنبالههای داده را پردازش کنند و همچنین استفاده نوآورانه از رمزگذاری موقعیتی برای حفظ ترتیب دنباله در پردازش دادهها اهمیت ویژهای در کارایی ترنسفرمرها دارد.
ترنسفورمرها نه تنها یک پیشرفت تکنولوژیکی هستند، بلکه نشان دهنده تغییر در نحوه تصور ما از قابلیتهای هوش مصنوعی هستند. آنها نگاهی اجمالی به آیندهای دارند که در آن هوش مصنوعی میتواند زبان انسان را با عمق و انعطافپذیری بیسابقهای درک و با آن تعامل کند و راههای جدیدی برای اتوماسیون، خلاقیت و کارایی در تمام صنایع باز کند.