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

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

اگر انتقاد، پیشنهاد و یا مطلب مفیدی (لینک، پست و ...) داشتید:
@AliAkbarBadri
@mmsamiei
@MmahdiAghajani
Download Telegram
لیبل استودیو؛ ابزاری که باید پر شال هر دیتاساینتیست باشد!

طبیعتا گام اول و تقریبا مهم‌ترین گام در هر پروژه مدل‌سازی، جمع‌آوری دیتا و به‌خصوص دیتای لیبل‌خورده است. حتما می‌دونید که این کار چقدر مشقت‌باره و زمان زیادی رو از تیم اشغال می‌کنه. حالا در این پست می‌خوایم یه ابزاری رو معرفی کنیم که خیلی راحت می‌تونید راه‌اندازی‌ش کنید و خیلی راحت استفاده کنید. بله؛ label studio. این ابزار به راحتی با یه دستور pip نصب میشه و روی پورت موردنظر بالا میاد. سپس می‌تونید به‌مقصود پروژه‌های مختلف در حوزه تکست، ویژن، ویدیو، صوت، دیتای ساختاریافته و خیلی چیزای دیگه پروژه بسازید و از تمپلیت‌های آماده اون استفاده کنید. بعد به راحتی دیتاتون رو لیبل بزنید و به فرمت‌های خروجی معتبر خروجی بگیرید. مثلا برای تسک named entity recognition می‌تونید به فرمت معتبر CoNLL خروجی بگیرید. البته این ابزار برای زبان فارسی چون پشتیبانی RTL نداره یه مقدار اذیت‌کننده است که در اون صورت می‌تونید از ریپوی معرفی شده ابزار رو clone کنید و به صورت local نصب کنید.

لینک ابزار:
https://labelstud.io

لینک ریپوی ساپورت RTL:
https://github.com/mmaghajani/label-studio

لینک ریپوی اصلی:
https://github.com/heartexlabs/label-studio

#tool
@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
تشخیص خارج از توزیع با تولید داده پرت ساختگی

تشخیص خارج از توزیع یا out of distribution یکی از مسائل مورد توجه و مهم در شبکه های عصبیه. سناریویی رو در نظر بگیرید که شما مدل تشخیص اشیاتون رو برای یک ماشین خودران روی کلاس های مختلف آموزشش داد و حالا در وقت اجرا ناگهان با گوزنی مواجه میشید که در کلاس های آموزشیتون نداشتید. در اینجا مدل چون بالاخره بایستی جوابی تولید کنه در نهایت لیبلی اشتباه به این گوزن میزنه و ممکنه باعث مشکلات بعدی بشه. راهکارهای زیادی برای ood اعلام شده که البته هر کدام مشکلات خاص خودشون رو دارند. حالا پیپری اومده و روشی به نام vos ارائه کرده که جالبه.

اولین ایده ای که برای ood میتونه به ذهن بیاد اینه که یکسری داده ورودی (تصویر) خارج از توزیع بسازیم و با اونها مدل رو آموزش بدیم تا ood انجام بده. اما از اونجایی که خود تولید نمونه ورودی مساله سخت و پیچیده تریه پیپر vos پیشنهاد کرده تا دادگان پرت رو در سطح لایه قبل از لایه دسته بند بسازیم. منظور از این لایه در واقع آخرین لایه در شبکه است که مدل، لایه نهایی دسته بند رو بر روی ویژگی و بازنمایی های استخراج شده از این لایه قرار میده (اسم این لایه رو بازنمایی نهایی در نظر بگیرید). اما چطور داده پرت (outlier) بسازیم؟ کاری که vos میکنه اینه که میاد یک توزیع مخلوط گاوسی روی بازنمایی‌های نهایی کلاس های مختلف تخمین میزنه و سپس برای ساخت داده پرت میاد و به نحوی از این توزیع ها سمپل می‌گیره که احتمال این سمپل به شرط توزیع‌ها خیلی خیلی کم باشه. حالا تعدادی بازنمایی نهایی پرت داریم. در مرحله بعد، این بازنمایی‌های نهایی پرت به همراه بازنمایی های غیرپرت به لایه آخر دسته بند داده میشن و برای همشون logit یا امتیاز روی کلاس های مختلف به دست میاد. حالا vos میاد و یک تابع هزینه ای پیشنهاد میده که طبق این تابع هزینه، logit های داده های غیرپرت تشویق به قطعیت و logit های داده های پرت هم تشویق به عدم قطعیت می‌شوند. حالا مدل در طی آموزش علاوه بر این که روی لاس اصلی مساله خودش آموزش میبینه روی این لاس هم آموزش میبینه. در هنگام تست هم در صورتی که logit های یک نمونه از یک حدی عدم قطعیتشون بیشتر باشه اون نمونه به عنوان داده پرت فرض میشه. این مدل روی وظیفه تشخیص شی ارائه شده اما در واقع یک فریمورک است و میتونه روی وظایف دیگه انجام بشه.

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

لینک ویدئو کیلچر در توضیح این مقاله:
youtu.be/i-J4T3uLC9M

#paper
#read
#watch

@nlp_stuff
معرفی کانال ارزشی MLST

اول از همه انشاءالله که سال و قرن خوبی داشته باشید.
به عنوان اولین پست قرن نو می‌خوایم یک کانال یوتیوبی فاخر و ارزشی در زمینه یادگیری ماشین رو معرفی کنیم. اسم این کانال Machine Learning Street Talk است. محتوای این کانال شامل مصاحبه‌های هر از چند گاهی با متفکران پیشرو هوش مصنوعی (نظیر بنجیو و لکان و شوله و مارکوس و ...) و بحث با اونها در مورد آینده هوش مصنوعی و شهودشون در مورد راه آینده در زمینه های مختلف است. ذکر این نکته لازمه که محتوای این مصاحبه‌ها و بحث‌ها خیلی خیلی فنیه و به جای این که به بحث در مورد مقالات مختلف در کاربردهای مختلف بپردازند (مثل کاری که کیلچر میکنه). موضوع، مباحثه کردن روی درک از فیل هوش مصنوعی در اتاق تاریک عصر فعلیه. اگر یک نگاه به ویدئوهای این کانال بیاندازید می‌بینید که طیف زیادی از موضوعات از زبانشناسی و مباحث تکنیکی خود یادگیری ماشین مثل یادگیری نیمه نظارتی و حملات خصمانه گرفته تا علوم اعصاب و علوم شناختی در این کانال با طراحی بسیار زیبا و شیوا مورد بحث و بیان قرار گرفته.

لینک کانال یوتیوب:
youtube.com/MachineLearningStreetTalk

#watch
#link

@nlp_stuff
دادن اطلاعات از شما، نوشتن متن با You

Hello,

If you're an artificial intelligence enthusiast, then you should definitely reshare posts from the nlp_stuff channel. nlp_stuff is a Telegram channel that's dedicated to AI news and advances. The subscribers of this channel can stay up to date with the latest in AI technology. However, some other channels do not comply with copyright law and copy posts from nlp_stuff into their own channels. This is unfair to the creators of nlp_stuff, and it also diminishes the quality of information that's available to AI enthusiasts. By resharing posts from the nLP_Stuff channel, you can help keep this information accessible and high-quality. Thanks for your support!

متنی که بالا دیدید رو هوش مصنوعی YOU نوشته (ما صرفا بهش توضیح بولتوار اندکی دادیم و این رو جنریت کرده). در سال‌های اخیر محصولاتی نظیر grammarly و wordtune با استفاده از هوش مصنوعی و پردازش زبان تونسته اند محصولاتی رو جهت کمک به کاربران در زمینه اصلاح و ویرایش متون انگلیسی ارائه کنند. حالا در آخرین مورد، شرکت YOU (که در اصل یک موتور جستجوگر هست که برخی میگویند در سال های آینده امکان داره شانه به شانه گوگل بزنه) اومده و یک سرویس برای رایتینگ در زبان انگلیسی ارایه داده. شما می‌تونید یک توضیح مختصر راجع به چیزی که میخواید بنویسید و بعد انتخاب کنید که چه نوع خروجی میخواید. آیا می‌خواهید یک متن میل مناسب خروجی بگیرید یا یک متن بلاگ طور یا یک انشا. سپس You یک متن برای این مشخصات تعیین‌شده توسط شما جنریت می‌کنه.
ما اندکی با این دمو ور رفتیم و مثال‌هایی رو پیوست کردیم. فهمیدیم که این سرویس می‌تونه حتی با ورودی گرفتن یک عبارت کوتاه، متنی مستند و منطقی تولید کنید (به مثالی که راجع به تولید دانش بنیان در ایران تولید کرده دقت کنید).
محصولاتی مثل Grammarly و Wordtune و You Write نشون میدن که میشه با پردازش زبان هم محصول واقعی تولید کرد.

لینک برای امتحان کردن:
You.com/write

#link
#tool

@nlp_stuff
ریزش برگ درختان با رونمایی از DALL-E 2

ساعاتی پیش شرکت Open AI از نسخه جدید مدل تولید تصویر DALL-E رونمایی کرد. این مدل نسبت به نسخه اول DALL-E که در ژانویه ۲۰۲۱ رونمایی شد (این جا قبلا پستش رو رفتیم: https://t.iss.one/nlp_stuff/114) بسیار واقعی‌تر، دقیق‌تره و البته رزولوشن تصاویر تولیدی‌اش هم نسبت به مدل قبلی چهار برابر شده. به طور خلاصه متدلوژی این مدل از دو قسمت تشکیل شده. قسمت اول از مدل clip برای تولید امبدینگ از روی caption استفاده میکنه و بعد قسمت دیکودر میاد و یک تصویر رو مشروط بر امبدینگ مرحله قبل تولید میکنه. طبق معمول هم یانیک کیلچر در همان اوقات اولیه دست یک ویدئو در توضیح این مدل ضبط کرده که لینکش رو این زیر گذاشتیم. حقیقتا کیفیت تصاویر تولیدی این مدل عجیبه.

لینک دمو برای وررفتن:
https://openai.com/dall-e-2/
لینک مقاله:
https://cdn.openai.com/papers/dall-e-2.pdf
لینک بررسی کیلچر:
https://www.youtube.com/watch?v=gGPv_SYVDC8

پ.ن.:در ضمن میتونید اطلاعاتتون رو در لیست انتظار وارد کنید و اگر خدا بخواد و شانس‌تون خوب باشه به این مدل دسترسی پیدا کنید:
https://labs.openai.com/waitlist

#paper
#link
#read
#watch

@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
بررسی اهمیت فیچرها

احتمالا تا حالا پیش اومده که می‌خواستید اهمیت فیچر‌ها رو در یک تسک بسنجید. در چنین شرایطی استفاده از معیار feature_importance در دسته‌بندهای درختی مثل random forest شاید اولین گزینه‌ای باشه که به ذهن آدم میرسه. در این دسته‌بندها با توجه به اینکه در هر گره فیچری برای جداسازی داده انتخاب میشه که بیشترین کاهش رو در معیار impurity داشته باشه، مهم‌ترین فیچرها اون‌هایی هستند که به ریشه درخت نزدیک‌تر هستند. به عبارت دیگه فیچرهایی بیشترین importance رو به‌دست میارند که به‌صورت وزندار بیشترین کاهش رو در معیار impurity بر روی داده داشته باشند. اما لزوما اولین گزینه بهترین گزینه نیست. در واقع اگه شما در دیتاست‌تون فیچرهای categorical زیادی داشته باشید احتمالا این معیار، شما رو به اشتباه میندازه. در واقع دسته‌بندهای درختی به فیچرهای numerical که مقادیر unique value زیادی دارند حساس‌تر هستند. به خاطر همین ممکنه در ایجاد درخت تصمیم به فیچرهای categorical اهمیت کمتری بدند. این موضوع به‌خاطر اینه که این دسته‌بندها برای ایجاد درخت تصمیم از معیاری به نام impurity استفاده می‌کنند. مقدار feature importance که براساس معیار impurity در درخت‌های تصمیم حساب میشه می‌تونه ما رو به اشتباه بندازه. حالا چاره کار، استفاده از روش دیگه‌ای به نام permutation_importance است. در این روش در هر iteration یک فیچر انتخاب میشه و مقادیر اون به صورت رندم shuffle میشه ( در هر نمونه ورودی مقادیر همه فیچر‌ها ثابت می‌مونه و فقط یک فیچر بین نمونه‌های مختلف ورودی شافل میشه) و بعد، دیتاست شافل‌شده به مدل داده میشه تا ببینیم چه مقدار افت کیفیت پیدا می‌کنه. طبیعتا اون فیچری که بعد از شافل شدن افت عملکرد بیشتری رو به مدل تحمیل می‌کنه از اهمیت بالاتری برخورداره. همون‌طور که می‌بینید این روش model agnostic هست و بر روی هر مدل از‌قبل‌ترین‌شده‌ای کار می‌کنه. از طرفی می‌تونید این معیار رو هم بر روی مجموعه تست و هم مجموعه ترین محاسبه کنید در حالیکه impurity-based feature importanceها عملا بر روی داده ترین فقط محاسبه شده‌اند. مقایسه اهمیت برخی فیچرها در دیتای تست و ترین و تفاوت اون‌ها می‌تونه سرنخی از وقوع اورفیت باشه. در واقع فیچری که در دیتای ترین اهمیت بالایی داره ولی موقع تست و inference اهمیت پایینی داره می‌تونه باعث اورفیت بشه. پیاده‌سازی و نحوه استفاده از این روش رو در پکیج scikit می‌تونید مشاهده کنید.

لینک توضیح permutation_importance:
https://scikit-learn.org/stable/modules/permutation_importance.html#permutation-importance

پ.ن. از این به بعد یه هشتگ جدید راه انداختیم که توش می‌خوایم نکات نغز و دلکش تکنیکال رو بگیم. کانال رو به بقیه هم معرفی کنید.

#handsOn

@nlp_stuff
کشف خطاهای سیستماتیک مدل با Domino

با این که مدل‌های یادگیری ماشینی و به خصوص شبکه‌های عمیق بر روی خیلی از تسک‌ها و دیتاست‌ها امتیازهای بالایی را ثبت می‌کنند اما ممکن است هر مدلی بر روی قاچ‌‌های خاصی از داده دچار خطای سیستماتیک باشد. مثلا فرض کنید یک تسک دسته‌بندی تصویر داشته باشیم و مدل آموزش دیده یاد گرفته باشد که هر تصویری که در آن حیوانی را با پس زمینه زمین شنی دید آن را به عنوان شتر برچسب بزند. در این صورت ممکن است در هنگام تست با تصویر گاو بر روی شن مواجه شود و آن را به اشتباه شتر برچسب بزند. این مجموعه داده‌هایی که دارای یک خاصیت ویژه هستند و توسط مدل به اشتباه دسته‌بندی می‌شوند قاچ بحرانی (critical slice) گفته می‌شود. اهمیت پیدا کردن این قاچ‌های بحرانی و اصلاح تصمیم مدل برای آن‌ها برای عملی کردن مدل‌های ماشین لرنینگی بسیار مهم است اما معمولا به علت سختی کار نادیده گرفته می‌شود (برای مثال این کاربرد حیاتی را در نظر بگیرید یک مدل آموزش ‌داده‌اید که از روی تصاویر پزشکی تشخیص میدهد که آیا بیمار سرطان دارد یا خیر). حال دوستانی از استنفورد سعی کرده‌اند یک روش اتوماتیک برای کشف قاچ‌های بحرانی هر مدل با نام Domino ارائه دهند. صورت مساله Domino این است که در واقع با ورودی گرفتن یک مدل و یک دیتاست بایستی تعدادی قاچ‌ پیدا شوند که اولا دیتاهای این قاچ با همدیگر مرتبط باشند؛ یعنی مثلا همگی گاو‌های روی شن باشند و دوما این که عملکرد مدل بر روی دادگان این قاچ‌ها افتضاح باشد.

روش کار domino شامل سه بخش است. به صورت خلاصه domino ابتدا دادگان دیتاست ورودی را با استفاده از مدل‌های cross-modal به یک فضای امبدینگی مشترک با متن می‌برد. (برای مثال اگر دیتاست از جنس تصویر باشد میتوان از مدل قدرتمند clip استفاده کرد) سپس تعدادی از متن‌های کاندیدا برای توضیح این قاچ‌ها نیز توسط همین مدل cross-modal به فضای مشترک نگاشت می‌شوند. سپس در گام دوم، Domino با استفاده از یک مدلسازی mixture سعی در خوشه‌بندی داده‌های به اشتباه برچسب‌گذاری‌شده می‌کند. این مدلسازی برای هر قاچ شامل چهار متغیر S و Z و Y و Y_hat است به ترتیب احتمال تعلق داده به قاچ S، امبدینگ داده، برچسب واقعی داده، توزیع برچسب حدس زده شده توسط مدل). در این مدلسازی فرض شده است که Z و Y و Y_hat به شرط S از یکدیگر مستقل هستند و در واقع از روی S تولید می‌شوند ( برای توضیحات بیشتر می‌توانید قسمت ۵ مقاله را بخوانید). این مدل روی likelihood داده‌های اشتباه برچسب‌گذاری شده به صورت mixture آموزش داده می‌شود. سپس در گام سوم، Domino برای هر slice با توجه به کاندیدای متنی مرحله اول، یک توضیح متنی آماده می‌کند (مثلا "گاو‌های بیابانی")

در ادامه هم اومدند و برای مثال Domino را، روی Resnet آموزش دیده بر روی ImageNet، تست کردند و نشون دادند که Resnet رو قاچ‌های تصاویر داخل ماشین و تصاویر از دور ماشین‌های مسابقه‌ای، مشکل سیستماتیک داره. بعد از این که با این مدل، قاچ‌های بحرانی کشف شدند حالا میشه با تمرکز روی اون قاچ‌ها و مثلا استفاده از افزون‌ساده داده مشکل رو تخفیف داد. کدهای Domino هم منتشر شده و لینک رپوش در صفحه بلاگ حاضره و می‌تونید ازش استفاده کنید. ضمنا این مقاله در ICLR2022 قبول شده.

لینک بلاگ Domino:
https://ai.stanford.edu/blog/domino/
لینک مقاله:
https://arxiv.org/abs/2203.14960

پ.ن. از آقای دکتر شریفی زارچی تشکر می‌کنیم که این مقاله رو در رشته توئیتی برای مقالات خوب کنفرانس ICLR2022 معرفی کردند.

#paper
#read

@nlp_stuff
از DALL-E2 تا AGI؛ خیلی دور خیلی نزدیک

بعد از رونمایی از DALL-E2 توسط OpenAI؛ امکان استفاده از این مدل، در اختیار معدودی از افراد قرار داده شد و این دوستان هم با تست کردن و اشتراک‌گذاری خروجی‌های DALL-E هی بر حیرت همگان افزودند. کیفیت تصاویر تولیدی DALL-E و همچنین تنوع بالای کپشن‌هایی که این مدل می‌تواند از آن‌ها عکس تولید کند آن قدر بالاست که حتی برخی پیش‌بینی کرده‌اند که این مدل در کاربرد صنعتی می‌تواند جایگزین سایت‌های فراهم‌کننده تصویر نظیر Getty Image شود. در این فضای هایپ آلود، عده‌ای با توجه به مثال‌های تولیدی این مدل معتقدند که راه AGI یا همان Artificial General Intelligence از همین مسیر تهیه و تدوین مدل‌هایی نظیر GPT و DALL-E می‌گذرد و یادگیری عمیق برای رسیدن ما به سرمنزل موعود هوش مصنوعی کافی است. در مقابل اما عده‌ای از منتقدین و باریک‌بینان با نشان دادن مثال‌های خاصی از خروجی‌ها DALL-E نشان داده‌اند که نه خیر هنوز با اندک‌ استاندارد‌های AGI فاصله بسیاری داریم.
در همین راستا آقای بنجامین هیلتون در رشته توییتی در مورد محدودیت‌های DALL-E بحث کرده و آن‌ها را با مثال توضیح داده است:
https://twitter.com/benjamin_hilton/status/1520032772072607747

از جالب‌ترین این موارد می‌توان به عدم توانایی DALL-E در شمارش (مثلا "تصویری از پنج سیب") و سلبی‌سازی (مثلا "تصویری قاره‌ها بدون حضور اروپا") اشاره کرد. (عکس‌های رشته توییت رو ببینید)
گری مارکوس هم که از اول آبش با یادگیری عمیق در یک جوب نمی‌رفته، با تست کردن و تحلیل خروجی‌های DALL-E پیپری منتشر کرده که خواندنش خالی از لطف نیست:
https://arxiv.org/abs/2204.13807

اما اگر پس از خواندن دو مطلب به این نتیجه رسیدید که DALL-E هم بیشتر از آن چه که باید هایپ شده است می‌توانید برای تلطیف فضا کلیپ پیوست‌شده از تصاویر تولیدی‌اش در این پست را ببینید.

حقیقتا هم تصاویر تولیدی DALL-E و هم نقد‌های وارد منتقدان به حدی است که نمی‌توان جانب یک طرف را گرفت.

#tweet

@nlp_stuff
دیتاست MASSIVE آمازون

خلاصه‌ی کلام اینه که تیم الکسای شرکت آمازون یک دیتاست عظیم یک میلیونی چندزبانه برای درک زبانی (بخش intent prediction and slot annotation) بیرون داده که فارسی هم توش هست. این دیتاست مخصوص دو زیرتسک مهم چت‌بات‌های وظیفه‌محور که intent prediction و slot annotation باشند ارائه شده. توضیح مختصر این که وقتی میخواید یک چت‌بات وظیفه محور بزنید یک تسک اینه که اول تشخیص بدید که مقصود کاربر از یک پیام که میده چیه (مثلا میخواد بلیت قطار رزرو کنه، آهنگ خاصی براش پخش بشه، هتل‌ای رزرو کنه و ...) و در گام بعد حالا که مقصود کاربر رو فهمیدیم بیایم آرگومان‌ها یا به اصطلاح slot‌های اون مقصود خاص رو در متن پیام تشخیص بدیم (مثلا اگر مقصود کاربر رزرو بلیت قطار باشه آرگومان‌هاش میشه مبدا و مقصد و تاریخ و ساعت)
این دیتاست به ۵۱ زبان (از جمله فارسی) اومده به صورت موازی یک سری عبارات رو لبیل زده. هر سطرش یک جمله‌ست که مثلا گفته:
What is the temperature in New York?
بعد این رو باید در دسته‌ی weather_query (یعنی intentاش میشه سوال آب‌وهوایی) قرار بگیره و موجودیت‌های مرتبط (این slot است که آرگومان‌های مرتبط با همون intent میشه) باهاش باید باشه:
weather_descriptor: temperature, place_name: new york
حالا متناظر با این در دیتای فارسی مثلا داریم:
دمای نیویورک چنده و موجودیت‌های مرتبط مشخص شدند دما و نیویورک.
واسه هر زبون هم حدودا ۱۷ هزارتاست.
همون جملات رو واسه زبون‌های مختلف گذاشتند که از مدل‌های چندزبانه واسه یادگیری بشه استفاده کرد یعنی از representation جملات فارغ از زبان استفاده بشه. مثال خوبی از این مدل‌ها LASER فیسبوکه.
بعد حالا دیتاست به این عظمت رو منتشر کردند و گفتند بیاید روش مدل ترین کنید و مسابقه برگزار کردند! این دیتاست با این هدف تولید شده که دستیار صوتی آمازون (الکسا) بتونه زبان‌های بیشتری رو بفهمه و کلا همونطور که گفتیم ازش برای چت‌بات‌های وظیفه‌محور میشه استفاد کرد.

بلاگ توضیح دیتاست:
https://www.amazon.science/blog/amazon-releases-51-language-dataset-for-language-understanding

ریپو دیتاست در گیت:
https://github.com/alexa/massive

#dataset

@nlp_stuff
کورس RL هاگینگ فیس

برادران هاگینگ فیس به تازگی طی اقدامی خداجویانه یک کورس برای deep reinforcement learning به راه انداخته اند. این کورس با این که نگاهش بیشتر عملیاتی هست ولی توش قراره به تئوریجات Deep RL هم پرداخته بشه. نکته خوب دیگه اش هم اینه که شما در طی این کورس انشالله قراره با کتابخانه‌های جدی RL مثل Stable-Baselines3 آشنا بشید و یادشون بگیرید. این کورس به تازگی شروع شده و محتواش آروم آروم داره منتشر میشه. اگر علاقه‌مند به RL هستید به نظر می‌رسه که می‌تونه مسیر خوبی رو برای یادگیریش براتون رسم کنه.

پ.ن.: یک کار جالب دیگه ای هم که هاگینگ فیس کرده اینه که امکانی فراهم کرده تا بتونید ایجنت‌های آموزش داده‌ رو بشه بر روی هاب هاگینگ فیس با بقیه به اشتراک بگذارید.

لینک کورس:
https://github.com/huggingface/deep-rl-class

#course
#coach

@nlp_stuff
پیوستن timm به HF

با کتابخونه هاگینگ‌فیس (که فلسفه اش ابتدا اشتراک گذاشتن مدل‌های آموزش دیده و معماری‌های مدل‌های متنی و سپس به صورت کلی‌تر مدل‌های ترنسفورمری در حوزه‌های مختلف متن و صوت و تصویر بوده)، که آشنا هستید. در کنار هاگینگ فیس کتابخونه پرطرفداری به اسم timm وجود داره (https://github.com/rwightman/pytorch-image-models) که وظیفه‌اش انجام همین وظیفه هاگینگ فیس منتهی در حوزه تصویر نظیر resnet و اینها بوده. حالا هاگینگ‌فیس و timm در خبری اعلام کردند که به توافق رسیده‌اند که timm هم به عنوان پرطرفدارترین کتابخونه حوزه cv ml به مجموعه هاگینگ‌فیس بپیونده. این اتفاق بسیار مبارکی می‌تونه باشه چرا که امکان دسترسی به انواع مدل‌های اوپن سورس رو در حوزه‌ تصویر تسهیل می‌کنه.

#news
آموزش بازی Minecraft با پیش آموزش ویدیویی

شرکت خرپول OpenAI در آخرین دستاورد خودش از مدلی که میتونه ماینکرافت بازی کنه رونمایی کرده. فرض کنید میخوایم به یک مدل یاد بدیم چطور ماینکرفت بازی کنه. اولین راهی که به ذهن میرسه اینه که یک سیمولاتور ماینکرفت درست کنیم و مدل رو به صورت RL طور روی این محیط بازی آموزش بدیم. مشکلی که اینجا به وجود میاد یکی سایز فضای حالت بالای بازی و نیاز بالای مدل به اکتشاف ( exploration ) و دیگری هم سختی تعریف تابع پاداش (ریوارد) در این فضا است. راه دوم اینه که بیایم یک تعداد عامل انسانی بذاریم و از بازی کردن اونها و اکشن‌هایی که انتخاب می‌کنند یک دیتاست درست کنیم و مدل رو به اصطلاح به صورت آفلاین آموزش بدیم. مشکل این راه اینه که برای این که یک مدل کارا داشته باشیم نیازه تا عامل‌های انسانی‌مون خیلی خیلی خیلی دیتا جمع آوری کنند که حتی برای openAI هم قفله. با این اوصاف به نظرتون OpenAI چه راهی در پیش گرفته؟
از اونجایی که OpenAI خیلی به داده‌های وسیع حاضر در اینترنت علاقه‌منده (این رو در طرز آموزش GPT و Clip و DallE هم قبلا دیده بودیم) اومده اولا "هفتاد هزار ساعت" فیلم ویدئو ماینکرافت بازی کردن ملت رو از اینترنت دانلود کرده. خب این دیتای ارزشمندیه ولی مشکل اینه که فقط فیلمه و معلوم نیست که گیمر در هر لحظه چه اکشنی رو انتخاب کرده که. پس OpenAI اومده و با استفاده از عامل‌های انسانی که داره حدود دوهزار ساعت ویدئو بازی کردنشون رو به صورت لیبل دار جمع آوری کرده (یعنی اون عامل انسانی ماینکرافت بازی کرده و مشاهداتی که داشته و اکشن هایی که در لحظه انجام داده به صورت دنباله ذخیره شده) حالا اومدن و یک مدل دیگه ای به نام IDM با استفاده از همین دیتا‌ها آموزش دادن که وظیفه اش اینه که با مشاهده یک دنباله از فریم‌های ویدئو تشخیص بده که گیمر در اون لحظه چه اکشنی رو انتخاب کرده (نکته خوب ماجرا اینه که این مدل Non-Autoregressive هست یعنی برای تشخیص اکشن انجام شده در یک فریم میتونه هم به فریم‌های قبلی و هم به فریم‌های بعدی نگاه و توجه کنه). حالا احتمالا اگر نخ ماجرا دستتون اومده باشه میتونید حدس بزنید که در گام بعدی اومدن به کمک همین مدل IDM به دست اومده اون داده‌های ویدئو بی لیبل هفتا هزار ساعتی رو لیبل زده اند. حالا در واقع یک دیتاست لیبل خورده هفتادهزار ساعتی حاضر و آماده است و میشه مدل اصلی و نهایی رو روی این دیتاست بزرگ آموزش داد. OpenAIای‌ها اسم این تکنیک رو گذاشتند Video PreTraining یا به اختصار VPT.

بعد از به دست اومدن این دیتاست هفتادهزار ساعته لیبلدار، حالا یک مدل رو به صورت Autoregressive رو دنباله فریم‌ها و اکشن‌ها به صورت imitation learningای (این تکنیک به این معناست که عوض این که مدل رو در پارادایم RL در یک محیط قرار بدیم و با دادن ریوارد بهش آموزشش بدیم بیایم اون تسک رو توسط عامل انسانی انجام بدیم و مدل رو روی داده‌ها و حرکات اون عامل انسانی آموزش بدیم به این امید که بتونه سیاست اون عامل انسانی رو تقلید کنه) آموزش دادند. روی نحوه بازی‌کردن این مدل هم یک‌سری مشاهدات و آزمایشات انجام دادند که حیرت آوره. مثلا مدل تونسته تسک‌هایی رو که گیمر‌های حرفه‌ای ماینکرفت ظرف ۲۰ دقیقه (۲۴ هزار اکشن) انجام میدند رو به خوبی یاد بگیره!!! یا مثلا همین مدل به دست اومده رو به عنوان یک نقطه شروع قرار دادند و با RL دوباره روی یک سری تسک‌های خاص فاین تیونش دادند و نتیجه‌های خوبی به دست گرفتند. فیلم بازی‌های این مدل خفن در لینک توسط OpenAI قرار داده شده. همچینن OpenAI ناپرهیزی کرده و این مدل رو بر خلاف مدل‌های دیگه اش اوپن سورس صلواتی منتشر کرده! با موفقیت این مدل انتظار می‌ره که OpenAI با توجه به روحیه‌ای که داره در گام‌های بعدی این متد رو به مسائل مشابه دیگر اعمال کند. این داستان ادامه دارد؟

لینک بلاگ OpenAI برای این مدل:
https://openai.com/blog/vpt/
لینک کد و وزن‌های این مدل:
https://github.com/openai/Video-Pre-Training
لینک مقاله:
https://cdn.openai.com/vpt/Paper.pdf

#read
#paper

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

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

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

#blog

@nlp_stuff
گام اول آمار؛ کورس دکتر شریفی زارچی

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

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

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

لینک کورس:
https://maktabkhooneh.org/course/آمار-احتمال-مهندسی-mk627/

لینک گیت‌هاب کورس:
https://github.com/asharifiz/Probability_Statistics

#coach
#course

@nlp_stuff
داستان آلفاگو

بازی گو یک بازی تخته ای دو نفره است که در شرق آسیا از قدیم الایام خیلی طرفدار داشته و قوانینش از شطرنج هم ساده‌ترند. اما علی رغم این سادگی قوانین، استراتژی‌های خیلی پیچیده‌ای رو می‌طلبه. به همین علت با این که کامپیوتر‌ها تونستند سال ۱۹۹۶ برای اولین بار قهرمان انسان‌ها رو در شطرنج شکست بدن ولی برای تکرار این موفقیت در گو، قریب به دو دهه انتظار کشیدند تا بالاخره دیپ مایند با مدل آلفاگو تونست این کار رو به سرانجام برسونه.
در این پست در ویرگول سعی‌ کردیم معماری و نحوه آموزش مدل آلفاگو رو به توضیح بدیم. آلفاگو در سال ۲۰۱۵ برای خودش انقلابی در زمینه هوش مصنوعی محسوب می‌شده و باعث شد که موجی از توجهات به RL و یادگیری تقویتی جلب بشه. انشالله اگر عمری باقی باشه به باقی مقالات و مدل‌های مهم جریان‌ساز هوش مصنوعی نیز می‌پردازیم.

لینک پست:
https://virgool.io/overfit/alphago-mhoamralnzeq

#overfit
#read
#paper
#blog

@nlp_stuff
آن چه له‌کان در خشت خام می‌بیند

همانطور که می‌دونید هینتون، له‌کان و بنجیو سه خدای دیپ لرنینگ هستند. اگر قبلا یادتون باشه قبلا در این پست (t.iss.one/nlp_stuff/137) و این پست (t.iss.one/nlp_stuff/127) ایده‌ها و چشم‌اندازهای هینتون و بنجیو از مسیر آینده هوش مصنوعی به سمت AGI رو توضیح دادیم. حالا آقای له‌کان اومدند و مقاله ۵۰ صفحه‌ای رو منتشر کردند و در اون راجع به ایده‌های خودشون صحبت کردند. له‌کان در این مقاله ابتدا یک معماری شناختی کلی که از یک هوش خودکار در نظر داره رو نشون داده. این معماری کلی شامل قسمت‌هایی مثل Perception و Actor و Cost و World Model هستند که هر کدوم وظیفه مجزایی دارند. گام بعدی طراحی یک معماری برای هر شبکه‌های عصبی هر کدام از این قسمت‌هاست که له‌کان در اینجا معماری JEPA رو که می‌تونه به صورت سلسله مراتبی بازنمایی‌هایی رو از دنیا یاد بگیره رو طراحی و پیشنهاد کردند. در کنار این مسائل هم یک دور اومدند مسائلی مثل انواع یادگیری خودنظارتی و چرایی نیاز به تابع انرژی و همچنین ضعف‌های احتمالی انواع روش‌های خودنظارتی رو یک مرور خوب کردند و یک پارادایم یادگیری خودنظارتی non-contrastive رو برای آموزش دادن شبکه JEPA پیشنهاد دادند. مقاله رو هم در openreview گذاشتند که هر کی که خواست بیاد روش نقد کنه و نقدها هم دیده بشوند.
هم له‌کان و هم کیلچر (کیلخر) در مورد توضیح این ایده‌ها ویدئو‌هایی رو گذاشتند که در اگر حوصله و وقت خوندن مقاله رو نداشتید می‌تونید اونا رو مشاهده کنید.

لینک مقاله:
https://openreview.net/forum?id=BZ5a1r-kVsf
لینک ویدئو له‌کان:
https://www.youtube.com/watch?v=DokLw1tILlw
لینک ویدئو کیلچر:
https://www.youtube.com/watch?v=jSdHmImyUjk

#paper
#read

@nlp_stuff