NLP stuff
4.05K subscribers
147 photos
1 video
2 files
277 links
مطالب خوب و به‌دردبخور در حوزه‌ی هوش مصنوعی و پردازش زبان طبیعی!

شکرشکن شوند همه طوطیان هند
زین قند پارسی که به بنگاله می‌رود

اگر انتقاد، پیشنهاد و یا مطلب مفیدی (لینک، پست و ...) داشتید:
@AliAkbarBadri
@mmsamiei
@MmahdiAghajani
加入频道
بلاگی برای یادگیری GNN

شاید شما هم جزء اون دسته افرادی باشید که با افتادن گذر به مباحث مربوط به Graph Neural Network کمیتتون لنگ می‌زنه و به خاطر عدم مطالعه درست و حسابی پایه‌ای نتونستید با این جور مباحث ارتباط برقرار کنید. امروز دو تا لینک بلاگ درست حسابی براتون آوردیم که با خوندن اونها می‌تونید به مقدمات گراف در دیپ لرنینگ وارد بشید و از این به بعد خوندن مقالات این حوزه رو هم جزو گزینه‌هاتون قرار بدید. از خوبی‌ها این بلاگ اینه که از ب بسم الله به طرز روان و همه‌کس‌فهم و با تصویرسازی‌های موثر و فراهم کردن زمین‌بازی‌های تعاملی (playground) سعی کرده این مطالب رو توضیح بده. لینک اول راجع به داده‌های با ذات گراف و مسائلشون و ایده و ساختار GNN صحبت میکنه. لینک دوم هم در رابطه با چند گونه مختلف از GNN‌ها (نظیر GCN و GAT و ...) و پیاده‌سازی ایده کانولوشن روی گراف توضیح میده.

لینک اول:
https://distill.pub/2021/gnn-intro/

لینک دوم:
https://distill.pub/2021/understanding-gnns/

پ.ن: قبلا در زمینه گراف یک کورس خوب هم در این پست [https://yangx.top/nlp_stuff/163] معرفی کرده بودیم.

#coach
#read
#blog

@nlp_stuff
آشنایی با متد gather در pytorch

استفاده از حلقه‌ها نظیر for در کدهای یادگیری عمیق به شدت قبیح و سخیف است، از این نظر که فلسفه یادگیری عمیق را که مبتنی بر موازی‌سازی است تباه می‌سازد و باعث کاهش سرعت در اجرای کد می‌شود. نحوه پاکسازی کد از حلقه در بعضی مواقع با تکنیک‌های indexing یا slicing واضح و روشن است اما در بعضی مواقع دیگر نیز حذف حلقه و استفاده از توابع وکتوری، نیازمند آشنایی با توابع خاص منظوره این موارد است. یکی از موارد سناریویی است که در آن تنسوری به ما داده شده و بایستی در راستای یک محور تنسوری مقادیر خاصی را استخراج کنیم. انجام این عملیات با indexing ممکن نبوده و راه حل فرار از حلقه for در این سناریو در چارچوب پایتورچ، استفاده از متد gather است.
در صورتی که علاقه‌مند به آشنایی با gather و آموختن این تکنیک هستید، می‌توانید از پست جدید ما در ویرگول که در این باره است استفاده کامل را ببرید.

لینک ویرگول:
https://virgool.io/overfit/gather-in-pytorch-lhce2bm1wkb3

#read
#blog
#overfit

@nlp_stuff
داستان برت

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

لطفا کم‌کاری نکنید. نظر بدید و با بقیه به اشتراک بگذارید. :)
اگر پست خوبی داشتید خبر بدید که در انتشارات بگذاریم.


https://virgool.io/overfit/transformers4-bert-c6ah7xv69vjj

#read
#blog
#overfit

@nlp_stuff
داستان ترنسفورمرها (۵): سریع و سبک، گلاب‌گیری از برت با دیستیل‌برت

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

اگر پست خوبی داشتید خبر بدید که در انتشارات بگذاریم.

https://virgool.io/overfit/transformers5-distilbert-smwuod8mlb9p

#read
#blog
#overfit

@nlp_stuff
مدل WebGPT؛ به GPT-3 اینترنت و مرورگر دادند!

چند وقت قبل شرکت OpenAI از مدل WebGPT رونمایی کرد که باعث شگفتی خیلی‌ها شد و خیلی ترکوند.

شرکت OpenAI با یه تیم متشکل از یه نیسان آدم اومده GPT-3 رو فاین‌تیون کرده تا بتونه سوال‌های دامنه‌باز رو با استفاده از یک مرورگر (browser) پاسخ بلند (در حد پاراگراف) بده! یعنی واقعا یه مرورگر تکستی درست کردند و دادند دست مدل GPT-3 که با بینگ (موتور جستجوی مایکروسافت) سرچ کنه و جواب سوال رو «تولید» کنه.

در این پست خلاصه‌ای از نحوه‌ی کار و نتایج این مدل رو بررسی کردیم. اگر به نظرتون خوب بود، لایک کنید و دست به دست کنید.

https://virgool.io/overfit/papers-webgpt-a0xvwzafrj2q

#overfit
#read
#blog

پ.ن. رسیدیم به دو کا. مبارکا. ممنون که به بقیه، اندک کانال خودتون رو معرفی می‌کنید. تشکرات!

@nlp_stuff
داستان ترنسفورمرها (۶): داستان XLNet

در ششمین قسمت از سریال «داستان ترنسفورمرها»، رفتیم سراغ داستان شبکه XLNet که از خانواده مدل‌های autoregressive است. این مدل به نوعی در برابر BERT قد علم کرده و میراث‌دار نبرد تاریخی بین مدل‌های autoregressive و autoencoder است. برای اینکه این نبرد رو بشناسید و با XLNet هم آشنا بشید این پست ویرگول رو از دست ندید.

پ.ن.۱: کم‌کاری نکنید. نظر بدید و با بقیه به اشتراک بذارید.
پ.ن.۲: اگر پست خوبی داشتید خبر بدید که در انتشارات بذاریم.

لینک پست ویرگول:
https://virgool.io/overfit/transformers6-xlnet-ufgmgu9rl8rs

#read
#blog
#overfit

@nlp_stuff
گلچین ۲۰۲۱ رودر

آقای رودر به رسم هر ساله اومده خلاصه‌ای از مقالات ۲۰۲۱ در زمینه ML و NLP رو منتشر کرده. این خلاصه رو در ۱۵ بخش کاملا متنوع که در تصویر می‌بینید تقسیم کرده. نیم ساعت بذارید کلشو مرور می‌کنید و یهو می‌بینید که انگار دوپینگ کردید.


لینک پست:
https://ruder.io/ml-highlights-2021

#read
#blog

@nlp_stuff
دمو کردن ایده مثل آب خوردن

اگر کدی زدید که دوست دارید خیلی خیلی سریع و راحت ازش یه دمو بالا بیارید، از streamlit و Hugging Face Spaces می‌تونید استفاده کنید که هم یک ui خوشگلی داره، هم رایگانه و هم درگیر کانفیگ سرور و فلان هم نیستید. این پست بلاگ در عرض کمتر از ده دقیقه با دو تا مثال واقعی یادتون میده.

لینک بلاگ:
https://itnext.io/convert-your-ai-ideas-into-working-demos-on-hugging-face-spaces-2ba080482a16

لینک Hugging Face Spaces:
https://huggingface.co/spaces

#read
#blog
#tool

@nlp_stuff
تیپیکال سمپلینگ، تکه گم‌شده پازل تولید متن توسط ربات‌ها

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

پ.ن.۱: کم‌کاری نکنید. نظر بدید و با بقیه به اشتراک بذارید.
پ.ن.۲: اگر پست خوبی داشتید خبر بدید که در انتشارات بذاریم.

لینک پست ویرگول:
https://vrgl.ir/DNaDb

لینک مقاله:
https://arxiv.org/abs/2202.00666

#read
#blog
#overfit

@nlp_stuff
آیا از نفهمیدن positional encoding خسته شده‌اید؟ به این پست توجه کنید!

امروزه به هر تسکی از زمینه هایی مثل تصویر، متن، صوت و ... نگاه کنید پرچمدارانش یک تعداد مدل با معماری ترنسفورمر هستند. همون‌طور که می‌دونید مکانیزم positional encoding یکی از بخش‌های مهم معماری ترنسفورمره که روی نحوه ارتباط توکن‌ها در جایگاه‌های مختلف تاثیر گذاره. در واقع از اون‌جایی که ترنسفورمرها ذات بازگشتی و ترتیبی RNNها رو حذف کردند عملا به کل جمله با یک ترتیب یکسان می‌تونند نگاه بکنند که این بده! برای حل این مشکل سعی می‌کنند اطلاعات مکانی هر کلمه رو یه‌جوری در امبدینگ‌ش امبد بکنند! این بلاگ که نوشته یکی از خوبای این حوزه است (امیرحسین کاظم‌نژاد)، اومده و یه توضیح شیک مفهومی درباره این مکانیزم داده که شیرفهمتون می‌کنه. به‌طور خلاصه اگه مثلا اعداد ۱ تا ۸ رو به صورت باینری و پشت سرهم بنویسید متوجه میشید که کم‌ارزش‌ترین بیت داره مدام تغییر می‌کنه درحالیکه دومین کم‌ارزش‌ترین بیت داره هر دوتا عدد یه بار تغییر می‌کنه و پرارزش‌ترین بیت هم هر ۴ عدد یکبار تغییر می‌کنه. خب حالا می‌خوایم اطلاعات مکانی هر کلمه رو با یه بردار dبعدی نشون بدیم که طبیعتا استفاده از مقادیر باینری در دنیای اعشاری به‌نوعی هدر دادن حافظه ست. شهودی که به ذهن می‌رسه اینه که هر چیزی که بتونه شبیه همین اعداد باینری تغییر بکنه مفهوم پوزیشن رو تداعی می‌کنه. ینی دنبال تابعی می‌گردیم که اولا خروجی‌ش اعشاری باشه و دوما مثلا اولین درایه از بردار با فرکانس بیشتری نسبت به آخرین درایه بردار تغییر بکنه. اینجاست که توابع sin و cos معرفی میشه و با بازی با فرکانس ورودی این توابع دقیقا همین خاصیت ایجاد میشه. مثلا در تصویر زیر یک بردار ۱۲۸بعدی positional encoding می‌بینید که حداکثر طول ۵۰ رو مدل می‌کنه. همون‌طور که در تصویر مشخصه درایه‌های اول این بردار از پایین به بالا با نرخ بیشتری نسبت به آخرین درایه‌های این بردار تغییر می‌کنند. برای اینکه به‌طرز نکویی این مکانیزم رو متوجه بشید حتما این بلاگ کوتاه رو بخونید. آخرش هم چند سوال پرتکرار رو آورده که دیگه نعمت رو بر شما تکمیل می‌کنه.

لینک بلاگ:
kazemnejad.com/blog/transformer_architecture_positional_encoding/

#blog

@nlp_stuff