
ترنسفورمرها چگونه کار میکنند: کاوشی عمیق در معماری ترنسفورمر
معماری ترانسفورمر چیه؟ چرا و از کجا اومد؟ نگاهی به یه نوآوری بزرگ
این مقاله ترجمهای است آزاد از اینجا
حوزه یادگیری عمیق به لطف ظهور و تکامل سریع مدلهای ترنسفورمر (Transformer)، شاهد یک تحول بنیادین بوده است. این معماریهای نوآورانه نه تنها استانداردهای پردازش زبان طبیعی (NLP) را بازتعریف کردهاند، بلکه افقهای خود را گسترش داده و جنبههای متعددی از هوش مصنوعی را متحول ساختهاند. مدلهای ترنسفورمر که با مکانیزمهای توجه (attention) منحصربهفرد و قابلیتهای پردازش موازی خود شناخته میشوند، گواهی بر جهشهای نوآورانه در درک و تولید زبان انسانی با دقت و کارایی بیسابقهای هستند.
معماری ترنسفورمر اولین بار در سال ۲۰۱۷ در مقاله معروف گوگل با عنوان «Attention is all you need» (توجه تمام آن چیزی است که نیاز دارید) معرفی شد و در قلب مدلهای پیشگامی مانند ChatGPT قرار دارد و موج جدیدی از هیجان را در جامعه هوش مصنوعی برانگیخته است. این مدلها در مدلهای زبانی پیشرفته OpenAI نقش اساسی داشته و در AlphaStar شرکت DeepMind نیز کلیدی بودهاند.
در این دوران تحولآفرین هوش مصنوعی، اهمیت مدلهای ترنسفورمر برای دانشمندان داده و متخصصان پردازش زبان طبیعی مشتاق، قابل اغراق نیست. این مقاله با هدف رمزگشایی از اسرار پشت این مدلها، به عنوان یکی از حوزههای اصلی در جدیدترین پیشرفتهای فناوری، نگاشته شده است.
ترنسفورمرها چه هستند؟
ترنسفورمرها در ابتدا برای حل مسئله تبدیل توالی (sequence transduction) یا ترجمه ماشینی عصبی توسعه یافتند، به این معنی که برای حل هر وظیفهای که یک توالی ورودی را به یک توالی خروجی تبدیل میکند، طراحی شدهاند. به همین دلیل هم به آنها «ترنسفورمر» یا «تبدیلکننده» میگویند.
اما بیایید از ابتدا شروع کنیم.
مدلهای ترنسفورمر چه هستند؟
مدل ترنسفورمر یک شبکه عصبی است که زمینه دادههای متوالی را یاد میگیرد و از آن دادههای جدید تولید میکند.
به زبان ساده:
یک ترنسفورمر نوعی مدل هوش مصنوعی است که با تحلیل الگوها در حجم زیادی از دادههای متنی، یاد میگیرد متن شبهانسانی را درک و تولید کند.
ترنسفورمرها در حال حاضر یکی از پیشرفتهترین مدلها در پردازش زبان طبیعی محسوب میشوند و به عنوان تکامل معماری رمزگذار-رمزگشا (encoder-decoder) در نظر گرفته میشوند. با این حال، در حالی که معماری رمزگذار-رمزگشا عمدتاً به شبکههای عصبی بازگشتی (RNNs) برای استخراج اطلاعات متوالی متکی است، ترنسفورمرها کاملاً فاقد این بازگشت هستند.
پس چگونه این کار را انجام میدهند؟ آنها به طور خاص برای درک مفهوم و معنا از طریق تحلیل روابط بین عناصر مختلف طراحی شدهاند و تقریباً به طور کامل به یک تکنیک ریاضی به نام توجه (attention) برای انجام این کار متکی هستند.
معماری ترنسفورمر به عنوان یک جعبه سیاه. تصویر از نویسنده.
پیشینه تاریخی
مدلهای ترنسفورمر که از یک مقاله تحقیقاتی گوگل در سال ۲۰۱۷ نشأت گرفتهاند، یکی از جدیدترین و تأثیرگذارترین پیشرفتها در حوزه یادگیری ماشین هستند. اولین مدل ترنسفورمر در مقاله تأثیرگذار "Attention is All You Need" توضیح داده شد.
این مفهوم پیشگامانه نه تنها یک پیشرفت نظری بود، بلکه پیادهسازی عملی نیز پیدا کرد، به ویژه در بسته Tensor2Tensor تنسورفلو. علاوه بر این، گروه NLP هاروارد با ارائه یک راهنمای تفسیر شده برای مقاله، همراه با پیادهسازی پایتورچ، به این حوزه نوظهور کمک کرد. برای درک بهتر این معماری، توصیه میشود یک ترنسفورمر را از ابتدا پیادهسازی کنید، مثلا با استفاده از PyTorch.
معرفی آنها باعث جهش قابل توجهی در این زمینه شده است که اغلب از آن به عنوان هوش مصنوعی ترنسفورمر (Transformer AI) یاد میشود. این مدل انقلابی، زمینه را برای پیشرفتهای بعدی در حوزه مدلهای زبانی بزرگ، از جمله BERT، فراهم کرد. تا سال ۲۰۱۸، این تحولات به عنوان یک نقطه عطف در NLP مورد ستایش قرار گرفتند.
در سال ۲۰۲۰، محققان OpenAI از GPT-3 رونمایی کردند. در عرض چند هفته، تطبیقپذیری GPT-3 به سرعت نشان داده شد، زمانی که مردم از آن برای خلق شعر، برنامه، آهنگ، وبسایت و موارد دیگر استفاده کردند و تخیل کاربران را در سراسر جهان مجذوب خود ساخت.
در مقالهای در سال ۲۰۲۱، پژوهشگران استنفورد به درستی این نوآوریها را مدلهای پایه (foundation models) نامیدند و بر نقش بنیادین آنها در تغییر شکل هوش مصنوعی تأکید کردند. کار آنها نشان میدهد که چگونه مدلهای ترنسفورمر نه تنها این رشته را متحول کردهاند، بلکه مرزهای آنچه در هوش مصنوعی قابل دستیابی است را نیز جابجا کرده و دوران جدیدی از احتمالات را نوید میدهند.
"ما در زمانی هستیم که روشهای سادهای مانند شبکههای عصبی، انفجاری از قابلیتهای جدید را به ما ارائه میدهند." - اشیش واسوانی، کارآفرین و محقق ارشد سابق در گوگل
گذار از مدلهای RNN مانند LSTM به ترنسفورمرها برای مسائل NLP
در زمان معرفی مدل ترنسفورمر، شبکههای عصبی بازگشتی (RNNs) رویکرد ترجیحی برای کار با دادههای متوالی بودند که با ترتیب خاصی در ورودی خود مشخص میشوند. RNNها مشابه یک شبکه عصبی پیشخور عمل میکنند اما ورودی را به صورت متوالی، یک عنصر در یک زمان، پردازش میکنند.
ترنسفورمرها از معماری رمزگذار-رمزگشا که در RNNها یافت میشود، الهام گرفتهاند. با این حال، به جای استفاده از بازگشت، مدل ترنسفورمر کاملاً مبتنی بر مکانیزم توجه است.
ترنسفورمرها علاوه بر بهبود عملکرد RNN، معماری جدیدی برای حل بسیاری از وظایف دیگر مانند خلاصهسازی متن، تولید زیرنویس تصویر و تشخیص گفتار ارائه دادهاند.
خب، مشکلات اصلی RNNها چیست؟ آنها به دو دلیل اصلی برای وظایف NLP کاملاً ناکارآمد هستند:
- آنها دادههای ورودی را به صورت متوالی، یکی پس از دیگری پردازش میکنند. چنین فرآیند بازگشتی از واحدهای پردازش گرافیکی مدرن (GPU) که برای محاسبات موازی طراحی شدهاند، استفاده نمیکند و بنابراین آموزش چنین مدلهایی بسیار کند است.
- وقتی عناصر از یکدیگر دور هستند، کاملاً ناکارآمد میشوند. این به این دلیل است که اطلاعات در هر مرحله منتقل میشود و هر چه زنجیره طولانیتر باشد، احتمال از دست رفتن اطلاعات در طول زنجیره بیشتر است.
گذار از شبکههای عصبی بازگشتی (RNNs) مانند LSTM به ترنسفورمرها در NLP، ناشی از این دو مشکل اصلی و توانایی ترنسفورمرها در ارزیابی هر دوی آنها با بهرهگیری از پیشرفتهای مکانیزم توجه است:
- توجه به کلمات خاص، بدون توجه به فاصله آنها.
- افزایش سرعت عملکرد.
بنابراین، ترنسفورمرها به یک پیشرفت طبیعی برای RNNها تبدیل شدند. در ادامه، نگاهی به نحوه عملکرد ترنسفورمرها خواهیم انداخت.
معماری ترنسفورمر
نگاهی کلی
ترنسفورمرها که در اصل برای تبدیل توالی یا ترجمه ماشینی عصبی طراحی شدهاند، در تبدیل توالیهای ورودی به توالیهای خروجی عالی عمل میکنند. این اولین مدل تبدیلی است که کاملاً به خودتوجهی (self-attention) برای محاسبه نمایشهای ورودی و خروجی خود بدون استفاده از RNNهای همتراز با توالی یا کانولوشن متکی است. ویژگی اصلی معماری ترنسفورمرها این است که آنها مدل رمزگذار-رمزگشا را حفظ میکنند.
اگر یک ترنسفورمر را برای ترجمه زبان به عنوان یک جعبه سیاه ساده در نظر بگیریم، یک جمله را به یک زبان، مثلاً انگلیسی، به عنوان ورودی میگیرد و ترجمه آن را به زبان دیگر، مثلا اسپانیایی، خروجی میدهد.
معماری ترنسفورمر برای ترجمه زبان به عنوان یک جعبه سیاه که از انگلیسی به اسپانیایی ترجمه میکند. تصویر از نویسنده.
اگر کمی عمیقتر شویم، مشاهده میکنیم که این جعبه سیاه از دو بخش اصلی تشکیل شده است:
- انکودر (Encoder): ورودی ما را میگیرد و یک نمایش ماتریسی از آن ورودی را خروجی میدهد. به عنوان مثال، جمله انگلیسی "How are you?"
- دیکودر (Decoder): آن نمایش رمزگذاری شده را میگیرد و به طور تکراری یک خروجی تولید میکند. در مثال ما، جمله ترجمه شده "¿Cómo estás?"
معماری ترنسفورمر برای ترجمه زبان با دو ماژول عمومی (انکودر و دیکودر). ساختار کلی انکودر-دیکودر. تصویر از نویسنده.
با این حال، هم انکودر و هم دیکودر در واقع یک پشته با چندین لایه هستند (تعداد لایهها برای هر دو یکسان است). تمام انکودرها ساختار یکسانی دارند و ورودی به هر یک از آنها وارد شده و به بعدی منتقل میشود. تمام دیکودرها نیز ساختار یکسانی دارند و ورودی را از آخرین انکودر و دیکودر قبلی دریافت میکنند.
معماری اصلی شامل ۶ انکودر و ۶ دیکودر بود، اما ما میتوانیم هر تعداد لایه که بخواهیم تکرار کنیم. پس فرض کنیم N لایه از هر کدام داریم.
معماری ترنسفورمر برای ترجمه زبان با دو ماژول عمومی (انکودر و دیکودر) که هر کدام N بار تکرار شدهاند. ساختار کلی انکودر-دیکودر. چندین لایه. تصویر از نویسنده.
حالا که یک ایده کلی از معماری کلی ترنسفورمر داریم، بیایید روی هر دو انکودر و دیکودر تمرکز کنیم تا جریان کاری آنها را بهتر درک کنیم:
جریان کاری انکودر (Encoder WorkFlow)
انکودر یک جزء اساسی از معماری ترنسفورمر است. عملکرد اصلی انکودر تبدیل توکنهای ورودی به نمایشهای زمینهمند (contextualized) است. برخلاف مدلهای قبلی که توکنها را به طور مستقل پردازش میکردند، انکودر ترنسفورمر زمینه هر توکن را نسبت به کل توالی درک میکند.
ساختار آن به شرح زیر است:
معماری انکودر ترنسفورمر. ساختار کلی انکودرها. تصویر از نویسنده.
بیایید جریان کاری آن را به ابتداییترین مراحلش تقسیم کنیم:
مرحله ۱ - ورودیهای تعبیهشده (Input Embeddings)
تعبیهسازی (Embedding) فقط در پایینترین انکودر اتفاق میافتد. انکودر با تبدیل توکنهای ورودی - کلمات یا زیرکلمات - به بردارها با استفاده از لایههای تعبیهسازی شروع میکند. این تعبیهسازیها معنای معنایی توکنها را درک کرده و آنها را به بردارهای عددی تبدیل میکنند.
تمام انکودرها لیستی از بردارها را دریافت میکنند که هر کدام به اندازه ۵۱۲ (اندازه ثابت) هستند. در انکودر پایینی، اینها تعبیهسازیهای کلمات خواهند بود، اما در انکودرهای دیگر، خروجی انکودری است که مستقیماً زیر آنها قرار دارد.
جریان کاری انکودر. نحوه کارکرد ورودی تعبیهشده. ورودی تعبیهشده. تصویر از نویسنده.
مرحله ۲ - کدگذاری موقعیتی (Positional Encoding)
از آنجایی که ترنسفورمرها مکانیزم بازگشتی مانند RNNها ندارند، از کدگذاریهای موقعیتی استفاده میکنند که به ورودیهای تعبیهشده اضافه میشوند تا اطلاعاتی در مورد موقعیت هر توکن در توالی ارائه دهند. این به آنها امکان میدهد موقعیت هر کلمه را در جمله درک کنند.
برای انجام این کار، محققان استفاده از ترکیبی از توابع سینوسی و کسینوسی مختلف را برای ایجاد بردارهای موقعیتی پیشنهاد کردند که امکان استفاده از این کدگذار موقعیتی را برای جملات با هر طولی فراهم میکند.
در این رویکرد، هر بعد با فرکانسها و آفستهای منحصربهفرد موج نشان داده میشود و مقادیر از ۱- تا ۱ متغیر هستند و به طور موثر هر موقعیت را نشان میدهند.
جریان کاری انکودر. نحوه کارکرد کدگذاری موقعیتی. کدگذاری موقعیتی. تصویر از نویسنده.
مرحله ۳ - پشتهای از لایههای انکودر (Stack of Encoder Layers)
انکودر ترنسفورمر از پشتهای از لایههای یکسان تشکیل شده است (۶ لایه در مدل اصلی ترنسفورمر). لایه انکودر برای تبدیل تمام توالیهای ورودی به یک نمایش پیوسته و انتزاعی عمل میکند که اطلاعات آموخته شده از کل توالی را در بر میگیرد. این لایه شامل دو زیرماژول است:
- یک مکانیزم توجه چندسر (multi-headed attention).
- یک شبکه کاملاً متصل (fully connected network).
علاوه بر این، اتصالات باقیمانده (residual connections) در اطراف هر زیرلایه گنجانده شده است که سپس با نرمالسازی لایه (layer normalization) دنبال میشود.
جریان کاری انکودر. پشتهای از لایههای انکودر. تصویر از نویسنده.
مرحله ۳.۱ - مکانیزم خودتوجهی چندسر (Multi-Headed Self-Attention Mechanism)
در انکودر، توجه چندسر از یک مکانیزم توجه تخصصی به نام خودتوجهی (self-attention) استفاده میکند. این رویکرد به مدلها امکان میدهد هر کلمه در ورودی را با کلمات دیگر مرتبط کنند. به عنوان مثال، در یک مثال داده شده، مدل ممکن است یاد بگیرد کلمه "are" را با "you" مرتبط کند.
این مکانیزم به انکودر اجازه میدهد تا هنگام پردازش هر توکن، بر روی بخشهای مختلف توالی ورودی تمرکز کند. امتیازات توجه را بر اساس موارد زیر محاسبه میکند:
- پرسوجو (Query): یک بردار است که نشاندهنده یک کلمه یا توکن خاص از توالی ورودی در مکانیزم توجه است.
- کلید (Key): همچنین یک بردار در مکانیزم توجه است که با هر کلمه یا توکن در توالی ورودی مطابقت دارد.
- مقدار (Value): هر مقدار با یک کلید مرتبط است و برای ساخت خروجی لایه توجه استفاده میشود. هنگامی که یک پرسوجو و یک کلید به خوبی مطابقت دارند، که اساساً به این معنی است که امتیاز توجه بالایی دارند، مقدار مربوطه در خروجی تأکید میشود.
این ماژول خودتوجهی اولیه به مدل امکان میدهد اطلاعات زمینهای را از کل توالی استخراج کند. به جای انجام یک تابع توجه واحد، پرسوجوها، کلیدها و مقادیر به صورت خطی h بار تصویر میشوند. بر روی هر یک از این نسخههای تصویر شده از پرسوجوها، کلیدها و مقادیر، مکانیزم توجه به صورت موازی انجام میشود و مقادیر خروجی h بعدی را به دست میدهد.
معماری دقیق به شرح زیر است:
جریان کاری انکودر. مکانیزم توجه چندسر. تصویر از نویسنده.
- ضرب ماتریسی (MatMul) - ضرب داخلی پرسوجو و کلید
هنگامی که بردارهای پرسوجو، کلید و مقدار از یک لایه خطی عبور میکنند، یک ضرب ماتریسی داخلی بین پرسوجوها و کلیدها انجام میشود که منجر به ایجاد یک ماتریس امتیاز میشود.
ماتریس امتیاز، میزان تأکیدی را که هر کلمه باید بر کلمات دیگر بگذارد، تعیین میکند. بنابراین، به هر کلمه امتیازی نسبت به سایر کلمات در همان مرحله زمانی اختصاص داده میشود. امتیاز بالاتر نشاندهنده تمرکز بیشتر است.
این فرآیند به طور موثر پرسوجوها را به کلیدهای مربوطه خود نگاشت میکند.
جریان کاری انکودر. مکانیزم توجه - ضرب ماتریسی. تصویر از نویسنده.
- کاهش مقیاس امتیازات توجه
سپس امتیازات با تقسیم بر ریشه دوم بُعد بردارهای پرسوجو و کلید، کاهش مقیاس داده میشوند (scaled down). این مرحله برای اطمینان از گرادیانهای پایدارتر پیادهسازی میشود، زیرا ضرب مقادیر میتواند منجر به اثرات بیش از حد بزرگ شود.
جریان کاری انکودر. کاهش امتیازات توجه. تصویر از نویسنده.
- اعمال سافتمکس (Softmax) به امتیازات تنظیمشده
متعاقباً، یک تابع سافتمکس به امتیازات تنظیمشده اعمال میشود تا وزنهای توجه به دست آید. این منجر به مقادیر احتمالی در محدوده ۰ تا ۱ میشود. تابع سافتمکس امتیازات بالاتر را تأکید میکند در حالی که امتیازات پایینتر را کاهش میدهد، و در نتیجه توانایی مدل را برای تعیین موثر اینکه کدام کلمات باید توجه بیشتری دریافت کنند، افزایش میدهد.
جریان کاری انکودر. اعمال سافتمکس به امتیازات تنظیمشده. تصویر از نویسنده.
- ترکیب نتایج سافتمکس با بردار مقدار
مرحله بعدی مکانیزم توجه این است که وزنهای بهدستآمده از تابع سافتمکس با بردار مقدار ضرب میشوند و یک بردار خروجی ایجاد میکنند.
در این فرآیند، فقط کلماتی که امتیازات سافتمکس بالایی دارند، حفظ میشوند. در نهایت، این بردار خروجی برای پردازش بیشتر به یک لایه خطی وارد میشود.
جریان کاری انکودر. ترکیب نتایج سافتمکس با بردار مقدار. تصویر از نویسنده.
و در نهایت خروجی مکانیزم توجه را به دست میآوریم!
پس، شاید از خود بپرسید چرا به آن توجه چندسر (Multi-Head Attention) میگویند؟ به یاد بیاورید که قبل از شروع کل فرآیند، ما پرسوجوها، کلیدها و مقادیر خود را h بار میشکنیم. این فرآیند که به عنوان خودتوجهی شناخته میشود، به طور جداگانه در هر یک از این مراحل یا 'سرها'ی کوچکتر اتفاق میافتد. هر 'سر' به طور مستقل جادوی خود را انجام میدهد و یک بردار خروجی تولید میکند. این مجموعه از یک لایه خطی نهایی عبور میکند، بسیار شبیه به فیلتری که عملکرد جمعی آنها را تنظیم دقیق میکند. زیبایی در اینجا در تنوع یادگیری در هر 'سر' نهفته است که مدل انکودر را با درک قوی و چندوجهی غنی میکند.
مرحله ۳.۲ - نرمالسازی و اتصالات باقیمانده (Normalization and Residual Connections)
هر زیرلایه در یک لایه انکودر با یک مرحله نرمالسازی دنبال میشود. همچنین، خروجی هر زیرلایه به ورودی آن اضافه میشود (اتصال باقیمانده) تا به کاهش مشکل محو شدن گرادیان (vanishing gradient) کمک کند و امکان ایجاد مدلهای عمیقتر را فراهم آورد. این فرآیند پس از شبکه عصبی پیشخور نیز تکرار خواهد شد.
جریان کاری انکودر. نرمالسازی و اتصال باقیمانده پس از توجه چندسر. تصویر از نویسنده.
مرحله ۳.۳ - شبکه عصبی پیشخور (Feed-Forward Neural Network)
سفر خروجی باقیمانده نرمالشده با عبور از یک شبکه پیشخور نقطهای (pointwise feed-forward network) ادامه مییابد، که یک مرحله حیاتی برای پالایش بیشتر است. این شبکه را به عنوان دوتایی از لایههای خطی تصور کنید که یک فعالسازی ReLU در بین آنها به عنوان یک پل عمل میکند. پس از پردازش، خروجی مسیری آشنا را طی میکند: به عقب برمیگردد و با ورودی شبکه پیشخور نقطهای ادغام میشود. این اتحاد با دور دیگری از نرمالسازی دنبال میشود، و اطمینان حاصل میکند که همه چیز برای مراحل بعدی به خوبی تنظیم و هماهنگ شده است.
جریان کاری انکودر. زیرلایه شبکه عصبی پیشخور. تصویر از نویسنده.
مرحله ۴ - خروجی انکودر (Output of the Encoder)
خروجی لایه نهایی انکودر مجموعهای از بردارها است که هر کدام نشاندهنده توالی ورودی با درک زمینهای غنی هستند. این خروجی سپس به عنوان ورودی برای دیکودر در یک مدل ترنسفورمر استفاده میشود. این رمزگذاری دقیق راه را برای دیکودر هموار میکند و آن را راهنمایی میکند تا در زمان رمزگشایی به کلمات مناسب در ورودی توجه کند.
آن را مانند ساختن یک برج تصور کنید، جایی که میتوانید N لایه انکودر را روی هم قرار دهید. هر لایه در این پشته فرصتی برای کاوش و یادگیری جنبههای مختلف توجه پیدا میکند، بسیار شبیه به لایههای دانش. این نه تنها درک را متنوع میکند بلکه میتواند به طور قابل توجهی قابلیتهای پیشبینی شبکه ترنسفورمر را تقویت کند.
جریان کاری دیکودر (Decoder WorkFlow)
نقش دیکودر بر تولید توالیهای متنی متمرکز است. دیکودر، با تقلید از انکودر، به مجموعه مشابهی از زیرلایهها مجهز است. این دیکودر دارای دو لایه توجه چندسر، یک لایه پیشخور نقطهای است و همچنین شامل اتصالات باقیمانده و نرمالسازی لایه پس از هر زیرلایه میباشد.
ساختار کلی دیکودرها. تصویر از نویسنده.
این اجزا به شیوهای شبیه به لایههای انکودر عمل میکنند، اما با یک تفاوت: هر لایه توجه چندسر در دیکودر مأموریت منحصربهفرد خود را دارد. مرحله نهایی فرآیند دیکودر شامل یک لایه خطی است که به عنوان یک طبقهبند عمل میکند و با یک تابع سافتمکس برای محاسبه احتمالات کلمات مختلف به پایان میرسد.
دیکودر ترنسفورمر ساختاری دارد که به طور خاص برای تولید این خروجی با رمزگشایی اطلاعات رمزگذاری شده به صورت گام به گام طراحی شده است. توجه به این نکته مهم است که دیکودر به صورت خودرگرسیو (autoregressive) عمل میکند و فرآیند خود را با یک توکن شروع (start token) آغاز میکند. این دیکودر هوشمندانه از لیستی از خروجیهای قبلاً تولید شده به عنوان ورودی خود، همراه با خروجیهای انکودر که سرشار از اطلاعات توجه از ورودی اولیه هستند، استفاده میکند. این رقص متوالی رمزگشایی ادامه مییابد تا زمانی که دیکودر به یک لحظه محوری برسد: تولید یک توکن که پایان ایجاد خروجی آن را نشان میدهد.
مرحله ۱ - خروجیهای تعبیهشده (Output Embeddings)
در خط شروع دیکودر، فرآیند مشابه انکودر است. در اینجا، ورودی ابتدا از یک لایه تعبیهسازی عبور میکند.
مرحله ۲ - کدگذاری موقعیتی (Positional Encoding)
پس از تعبیهسازی، دوباره درست مانند دیکودر، ورودی از لایه کدگذاری موقعیتی عبور میکند. این توالی برای تولید تعبیهسازیهای موقعیتی طراحی شده است. این تعبیهسازیهای موقعیتی سپس به اولین لایه توجه چندسر دیکودر هدایت میشوند، جایی که امتیازات توجه خاص ورودی دیکودر به دقت محاسبه میشوند.
مرحله ۳ - پشتهای از لایههای دیکودر (Stack of Decoder Layers)
دیکودر از پشتهای از لایههای یکسان تشکیل شده است (۶ لایه در مدل اصلی ترنسفورمر). هر لایه سه زیرجزء اصلی دارد:
مرحله ۳.۱ - مکانیزم خودتوجهی پوشیده (Masked Self-Attention Mechanism)
این مکانیزم شبیه به مکانیزم خودتوجهی در انکودر است اما با یک تفاوت اساسی: از توجه موقعیتها به موقعیتهای بعدی جلوگیری میکند، به این معنی که هر کلمه در توالی تحت تأثیر توکنهای آینده قرار نمیگیرد. به عنوان مثال، هنگامی که امتیازات توجه برای کلمه "are" محاسبه میشود، مهم است که "are" نگاهی به "you" که یک کلمه بعدی در توالی است، نیندازد.
جریان کاری دیکودر. ماسک اولین لایه توجه چندسر. تصویر از نویسنده.
این پوشاندن (masking) تضمین میکند که پیشبینیها برای یک موقعیت خاص فقط میتوانند به خروجیهای شناخته شده در موقعیتهای قبل از آن بستگی داشته باشند.
مرحله ۳.۲ - توجه چندسر انکودر-دیکودر یا توجه متقاطع (Encoder-Decoder Multi-Head Attention or Cross Attention)
در دومین لایه توجه چندسر دیکودر، شاهد یک تعامل منحصربهفرد بین اجزای انکودر و دیکودر هستیم. در اینجا، خروجیهای انکودر نقش پرسوجوها و کلیدها را بر عهده میگیرند، در حالی که خروجیهای اولین لایه توجه چندسر دیکودر به عنوان مقادیر عمل میکنند. این تنظیم به طور موثر ورودی انکودر را با ورودی دیکودر همتراز میکند و دیکودر را قادر میسازد تا مرتبطترین بخشهای ورودی انکودر را شناسایی و بر آنها تأکید کند. پس از این، خروجی از این لایه دوم توجه چندسر از طریق یک لایه پیشخور نقطهای پالایش میشود و پردازش را بیشتر تقویت میکند.
جریان کاری دیکودر. توجه انکودر-دیکودر. تصویر از نویسنده.
در این زیرلایه، پرسوجوها از لایه قبلی دیکودر میآیند و کلیدها و مقادیر از خروجی انکودر میآیند. این به هر موقعیت در دیکودر اجازه میدهد تا بر تمام موقعیتها در توالی ورودی توجه کند و به طور موثر اطلاعات انکودر را با اطلاعات دیکودر ادغام کند.
مرحله ۳.۳ - شبکه عصبی پیشخور (Feed-Forward Neural Network)
مشابه انکودر، هر لایه دیکودر شامل یک شبکه پیشخور کاملاً متصل است که به طور جداگانه و یکسان به هر موقعیت اعمال میشود.
مرحله ۴ - طبقهبند خطی و سافتمکس برای تولید احتمالات خروجی (Linear Classifier and Softmax for Generating Output Probabilities)
سفر داده از طریق مدل ترنسفورمر با عبور آن از یک لایه خطی نهایی به اوج خود میرسد که به عنوان یک طبقهبند عمل میکند. اندازه این طبقهبند با تعداد کل کلاسهای درگیر (تعداد کلمات موجود در واژگان) مطابقت دارد. به عنوان مثال، در سناریویی با ۱۰۰۰ کلاس متمایز که نشاندهنده ۱۰۰۰ کلمه مختلف هستند، خروجی طبقهبند آرایهای با ۱۰۰۰ عنصر خواهد بود. این خروجی سپس به یک لایه سافتمکس معرفی میشود که آن را به دامنهای از امتیازات احتمال تبدیل میکند که هر کدام بین ۰ و ۱ قرار دارند. بالاترین این امتیازات احتمال کلیدی است، شاخص مربوطه آن مستقیماً به کلمهای اشاره میکند که مدل به عنوان کلمه بعدی در توالی پیشبینی میکند.
جریان کاری دیکودر. خروجی نهایی ترنسفورمر. تصویر از نویسنده.
نرمالسازی و اتصالات باقیمانده
هر زیرلایه (خودتوجهی پوشیده، توجه انکودر-دیکودر، شبکه پیشخور) با یک مرحله نرمالسازی دنبال میشود و هر کدام همچنین شامل یک اتصال باقیمانده در اطراف خود هستند.
خروجی دیکودر
خروجی لایه نهایی به یک توالی پیشبینیشده تبدیل میشود، معمولاً از طریق یک لایه خطی و سپس یک سافتمکس برای تولید احتمالات بر روی واژگان. دیکودر، در جریان عملیاتی خود، خروجی تازه تولید شده را به لیست رو به رشد ورودیهای خود اضافه میکند و سپس فرآیند رمزگشایی را ادامه میدهد. این چرخه تا زمانی تکرار میشود که مدل یک توکن خاص را پیشبینی کند که نشاندهنده تکمیل است. توکنی که با بالاترین احتمال پیشبینی میشود به عنوان کلاس پایانی تعیین میشود، که اغلب با توکن پایان (end token) نشان داده میشود.
باز هم به یاد داشته باشید که دیکودر به یک لایه محدود نمیشود. میتوان آن را با N لایه ساختار داد که هر کدام بر اساس ورودی دریافت شده از انکودر و لایههای قبلی خود ساخته میشوند. این معماری لایهای به مدل اجازه میدهد تا تمرکز خود را متنوع کرده و الگوهای توجه متفاوتی را در سراسر سرهای توجه خود استخراج کند. چنین رویکرد چندلایهای میتواند به طور قابل توجهی توانایی پیشبینی مدل را افزایش دهد، زیرا درک دقیقتری از ترکیبهای مختلف توجه ایجاد میکند.
و معماری نهایی چیزی شبیه به این است (از مقاله اصلی):
ساختار اصلی ترنسفورمرها. تصویر از نویسنده. (برگرفته از مقاله "Attention Is All You Need")
برای درک بهتر این معماری، توصیه میشود سعی کنید یک ترنسفورمر را از ابتدا پیادهسازی کنید، مثلا با استفاده از PyTorch و راهنماهای موجود.
مدلهای ترنسفورمر در دنیای واقعی
BERT
انتشار BERT توسط گوگل در سال ۲۰۱۸، یک چارچوب پردازش زبان طبیعی منبعباز، با آموزش دوطرفه منحصربهفرد خود که به مدل امکان میدهد پیشبینیهای آگاهانهتری در مورد کلمه بعدی داشته باشد، NLP را متحول کرد. BERT با درک زمینه از تمام جهات یک کلمه، در وظایفی مانند پاسخ به پرسش و درک زبان مبهم، از مدلهای قبلی بهتر عمل کرد. هسته آن از ترنسفورمرها استفاده میکند و هر عنصر خروجی و ورودی را به صورت پویا به هم متصل میکند. BERT که بر روی ویکیپدیا پیشآموزش دیده بود، در وظایف مختلف NLP برتری یافت و گوگل را بر آن داشت تا آن را برای جستجوهای طبیعیتر در موتور جستجوی خود ادغام کند. این نوآوری رقابتی را برای توسعه مدلهای زبانی پیشرفته برانگیخت و توانایی این حوزه را در مدیریت درک زبان پیچیده به طور قابل توجهی پیشرفت داد. برای آشنایی بیشتر با BERT، میتوانید مقالات تخصصی در این زمینه را مطالعه کنید.
LaMDA
LaMDA (مدل زبانی برای کاربردهای گفتگو) یک مدل مبتنی بر ترنسفورمر است که توسط گوگل توسعه یافته و به طور خاص برای وظایف مکالمهای طراحی شده و در جریان سخنرانی اصلی Google I/O در سال ۲۰۲۱ راهاندازی شد. آنها برای تولید پاسخهای طبیعیتر و مرتبطتر با زمینه طراحی شدهاند و تعاملات کاربر را در برنامههای مختلف افزایش میدهند. طراحی LaMDA به آن امکان میدهد طیف گستردهای از موضوعات و اهداف کاربر را درک کرده و به آنها پاسخ دهد، و آن را برای کاربرد در رباتهای گفتگو، دستیاران مجازی و سایر سیستمهای هوش مصنوعی تعاملی که در آنها مکالمه پویا کلیدی است، ایدهآل میسازد. این تمرکز بر درک و پاسخ مکالمهای، LaMDA را به عنوان یک پیشرفت قابل توجه در زمینه پردازش زبان طبیعی و ارتباطات مبتنی بر هوش مصنوعی مشخص میکند. اگر علاقهمند به درک عمیقتر مدلهای LaMDA هستید، مقالات معرفی این مدلها میتوانند مفید باشند.
GPT و ChatGPT
GPT و ChatGPT که توسط OpenAI توسعه یافتهاند، مدلهای تولیدی پیشرفتهای هستند که به دلیل توانایی خود در تولید متن منسجم و مرتبط با زمینه شناخته شدهاند. GPT-1 اولین مدل آن بود که در ژوئن ۲۰۱۸ راهاندازی شد و GPT-3، یکی از تأثیرگذارترین مدلها، دو سال بعد در سال ۲۰۲۰ راهاندازی شد. این مدلها در طیف گستردهای از وظایف، از جمله ایجاد محتوا، مکالمه، ترجمه زبان و موارد دیگر، ماهر هستند. معماری GPT به آن امکان میدهد متنی تولید کند که شباهت زیادی به نوشتار انسان دارد و آن را در برنامههایی مانند نویسندگی خلاق، پشتیبانی مشتری و حتی کمک به کدنویسی مفید میسازد. ChatGPT، نوعی بهینهسازی شده برای زمینههای مکالمهای، در تولید گفتگوی شبهانسانی برتری دارد و کاربرد آن را در رباتهای گفتگو و دستیاران مجازی افزایش میدهد.
سایر مدلها (Other Variations)
چشمانداز مدلهای پایه، به ویژه مدلهای ترنسفورمر، به سرعت در حال گسترش است. یک مطالعه بیش از ۵۰ مدل ترنسفورمر قابل توجه را شناسایی کرد، در حالی که گروه استنفورد ۳۰ مورد از آنها را ارزیابی کرد و رشد سریع این حوزه را تأیید نمود. NLP Cloud، یک استارتآپ نوآور که بخشی از برنامه Inception انویدیا است، از حدود ۲۵ مدل زبانی بزرگ به صورت تجاری برای بخشهای مختلف مانند خطوط هوایی و داروخانهها استفاده میکند. روند فزایندهای به سمت منبعباز کردن این مدلها وجود دارد و پلتفرمهایی مانند مرکز مدل Hugging Face پیشرو هستند. علاوه بر این، مدلهای متعدد مبتنی بر ترنسفورمر توسعه یافتهاند که هر کدام برای وظایف مختلف NLP تخصصی شدهاند و تطبیقپذیری و کارایی مدل را در کاربردهای متنوع به نمایش میگذارند. برای کسب اطلاعات بیشتر در مورد مدلهای پایه موجود، میتوانید مقالاتی را که به معرفی و بررسی پرکاربردترین آنها پرداختهاند، مطالعه نمایید.
معیارها و عملکرد (Benchmarks and Performance)
معیارسنجی و ارزیابی عملکرد مدلهای ترنسفورمر در NLP شامل یک رویکرد سیستماتیک برای ارزیابی اثربخشی و کارایی آنها است. بسته به ماهیت وظیفه، روشها و منابع مختلفی برای انجام این کار وجود دارد:
وظایف ترجمه ماشینی (Machine Translation Tasks)
هنگام کار با وظایف ترجمه ماشینی، میتوانید از مجموعه دادههای استانداردی مانند WMT (کارگاه ترجمه ماشینی) استفاده کنید که در آن سیستمهای ترجمه ماشینی با مجموعهای از زوجهای زبانی مواجه میشوند که هر کدام چالشهای منحصربهفرد خود را ارائه میدهند. معیارهایی مانند BLEU، METEOR، TER و chrF به عنوان ابزارهای راهنما عمل میکنند و ما را به سمت دقت و روانی هدایت میکنند. علاوه بر این، آزمایش در دامنههای متنوعی مانند اخبار، ادبیات و متون فنی، سازگاری و تطبیقپذیری یک سیستم ترجمه ماشینی را تضمین میکند و آن را به یک چندزبانه واقعی در دنیای دیجیتال تبدیل میکند.
معیارهای پرسش و پاسخ (QA Benchmarks)
برای ارزیابی مدلهای پرسش و پاسخ (QA)، از مجموعههای ویژه سوالات و پاسخها مانند SQuAD (مجموعه داده پرسش و پاسخ استنفورد)، Natural Questions یا TriviaQA استفاده میکنیم. هر کدام مانند یک بازی متفاوت با قوانین خاص خود هستند. به عنوان مثال، SQuAD در مورد یافتن پاسخ در یک متن داده شده است، در حالی که دیگران بیشتر شبیه یک بازی اطلاعات عمومی با سوالاتی از هر کجا هستند. برای اینکه ببینیم این برنامهها چقدر خوب عمل میکنند، از امتیازاتی مانند دقت (Precision)، بازخوانی (Recall)، F1 و گاهی اوقات حتی امتیازات تطابق دقیق (exact match) استفاده میکنیم.
معیارهای استنتاج زبان طبیعی (NLI Benchmarks)
هنگام کار با استنتاج زبان طبیعی (NLI)، از مجموعه دادههای ویژهای مانند SNLI (استنتاج زبان طبیعی استنفورد)، MultiNLI و ANLI استفاده میکنیم. اینها مانند کتابخانههای بزرگی از تنوعات زبانی و موارد پیچیده هستند که به ما کمک میکنند ببینیم کامپیوترهای ما چقدر خوب انواع مختلف جملات را درک میکنند. ما عمدتاً بررسی میکنیم که کامپیوترها در درک اینکه آیا گزارهها با هم موافق هستند، تناقض دارند یا بیربط هستند، چقدر دقیق عمل میکنند. همچنین مهم است که بررسی کنیم کامپیوتر چگونه موارد زبانی پیچیده را تشخیص میدهد، مانند زمانی که یک کلمه به چیزی که قبلاً ذکر شده اشاره دارد، یا درک «نه»، «همه» و «برخی».
مقایسه با سایر معماریها
در دنیای شبکههای عصبی، دو ساختار برجسته معمولاً با ترنسفورمرها مقایسه میشوند. هر یک از آنها مزایا و چالشهای مشخصی را ارائه میدهند که برای انواع خاصی از پردازش دادهها طراحی شدهاند: لایههای بازگشتی (که قبلاً چندین بار در طول مقاله ظاهر شدهاند) و لایههای کانولوشنی.
لایههای بازگشتی (Recurrent Layers)
لایههای بازگشتی، سنگ بنای شبکههای عصبی بازگشتی (RNNs)، در مدیریت دادههای متوالی برتری دارند. قدرت این معماری در توانایی آن برای انجام عملیات متوالی نهفته است که برای وظایفی مانند پردازش زبان یا تحلیل سریهای زمانی حیاتی است. در یک لایه بازگشتی، خروجی از مرحله قبلی به عنوان ورودی برای مرحله بعدی به شبکه بازخورانده میشود. این مکانیزم حلقهای به شبکه اجازه میدهد اطلاعات قبلی را به خاطر بسپارد، که در درک زمینه در یک توالی حیاتی است.
با این حال، همانطور که قبلاً بحث کردیم، این پردازش متوالی دو پیامد اصلی دارد:
- میتواند منجر به زمان آموزش طولانیتر شود زیرا هر مرحله به مرحله قبلی بستگی دارد و پردازش موازی را چالشبرانگیز میکند.
- آنها اغلب با وابستگیهای بلندمدت به دلیل مشکل محو شدن گرادیان دست و پنجه نرم میکنند، جایی که شبکه در یادگیری از نقاط دادهای که در یک توالی از هم دور هستند، کمتر موثر میشود.
مدلهای ترنسفورمر به طور قابل توجهی با معماریهایی که از لایههای بازگشتی استفاده میکنند متفاوت هستند زیرا فاقد بازگشت هستند. همانطور که قبلاً دیدیم، لایه توجه ترنسفورمر هر دو مشکل را ارزیابی میکند و آنها را به تکامل طبیعی RNNها برای کاربردهای NLP تبدیل میکند.
لایههای کانولوشنی (Convolutional Layers)
از سوی دیگر، لایههای کانولوشنی، بلوکهای سازنده شبکههای عصبی کانولوشنی (CNNs)، به دلیل کارایی خود در پردازش دادههای فضایی مانند تصاویر مشهور هستند. این لایهها از کرنلها (فیلترها) استفاده میکنند که بر روی دادههای ورودی اسکن میکنند تا ویژگیها را استخراج کنند. عرض این کرنلها قابل تنظیم است و به شبکه اجازه میدهد بسته به وظیفه مورد نظر، بر روی ویژگیهای کوچک یا بزرگ تمرکز کند. در حالی که لایههای کانولوشنی در ثبت سلسلهمراتب فضایی و الگوها در دادهها فوقالعاده خوب هستند، با وابستگیهای بلندمدت با چالشهایی مواجه هستند. آنها ذاتاً ترتیب یا وابستگیهای زمانی را در فواصل طولانی در دادههای متوالی به همان شیوهای که RNNها یا ترنسفورمرها انجام میدهند، در نظر نمیگیرند.
نتیجهگیری
مدلهای ترنسفورمر نه تنها یک پیشرفت تدریجی، بلکه یک جهش انقلابی در هوش مصنوعی، به ویژه در حوزه پردازش زبان طبیعی بودهاند. توانایی آنها در پردازش موازی و درک زمینه از طریق مکانیزمهای خودتوجهی، استانداردهای جدیدی را برای عملکرد در طیف گستردهای از وظایف تعیین کرده است. از ترجمه ماشینی گرفته تا تولید متن و فراتر از آن، تأثیر ترنسفورمرها عمیق و گسترده است.
همانطور که دیدیم، معماری ترنسفورمر، با اجزای انکودر و دیکودر خود، به دقت طراحی شده است تا وابستگیهای دوربرد در دادهها را مدیریت کند، مشکلی که معماریهای قبلی مانند RNNها با آن دست و پنجه نرم میکردند. ظهور مدلهایی مانند BERT، GPT و LaMDA گواهی بر قدرت و تطبیقپذیری چارچوب ترنسفورمر است.
با ادامه تکامل این حوزه، بدون شک شاهد نوآوریهای بیشتری بر پایه و اساس ایجاد شده توسط ترنسفورمرها خواهیم بود. برای هر کسی که در زمینه علم داده، یادگیری ماشین یا هوش مصنوعی فعالیت میکند، درک عمیق ترنسفورمرها دیگر یک گزینه نیست، بلکه یک ضرورت است. آنها نه تنها پنجرهای به وضعیت فعلی هنر ارائه میدهند، بلکه مسیری به سوی امکانات آینده در هوش مصنوعی را نیز روشن میکنند.