Armin's Notes 🪴 – Telegram
Armin's Notes 🪴
146 subscribers
71 photos
13 videos
1 file
55 links
إحتضن نَفسك بِنَفسك، لَن يحارب أحد مِن أجلك 💛

اینجا بیشتر می‌نویسم... 🌿
از چیزایی که به نظرم جالب رسیده 🦋
موزیکایی که دوس داشتم 🌚
مقالات و کتابایی که خوندم 📚
و چیزای دیگه 💫

🃏 t.me/PanicDev

🃏 t.me/LaravelGroups

🃏 t.me/MentionHex
Download Telegram
Armin's Notes 🪴
دیتاست
دیتاست: مجموعه‌ای از داده‌های ساختار یافته هست.
این مجموعه داده میتونه هرچیزی باشه از یک دیتابیس برای پروژه‌تون گرفته تا یک فایل pdf یا حتی یک وبسایت مثل ویکی پدیا
🔥4👍1
Armin's Notes 🪴
⚠️ حالا اینکه معنای کلمات رو چطوری میفهمه رو جلوتر توضیح میدم و این همون چیزیه که ما امشب قراره باهاش کار کنیم و درموردش صحبت کنیم)
خب بیایم سراغ این‌که "یک ماشین چطوری معنا و مفهوم کلمات رو تشخیص میده و درک میکنه؟"

به پروسه‌ای که معنا و مفهوم کلمات رو به ماشین میفهمونه Word Embedding میگیم.

- این اصطلاح Word Embedding غیررسمی بوده و بخاطر محبوبیت روش های استفاده شده توی این راستا تو حوزه یادگیری عمیق به این اسم معروف شده.
توی زبان شناسی محاسباتی (پروسه‌ای که ‌‌Word Embedding هم زیرمجموعه‌ش میشه) و توی مقالات و مستندات رسمی از عبارت‌هایی مثل
- Distributional semantic model
هم استفاده میکنن دلیلش هم اینه که نظریه‌ای که پایه و اساس این ماجرا هاست (Underlying Semantic Theory) به Distributional semantic معروفه.

https://en.wikipedia.org/wiki/Word_embedding
👏5👍1
Armin's Notes 🪴
خب بیایم سراغ این‌که "یک ماشین چطوری معنا و مفهوم کلمات رو تشخیص میده و درک میکنه؟" به پروسه‌ای که معنا و مفهوم کلمات رو به ماشین میفهمونه Word Embedding میگیم. - این اصطلاح Word Embedding غیررسمی بوده و بخاطر محبوبیت روش های استفاده شده توی این راستا تو…
من زیاد این مفهوم و کانتکس رو براتون فنی باز نمیکنم و سعی میکنم خیلی خلاصه و عامیانه بگم بهتون به ۲ دلیل

۱. من متخصص ai نیستم و خیلی newbie ام توی این حوزه پس ممکنه اگه بخوام تکنیکالی و عمیق توضیح بدم کارو خراب کنم و دیتای اشتباه بدم بهتون
۲. شما نیازی ندارید از این کانال دیتای عمیق و تکنیکال تو این حوزه بدست بیارید و همین دیتای سطحی براتون کفایت میکنه که متوجه بشید ماجرا چیه و اگه علاقه‌مند شدید خودتون برید درموردش تحقیق کنید.

⚠️ باز هم تاکید میکنم که من خودم تازه این مسیر رو شروع کردم و به هیچ یک از پیام‌ها و صحبتای من بدون سرچ اتکا نکنید - شاید یک بخش یا کلمه رو سهوا اشتباه منتقل کرده باشم هرچند که قبل از نوشتن هرکدوم از این پیام ها کلی سرچ میزنم که همچین موردی پیش نیاد 🙏♥️
🔥6🙏2👍1
تصور کنید که کلمات مثل نقطه‌هایی در فضا هستند. در روش‌های قدیمی، ما فقط وجود یا عدم وجود یک کلمه را در نظر می‌گرفتیم، مثلاً اگر کلمه "کتاب" در جمله بود، یک مقدار ۱ و اگر نبود، مقدار ۰ به آن می‌دادیم. اما این روش هیچ مفهومی از شباهت بین کلمات به ما نمی‌داد. مثلاً "کتاب" و "دفتر" هر دو وسیله نوشتاری هستند، اما مدل‌های قدیمی این ارتباط را درک نمی‌کردند.

🔹 حالا Word Embedding چکار می‌کند؟
درواقع Word Embedding کلمات را به اعداد چندبعدی (بردارها) تبدیل می‌کند. این اعداد طوری آموزش داده می‌شوند که کلماتی که معنای مشابه دارند، به هم نزدیک‌تر باشند. مثلاً "پادشاه" و "ملکه" یا "کتاب" و "دفتر" در فضای برداری به هم نزدیک‌تر هستند.

🔹 مثال ساده:
فرض کنید سه کلمه داریم: "پادشاه"، "ملکه" و "کتاب". در فضای Word Embedding، فاصله بین "پادشاه" و "ملکه" کمتر از فاصله بین "پادشاه" و "کتاب" است، چون معنای آن‌ها به هم نزدیک‌تر است.

🔹 مزایای Word Embedding:
۱. درک بهتر معنای کلمات توسط ماشین
۲. شناسایی روابط بین کلمات
۳. بهبود نتایج در جستجو و ترجمه ماشینی
🔥72👍1
ℹ️ ساده تر بخوایم تعریفش کنیم به این صورت میشه که:

ما با استفاده از Word Embedding میتونیم تمام کلمات و لغت‌های استفاده شده توی یک زبان رو توسط یک مجموعه‌ای از اعداد اعشاری در قالب بردار (Vector) بیان کنیم.

پس میشه گفت که Word Embedding ها - بردار (Vector) های n بعدی هستن که تلاش میکنن معنای لغت‌ها و محتواشون رو با مقادیر عددی‌شون بیان کنن.

هر مجموعه‌ای از اعداد که ما توی این سناریو در دسترس داریم یک "Word Vector" یا بردار کلمه به حساب میاد.

⚠️ نکته‌ای که وجود داره اینه که این بردار کلمات ممکنه همیشه برای سودمند نباشن.

چه بردار کلماتی برای ما سودمند هست؟
- بردارهای کلماتی برای ما سودمند هستند که معنا و مفهوم و ارتباط کلمات رو دقیقا همونطوری که به صورت طبیعی استفاده میشن بیان کنن.

منظور از طبیعی چیه؟
- روالی که توسط انسان اتفاق میفته و ارگانیک هست رو طبیعی میگیم.

مثلا ما میدونیم گربه و پیشی - سگ و هاپو باهم مرتبط هستند.

ماشین اگه توی بردار کلماتی این شباهت و ارتباط رو نتونه تشخیص بده برای ما سودمند نخواهد بود.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🔥1
بیاید یک مرحله برگردیم عقب تر - حالا که ما میدونیم اگر متن هامون رو تبدیل به بردارها و مجموعه‌ای از اعداد کنیم و به ماشین بدیم میتونه معنی‌شون رو بفهمه؛ چطوری میتونیم این پروسه رو انجام بدیم؟


در ساده ترین حالت ممکن به روش‌هایی که داده‌های متنی Encoding Techniques میگن.

تکنیک هایی مثل
One Hot Encoding
Label Encoding
TF-IDF
توی این دسته قرار میگیرن که جلوتر درموردشون صحبت میکنیم.

اماااا - ‌‌‌Word Embedding درواقع نوع پیشرفته تری از همین Encoding Technique ها هستش که نه تنها وجود کلمه - بلکه معنا و ارتباطاتش رو هم با کلمات دیگه و موضوع کوئری شما در نظر میگیره.

توی Word Embedding روش هایی مثل موارد زیر رو داریم:
Word2Vec
GloVe
FastText
که درمورد اینا هم جلوتر صحبت میکنیم.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
بردار های کلمه چطوری کار میکنن؟

فرض کنید که ما یک لغت‌نامه داریم که داخلش ۵ تا کلمه داریم

۱. پادشاه
۲. ملکه
۳. مرد
۴. زن
۵. بچه

بر اساس این لغت نامه - اگه از روش one-hot بریم و متنمون رو encode کنیم - خروجی چیزی به این صورت میشه
👍1
👍1
Armin's Notes 🪴
Photo
میتونید حدس بزنید چه کلمه ای رو encode کردیم؟


کلمه‌ی "ملکه" رو!

پس میبینید که one-hot برای ما یک بردار ساده ایجاد کرده و توی این بردار به تعداد لغاتی که توی لغت‌نامه‌مون داشتیم ایندکس ایجاد کرده و توی هر ایندکس متناظر با اون کلمه به ما میگه که متنی که داریم میدیم وجود داره یا خیر
👍1🔥1
توی این حالت درواقع ما نمیتونیم هیچ مقایسه معناداری بین دوتا بردار داشته باشیم - فقط و فقط میتونیم مساوی بودن یا نبودن بردار هارو بررسی کنیم.

چرا؟ چون بردار دو کلمه ملکه و پادشاه به این صورت میشه

ملکه:
0 1 0 0 0

پادشاه:
1 0 0 0 0
👍1👏1
Armin's Notes 🪴
توی این حالت درواقع ما نمیتونیم هیچ مقایسه معناداری بین دوتا بردار داشته باشیم - فقط و فقط میتونیم مساوی بودن یا نبودن بردار هارو بررسی کنیم. چرا؟ چون بردار دو کلمه ملکه و پادشاه به این صورت میشه ملکه: 0 1 0 0 0 پادشاه: 1 0 0 0 0
طبیعتا ما نمیتونیم روی این دو بردار جز مساوی بودن هیچ مقایسه‌ی دیگه‌ای انجام بدیم.

پس... اینجاست که Word Embedding میاد و با استفاده از تکنیک هایی مثل Word2Vec مارو از این حالت نجات میده و وارد یه مرحله جدیدتر میکنه.

توی این حالت - ما بردارهای چندبعدی و انتزاعی خواهیم داشت که به ما کمک میکنن که بتونیم مقایسه‌هارو دقیق‌تر و بهتر انجام بدیم.
👏5👍1
فرض کنید که ما لیستی از صفت‌ها داشته باشیم

مثلا حکمرانی - مردانگی - زنانگی - سن و ...

اگه هر کلمه‌ای که به ما داده میشه رو توی این لیست قرار بدیم و به ازای هر صفت بهش وزن بدیم چه اتفاقی میفته؟

خروجی چیزی شبیه به این عکس میشه:
👍1🔥1
👍2
پادشاه خصوصیت های حکمرانی و مردانگی خیلی زیادی داره اما زنانگی رو خیلی کم داره (به اون اعداد وزن میگیم)

همینطور برای ملکه - زن - شاهزاده و ...

این دقیقا همون Vector ما میشه که میتونه معنا و مفهوم کلمه رو توی خودش نگه‌داره و اون رو بیان کنه.
👍6
حالا چرا روش one-hot جوابگو نیست؟

این عکس رو ببینید:
Armin's Notes 🪴
Photo
ما فقط ۹ کلمه توی لغت‌نامه‌مون داریم اما تعداد سطر و ستون هارو ببینید!

اگه ما یک لغت‌نامه با ۵۰ هزار کلمه داشته باشیم باید برای هر کلمه ۴۹ هزار و ۹۹۹ ایندکس با مقدار ۰ و یک ایندکس با مقدار ۱ ذخیره کنیم.

خیلی زیاده نه؟ :))

مشکل بعدی چیه؟ اینکه ماتریس نهایی خیلی تنک میشه چون از حجم خیلی زیادی ۰ تشکیل شده و عملا دیتای به خصوصی به ما نمیده
- لغت‌نامه دهخدا: تنک. [ ت َ ن ُ / ت ُ ن ُ ] ( ص ) کم و اندک.


و بزرگترین مشکل چیه؟
اینکه هیچ اشتراک اطلاعاتی بین کلمات و معناشون وجود نداره چون همه چیز توی یک فضای برداری با فاصله یکسان قرار دارن

مثلا همون عکس بالارو ببینید - هرکلمه توی یک بردار 9x1 هست.
👍1
خب پس راه حل چیه؟

این‌که ما تکنیک Encodingمون رو تغییر بدیم.

اگه بخوایم تعداد ستون هارو کاهش بدیم و یک ارتباطی بینشون برقرار کنیم چیکار باید کنیم؟
👍1
Armin's Notes 🪴
Photo
این روش همون کاریه که ما باید انجام بدیم.

حالا اگه لغت نامه ۹ کلمه‌ایمون رو بخوایم بهینه کنیم خروجی چطوری میشه؟
👍1
👍3
حالا اگه بخواید برای هرکلمه وزن دهی انجام بدید و بجای اون اعداد صفر مقادیری رو ست کنید که بین ۰ تا ۱ باشن - برای هر ویژگی چه عددی ثبت میکردید؟


⚠️ عکس پایین شامل مقادیر پیشنهادی (تقریبی و برای آموزش هستن) - میتونید بعد از فکر کردن روی جدول بالا عکس پایین رو ببینید
👍1