Singular Thinker
کلمهها رو چطور میشه عدد کرد؟ پرده اول - توی جلسه ارائه پوستر داشتم با عکاس اون ایونت که از قضا ایرانی هم بود صحبت میکردم و قشنگ یادمه که سر پوستر xLSTM وایستاده بودیم و پرسید که اع چرا این پوستر انقدر شلوغه بعد شروع کردم یکم توضیح دادن و با توجه به بازخوردش…
خب آقا با ما در شهر بمانید که قراره این سری از مطالب Language modeling رو شروع کنیم به زودی. چیزهایی جالبی پیدا کردم و فک کنم چیزهایی جالبی میشه گفت. احتمالا یه مدتی زمینه اصلی کانال این بمونه. شروع کنیم با هم به اشتراک گذاشتن چیزهای جالب در مورد این مدلها و از نگاههای مختلف بررسیاش کنیم. و من بیشتر بگم چرا من فکر میکردم و میگفتم که این مدلها هنوز کار دارن تا به AGI و مرحله خطرناک برسن.
اگه شما هم که دوست دارید که با ما تو این مسیر همراه باشید، اول این مطلب قبلی رو یه نگاهی بندازید. تو هفته آینده میریم سر قسمت بعدی. هدف کلی اینه که یه ذره دقیقتر از جاهای دیگه این مسئله رو پیگیری کنیم، تاریخچه داستان رو در نظر بگیریم و سعی کنیم یه شهودی پیدا کنیم در مورد عملکرد این مدلها.
@SingularThinker
اگه شما هم که دوست دارید که با ما تو این مسیر همراه باشید، اول این مطلب قبلی رو یه نگاهی بندازید. تو هفته آینده میریم سر قسمت بعدی. هدف کلی اینه که یه ذره دقیقتر از جاهای دیگه این مسئله رو پیگیری کنیم، تاریخچه داستان رو در نظر بگیریم و سعی کنیم یه شهودی پیدا کنیم در مورد عملکرد این مدلها.
@SingularThinker
👍4🔥1
خب ولی اول یه کم میم ببینیم. میمهای این سری خدان😂مخصوصا اون تفاوت همبستگی و علیت خیلی باحال بود.
#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