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
بردار های کلمه چطوری کار میکنن؟

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

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

بر اساس این لغت نامه - اگه از روش 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
🔥3👍1
میبینید که ما یک فضای ۳ بعدی تونستیم چند هزار برابر بهینه سازی نسبت به روش One Hot Encoding داشته باشیم - این همون کاریه که Word Embedding های مدرن برای ما انجام میدن.

مزایاشون چیه؟ فکر کنم میدونید و دیگه نیاز به گفتن هم نداره.


ما حتی با نگاه کردن به این بردار هم میتونیم ارتباط بین کلمات و صفت‌ها و ... رو تشخیص بدیم. 😁

مورد بعدی اینه که کلمات مشابه - بردار‌های مشابه‌تری دارن - مثلا embedding نهایی برای کلمه "خواب" و "بیداری" فاصله کمتری نسبت به "خواب" و "پادشاه" دارن.

منظور از فاصله - فاصله اقلیدسی هست.

این دوتا رفرنس رو یه نگاهی بندازید.

https://en.wikipedia.org/wiki/Cosine_similarity

https://www.sciencedirect.com/topics/computer-science/cosine-similarity

- جلوتر بیشتر درمودشون میگیم.
👍3
مورد بعدی اینکه اگه دقت کنید ماتریس نهایی خیلی متراکم تر شده و داره دیتای بهتری رو به ما میده - ضمن اینکه روابط بین کلمات هم به وضوح مشخصه

مثلا شما اگه از پادشاه به سمت ملکه حرکت کنید - روند حرکتتون دقیقا مشابه حرکتی خواهد بود که از پسر به دختر انجام میدید.
👍2
نکته‌ای که وجود داره اینه که توی دیتای واقعی - بردارهای ما و ابعادشون خیلی زیاد میشه و ما نمیتونیم مثل عکس های بالا انتساب هارو دستی انجام بدیم و خروجیشون رو به راحتی نمایش بدیم - درنتیجه الگوریتم هایی مثل GloVe که بالاتر هم بهش اشاره کردیم ایجاد شده تا این زحمت رو از دوش ما برداره.
👍3
حالا فرض کنید ما یک لغت‌نامه بزرگتر داریم و یک سیستم هوشمند خصوصیات و وزن‌دهی هارو برای ما انجام داده.

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

— رفرنس هاشون رو بالاتر هم ارسال کردم

خروجی چیزی شبیه این خواهد شد:
👍1