پرش به محتوای اصلی

ترانسفورماتورها به صورت بصری توضیح داده شدند

هکرنیوز۱۴۰۵ شهریور ۳۰, دوشنبه، ساعت ۲۳:۱۳حدود 9 دقیقه مطالعه

آدرس مقاله: https://poloclub.github.io/transformer-explainer/ آدرس نظرات: https://news.ycombinator.com/item?id=49792342 امتیاز: 263 # نظرات: 41

Transformer یک معماری شبکه عصبی است که رویکرد هوش مصنوعی را به طور اساسی تغییر داده است. Transformer برای اولین بار در سال 2017 در مقاله اصلی "توجه تنها چیزی است که نیاز دارید" معرفی شد و از آن زمان به معماری مورد استفاده برای مدل های یادگیری عمیق تبدیل شده است و مدل های تولید متن مانند GPT OpenAI، Meta's Llama و Gemini گوگل را تقویت می کند. فراتر از متن، Transformer همچنین در تولید صدا، تشخیص تصویر، پیش‌بینی ساختار پروتئین و حتی اجرای بازی نیز کاربرد دارد و تطبیق پذیری خود را در دامنه‌های متعدد نشان می‌دهد.

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

خانواده مدل های GPT-2 نمونه های برجسته ای از ترانسفورماتورهای تولید کننده متن هستند. Transformer Explainer توسط مدل GPT-2 (کوچک) با 124 میلیون پارامتر تغذیه می شود. در حالی که این جدیدترین یا قدرتمندترین مدل ترانسفورماتور نیست، بسیاری از اجزای معماری و اصول مشابه موجود در مدل های مدرن فعلی را به اشتراک می گذارد و آن را نقطه شروع ایده آلی برای درک اصول اولیه می کند.

هر ترانسفورماتور مولد متن از این سه جزء کلیدی تشکیل شده است:

فرض کنید می خواهید متنی را با استفاده از مدل Transformer تولید کنید. شما دستوری را مانند این اضافه می‌کنید: «تجسم داده‌ها به کاربران قدرت می‌دهد». این ورودی باید به قالبی تبدیل شود که مدل بتواند آن را درک و پردازش کند. اینجاست که جاسازی وارد می شود: متن را به یک نمایش عددی تبدیل می کند که مدل بتواند با آن کار کند. برای تبدیل یک درخواست به جاسازی، باید 1) ورودی را نشانه گذاری کنیم، 2) جاسازی نشانه ها را به دست آوریم، 3) اطلاعات موقعیتی را اضافه کنیم، و در نهایت 4) رمزگذاری های رمز و موقعیت را اضافه کنیم تا جاسازی نهایی را به دست آوریم. بیایید ببینیم هر یک از این مراحل چگونه انجام می شود.

توکن‌سازی فرآیندی است که در آن متن ورودی به قطعات کوچک‌تر و قابل مدیریت‌تر به نام توکن‌ها تقسیم می‌شود. این نشانه ها می توانند یک کلمه یا یک زیرکلمه باشند. کلمات "داده" و "تجسم" مربوط به توکن های منحصر به فرد هستند، در حالی که کلمه "قدرت می دهد" به دو نشانه تقسیم می شود. واژگان کامل توکن ها قبل از آموزش مدل مشخص می شود: واژگان GPT-2 دارای 50257 توکن منحصر به فرد است. اکنون که متن ورودی خود را به نشانه‌هایی با شناسه‌های متمایز تقسیم می‌کنیم، می‌توانیم نمایش برداری آنها را از جاسازی‌ها به دست آوریم.

GPT-2 (کوچک) هر نشانه در واژگان را به عنوان یک بردار 768 بعدی نشان می دهد. بعد بردار به مدل بستگی دارد. این بردارهای جاسازی شده در یک ماتریس شکل (50,257, 768) ذخیره می شوند که شامل تقریبا 39 میلیون پارامتر است! این ماتریس گسترده به مدل اجازه می‌دهد تا معنای معنایی را به هر نشانه اختصاص دهد، به این معنا که نشانه‌هایی با کاربرد یا معنای مشابه در زبان در این فضای با ابعاد بالا نزدیک به هم قرار می‌گیرند، در حالی که نشانه‌های غیرمشابه از هم دورتر هستند.

لایه Embedding همچنین اطلاعات مربوط به موقعیت هر نشانه را در اعلان ورودی رمزگذاری می کند. مدل های مختلف از روش های مختلفی برای رمزگذاری موقعیتی استفاده می کنند. GPT-2 ماتریس کدگذاری موقعیتی خود را از ابتدا آموزش می دهد و آن را مستقیما در فرآیند آموزش ادغام می کند.

در نهایت، رمزگذاری رمزگذاری و موقعیتی را جمع می کنیم تا نمایش تعبیه نهایی را به دست آوریم. این نمایش ترکیبی هم معنای معنایی نشانه ها و هم موقعیت آنها را در دنباله ورودی به تصویر می کشد.

هسته پردازش ترانسفورماتور در بلوک ترانسفورماتور قرار دارد که شامل خود توجهی چند سر و یک لایه پرسپترون چند لایه است. اکثر مدل‌ها از چندین بلوک تشکیل شده‌اند که به‌طور متوالی یکی پس از دیگری روی هم چیده می‌شوند. نمایش توکن ها از طریق لایه ها، از اولین بلوک تا آخرین بلوک، تکامل می یابند و به مدل اجازه می دهد تا درک پیچیده ای از هر نشانه ایجاد کند. این رویکرد لایه ای منجر به نمایش های مرتبه بالاتر ورودی می شود. مدل GPT-2 (کوچک) مورد بررسی ما از 12 بلوک تشکیل شده است.

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

بردار تعبیه شده هر نشانه به سه بردار تبدیل می شود: Query (Q)، کلید (K) و Value (V). این بردارها با ضرب ماتریس تعبیه ورودی با ماتریس های وزن آموخته شده برای Q، K و V به دست می آیند. در اینجا یک قیاس جستجوی وب برای کمک به ما در ایجاد شهود در پشت این ماتریس ها وجود دارد:

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

بردارهای Query، Key و Value به چند سر تقسیم می‌شوند—در مورد GPT-2 (کوچک)، به 12 سر. هر سر یک بخش از تعبیه‌ها را به طور مستقل پردازش می‌کند و روابط نحوی و معنایی متفاوتی را ثبت می‌کند. این طرح یادگیری موازی ویژگی های زبانی متنوع را تسهیل می کند و قدرت بازنمایی مدل را افزایش می دهد.

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

این مدل از امتیازهای خودتوجهی پوشانده شده استفاده می کند و آنها را با ماتریس Value ضرب می کند تا خروجی نهایی مکانیسم توجه به خود را به دست آورد. GPT-2 دارای 12 سر خود توجه است که هر کدام روابط متفاوتی را بین توکن ها ثبت می کند. خروجی های این هدها به هم متصل شده و از یک برآمدگی خطی عبور می کنند.

پس از اینکه سرهای متعدد خودتوجهی روابط متنوع بین نشانه‌های ورودی را ثبت کردند، خروجی‌های به هم پیوسته از لایه پرسپترون چندلایه (MLP) عبور داده می‌شوند تا ظرفیت نمایشی مدل افزایش یابد. بلوک MLP از دو تبدیل خطی با یک تابع فعال سازی GELU در بین آن تشکیل شده است.

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

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

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

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

این به ما امکان می دهد تا توکن بعدی را بر اساس احتمال آن نمونه برداری کنیم.

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

علاوه بر این، فرآیند نمونه‌برداری را می‌توان با استفاده از پارامترهای top-k و top-p اصلاح کرد:

با تنظیم دما، top-k و top-p، می توانید بین خروجی های قطعی و متنوع تعادل برقرار کنید و رفتار مدل را با نیازهای خاص خود تنظیم کنید.

چندین ویژگی معماری کمکی وجود دارد که عملکرد مدل های ترانسفورماتور را افزایش می دهد. در حالی که برای عملکرد کلی مدل مهم هستند، اما برای درک مفاهیم اصلی معماری مهم نیستند. نرمال سازی لایه، انحراف و اتصالات باقیمانده اجزای حیاتی در مدل های ترانسفورماتور، به ویژه در مرحله آموزش هستند. نرمال سازی لایه، آموزش را تثبیت می کند و به همگرایی سریعتر مدل کمک می کند. Dropout با غیرفعال کردن تصادفی نورون ها از برازش بیش از حد جلوگیری می کند.

اتصالات باقیمانده به گرادیان ها اجازه می دهد تا مستقیما از طریق شبکه جریان داشته باشند و به جلوگیری از ناپدید شدن مشکل گرادیان کمک می کند.

نرمال سازی لایه ها به تثبیت روند تمرین و بهبود همگرایی کمک می کند. این با عادی سازی ورودی ها در بین ویژگی ها کار می کند و اطمینان حاصل می کند که میانگین و واریانس فعال سازی ها سازگار است. این نرمال سازی به کاهش مسائل مربوط به تغییر متغیر کمکی داخلی کمک می کند و به مدل اجازه می دهد تا به طور موثرتری یاد بگیرد و حساسیت به وزن های اولیه را کاهش دهد. نرمال سازی لایه دو بار در هر بلوک ترانسفورماتور اعمال می شود، یک بار قبل از مکانیسم توجه به خود و یک بار قبل از لایه MLP.

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

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

در GPT-2، اتصالات باقیمانده دو بار در هر بلوک ترانسفورماتور استفاده می شود: یک بار قبل از MLP و یک بار بعد از آن، اطمینان حاصل شود که گرادیان ها راحت تر جریان می یابند، و لایه های قبلی به روز رسانی های کافی را در طول انتشار پس زمینه دریافت می کنند.

Transformer Explainer به گونه ای ساخته شده است که تعاملی باشد و به شما امکان می دهد تا عملکرد درونی ترانسفورماتور را کشف کنید. در اینجا برخی از ویژگی های تعاملی وجود دارد که می توانید با آنها بازی کنید:

Transformer Explainer دارای یک مدل زنده GPT-2 (کوچک) است که مستقیما در مرورگر اجرا می شود. این مدل از پیاده‌سازی PyTorch GPT توسط پروژه nanoGPT Andrej Karpathy مشتق شده است و برای اجرای یکپارچه در مرورگر به Runtime ONNX تبدیل شده است. این رابط با استفاده از جاوا اسکریپت، با Svelte به عنوان فریم ورک جلویی و D3.js برای ایجاد تجسم های پویا ساخته شده است. مقادیر عددی به‌طور زنده پس از ورودی کاربر به‌روزرسانی می‌شوند.

Transformer Explainer توسط Aeree Cho، Grace C. Kim، Alexander Karpekov، Alec Helbling، Jay Wang، Seongmin Lee، Benjamin Hoover و Polo Chau در موسسه فناوری جورجیا ساخته شده است.

خواندن متن کامل در هکرنیوزبه زبان اصلی، در سایت ناشر باز می‌شود
متن اصلی (انگلیسی)

Transformers Explained Visually

Article URL: https://poloclub.github.io/transformer-explainer/ Comments URL: https://news.ycombinator.com/item?id=49792342 Points: 263 # Comments: 41

همه‌ی اخبار فناوری