ML & AI resources
168 subscribers
165 photos
13 videos
7 files
505 links
Explore AI & Deep Learning with us. Join our Telegram channel for the latest insights and tutorials, managed by CE students from Amirkabir University of Technology.

🆔 @ML_AI_resourses
Download Telegram
Forwarded from NLP stuff
آموزش بازی 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
🤯4
Forwarded from NLP stuff
تیر آخر برای فهمیدن ترنسفورمرها!

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

لینک بلاگ:
https://e2eml.school/transformers.html

لینک پیاده‌سازی:
https://nlp.seas.harvard.edu/annotated-transformer/#a-first-example

لینک ریپو:
https://github.com/dair-ai/Transformers-Recipe

#read
#blog

@nlp_stuff
Forwarded from NLP stuff
عمرتان زیادی کرده که دکترا بخوانید؟

این
هفته آقای لکان (یکی از سه‌ خدای دیپ‌لرنینگ) توییتی زده و به مورد Aditya Ramesh اشاره کرد. فردی که لیسانسش رو از دانشگاه NYU گرفته و قصد داشت تا وارد دوره دکتری شود اما با یک کارآموزی در OpenAI مسیرش تغییر کرده و در آن جا مانده و در نهایت با مدرک لیسانس تبدیل به نویسنده اصلی مقاله مدل معروف Dall-E می‌شود.

آقای بهنام نیشابور محقق گوگل هم توییت لکان را کوت کرده و نکات ریزتری برای تایید "نباید برای یادگیری ماشین دکترا خواند" به آن اضافه کرده است. نکته اصلی که تحصیلات تکمیلی برای زمینه‌ای مثل ML آورریتد است. چرا؟ چون که یک نفر بدون هیچ گونه پیش زمینه خاصی می‌تواند به این فیلد وارد شده و با اندکی وقت گذاشتن، حتی می‌تواند به راحتی در کنفرانس‌های مطرح دنیا مقاله‌ای چاپ کند. منابع آموزشی ML روز به روز گسترده‌تر و در دسترس‌تر می‌شوند و واقعا لازم نیست کسی برای وارد شدن به وادی پژوهشگری یادگیری ماشین بیاید و ۵ الی ۶ سال از عمرش را در ارشد یا دکتری هدر دهد. (و خودمانیم، رشته‌‌هایی مثل فیزیک را با ML مقایسه کنید. طرف در فیزیک تا بخواهد به جایی برسید باید مو سفید کند اما امروزه از صفر تا صد ماشین لرنینگ را با این تئوری‌های آبکی که دارد می‌توان در کمتر از دو سال طی نمود)

نکته‌ دیگری که آقای نیشابور اشاره کرده است این است که تعداد موقعیت‌های دکترای یادگیری ماشین روز به روز بیشتر می‌‌شود اما از آن طرف تعداد شغل‌هایی که به مدرک دکتری یادگیری ماشین نیاز دارد در آینده روز به روز کمتر می‌شود. در واقع با داشتن دکتری شما over-qualified می‌شوید و از طرف دیگر هم مگر آکادمی چه قدر موقعیت شغلی می‌تواند داشته باشد؟ در مقابل، صنعت اما بیش از ML Researcher به ML Engineer‌ها نیازمند است. کسی که بتواند چیزی را واقعا بسازد. دوره دکتری باعث دوری نسبی از شما صنعت و مهارت‌های آن خواهد شد. آقای نیشابور در انتها به نتایج تحقیقی اشاره کرده که در آن گفته شده درصد زیادی از دانشجویان تحصیلات تکمیلی دچار افسردگی و اضطراب شدید هستند.

نکته دیگری که ما به صحبت‌های بالا اضافه می‌توانیم بکنیم این است که جایگاه متفاوت یادگیری ماشین و به طور عام هوش مصنوعی نسبت به سایر علوم را باید در نظر گرفت. هوش مصنوعی در مدت ۷۰ سال اخیری که از خدا عمر گرفته است، همچنان حوزه یکپارچه‌ای نبوده است. هر از چند گاهی ایده‌ای آمده است و با هوش مصنوعی وارد بهاری شده و در نهایت در زمستانی دفن شده است. گاهی منطق‌دان‌ها به آن وارد شده‌اند و با دیدشان روش‌های سیستم‌های خبره و منطق را برای هوش مصنوعی توسعه داده‌اند. گاهی برقی‌ها وارد شده‌اند و مفاهیم سیگنالی را در حوزه هوش مصنوعی غالب کرده‌اند و این اواخر هم ریاضی‌دان‌ها و آماردان‌ها وارد شده و پارادایم یادگیری ماشین را پادشاه هوش مصنوعی کرده‌اند. از حدود ۲۰۱۲ به این ور هم شبکه‌های دیپ (شاید مدیون پیشرفت‌‌های سخت‌افزاری) فرمان بازی را به دست گرفته و بهاری‌ترین دوران هوش مصنوعی را رقم زده‌اند. اما واقعیت این است که یادگیری عمیق نیز اکنون احتمالا وارد پاییز خود شده است (در این مورد در آینده احتمالا صحبت می‌کنیم). مسیر تحقیقاتی هوش مصنوعی و یادگیری ماشین احتمال دارد به زودی دوباره وارد زمستان سخت شده و تمامی سرمایه‌گذاری‌های تحقیقاتی بسوزند. البته که بحث دنیای صنعت فرق می‌کند و همین الان بسیاری راه‌حل‌های یافت شده در دنیای آکادمی آماده هستند تا به دنیای صنعت و کاربرد اعمال شوند. در همین راستا شاید پیشنهاد ML Engineer شدن به جای ML Researcher شدن پیشنهاد عافیت داری برای دین و دنیا باشد. برای حسن ختام به قول سعدی:
کرامت جوانمردی و نان‌دهی است
مقالات بیهوده طبل تهی است

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

لینک توییت لکان:
https://twitter.com/ylecun/status/1605450677806895104

لینک توییت نیشابور:
https://twitter.com/bneyshabur/status/1605677285255675904

#tweet
#read

@nlp_stuff
🤯3😢2
Forwarded from NLP stuff
مدل HuggingGPT، مدلی با مغز GPT و بازوی HuggingFace

همانطور که خودتون هم می‌بینید و می‌شنوید ChatGPT همه جا رو در نوردیده و طیف مختلف و وسیعی از وظایف مختلف رو میتونه بهتر از انسان انجام بده. با وجود این همه قدرت مدل‌های زبانی، اما این مدل‌ها محدودیت‌هایی هم دارند. مثلا صرفا به مسائلی که ورودی و خروجی‌شون متنی هستند محدود هستند (ممکنه بگید GPT4 مدل مولتی موداله بله اما GPT4 اولا فقط میتونه در ورودی تصویر بگیره و ثانیا اگر بخواد تصویر خروجی بده باید تحت کدی مثل tikz این کار رو بکنه که کیفیت عکس‌هاش اصلا اون چیزی که در نظر هست نیست). محدودیت دیگه این که در سناریوهای دنیای واقعی که نیازمند شکستن وظیفه به چندزیروظیفه هست هم عملکرد کاملی ندارند و البته در بعضی مسائل خاص متنی هم حتی نسبت به مدل‌های اکسپرت عملکرد پایین‌تری دارند. حالا یک عده چینی از دانشگاه zhejiang ایده‌ای برای حل این محدودیت‌ها به سرشون زده و اون رو با نام HuggingGPT پیاده کردند. شهود این ایده این شکلیه که بیایم از chat-gpt به عنوان مغز و یک جور کنترلگر و از مدل‌های حاضر در هاب هاگینگ‌فیس در حکم بازوان اجرایی متخصص استفاده کنیم. در این صورت می‌تونیم هم از قدرت منطقی gpt استفاده کنیم و هم این که تسک‌هایی که gpt نمی‌تونه اجراشون کنه (مثل تسک‌های تصویری و صوتی) رو با استفاده از مدل‌های متخصص حاضر بر روی HuggingFace بتونیم انجام بدیم.

این مدل به صورت کلی چهار بخش Task Planning و Model Selection و Task Execution و Response Generation دارد. روال کار هم به این صورته که کاربر درخواستش رو به مدل میده و مدل طی یک پایپلاین با کمک این چهار بخش درخواست کاربر رو انجام میده. در Task Planning درخواست کاربر ورودی گرفته می‌شه و به ChatGPT داده می‌شه. در این جا chatgpt وظیفه داره منظور این درخواست کاربر رو بفهمه و اون رو به زیروظایف کوچک‌تر بشکنه و همچنین ترتیب اجرای این زیروظایف و ورودی و خروجی‌ اون‌ها رو مشخص کنه. در گام بعدی یا Model Selection سپس هر کدوم از این زیروظایف و مشخصات مدل‌های حاضر بر روی هاب هاگینگ‌فیس به chatgpt داده می‌شن و chatgpt تصمیم می‌گیره که برای هر یک از این زیروظایف از چه مدلی می‌شه استفاده کرد. سپس در مرحله سوم یا Task Execution، هر یک از این زیروظایف توسط مدل‌های مشخص شده اجرا می‌شن و البته تحت ترتیبی که تو مرحله یک مشخص شده به هم وصل می‌شن و ورودی و خروجی‌های همدیگر رو فراهم می‌کنند. در گام آخر یا Repsonse Generation هم دوباره خروجی‌های مرحله سوم به ChatGPT داده می‌شن و ChatGPT با جمع‌بندی این خروجی‌ها، خروجی نهایی مدل رو آماده می‌کنه. برای فهم بهتر می‌تونید تصاویر پیوست شده رو مشاهده کنید. یک سری آزمایش هم اومدند و روی این مدل انجام دادند و نشون دادند که می‌تونه وظایف خیلی پیچیده‌ای که نیازمند ترکیب توانایی‌های تصویری و صوتی و متنی هست رو انجام بده. نکته واجب به ذکر اینه که برای این که ChatGPT بفهمه هر یک از مراحل بالا رو باید انجام بده هم از In-context Learning استفاده کردند، یعنی این که نمونه ورودی‌ها و خروجی‌ها رو در prompt ورودی به ChatGPT می‌دن و GPT خودش می‌فهمه باید چه جوری اوستا کنه قضیه رو.

قبلا در این پست (https://t.iss.one/nlp_stuff/318) هم راجع به یک کیس جالب دیگه که از LLM به عنوان حتی بک‌اند استفاده کرده بود صحبت کرده بودیم. به نظر می‌رسه با قدرت‌گیری LLM‌ها در آینده نزدیک شاهد خیزش ترندی خواهیم بود که سعی می‌شه تا از اونها در حکم LLM as App یا حتی LLM as Everything استفاده بشه. آینده جذابی پیش روی محصولات این حوزه است. کسی چه می‌داند، شاید دنیای مهندسی نرم‌افزار بعد از LLM ها به شدت تکانده شود.

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

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

#read
#paper

@nlp_stuff
🔥4