خب ولی اول یه کم میم ببینیم. میمهای این سری خدان😂مخصوصا اون تفاوت همبستگی و علیت خیلی باحال بود.
#meme
@SingularThinker
#meme
@SingularThinker
👍5
از قمر الملوک وزیری نخستین خواننده زن در تاریخ ایران که بدون حجاب روی صحنه رفت تا #پرستو_احمدی که شجاعت روی صحنه رفتن در این زمانه رو به جان خرید.
🔗 معین (@moviizz)
پیشتر در مورد قمر و بقیهی زنان ایرانی نوشته بودم و امروز حس کردم که دارم صفحهای از تاریخ رو زیست میکنم و چی بهتر از این که خواننده مورد علاقهات هم اینکارو بکنه. دمت گرم خانم احمدی😍
لینک کنسرت پرستو احمدی در یوتیوب
#music
@SingularThinker
🔗 معین (@moviizz)
پیشتر در مورد قمر و بقیهی زنان ایرانی نوشته بودم و امروز حس کردم که دارم صفحهای از تاریخ رو زیست میکنم و چی بهتر از این که خواننده مورد علاقهات هم اینکارو بکنه. دمت گرم خانم احمدی😍
لینک کنسرت پرستو احمدی در یوتیوب
#music
@SingularThinker
❤5🔥2
مدلسازی زبان - قسمت اول
میخوای بدونی چطوری ربات chatgpt خودتو بسازی و باهاش پول دربیاری؟ پس این مطلبو بخون تا نشونت بدم.
نه وایسا اینجا ازین خبرا نیست ولی بجاش تلاش میکنم تا در مورد چیزای جالبی در مورد مدل های زبانی که در موردشون صحبت شده با هم حرف بزنیم و فکر کنیم.
خب من از چند وقت پیش و خیلی اتفاقی و به واسطه مقاله یکی از هم آزمایشگاهیام و چند تا اتفاق جالب دیگه علاقه مند شدم که روی این موضوع مدلهای زبانی کار کنم و شروع کردم تو این چند وقت اطلاعاتمو بروز کردن و همه چیو از اول مرور کردن و توی این مسیر چیزهای جالبی پیدا کردم که فک کنم تعریف کردنش هم میتونه به من کمک کنه که عمیق تر بفهمم ماجرا رو و هم احتمالا برای شما جالب باشه که بیشتر در مورد chatgpt و دوستان که این روزا همه جا سر زبون ها هستن بشنوید. من سعی میکنم مطالبو تا جایی که میتونم خیلی ساده و از پایه بگم که برای مخاطبی که لزوما در این زمینه مطالعه ای نداشته هم بتونه پیگیری کنه ولی کسایی که خودشون اهل فنن و این کاره ان شاید واسشون حوصله سر بر بشه ولی سعی خودمو میکنم که این طوری نباشه.
چیزی که همین الان به ذهنم رسید اینه که اگه chatgpt رو به صورت یه غذا ببینیم میتونیم به این فک کنیم که مواد اولیه و دستور پخت اون چی باید باشه. پس شروع میکنم با مواد لازم برای طرز تهیه chatgpt:
یک- مدلِ به قدر کافی بزرگ(معمولا شبکه عصبی ترنسفورمر)
دو- مجموعهی دادگان بسیار بسیار بزرگ(هر چی بزرگتر بهتر. اینجا واقعا size matters :)) )
سه-تعداد بسیار زیادی gpu یا همون پردازنده گرافیکی برای اجرای برنامه بر روی آن
خب حالا اگه از دید خیلی سطح بالا بخوایم مراحل پختشو نگاه کنیم اول باید دادهها و مدل رو بریزیم تو gpuها و زیرشو زیاد کنیم تا جوش بیاد و کامل بپزه بعد پس از آبکشی در آخر دم میکنیمش(واقعا پختنش دو مرحله ایه و به مرحله اول میگن pre-training و به مرحله دوم میگن fine-tuning. فعلا نمیخواد نگران باشید که چین اینا بعدا بهش میپردازیم.) اما همین طور که میدونید فرق هست بین قرمه سبزی که مامان میپزه و چمن پلو سلف. پس جزئیات و چگونگی ترکیب کردن این ها هم خیلی مهمه.
حالا تو مرحله بعدی میخوام بگم که قبل از اینکه پخت و پز شروع بشه شما باید این مدل ترنسفورمرتونو بشناسید و یه دونه خوبشو واسه خودتون سرهمبندی کنید این طوری که همه لایه ها رو مرتب پشت هم بچینید و همچنین اون مجموعه دادگان خیلی بزرگ رو بشکنید که به قسمتهای کوچیکتر تا بتونیم راحتتر ازش استفاده کنیم.
فعلا تو این متن سعی میکنیم در مورد آخرین مورد یعنی سلاخی کردن مجموعه دادگان خیلی بزرگ صحبت کنیم. خب مجموعه دادههای ما شامل متنهایی هست که در اینترنت و فایلهای الکترونیکی و کتابها ساخته شده و برای شکوندن این متنها به اجزای سازنده ما میتونیم این کار رو به روشهای مختلفی و در واقع به سایزهای مختلفی خرد بکنیم اونها رو. به واحدهای کوچک سازنده اون متن تو ادبیات پردازش متن میگن token. حالا ما میتونیم tokenها رو در اندازه جملهها نگه داریم یا کوچکتر. مشکل اصلی اینه که جملات میتونن خیلی کوتاه یا خیلی بلند باشن. همچنین اینکه خیلی بعیده که جملات در متنهای مختلف عینا تکرار بشن. پس یه راه بهتر شاید این باشه که مجموعه دادگان رو به شکل یک سری کلمات پشت سر هم نگاه بکنیم و واحد تجزیه ناپذیر یا همون token رو کلمه در نظر بگیریم.
این ایده به صورت نظری خیلی خوبه ولی در عمل در مورد زبان های طبیعی مثل انگلیسی و ... یه سری مشکلهایی ایجاد میکنه. مشکل عموما اینجاست که مرز کلمه رو چطوری تعریف کنیم؟ مثلا بین هر دو فاصله یا علائم نگارشی رو یه کلمه در نظر بگیریم؟ نکته اینه که زبان طبیعی موجود پویایی هست و کلی ترکیبهای جدید تولید میکنه بنابراین خیلی وقتا موقع تست کردن این سیستم با کلمههایی مواجه میشه که در لیست کلمهها نبوده. همچنین بعضی وقتا کلمات به صورت غیررسمی نوشته شدن و ساختارهای مخفف رو داریم و ... که کار سخت میشه. مثلا در زبان فارسی نیمفاصله داریم که بعضی رعایت میکنن و بعضیا مثه من کشتم خودمو نتونستم همه جا رعایت کنم پس اونو چیکار کنیم؟
بنابراین چیزی که بیشتر امروزه مرسومه استفاده از روش Byte pair encoding عه که زیرکلمهها رو به عنوان توکن در نظر میگیرن. خیلی اینجا وارد جزئیاتش نمیشم چون حس میکنم که خیلی مهم نیست ولی اگه سوالی بود تو کامنتا میتونیم در موردش صحبت کنیم یا اینکه در موردش تو منابعی که میذارم بخونید. تو قسمت بعدی در مورد ترنسفورمرها بیشتر صحبت میکنم.
من تصمیم دارم که هر ۲ روز یک بار یه قسمت از این مجموعه رو منتشر کنم. اگه نظری یا پیشنهادی داری بهم بگو حتما. خواستی برای دوستات هم بفرست.
- منبع خوب متنی در مورد tokenization
#note #language_modeling
@SingularThinker
میخوای بدونی چطوری ربات chatgpt خودتو بسازی و باهاش پول دربیاری؟ پس این مطلبو بخون تا نشونت بدم.
نه وایسا اینجا ازین خبرا نیست ولی بجاش تلاش میکنم تا در مورد چیزای جالبی در مورد مدل های زبانی که در موردشون صحبت شده با هم حرف بزنیم و فکر کنیم.
خب من از چند وقت پیش و خیلی اتفاقی و به واسطه مقاله یکی از هم آزمایشگاهیام و چند تا اتفاق جالب دیگه علاقه مند شدم که روی این موضوع مدلهای زبانی کار کنم و شروع کردم تو این چند وقت اطلاعاتمو بروز کردن و همه چیو از اول مرور کردن و توی این مسیر چیزهای جالبی پیدا کردم که فک کنم تعریف کردنش هم میتونه به من کمک کنه که عمیق تر بفهمم ماجرا رو و هم احتمالا برای شما جالب باشه که بیشتر در مورد chatgpt و دوستان که این روزا همه جا سر زبون ها هستن بشنوید. من سعی میکنم مطالبو تا جایی که میتونم خیلی ساده و از پایه بگم که برای مخاطبی که لزوما در این زمینه مطالعه ای نداشته هم بتونه پیگیری کنه ولی کسایی که خودشون اهل فنن و این کاره ان شاید واسشون حوصله سر بر بشه ولی سعی خودمو میکنم که این طوری نباشه.
چیزی که همین الان به ذهنم رسید اینه که اگه chatgpt رو به صورت یه غذا ببینیم میتونیم به این فک کنیم که مواد اولیه و دستور پخت اون چی باید باشه. پس شروع میکنم با مواد لازم برای طرز تهیه chatgpt:
یک- مدلِ به قدر کافی بزرگ(معمولا شبکه عصبی ترنسفورمر)
دو- مجموعهی دادگان بسیار بسیار بزرگ(هر چی بزرگتر بهتر. اینجا واقعا size matters :)) )
سه-تعداد بسیار زیادی gpu یا همون پردازنده گرافیکی برای اجرای برنامه بر روی آن
خب حالا اگه از دید خیلی سطح بالا بخوایم مراحل پختشو نگاه کنیم اول باید دادهها و مدل رو بریزیم تو gpuها و زیرشو زیاد کنیم تا جوش بیاد و کامل بپزه بعد پس از آبکشی در آخر دم میکنیمش(واقعا پختنش دو مرحله ایه و به مرحله اول میگن pre-training و به مرحله دوم میگن fine-tuning. فعلا نمیخواد نگران باشید که چین اینا بعدا بهش میپردازیم.) اما همین طور که میدونید فرق هست بین قرمه سبزی که مامان میپزه و چمن پلو سلف. پس جزئیات و چگونگی ترکیب کردن این ها هم خیلی مهمه.
حالا تو مرحله بعدی میخوام بگم که قبل از اینکه پخت و پز شروع بشه شما باید این مدل ترنسفورمرتونو بشناسید و یه دونه خوبشو واسه خودتون سرهمبندی کنید این طوری که همه لایه ها رو مرتب پشت هم بچینید و همچنین اون مجموعه دادگان خیلی بزرگ رو بشکنید که به قسمتهای کوچیکتر تا بتونیم راحتتر ازش استفاده کنیم.
فعلا تو این متن سعی میکنیم در مورد آخرین مورد یعنی سلاخی کردن مجموعه دادگان خیلی بزرگ صحبت کنیم. خب مجموعه دادههای ما شامل متنهایی هست که در اینترنت و فایلهای الکترونیکی و کتابها ساخته شده و برای شکوندن این متنها به اجزای سازنده ما میتونیم این کار رو به روشهای مختلفی و در واقع به سایزهای مختلفی خرد بکنیم اونها رو. به واحدهای کوچک سازنده اون متن تو ادبیات پردازش متن میگن token. حالا ما میتونیم tokenها رو در اندازه جملهها نگه داریم یا کوچکتر. مشکل اصلی اینه که جملات میتونن خیلی کوتاه یا خیلی بلند باشن. همچنین اینکه خیلی بعیده که جملات در متنهای مختلف عینا تکرار بشن. پس یه راه بهتر شاید این باشه که مجموعه دادگان رو به شکل یک سری کلمات پشت سر هم نگاه بکنیم و واحد تجزیه ناپذیر یا همون token رو کلمه در نظر بگیریم.
این ایده به صورت نظری خیلی خوبه ولی در عمل در مورد زبان های طبیعی مثل انگلیسی و ... یه سری مشکلهایی ایجاد میکنه. مشکل عموما اینجاست که مرز کلمه رو چطوری تعریف کنیم؟ مثلا بین هر دو فاصله یا علائم نگارشی رو یه کلمه در نظر بگیریم؟ نکته اینه که زبان طبیعی موجود پویایی هست و کلی ترکیبهای جدید تولید میکنه بنابراین خیلی وقتا موقع تست کردن این سیستم با کلمههایی مواجه میشه که در لیست کلمهها نبوده. همچنین بعضی وقتا کلمات به صورت غیررسمی نوشته شدن و ساختارهای مخفف رو داریم و ... که کار سخت میشه. مثلا در زبان فارسی نیمفاصله داریم که بعضی رعایت میکنن و بعضیا مثه من کشتم خودمو نتونستم همه جا رعایت کنم پس اونو چیکار کنیم؟
بنابراین چیزی که بیشتر امروزه مرسومه استفاده از روش Byte pair encoding عه که زیرکلمهها رو به عنوان توکن در نظر میگیرن. خیلی اینجا وارد جزئیاتش نمیشم چون حس میکنم که خیلی مهم نیست ولی اگه سوالی بود تو کامنتا میتونیم در موردش صحبت کنیم یا اینکه در موردش تو منابعی که میذارم بخونید. تو قسمت بعدی در مورد ترنسفورمرها بیشتر صحبت میکنم.
من تصمیم دارم که هر ۲ روز یک بار یه قسمت از این مجموعه رو منتشر کنم. اگه نظری یا پیشنهادی داری بهم بگو حتما. خواستی برای دوستات هم بفرست.
- منبع خوب متنی در مورد tokenization
#note #language_modeling
@SingularThinker
Analytics Vidhya
What is Tokenization in NLP? Here's All You Need To Know
Learn about tokenization in NLP and its significance in understanding text. Discover how it aids sentiment analysis and named entity recognition.
🔥8👍2
Singular Thinker
مدلسازی زبان - قسمت اول میخوای بدونی چطوری ربات chatgpt خودتو بسازی و باهاش پول دربیاری؟ پس این مطلبو بخون تا نشونت بدم. نه وایسا اینجا ازین خبرا نیست ولی بجاش تلاش میکنم تا در مورد چیزای جالبی در مورد مدل های زبانی که در موردشون صحبت شده با هم حرف بزنیم…
از خودش پرسیدم غذا بودی چی بودی گفت فسنجون :))
https://chatgpt.com/share/6761671c-4f28-8005-9ef4-de43cefc8daf
https://chatgpt.com/share/6761671c-4f28-8005-9ef4-de43cefc8daf
❤2👍1🔥1
@DOLCE_ITALIA
Maneskin_Torna a casa
Restiamo un po' di tempo ancora, tanto non c'è fretta
Che c'ho una frase scritta in testa ma non l'ho mai detta
Perchè la vita, senza te, non può essere perfetta
#music
@SingularThinker
Che c'ho una frase scritta in testa ma non l'ho mai detta
Perchè la vita, senza te, non può essere perfetta
#music
@SingularThinker
🔥1
DeepMind AI Expert
یا دوران توکنایز کردن در NLP به سر رسیده؟
پ.ن: وقتی میگن سرعت تو هوش مصنوعی دیوونه کننده است یعنی چی؟
دقیقا همین روزی که من این متن رو نوشتم و صرفا جهت ضایع کردن من شرکت Meta یه پژوهشی رو منتشر کردن که Byte Pair Encoding همچینم خوب نیست و راه های بهتری هست. واقعا خوب شد خیلی با جزئیات توضیحش ندادم و گرنه میسوختم ازین که کلی وقت گذاشتم.
راستش الان هم قصد ندارم این روش جدید رو خیلی توضیح بدم. صرفا ارجاعتون میدم به این توئیت که اگه علاقه داشتید بیشتر بخونید. منم میرم سراغ نوشتن قسمت دوم که امروز دیگه وقتشه.
#language_modeling
@SingularThinker
دقیقا همین روزی که من این متن رو نوشتم و صرفا جهت ضایع کردن من شرکت Meta یه پژوهشی رو منتشر کردن که Byte Pair Encoding همچینم خوب نیست و راه های بهتری هست. واقعا خوب شد خیلی با جزئیات توضیحش ندادم و گرنه میسوختم ازین که کلی وقت گذاشتم.
راستش الان هم قصد ندارم این روش جدید رو خیلی توضیح بدم. صرفا ارجاعتون میدم به این توئیت که اگه علاقه داشتید بیشتر بخونید. منم میرم سراغ نوشتن قسمت دوم که امروز دیگه وقتشه.
#language_modeling
@SingularThinker
Telegram
Singular Thinker
مدلسازی زبان - قسمت اول
میخوای بدونی چطوری ربات chatgpt خودتو بسازی و باهاش پول دربیاری؟ پس این مطلبو بخون تا نشونت بدم.
نه وایسا اینجا ازین خبرا نیست ولی بجاش تلاش میکنم تا در مورد چیزای جالبی در مورد مدل های زبانی که در موردشون صحبت شده با هم حرف بزنیم…
میخوای بدونی چطوری ربات chatgpt خودتو بسازی و باهاش پول دربیاری؟ پس این مطلبو بخون تا نشونت بدم.
نه وایسا اینجا ازین خبرا نیست ولی بجاش تلاش میکنم تا در مورد چیزای جالبی در مورد مدل های زبانی که در موردشون صحبت شده با هم حرف بزنیم…
🔥2💅1
مدلسازی زبان - قسمت دوم
خب تو متن اول راجع به این صحبت که مواد لازم برای ساخت یه chatbot مثل chatgpt چی باید باشه و در مورد مجموعه دادگان و شرایط ساطوری کردنش یکم توضیح دادیم. حالا الان بریم سراغ مدل که اصن چه مدلی برای مدلسازی زبان میشه استفاده کرد و در واقع بر اساس سوالی که مطرح شد تو کامنت پست قبلی بریم بیینم به چه چیزی میگن مدل زبانی اصلا؟!
بحث مدلسازی زبانی یا همون Language Modeling یه نوع مدلسازی احتمالی زبان طبیعی یعنی همین زبان هایی که ما باهاش به طور رومزه سر و کار داریم هست. مدل زبانی مدلیه که احتمال لغت بعدی رو در یک جمله یا مجموعه از کلمات بر حسب بافتار کلمات قبلی پیشبینی میکنه. مثل قابلیت predictive text که روی کیبوردهای گوشی هست که وقتی داریم تایپ میکنیم کلمه بعدی رو حدس میزنه.
این کلمه یه اصطلاح رایج تو فیلد پردازش زبان طبیعی یا همون NLP عه و تاریخچه نسبتا قدیمی داره که بر میگرده به سال ۱۹۸۰. ازین مدلها برای انجام تسک ترجمه ی ماشینی (Machine translation) استفاده میشده و برای همین منظور کلی از پیشرفت ها ابتدا روی این تسک تست میشده.
من همون طور که تو متن قبلی هم اشاره کردم تخصصی تو NLP ندارم اما بد نیست یه نگاهی بندازیم به تاریخچه این قضیه و یه دید کلیای بدست بیاریم ازینکه الان کجاییم و چطوری رسیدیم به اینجا.
بیاید خیلی به عقب بریم تا ببینیم این ایده دیدن زبان به صورت یه مدل احتمالاتی که هر کلمه رو بر اساس کلمات قبلی پیشنهاد میکنه به کجا برمیگرده؟ در این صورت باید برگردیم به نیمهی قرن ۲۰ جایی که کلاود شانون داشت سعی میکرد انتروپی زبان انگلیسی رو حساب کنه[1]. شانون این کار رو بر حسب پیشبینی لغت بعدی توسط آدم ها انجام میداد[2,3]. جزئیات کار خفن آقای شنون باشه برای جای دیگهای ولی واقعا یه روز دوست دارم تک تک پیپرای این مرد رو بخونم.
خب حالا بذارید کار رو با یک مثال پیش ببریم. فرض کنید این جمله «من کتابم را به دوستم علی دادم و به او گفتم ... » به ما داده شده و از ما خواستن که مدلی آماری بسازیم که کلمه بعدی رو پیشبینی کنه. اگه بخوایم خیلی ساده به قضیه نگاه کنیم و فرض کنیم که به یه مجموعه دادگان خیلی خیلی بزرگ دسترسی داریم میگیم که میریم تو مجموعه دادگانمون نگاه میکنیم که بعد از این جمله چه کلماتی اومده و هر کدوم چندبار تکرار شدن و به نسبت این تکرار احتمال هر کلمه رو حساب میکنیم. اما همون طور که تو متن قبلی هم اشاره کردم احتمال اینکه یه جمله عینا تکرار بشه خیلی کمه برای همین این روش عملا کارا نیست. ولی آیا لازمه که دنبال همهی این جمله تو مجموعه دادهها بگردیم و آیا صرفا دو سه کلمه قبل از جای خالی کفایت نمیکنه؟
اینجاست که فرض Markov بودن وارد کار میشه. شما در اصل با در نظر گرفتن اینکه صرفا سه کلمه قبل هر جای خالی کافی هست برای پیش بینی احتمال کلمه بعدی داری یه فرض سنگینی رو دادگانت میذاری ولی در عوض این اجازه رو میدی که مدلسازیات کارا بشه و این کاری هست که در IBM در دهه ۸۰ میلادی در ادامه خط فکری شانون انجام دادن و بهش میگن Word n-gram language model. حالا وقتی n=2 باشه به این مدل میگن bigram و وقتی که n=3 باشه بهش میگن trigram.
علی رغم اینکه دیدن که این مدلها میتونن تا حدی تو برخی زمینه ها خوب کار بکنن ولی در عمل مشاهده کردن که مدل bigram بعد از ۱۰۰ میلیون کلمه و مدل trigram بعد چند میلیارد کلمه به اشباع میرسه و اضافه کردن کلمات جدید دقت مدل رو افزایش نمیده که این به خاطر فرض های خیلی قوی هست که رو مجموعه دادگانمون فرض کردیم که غیرواقعیه. در واقع این مدلها از ویژگیهای اینکه داده ما مربوط به یه زبان مشخصی هست استفاده ای نمیکنن و از این روش میشه برای مدل کردن یه دنبالهای از نمادهای چرت و پرت هم استفاده کرد و بنابراین میشه حدس زد که چرا این روشها خیلی موثر نیستند. اما کار به اینجا ختم نمیشه و مدلهای بعدی جایگزین این مدلهای ساده میشن و کار رو ادامه میدن[4].
خب فک کنم برای این قسمت کافی باشه و در قسمت بعدی در مورد مدل های بر پایه شبکه عصبی بازگشتی یا همون Recurrent neural network(RNN)ها صحبت میکنیم.
#note #language_modeling
@SingularThinker
خب تو متن اول راجع به این صحبت که مواد لازم برای ساخت یه chatbot مثل chatgpt چی باید باشه و در مورد مجموعه دادگان و شرایط ساطوری کردنش یکم توضیح دادیم. حالا الان بریم سراغ مدل که اصن چه مدلی برای مدلسازی زبان میشه استفاده کرد و در واقع بر اساس سوالی که مطرح شد تو کامنت پست قبلی بریم بیینم به چه چیزی میگن مدل زبانی اصلا؟!
بحث مدلسازی زبانی یا همون Language Modeling یه نوع مدلسازی احتمالی زبان طبیعی یعنی همین زبان هایی که ما باهاش به طور رومزه سر و کار داریم هست. مدل زبانی مدلیه که احتمال لغت بعدی رو در یک جمله یا مجموعه از کلمات بر حسب بافتار کلمات قبلی پیشبینی میکنه. مثل قابلیت predictive text که روی کیبوردهای گوشی هست که وقتی داریم تایپ میکنیم کلمه بعدی رو حدس میزنه.
این کلمه یه اصطلاح رایج تو فیلد پردازش زبان طبیعی یا همون NLP عه و تاریخچه نسبتا قدیمی داره که بر میگرده به سال ۱۹۸۰. ازین مدلها برای انجام تسک ترجمه ی ماشینی (Machine translation) استفاده میشده و برای همین منظور کلی از پیشرفت ها ابتدا روی این تسک تست میشده.
من همون طور که تو متن قبلی هم اشاره کردم تخصصی تو NLP ندارم اما بد نیست یه نگاهی بندازیم به تاریخچه این قضیه و یه دید کلیای بدست بیاریم ازینکه الان کجاییم و چطوری رسیدیم به اینجا.
بیاید خیلی به عقب بریم تا ببینیم این ایده دیدن زبان به صورت یه مدل احتمالاتی که هر کلمه رو بر اساس کلمات قبلی پیشنهاد میکنه به کجا برمیگرده؟ در این صورت باید برگردیم به نیمهی قرن ۲۰ جایی که کلاود شانون داشت سعی میکرد انتروپی زبان انگلیسی رو حساب کنه[1]. شانون این کار رو بر حسب پیشبینی لغت بعدی توسط آدم ها انجام میداد[2,3]. جزئیات کار خفن آقای شنون باشه برای جای دیگهای ولی واقعا یه روز دوست دارم تک تک پیپرای این مرد رو بخونم.
خب حالا بذارید کار رو با یک مثال پیش ببریم. فرض کنید این جمله «من کتابم را به دوستم علی دادم و به او گفتم ... » به ما داده شده و از ما خواستن که مدلی آماری بسازیم که کلمه بعدی رو پیشبینی کنه. اگه بخوایم خیلی ساده به قضیه نگاه کنیم و فرض کنیم که به یه مجموعه دادگان خیلی خیلی بزرگ دسترسی داریم میگیم که میریم تو مجموعه دادگانمون نگاه میکنیم که بعد از این جمله چه کلماتی اومده و هر کدوم چندبار تکرار شدن و به نسبت این تکرار احتمال هر کلمه رو حساب میکنیم. اما همون طور که تو متن قبلی هم اشاره کردم احتمال اینکه یه جمله عینا تکرار بشه خیلی کمه برای همین این روش عملا کارا نیست. ولی آیا لازمه که دنبال همهی این جمله تو مجموعه دادهها بگردیم و آیا صرفا دو سه کلمه قبل از جای خالی کفایت نمیکنه؟
اینجاست که فرض Markov بودن وارد کار میشه. شما در اصل با در نظر گرفتن اینکه صرفا سه کلمه قبل هر جای خالی کافی هست برای پیش بینی احتمال کلمه بعدی داری یه فرض سنگینی رو دادگانت میذاری ولی در عوض این اجازه رو میدی که مدلسازیات کارا بشه و این کاری هست که در IBM در دهه ۸۰ میلادی در ادامه خط فکری شانون انجام دادن و بهش میگن Word n-gram language model. حالا وقتی n=2 باشه به این مدل میگن bigram و وقتی که n=3 باشه بهش میگن trigram.
علی رغم اینکه دیدن که این مدلها میتونن تا حدی تو برخی زمینه ها خوب کار بکنن ولی در عمل مشاهده کردن که مدل bigram بعد از ۱۰۰ میلیون کلمه و مدل trigram بعد چند میلیارد کلمه به اشباع میرسه و اضافه کردن کلمات جدید دقت مدل رو افزایش نمیده که این به خاطر فرض های خیلی قوی هست که رو مجموعه دادگانمون فرض کردیم که غیرواقعیه. در واقع این مدلها از ویژگیهای اینکه داده ما مربوط به یه زبان مشخصی هست استفاده ای نمیکنن و از این روش میشه برای مدل کردن یه دنبالهای از نمادهای چرت و پرت هم استفاده کرد و بنابراین میشه حدس زد که چرا این روشها خیلی موثر نیستند. اما کار به اینجا ختم نمیشه و مدلهای بعدی جایگزین این مدلهای ساده میشن و کار رو ادامه میدن[4].
خب فک کنم برای این قسمت کافی باشه و در قسمت بعدی در مورد مدل های بر پایه شبکه عصبی بازگشتی یا همون Recurrent neural network(RNN)ها صحبت میکنیم.
#note #language_modeling
@SingularThinker
Telegram
Singular Thinker
مدلسازی زبان - قسمت اول
میخوای بدونی چطوری ربات chatgpt خودتو بسازی و باهاش پول دربیاری؟ پس این مطلبو بخون تا نشونت بدم.
نه وایسا اینجا ازین خبرا نیست ولی بجاش تلاش میکنم تا در مورد چیزای جالبی در مورد مدل های زبانی که در موردشون صحبت شده با هم حرف بزنیم…
میخوای بدونی چطوری ربات chatgpt خودتو بسازی و باهاش پول دربیاری؟ پس این مطلبو بخون تا نشونت بدم.
نه وایسا اینجا ازین خبرا نیست ولی بجاش تلاش میکنم تا در مورد چیزای جالبی در مورد مدل های زبانی که در موردشون صحبت شده با هم حرف بزنیم…
❤12👍3🔥1💅1
Singular Thinker
مدلسازی زبان - قسمت دوم خب تو متن اول راجع به این صحبت که مواد لازم برای ساخت یه chatbot مثل chatgpt چی باید باشه و در مورد مجموعه دادگان و شرایط ساطوری کردنش یکم توضیح دادیم. حالا الان بریم سراغ مدل که اصن چه مدلی برای مدلسازی زبان میشه استفاده کرد و در…
بچه ها من رو این متن ها واقعا وقت میذارم و حس میکنم که خیلی برای بعضیا میتونه مفید باشه پس اگه دوست داشتید برای کسایی که فک میکنید جالبه براشون بفرستید.
اگه نظری یا پیشنهادی داری بهم بگید حتما که مثه سری پیش بتونم بهشون جواب بدم.
اگه نظری یا پیشنهادی داری بهم بگید حتما که مثه سری پیش بتونم بهشون جواب بدم.
🔥13👍1
با اینکه خیلی سال سختی بود ولی کتابای خوبی خوندیم و شاید اینا تونست کمک کنه که دووم بیارم. امیدوارم سال آینده بیشتر بخونم. شما هم اگه دوست داشتید بفرستید برام کتابایی که خوندید و آیدی گودریدزتون رو .
@SingularThinker
@SingularThinker
❤11💅1
مدلسازی زبان - قسمت سوم
خب تو قسمت دوم در مورد تعریف مدلهای زبانی و یک مدل خیلی ساده صحبت کردیم. تو این قسمت میخوایم در مورد Recurrent Neural Network (RNN) یا همون شبکههای عصبی بازگشتی صحبت کنیم که یکی از اولین مدلهایی بر پایه شبکه عصبی بود که در دنیای واقعی مورد استفاده قرار گرفت و از اون در سیستم عامل اندروید برای تبدیل صوت به متن و همچنین جستجوی صوتی سایت Google استفاده شد.
⚠️توجه: اگه با کلیت مفهوم شبکههای عصبی آشنا هستید میتونید پارگراف بعدی رو رد کنید.
اگه با شبکه عصبی مصنوعی آشنا نیستید فرض کنید که یه جعبهای هست که به ازای هر ورودی یک خروجی برمیگردونه. معمولا ورودی و خروجیهای این جعبه از جنس بردار با طول مشخص هستن. حالا داخل جعبه یه سری پیچ تنظیمشونده وجود داره که با تغییر اونا میتونید تابع داخل جعبه رو عوض کنید و هر تابعی از ورودی به خروجی رو تخمین بزنید. اگه واستون سواله که چرا اصن تابع مفهوم مهمیه یک دیقه اول این ویدئو رو ببینید. فرآیند training یا آموزش به فرآیند یاد گرفتن تنظیم بهینه این پیچها گفته میشه بهطوری که به ازای ورودیهای مختلف خروجی شبکه نزدیک به خروجی مد نظر ما رو برگردونه. پس ما یه تعدادی داده ورودی و خروجی رو به عنوان نمونه داریم که با اونها training رو انجام میدیم. خب من فک کنم تا قدری که فعلا برای این متن نیاز به درک شبکه عصبی بود رو گفتم و برای ادامه مطلب میتونید سری ویدیوهای بسیار زیبای 3blue1brown رو ببینید. همچنین این پست قدیمی کانال هم میتونه قابل توجه باشه.
خب همین طوری که از اسمشون مشخصه شبکههای عصبی بازگشتی نوعی از شبکههای عصبی هستن. ایده پشت شبکههای عصبی بازگشتی خیلی قابل درکه. من اگه از شما بپرسم که تو این عکس گربه هست یا نه شما برای جواب دادن به این سوال شما به اطلاعات اضافه بر این عکس احتیاج نداری. در حالیکه اگه من یه جمله رو در اختیار شما قرار بدم و بگم تو این جمله ضمیر «تو» به چه کسی برمیگرده شما نیاز داری که جمله و شاید حتی جملات قبلی رو هم داشته باشی تا بتونی تشخیص بدی. پس حالا اگه یه دیتای ترتیبی(sequential data) مثل کلمات یک جمله داشته باشیم شبکه عصبیمون دو تا ورودی میگیره یکی کلمه در هر لحظه و یکی دیگه یه بردار حافظه که اومده تمام اطلاعات مفید لحظات قبلی رو تو خودش ذخیره کرده. مثل وقتی که یکی براتون پشت تلفن یه قصهی بلندی رو تعریف میکنه و شما یه سری یادداشت برمیداری تا بتونی اطلاعات جدید رو پردازش کنی. به این بردار جدید hidden state یا memory state میگن.(تصویر در کامنت)
در مورد اینکه چرا بهش میگن حافظه تو پاگراف بالا توضیح دادم. حالا به این فکر کنید که به شما دمای هوا، سرعت باد، میزان رطوبت و چند ویژگی دیگه برای روزهای اخیر رو دادند و از شما میخوان که وضعیت هوا رو برای چند روز آینده پیشبینی کنید. همون طور که میدونید این مسئله مشکلی هست و خیلی مشخص نیست که شما
چطوری باید این کارو انجام بدید. اما ممکنه در چند سال آینده مشخص بشه که یه متغییر مخفی هست که با دونستن اون راحت میشه وضعیت هوا رو پیشبینی کرد. این مدل یعنی همون RNNها سعی میکنن اول اون متغییر نهان رو بسازن و بعد بر اساس اون پیشبینی رو انجام بدن و برای همین به اون متغییر میگن hidden state و با حرف h نشونش میدن. فرم کلی معادله RNN ها به صورت زیره:
h_[t+1] = g(h_[t], x_t)
x_[t+1] = f(h_[t+1])
که x_t هم ورودی در هر لحظه است و در آخر مقدار آخرین x_[t+1] پیش بینی لحظه بعد رو نشون میده.
اما این شبکههای عصبی بازگشتی مشکلاتی هم داشتند؟ برای جواب این سوال بیاید برگردید به مثال خودمون که میخواستیم ببینیم این ضمیر "تو" به چه اسمی برمیگرده؟ حالا سوال اینجاست که آیا این مدلهای RNN میتونن جواب رو پیدا کنن؟ جواب این سوال اینه که بستگی داره که اون اسم در چه فاصله ای از جمله ما باش. اگه فاصله کم باشه معمولا اوکیه ولی اگه فاصله زیاد باشه این مدلها معمولا جواب خوبی نمیدن. یعنی اینکه انگار این مدلها مثه ماهی گلی/قرمز یا همون انیمیشن Nemo هستن و حافظهی کوتاه مدت قویای ندارن و برای تشخیص وابستگیهای با فاصلهی زیاد (long-range dependencies) خوب کار نمیکنن.
علت وقوع این مشکل رو که بهش vanishing gradient میگن رو در سال ۱۹۹۴ Yashua Bengio تو یه مقاله جالب بررسی میکنه و تو سال ۱۹۹۷ آقا Schmidhuber به همراه شاگردش درصدد رفعش برمیان و یه دسته جدید از RNNها رو معرفی میکنن که بهشون LSTM میگن که در واقع سرواژههای Long short-term memory هست. (این آقای Schmidhuber واقعا ورقی هستن که باید تو یه متن جداگانه بهشون بپردازم حتما :)))) ). خلاصه خیلی وارد جزئیات بیشتر LSTM نمیشم و توضیح بیشتر رو میسپارم به این بلاگ پست از colah زیبا که قبلا هم تو این پست بلاگ هاشو معرفی کرده بودم.
ادامه ⬇️😱
خب تو قسمت دوم در مورد تعریف مدلهای زبانی و یک مدل خیلی ساده صحبت کردیم. تو این قسمت میخوایم در مورد Recurrent Neural Network (RNN) یا همون شبکههای عصبی بازگشتی صحبت کنیم که یکی از اولین مدلهایی بر پایه شبکه عصبی بود که در دنیای واقعی مورد استفاده قرار گرفت و از اون در سیستم عامل اندروید برای تبدیل صوت به متن و همچنین جستجوی صوتی سایت Google استفاده شد.
⚠️توجه: اگه با کلیت مفهوم شبکههای عصبی آشنا هستید میتونید پارگراف بعدی رو رد کنید.
خب همین طوری که از اسمشون مشخصه شبکههای عصبی بازگشتی نوعی از شبکههای عصبی هستن. ایده پشت شبکههای عصبی بازگشتی خیلی قابل درکه. من اگه از شما بپرسم که تو این عکس گربه هست یا نه شما برای جواب دادن به این سوال شما به اطلاعات اضافه بر این عکس احتیاج نداری. در حالیکه اگه من یه جمله رو در اختیار شما قرار بدم و بگم تو این جمله ضمیر «تو» به چه کسی برمیگرده شما نیاز داری که جمله و شاید حتی جملات قبلی رو هم داشته باشی تا بتونی تشخیص بدی. پس حالا اگه یه دیتای ترتیبی(sequential data) مثل کلمات یک جمله داشته باشیم شبکه عصبیمون دو تا ورودی میگیره یکی کلمه در هر لحظه و یکی دیگه یه بردار حافظه که اومده تمام اطلاعات مفید لحظات قبلی رو تو خودش ذخیره کرده. مثل وقتی که یکی براتون پشت تلفن یه قصهی بلندی رو تعریف میکنه و شما یه سری یادداشت برمیداری تا بتونی اطلاعات جدید رو پردازش کنی. به این بردار جدید hidden state یا memory state میگن.(تصویر در کامنت)
در مورد اینکه چرا بهش میگن حافظه تو پاگراف بالا توضیح دادم. حالا به این فکر کنید که به شما دمای هوا، سرعت باد، میزان رطوبت و چند ویژگی دیگه برای روزهای اخیر رو دادند و از شما میخوان که وضعیت هوا رو برای چند روز آینده پیشبینی کنید. همون طور که میدونید این مسئله مشکلی هست و خیلی مشخص نیست که شما
چطوری باید این کارو انجام بدید. اما ممکنه در چند سال آینده مشخص بشه که یه متغییر مخفی هست که با دونستن اون راحت میشه وضعیت هوا رو پیشبینی کرد. این مدل یعنی همون RNNها سعی میکنن اول اون متغییر نهان رو بسازن و بعد بر اساس اون پیشبینی رو انجام بدن و برای همین به اون متغییر میگن hidden state و با حرف h نشونش میدن. فرم کلی معادله RNN ها به صورت زیره:
h_[t+1] = g(h_[t], x_t)
x_[t+1] = f(h_[t+1])
که x_t هم ورودی در هر لحظه است و در آخر مقدار آخرین x_[t+1] پیش بینی لحظه بعد رو نشون میده.
اما این شبکههای عصبی بازگشتی مشکلاتی هم داشتند؟ برای جواب این سوال بیاید برگردید به مثال خودمون که میخواستیم ببینیم این ضمیر "تو" به چه اسمی برمیگرده؟ حالا سوال اینجاست که آیا این مدلهای RNN میتونن جواب رو پیدا کنن؟ جواب این سوال اینه که بستگی داره که اون اسم در چه فاصله ای از جمله ما باش. اگه فاصله کم باشه معمولا اوکیه ولی اگه فاصله زیاد باشه این مدلها معمولا جواب خوبی نمیدن. یعنی اینکه انگار این مدلها مثه ماهی گلی/قرمز یا همون انیمیشن Nemo هستن و حافظهی کوتاه مدت قویای ندارن و برای تشخیص وابستگیهای با فاصلهی زیاد (long-range dependencies) خوب کار نمیکنن.
علت وقوع این مشکل رو که بهش vanishing gradient میگن رو در سال ۱۹۹۴ Yashua Bengio تو یه مقاله جالب بررسی میکنه و تو سال ۱۹۹۷ آقا Schmidhuber به همراه شاگردش درصدد رفعش برمیان و یه دسته جدید از RNNها رو معرفی میکنن که بهشون LSTM میگن که در واقع سرواژههای Long short-term memory هست. (این آقای Schmidhuber واقعا ورقی هستن که باید تو یه متن جداگانه بهشون بپردازم حتما :)))) ). خلاصه خیلی وارد جزئیات بیشتر LSTM نمیشم و توضیح بیشتر رو میسپارم به این بلاگ پست از colah زیبا که قبلا هم تو این پست بلاگ هاشو معرفی کرده بودم.
ادامه ⬇️😱
Telegram
Singular Thinker
مدلسازی زبان - قسمت دوم
خب تو متن اول راجع به این صحبت که مواد لازم برای ساخت یه chatbot مثل chatgpt چی باید باشه و در مورد مجموعه دادگان و شرایط ساطوری کردنش یکم توضیح دادیم. حالا الان بریم سراغ مدل که اصن چه مدلی برای مدلسازی زبان میشه استفاده کرد و در…
خب تو متن اول راجع به این صحبت که مواد لازم برای ساخت یه chatbot مثل chatgpt چی باید باشه و در مورد مجموعه دادگان و شرایط ساطوری کردنش یکم توضیح دادیم. حالا الان بریم سراغ مدل که اصن چه مدلی برای مدلسازی زبان میشه استفاده کرد و در…
🔥6👍3❤1
ولی حوالی سال ۲۰۰۶ با استفاده ار نوعی از LSTMها تونستن که انقلابی در بازشناسی گفتار speech recognition برپا کننو از مدل های سنتی جلو بزنن و میتونید تصور کنید که این روند همینطور ادامه داشت تقریبا تا سال ۲۰۱۷ که مدلهای ترنسفورمر سر و کلهشون پیدا شد و یه قدم خیلی بزرگ ایجاد کردند تا حدی که از اون موقع تا همین الان که ما چیزهایی مثل chatgpt رو داریم رو میشه گفت تا حد زیادی مرتبط با همین پیدایش ترنسفورمرها میدونیم. انقدر تو زمینههای مختلف موفقیت داشته که مقاله attention is all you need که توسط تیم گوگل در سال ۲۰۱۷ ارائه شد که توش معماری ترنسفورمر رو اونجا برای اولین بار معرفی کردن تا الان نزدیک به ۱۵۰ هزار تا ارجاع داشته. 🤯 (در عرض ۷ سال)
معماری ترنسفورمر خیلی رازآلود و معماگونه به نظر میرسه تا حدی که من به گوش خودم شنیدم که خیلی از استادای مطرح در سطح جهان میگن که بخشهایی از اون رو نمیفهمند و اصلا این که چرا چنین چیزی رو پیشنهاد کردند و چرا انقدر خوب کار میکنه. من سعی خواهم کردم یکمی سرنخهایی که بخشی از اون ها هم همین اخیرا علنی شد رو با هم پیگیری کنیم و با کمک هم یکمی دقیقتر بشیم و ببینیم پشت این ماجرای ترنسفورمرها چی خوابیده؟
اما شاید از این مطلب من این طور به نظر برسه که دوران RNNها به طور کلی تموم شده و دیگه این مدلها از رده خارج شدن در حالی که این طور نیست و مدلهای جدیدی همچنان در حال منتشر شدن هستن که دارن سعی میکنن خوبیهای ترنسفومر و RNNها رو با هم داشته باشن. مثلا میشه به مدل هایی مثل Linear RNNها شامل Mamba و DeltaNet اشاره کنم که در مورد Mamba در این پست یه توضیح مختصری دادیم. همچنین xLSTM و minLSTM و minGRU که هر دو در سال گذشته و توسط تیم Bengio و آزمایشگاه منتشر کننده LSTM در شهر لینز هستن اشاره کرد. همچنین کلی کارهای تئوری جهت بررسی دقیقتر اتفاقی که در هنگام آموزش این شبکهها رخ میده در حال انجامه. اگه جلوتر وقت بشه در مورد برخی از این مدلها هم توضیح خواهم داد. ولی فعلا در قسمت بعدی صحبت میکنیم که به چی چی میگن attention و بلاخره این دوستانمون تو گوگل ایده ترنسفورمر رو از کجاشون در آوردن؟
در آخر توصیه میکنم اگه نسبت به RNNها کنجکاو هستید که حتما بلاگ پست آقا Andrej Karpathy رو که سال ۲۰۱۵ نوشتن رو به همراه نحوه پیادهسازی RNNها از دست ندید.
جالبیش اینه همون موقع هم karpathy و هم colah پیشبینی کرده بودن که attention یه جهت امیدوارکننده برای آینده خواهد بود که همین طور هم شد.
#note
#language_modeling
@SingularThinker
معماری ترنسفورمر خیلی رازآلود و معماگونه به نظر میرسه تا حدی که من به گوش خودم شنیدم که خیلی از استادای مطرح در سطح جهان میگن که بخشهایی از اون رو نمیفهمند و اصلا این که چرا چنین چیزی رو پیشنهاد کردند و چرا انقدر خوب کار میکنه. من سعی خواهم کردم یکمی سرنخهایی که بخشی از اون ها هم همین اخیرا علنی شد رو با هم پیگیری کنیم و با کمک هم یکمی دقیقتر بشیم و ببینیم پشت این ماجرای ترنسفورمرها چی خوابیده؟
اما شاید از این مطلب من این طور به نظر برسه که دوران RNNها به طور کلی تموم شده و دیگه این مدلها از رده خارج شدن در حالی که این طور نیست و مدلهای جدیدی همچنان در حال منتشر شدن هستن که دارن سعی میکنن خوبیهای ترنسفومر و RNNها رو با هم داشته باشن. مثلا میشه به مدل هایی مثل Linear RNNها شامل Mamba و DeltaNet اشاره کنم که در مورد Mamba در این پست یه توضیح مختصری دادیم. همچنین xLSTM و minLSTM و minGRU که هر دو در سال گذشته و توسط تیم Bengio و آزمایشگاه منتشر کننده LSTM در شهر لینز هستن اشاره کرد. همچنین کلی کارهای تئوری جهت بررسی دقیقتر اتفاقی که در هنگام آموزش این شبکهها رخ میده در حال انجامه. اگه جلوتر وقت بشه در مورد برخی از این مدلها هم توضیح خواهم داد. ولی فعلا در قسمت بعدی صحبت میکنیم که به چی چی میگن attention و بلاخره این دوستانمون تو گوگل ایده ترنسفورمر رو از کجاشون در آوردن؟
در آخر توصیه میکنم اگه نسبت به RNNها کنجکاو هستید که حتما بلاگ پست آقا Andrej Karpathy رو که سال ۲۰۱۵ نوشتن رو به همراه نحوه پیادهسازی RNNها از دست ندید.
جالبیش اینه همون موقع هم karpathy و هم colah پیشبینی کرده بودن که attention یه جهت امیدوارکننده برای آینده خواهد بود که همین طور هم شد.
#note
#language_modeling
@SingularThinker
🔥9👍1