شبکه ترنسفورمر
شبکه عصبی ترنسفورمر یک شبکه عصبی مبتنی بر مکانیزم توجه است که برای پردازش داده دنبالهای بهصورت موازی و بهینه، بدون نیاز به شبکه بازگشتی یا شبکه کانولوشن استفاده میشود. این شبکه عصبی مدرن، کمتر از ده سال قدمت دارد اما غوغایی به پا کرده است. در یازدهمین جلسه از دوره یادگیری عمیق رایگان میخواهم به تشریح شبکه ترنسفورمر بپردازم. با آکادمی هوش مصنوعی هوسم همراه باشید…
شبکه عصبی ترنسفورمر چیست؟
مختصری بر تاریخچه شبکه عصبی ترنسفورمر
در سال 2017 مقالهای با نام Attention is All You Need توسط گوگل منتشر شد. بله، این مقالهای بود که در آن شبکه ترنسفورمر پیشنهاد شده بود. این شبکه برای اولین بار برای تسک ترجمه ماشینی یا Machine Translation ساخته شده بود. حرف حسابش چیست ؟
خانمها و آقایان، بیایید شبکههای بازگشتی پرزحمت را کنار بگذاریم!
عجب! یعنی LSTM و سایر دار و دستهاش پر؟! بله، پر! حالا کسانی که آموزش شبکه LSTM ما را خواندهاند، میگویند: “یعنی این همه گیت گیت کردی و مخ ما رو خوردی، الان میخوای بگی که اون رو بذاریم کنار؟!” خب LSTM و سایر شبکههای بازگشتی همچنان کاربرد دارند. اما در تسکهای بزرگ و سنگین، شبکه ترنسفورمر جایگزین شبکه LSTM شده است.
تا پیش از این، محققان گوگل کارهایی در زمینه استفاده از شبکه LSTM برای ترجمه ماشینی داشتند. اما زدند زیر میز و شبکه جدیدی را پیشنهاد کردند. البته، این زیر میز زدن، ناگهانی نبود! بلکه، آرام آرام پیشنهادهایی در راستای بهتر کردن شبکه LSTM، مانند شبکه LSTM با مکانیزم اتنشن ارائه شده بود که نهایتا شبکه ترنسفورمر متولد شد. انتشار این مقاله یک انقلاب بزرگ را در حوزه پردازش زبان طبیعی (NLP) رقم زد که به بهار NLP هم معروف است.
گرد و خاک بهپاکردن شبکه ترنسفورمر
پس از این مقاله، افراد مختلف از آن گفتند، نوشتند، مقاله منتشر کردند، کتابخانه ساختند و … بیایید باهم چند نمونه از کارهای کلیدی بر پایه شبکه ترنسفورمر را مرور کنیم:
- مجموعه هاگینگ فیس (Hugging Face) از همان زمان تولد ترنسفورمر بود که شروع کرد و یک پیادهسازی تروتمیز از شبکه ترنسفورمر در پایتورچ ارائه کرد. حالا دیگر هاگینگ فیس برای خودش شرکت هیولایی شده است.
- شبکه BERT بازهم توسط گوگل پیشنهاد شد که نحوه استفاده از شبکه ترنسفورمر در سایر تسکها مانند مدلسازی زبان، دستهبندی متن، پرسش و پاسخ و غیره را ارائه کرده بود. همچنین، بحث پریترین و فاین تیون کردن در ترنسفورمر هم مطرح شده بود. گفتیم که اولین بار ترنسفورمر برای ترجمه ماشینی ارائه شده بود.
- شبکههای GPT از شرکت OpenAI مطرح شد. همانهایی که باعث شدند ChatGPT جان ساخته شود. 🤗
- شبکه ViT توسط گوگل برای حوزه بینایی کامپیوتر مطرح شد. شبکهای که باعث ورود ترنسفورمرها به دنیای بینایی کامپیوتر شد. یعنی شبکه کانولوشنی هم پَر؟! 😬 نه!
طبیعتا، به همین شکل پیشرفتها ادامه پیدا کرد و این شبکه قرن بیست و یکمی وارد بسیاری از حوزهها مانند پردازش صوت و غیره هم شد. خب این از سرگذشت فوقالعاده ترنسفورمر…
قبل از اینکه تشریح شبکه ترنسفورمر را شروع کنیم، بیایید یک سناریو بسازیم و با آن سناریو پیش برویم.سناریوی دسته بندی متن به دو کلاس مثبت و منفی
فرض کنید، ما دیتاستی به نام IMDB داریم که شامل مجموعهای از کامنت کاربران سایت IMDB هست. میخواهیم این کامنتها را به دو کلاس مثبت و منفی دستهبندی کنیم. کاربری که کامنت خوب و رضایت از فیلم/سریال گذاشته، باید به عنوان کامنت/کلاس مثبت شناخته شود. کامنت منفی هم که مشخص هست. در شکل زیر، نمونههایی از دیتاست IMDB را مشاهده میکنید؛ ستون اول، کامنت کاربر و ستون دوم هم تارگت (Positive/Negative) هست. این دیتاست 49582 نمونه ندارد. عجب! داشتم بعد مدتی این نوشته رو مرور میکردم، به این جمله خندیدم: این دیتاست 49582 نمونه ندارد. 🤣 خوبه صد بار متن رو میخونما…
راستی حالا که صحبت از کامنت شد، باید از شما تشکر کنم. در پستهای قبلی آموزش یادگیری عمیق با کامنتها خیلی ما را خوشحال کردید و از شما ممنونیم. البته، الان که در حال مرور این متن بعد چند ماه هستم، بازهم باید تشکر کنم که برای این آموزش هم کامنت گذاشتید. ❤
حالا که دیتاست را شناختید، باید برویم سراغ پیشپردازش و آمادهسازی دیتاست! چرا متن ورودی باید پیشپردازش شود؟ چون شبکه عصبی تماما مبتنی بر اعداد و ریاضی هست و ما نمیتوانیم به آن متن بدهیم. باید به شکلی، این متنها را به عدد تبدیل کنیم. طبیعتا روی ستون تارگت هم مشکلی نداریم؛ چون صرفا دو کلمه مثبت و منفی داریم که بهجای آنها یک و صفر قرار میدهیم. در بخش بعدی، درمورد پیشپردازش و آمادهسازی دیتاست توضیح دادهام…
پیش پردازش و آماده سازی متن
رسیدیم به اینجا که متن ورودی را باید به اعداد تبدیل کنیم. حالا چگونه؟ یک ایده رایج این هست که بیاییم ابتدا جمله را به یکسری کلمه تبدیل کنیم. سپس، برای هر کلمه یک بردار ویژگی عددی بسازیم. همانطور که گفتم، ابتدا باید تک تک جملات به لیستی از کلمات تبدیل شوند. به این کار توکنایزیشن (Tokenization) گفته میشود. واقعیت این هست که جمله به لیستی از توکنها تبدیل میشود، نه کلمات! اما فعلا خودتان را درگیر جزییات کار نکنید. فعلا فکر کنید، توکنها تقریبا معادل با همان کلمهها هستند. در شکل زیر نتیجه توکنایزیشن را برای یک نمونه میبینید:
تمرین آیا با پایتون میتوانید جمله بالا را به لیست بالا تبدیل کنید؟ یک خط کد نیاز دارد!بعد از توکنایز، باید عمل بردارسازی (Vectorization) انجام دهیم! این عمل، یعنی هر کلمه/توکن به یک بردار معنیدار تبدیل شود. خوشبختانه، امروزه یکسری مدل آماده داریم که به راحتی قابل دانلود و استفاده هستند. مثلا، GloVe که از ما یک کلمه/توکن میگیرد و در خروجی یک بردار به طول مشخص میدهد. مثلا، وقتی توکنهای نمونه بالا را به GloVe میدهیم، برای هرکدام یک بردار عددی به طول 50 میدهد. ببینید:
پس من یک جمله به طول 20 را تبدیل به 20 بردار به طول 50 کردم. کلا یک جمله به طول L را میتوان به یک تنسور به ابعاد LxF تبدیل کرد. L به همان طول جمله (تعداد توکنها) و F هم به طول بردار ویژگی اشاره دارد. حالا باید این بردار ورودی را باید در اختیار شبکه ترنسفورمر قرار دهیم.
البته، در ترنسفورمر از لایه امبدینگ (Embedding) برای وکتوریزیشن استفاده میشود. در ادامه، درباره لایه امبدینگ بیشتر توضیح میدهم…
امبدینگ (Embedding)
لایه امبدینگ در ترنسفورمر یک جدول وزنی (Weight Matrix) است که هر توکن ورودی را به یک بردار ویژگی عددی با طول ثابت تبدیل میکند. منظور از جدول وزنی چیست؟ به شکل زیر نگاه کنید؛ ماتریس زیر به ابعاد Nwxd همان لایه امبدینگ است. پس، لایه امبدینگ چیزی نیست جز یک ماتریس دوبعدی! تعداد سطرهای این ماتریس، معادل با تعداد توکنهای یکتا در دیتاست آموزش هست. مثلا، در دیتاست آموزش 10 هزار توکن یکتا داریم. سادهتر بگویم، 10 هزار کلمه یکتا در زبان انگلیسی! تعداد ستونها هم معادل با سایز بردار ویژگی برای هر توکن هست. مثلا، در GloVe برداری به طول 50 برای هر توکن داشتیم. حالا، برای کلمه ‘the’ به سطر معادل با کلمه ‘the’ در ماتریس امبدینگ مراجعه میکنیم و بردار متناظر با آن سطر برمیداریم و تمام!
اما، مقادیر این ماتریس وزن چه هستند؟ کل این ماتریس با مقادیر رندوم پر شده است! عجب! رندوم چه ارزشی دارد؟! نکته اینجاست که همه درایههای این ماتریس پارامتر هستند. این پارامترها حین فرآیند آموزش تغییر میکنند تا به مقادیر بهینه برسند. پس، همزمان با آموزش شبکه ترنسفورمر، این لایه امبدینگ هم آموزش میبیند.
طبیعتا، من خیلی خلاصه در مورد پیش پردازش و آماده سازی متن توضیح دادم. برای این پست، همین اندازه کافی است. جزئیات بیشتر را باید در یک آموزش اختصاصی پردازش زبان طبیعی بخوانید. تلاش میکنیم که یک پست مقدماتی خوب برای پردازش متن بنویسیم. بهصورت خلاصه، آنچه باید روی متن ورودی انجام شود این است که:
- دادههای متنی توکنایز شوند.
- هر توکن تبدیل به یک بردار شود. در اینجا از لایه امبدینگ!
قبل از اینکه معماری شبکه ترنسفورمر را توضیح دهم، باید کمی از تسک ترجمه ماشینی بگویم. چون، قبلا گفتم که اولین بار شبکه ترنسفورمر برای ترجمه ماشینی ارائه شد.
ترجمه ماشینی در پردازش زبان طبیعی
ترجمه ماشینی یا Machine Translation یعنی متنی از زبان A به زبان B ترجمه یا تبدیل شود. برای این کار معمولا از ساختار انکدر-دیکدر استفاده میکنند. ساختاری که در آن، یک شبکه به عنوان انکدر وظیفه انکد کردن یا استخراج ویژگی از زبان مبدا (A) را برعهده دارد. سپس، شبکه دیکدر، ویژگیهای استخراجی انکدر را به زبان مقصد (B) تبدیل میکند. ساختار کلی انکدر-دیکدر با تمرکز بر شبکههای بازگشتی در شکل زیر نشان داده شده است.
در شکل بالا، x-ها همان بردارهای توکن زبان A و y-ها هم بردارهای توکن زبان B هستند. ممکن هست، بگویید، چرا شبکه بازگشتی؟ نکته اینجاست که شبکه ترنسفورمر مبتنی بر همین ساختار انکدر-دیکدر کار ترجمه را انجام میدهد. با این تفاوت که در اینجا صرفا یک لایه انکدر و دیکدر داریم. اما در شبکه ترنسفورمر تعدادی زیادی لایه انکدر و دیکدر داریم. در ادامه، بیشتر در مورد این مطلب صحبت میکنم…
بالاخره بعد از کلی مقدمهچینی، رسیدیم به اصل مطلب، شبکه ترنسفورمر…
شبکه ترنسفورمر Transformer
اگر بجای بخش انکدر و دیکدر در شکل بالا، مجموعه لایههای انکدر و دیکدر شبکه ترنسفورمر را قرار دهیم، آنگاه شبکه ترنسفورمر ساخته میشود. در شکل زیر، بهصورت کلی این ساختار نشان داده شده است. مجموعهای لایه انکدر که بهصورت متوالی قرار گرفتهاند و بخش انکدر را ساختهاند. به صورت مشابه، مجموعهای لایه دیکدر بهصورت متوالی بخش دیکدر شبکه ترنسفورمر را ساختهاند.
نکته جالب اینجاست که خروجی بخش انکدر که ویژگی غنی و ارزشمند است، به تک تک لایههای دیکدر وارد میشود. چطوری؟ حالا فعلا جزئیات رو بگذار کنار و به کلیات توجه کن.
در شبکههای بازگشتی بخش انکدر و دیکدر کاملا یکی هستند. اما در شبکه ترنسفورمر، لایه انکدر و دیکدر یکی نیستند و باهم تفاوتهایی دارند. بنابراین، باید هرکدام بهصورت جداگانه بررسی شوند.
البته، نکته خوشحالکننده اینجاست که ساختار انکدر-دیکدر برای مسالههای دنباله به دنباله یا Sequence to Sequence (مثلا ترجمه ماشینی) کاربرد دارد. برای مسائلی مثل دستهبندی، رگرسیون و مدلسازی زبان تنها یک بخش انکدر یا دیکدر کافی است و به هردو نیازی نیست. من هم اینجا میخواهم با سناریوی دستهبندی جلو بروم. پس فعلا فقط بخش انکدر را به شما توضیح بدهم. بعدا، خودتان میتوانید با دوره یادگیری عمیق هوسم یا به هر شکل دیگری بخش دیکدر را هم یاد بگیرید. برویم سراغ تشریح لایه انکدر در ترنسفورمر…
لایه انکدر در شبکه ترنسفورمر
همانطور که در شکل بالا نشان داده شد، بخش انکدر از تعدادی لایه انکدر تشکیل شده است. این لایهها باهم فرقی ندارند و صرفا بهصورت متوالی قرار گرفتهاند. چرا؟ اگر با سایر شبکههای عصبی آشنا باشید، انتظار دارم جوابش را بدانید. ما در همه شبکهها مثل شبکه MLP یا CNN یکسری لایه روی هم قرار میدادیم که ظرفیت یادگیری شبکه بالاتر رود و ویژگیهای ارزشمندتری استخراج کند. اینجا هم طبیعتا همین قاعده برقرار هست. حالا بیایید بزنیم به دل این لایههای انکدر…
در دل یک لایه انکدر ترنسفورمر دو ماژول اصلی قرار گرفته است:
- ماژول Multi-Head Attention
- ماژول Feed Forward
ماژول Feed Forward بسیار ساده هست و همان MLP است. اما ماژول Multi-Head Attention مهم هست و پیچیدگیهایی دارد. هرچه هست، زیر سر همین ماژول Multi-head Attention هست! اصلا برگردیم به ابتدای این پست! اسم مقاله شبکه ترنسفورمر چه بود؟ Attention is All You Need. میگوید اتنشن همه آن چیزی است که نیاز دارید. خب، تا همین جا فهمیدیم که قلب تپنده این شبکه Multi-head Attention هست. اتفاقا این ماژول در سمت دیکدر هم وجود دارد!
فان اسم مقاله چه بود؟ Attention is All You Need. علاوهبر محتوای علمی این مقاله، عنوان این مقاله هم جریانساز بود! بعد این مقاله، کلکسیونی از مقالات علمی منتشر شد که اسمشان به شکل زیر بود. دیگه واقعا جا داشت که بگوییم چه خبرتونه، چه خبرتونه؟! (لطفا با لحن دکتر بخونید!)
is All You Need …
قبل از اینکه وارد جزئیات هریک از ماژولها شویم، میخواهم جزئیات بیشتری از لایه انکدر را به شما نشان دهم. به شکل زیر نگاه کنید؛ همان بردارهای توکن که در بخش قبلی توضیح دادیم، باید وارد این لایه شوند. بهصورت کلی، ورودیهای X فرآیند زیر را طی میکنند:
- بردارهای X وارد ماژول Multi-Head Attention میشوند.
- سپس، خروجی Multi-Head Attention بدست میآید.
- خروجیهای Multi-Head Attention وارد ماژول Feed Forward میشوند.
- درنهایت، خروجی Feed Forward با نماد Z بدست میآید.
نکته به شکل بالا نگاه کنید؛ ما سه ورودی X1 X2 X3 داریم. تعداد خروجی هر ماژول به همان تعداد ورودی هست. یعنی درنهایت، سه خروجی Z1 Z2 Z3 داریم.
در ادامه میخواهم درباره Multi-head Attention و Feed Forward صحبت کنم. طبیعتا عمده صحبت ما معطوف به Multi-Head Attention خواهد بود.
ماژول Multi-Head Attention در شبکه ترنسفورمر
قبل از هرچیزی بگویم که از ساختار ماژول Multi-Head Attention نترسید! 😅 شاید ظاهرش سخت به نظر برسد، اما ته دلش چیزی نیست! ساختار این ماژول را در شکل زیر آوردهام.
به شکل بالا دقت کنید؛ یکسری بلوک وجود دارد که بهصورت موازی با هم قرار گرفتهاند. دو بلوک Concat و Linear (همان لایه فولی کانکتد) هم در آخر کار قرار گرفتهاند که فقط یک عدد از آنها داریم. کاملا واضح هست که بلوک Concat ورودیهای موازی و متعدد را بههم الحاق میکند. فعلا بیایید Concat و Linear آخر را کنار بگذاریم. برویم سراغ بلوکهای موازی…
این موازی بودن بلوکها به همان عبارت Multi-Head اشاره دارد. یعنی ما چند Head یا سر داریم که بهصورت موازی باهم قرار گرفتهاند. از قرار معلوم همه شبیه هم هستند، پس فعلا میتوانیم تعداد Head یا h را برابر با 1 درنظر بگیریم که شکل بالا بهصورت زیر ساده شود. حالا بهتر میتوانیم بلوکهای مختلف این ماژول را ببینیم.
نکته به این قسمت از شبکه ترنسفورمر که در شکل بالا نشان داده شده، ماژول Self-attention هم گفته میشود. بعد از پایان این وبلاگ، حتما این عبارت را گوگل کنید.
نکته جالب اینجاست که ورودی x در شکل بالا، به سه لایه Linear یا همان لایه فولی کانکتد مجزا میرود. سپس، سه خروجی V Q K ساخته میشود. این سه حرف نماینده سه کلمه معروف Value Query Key هستند. شاید قبلا جایی شنیده باشید. اگر هم نشنیدهاید که هیچ، مهم نیست… حالا سه تنسور V Q K وارد ماژولی بهنام Scaled Dot-Product Attnetion میشوند. برویم ببینیم در این زیرماژول چه خبر است…
زیرماژول Scaled Dot-Product Attnetion
همانطور که تا اینجا گفتیم، این زیرماژول در دل Multi-Head Attention قرار دارد. اما میخواهیم ببینیم چه بلایی سر سه ورودی V Q K میآورد؟ چیزی که از شکل مشخص است این هست که سه ورودی V Q K دریافت میکند و یک خروجی Z میدهد. بلوک دیاگرام زیرماژول Scaled Dot-Product Attnetion را در شکل زیر نشان دادهام. چیزی نیست جز ضرب ماتریسی و یکمی هم فلفل و نمک! عجب! این همه راه ما را کشانده و هی بلوکهای تودرتو را پشت سر گذاشتهایم تا به عملگر ضرب ماتریسی برسیم؟ بله! و چقدر این ضرب ماتریسی در یادگیری ماشین و یادگیری عمیق اهمیت دارد…
کل بلوک دیاگرام بالا معادل با فرمول زیر است:
نکته بعد از ضرب QKT باید scale که همان رایکال مخرج است را انجام دهیم. اتفاقا به همین خاطر هست که در نام این زیرماژول کلمه Scaled داریم. متغیر dK هم به طول بردار K اشاره میکند. همان F! چرا K؟ فرقی نمیکند. K و Q باهم برابرند. شاید در یادگیری ماشین دیده باشید؛ این مقیاس نقش Temperature را برای سافتمکس دارد. میتواند رفتار Softmax را به Argmax نزدیک کند یا از آن فاصله بگیرد و نسخه Soft ارائه دهد.
نکته ما میدانیم خروجی سافتمکس اعداد نرمالیزهشده بین 0 و 1 است. در واقع، ما از طریق K و Q یکسری Score یا وزن میسازیم و بردارهای موجود در V را وزندهی میکنیم.
بسیارخب، برگردیم به همان Multi-Head Attention… در همین بخش گفتیم که ما از همین Slef-Attention یکی نداریم، بلکه چندتا داریم که موازی باهم قرار گرفتهاند. بیایید این بار h را برابر با 3 درنظر بگیریم؛ در شکل زیر، این ماژولهای موازی را کنار هم نشان دادهام. اصل کلام این هست که ورودی LxF از بُعد F باید به 3 تکه تقسیم (Split) شود و بَعد هر تکه وارد یکی از این سه ماژول شود.
درنهایت، وقتی سه خروجی را بدست آوردیم، با همان Concat اینها رو دوباره از بعد F به هم میچسبانیم و تحویل لایه Linear میدهیم. تماممم!
به قول ژوله: “چقدر سخت بود، چقدر تلخ بود!” خسته شدم! 😫 وقتی از این کار آموزش دادن خسته میشم، عمیقا به بازنشستگی فکر میکنم! چند سال دیگه میتونم آموزش بدم؟! نمیدانم! واقعا نمیدانم!
سلام مجدد، من برگشتم که داستان را ادامه دهم خسته هم نیستم! 🙂
اگر خاطرتان باشد، لایه انکدر ترنسفورمر شامل دو ماژول Multi-Head Attention و Feed Forward بود. گفتیم که ماژول Multi-Head Attention قلب تپنده شبکه ترنسفورمر هست. درمورد این ماژول با جزئیات توضیح دادیم و تمام شد. حالا برویم سراغ Feed Forward…
ماژول Feed Forward در شبکه Transformer
این ماژول چیزی نیست جز، دو لایه فولی کانکتد (Linear) و بس! شکل زیر را نگاه کنید؛ همه چیز گویاست:
این ماژول، ورودی LxF را دریافت میکند و خروجی LxF میدهد. بنابراین، سایز ورودی و خروجی دقیقا برابر است. در بلوک اولی نوشته شده: 4XLinear؛ یعنی، تعداد نورونهای این لایه چهاربرابر ورودی است. بنابراین، اگر ورودی LxF هست، تعداد نورونهای این لایه برابر با 4F است. طبیعتا ما با L که کاری نداریم، چون L معادل با تعداد توکنهاست و ما صرفا با روی فیچرها یا همان F کار میکنیم. در ماژول قبلی Multi-Head Attention هم دیدید که F را تکه پاره میکردیم و …
پس، سایز خروجی لایه اول چه میشود؟ بله، Lx4F. حالا ورودی را به لایه دوم (Linear) میدهیم. تعداد نورونهای این لایه برابر با F هست. یعنی، در این لایه میخواهیم ابعاد بردار ویژگی را از 4F به F کاهش دهیم. همین! پس، سایز خروجی لایه دوم چه میشود؟ LxF و تمام!
نکته عدد 4 در لایه اول همیشگی نیست. قابل تغییر هست. مثلا پایتورچ این قابلیت را به ما میدهد که این عدد را تغییر دهیم.
نکته همین دو لایه این ماژول کلی پارامتر تولید میکند! بیایید یک مثال عددی را باهم مرور کنیم؛ فرض کنید، ورودی این ماژول 20×512 باشد. یعنی L برابر با 20 و F هم 512. تعداد وزنهای لایه اول: 512×2048 و تعداد وزنهای لایه دوم: 2048×512. نتیجه اینکه: 2 میلیون پارامتر برای دو لایه خواهیم داشت!
چرا اصلا چنین ماژولی گذاشتند؟ مریض بودند که یک بار بردار ویژگی F را به 4F رساندند و دوباره به F برگرداندند؟ اگر جوابش را نمیدانید، باید روی مباحث پایه، یعنی شبکه عصبی MLP بیشتر کار کنید. حالا، اگر جوابش را میدانید، لطفا کامنت کنید که نظرتان را بدانیم.
جمعبندی لایه انکدر در شبکه ترنسفورمر
برای جمعبندی، شکل زیر را آوردم و نمیخواهم توضیح اضافهای بدهم. واضح است؟!
ما درمورد بخش دیکدر صحبت نکردیم. به نظرم، برای شروع آشنایی با ترنسفورمر به بخش دیکدر نیازی نیست. سعی کنید، همین بخش را به خوبی یاد بگیرید و بعد به سراغ بخش دیکدر بروید. اتفاقا درصد بالایی از بخش دیکدر مشابه با همین انکدر هست.
بسیارخب، به پایان آموزش شبکه ترنسفورمر رسیدیم. آمار و ارقام تولید محتوا میگوید که درصد کمی از افراد یک نوشته را تا آخر میخوانند، یک ویدئو را تا آخر میبیند، یک پادکست را تا آخر گوش میدهند و … خب، مشاهده این آمارها برای یک تولیدکننده محتوا ناراحتکننده هست! شاید گاهی اوقات ترجیح دهد که آمارها را نبیند تا انگیزهاش کم نشود! بههرحال، امیدوارم این آموزش مفید باشد.
مطالب زیر را حتما مطالعه کنید
مدل nanoGPT
شگفتانگیزترین ایده هوش مصنوعی از نظر Andrej Karpathy
شبکه ویژن ترنسفورمر
شبکه اتوانکدر
شبکه عصبی mlp
مدل MobileLLM
34 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام بسیار عالی بود مرسی از توضیحاتتون
سلام
ممنون 🌹🙏
ممنونم. تا آخر خوندم)
عالی 😊⭐
ممنون واقعا زحمت کشیدید هر چند یه کم سریع خوندم متوجه نشدم 🙂
یه کوچولو پیچیده هست. نیاز به چند بار مطالعه و مرور داره.
ممنون خیلی مقاله خوبی بود.
سپاس از شما
ممنون 🌹🙏
موفق باشید
واقعاااااااااااااااااااااااااااا مرسی و خدا قوت. کلی عشق کردم. بیصبرانه منتظر هرگونه محتوای تولید شده از هوسم هستم 🙂
ممنون 😊🙏🌹
سلام، یه خسته نباشید جانانه میگم خدمت شما گروه زحمتکش هوسم.
من واقعاً لذت میبرم از این میزان جامعیت مطالب، سلیقه و زیبایی در انتقال مفاهیم و پارامترهای چشمگیر دیگهای که حین مطالعه یا دیدن مطالب میبینم و تحسین میکنم.
خواستم در پاسخ به آخرین پاراگراف این پست عرض کنم که هم تک تک مفاهیمتون تا آخر خونده میشه 🙂 و هم زحمتی که میکشید به چشم میاد.
امیدوارم روز به روز عالیتر از گذشته و پر از دستاورد جلو برید.
سلام
خیلی خوشحالیم که آموزش شبکه ترنسفورمر مورد توجه و رضایت شما قرار گرفته. این پیام پر از انرژی و حس خوب، باعث دلگرمی و افتخار ماست. از اینکه زمان گذاشتید و این پیام رو نوشتید، بسیار ممنونیم.
با آرزوی بهترینها برای شما و سپاس مجدد بابت حمایتتون 😊🙏🌹
حاجی هوسم عید قربان یه عید به ما بده … یه تخفیف خوشگل بزار دوره یادگیری عمیق رو تهیه کنیم
سلام 🙂
به زودی تخفیف تابستونی خواهیم داشت. احتمالا هفته دوم تیر…
توضیحاتتان همیشه عالی بوده و من همیشه که به دنبال فهم یک مطلب هستم اول سراغ توضیحات خوب شما می روم تا به صورت ساده و کلی مطلب را درک کنم .
باعث خوشحالی هست که مطالب هوسم برای شما مفید هست. ممنون 🙏🌺
سلام
بسیار عالی! خیلی ساده و روان توضیح میدادید. اول تصورم این بود تهران باشید وقتی دیدم در گیلان هستید احساس کردم که واقعا باید به این مرز پر گهر افتخار کرد. خدایا آخه این همه فسفر از کجا میاد؟!!!! دست مریزاد.
سلام مهدی عزیز،
ممنون بابت این پیام پرانرژی و قشنگ 🙏🌹
خیلی عالی بود .من بدنبال یادگیری با جزئیات بودم که علاوه بر این خیلی روان وقابل فهم بود.تمام مقالات سایت رو میخونم و تا اخر هم میخونم. عشق و علاقه شما به تدریس و زمانی که براش میگذارید توی تک تک واژه ها قابل لمس هست.بسیار متشکرم
خوندن پیامتون لذتبخش بود. ممنون 🙏🌹
خیلی روان و ساده مطالب رو میشکونی و به مخاطب انتقال میدی. عالی. دست گلتون درد نکنه.
سلام
خوشحالیم که آموزش رو دوست داشتید. 😊
ممنونیم بابت به اشتراک گذاشتن نظرتون. 🌹🙏
فوق العاده عالیییی ❤️
سپاس 😊🌹
واقعا بررسیهای موشکافانهی دکتر اشرفی همراه با اشتیاق و تسلطی که به مباحث دارن، مفاهیم رو خیلی جذاب میکنه. و حس شوخ طبعی ایشون هم که حرف نداره
سلام عرفان عزیز 🌹
از لطف و محبت شما ممنونیم 🙏😊
ممنون از آموزش بسیار عالی که ارائه کردید.
سپاس 🌹🙏
عاالی بود. فوق العاده بود. خیلی ممنون.
سپاس 😊🌹
سلام. من نزدیک 15 سال هست که تدریس می کنم. تو تدریس یکی از ادعاهایی که دارم اینه که میتونم خیلی خوب و ساده مطلب رو توضیح بدم. اما وقتی سایت شما رو دیدم، کم آوردم و دیدم ماشالله شما خیلی کارت درسته و عالی توضیح میدی.
انشالله همیشه موفق باشی
سلام میثم عزیز،
از خوندن پیام شما خوشحال شدیم و انرژی گرفتیم.
موفق باشید.
سلام
مثل همه پست ها بسیار عالی و قابل فهم و در عین حال فنی توضیح می دهید. برعکس بسیاری از سایت ها که فقط یک کلیات می گویند.
لطفا این پست رو کامل کنید
با تشکر
سلام
ممنون سعید عزیز،
پست کمکم در حال تکمیل هست. چیزی تا تکمیل پست نمونده.