Armin's Notes 🪴
Photo
میتونید حدس بزنید چه کلمه ای رو encode کردیم؟
کلمهی "ملکه" رو!
پس میبینید که one-hot برای ما یک بردار ساده ایجاد کرده و توی این بردار به تعداد لغاتی که توی لغتنامهمون داشتیم ایندکس ایجاد کرده و توی هر ایندکس متناظر با اون کلمه به ما میگه که متنی که داریم میدیم وجود داره یا خیر
کلمهی "ملکه" رو!
پس میبینید که 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 مارو از این حالت نجات میده و وارد یه مرحله جدیدتر میکنه.
توی این حالت - ما بردارهای چندبعدی و انتزاعی خواهیم داشت که به ما کمک میکنن که بتونیم مقایسههارو دقیقتر و بهتر انجام بدیم.
پس... اینجاست که Word Embedding میاد و با استفاده از تکنیک هایی مثل Word2Vec مارو از این حالت نجات میده و وارد یه مرحله جدیدتر میکنه.
توی این حالت - ما بردارهای چندبعدی و انتزاعی خواهیم داشت که به ما کمک میکنن که بتونیم مقایسههارو دقیقتر و بهتر انجام بدیم.
👏5👍1
فرض کنید که ما لیستی از صفتها داشته باشیم
مثلا حکمرانی - مردانگی - زنانگی - سن و ...
اگه هر کلمهای که به ما داده میشه رو توی این لیست قرار بدیم و به ازای هر صفت بهش وزن بدیم چه اتفاقی میفته؟
خروجی چیزی شبیه به این عکس میشه:
مثلا حکمرانی - مردانگی - زنانگی - سن و ...
اگه هر کلمهای که به ما داده میشه رو توی این لیست قرار بدیم و به ازای هر صفت بهش وزن بدیم چه اتفاقی میفته؟
خروجی چیزی شبیه به این عکس میشه:
👍1🔥1
پادشاه خصوصیت های حکمرانی و مردانگی خیلی زیادی داره اما زنانگی رو خیلی کم داره (به اون اعداد وزن میگیم)
همینطور برای ملکه - زن - شاهزاده و ...
این دقیقا همون Vector ما میشه که میتونه معنا و مفهوم کلمه رو توی خودش نگهداره و اون رو بیان کنه.
همینطور برای ملکه - زن - شاهزاده و ...
این دقیقا همون Vector ما میشه که میتونه معنا و مفهوم کلمه رو توی خودش نگهداره و اون رو بیان کنه.
👍6
Armin's Notes 🪴
Photo
ما فقط ۹ کلمه توی لغتنامهمون داریم اما تعداد سطر و ستون هارو ببینید!
اگه ما یک لغتنامه با ۵۰ هزار کلمه داشته باشیم باید برای هر کلمه ۴۹ هزار و ۹۹۹ ایندکس با مقدار ۰ و یک ایندکس با مقدار ۱ ذخیره کنیم.
خیلی زیاده نه؟ :))
مشکل بعدی چیه؟ اینکه ماتریس نهایی خیلی تنک میشه چون از حجم خیلی زیادی ۰ تشکیل شده و عملا دیتای به خصوصی به ما نمیده
- لغتنامه دهخدا: تنک. [ ت َ ن ُ / ت ُ ن ُ ] ( ص ) کم و اندک.
و بزرگترین مشکل چیه؟
اینکه هیچ اشتراک اطلاعاتی بین کلمات و معناشون وجود نداره چون همه چیز توی یک فضای برداری با فاصله یکسان قرار دارن
مثلا همون عکس بالارو ببینید - هرکلمه توی یک بردار 9x1 هست.
اگه ما یک لغتنامه با ۵۰ هزار کلمه داشته باشیم باید برای هر کلمه ۴۹ هزار و ۹۹۹ ایندکس با مقدار ۰ و یک ایندکس با مقدار ۱ ذخیره کنیم.
خیلی زیاده نه؟ :))
مشکل بعدی چیه؟ اینکه ماتریس نهایی خیلی تنک میشه چون از حجم خیلی زیادی ۰ تشکیل شده و عملا دیتای به خصوصی به ما نمیده
- لغتنامه دهخدا: تنک. [ ت َ ن ُ / ت ُ ن ُ ] ( ص ) کم و اندک.
و بزرگترین مشکل چیه؟
اینکه هیچ اشتراک اطلاعاتی بین کلمات و معناشون وجود نداره چون همه چیز توی یک فضای برداری با فاصله یکسان قرار دارن
مثلا همون عکس بالارو ببینید - هرکلمه توی یک بردار 9x1 هست.
👍1
خب پس راه حل چیه؟
اینکه ما تکنیک Encodingمون رو تغییر بدیم.
اگه بخوایم تعداد ستون هارو کاهش بدیم و یک ارتباطی بینشون برقرار کنیم چیکار باید کنیم؟
اینکه ما تکنیک Encodingمون رو تغییر بدیم.
اگه بخوایم تعداد ستون هارو کاهش بدیم و یک ارتباطی بینشون برقرار کنیم چیکار باید کنیم؟
👍1
Armin's Notes 🪴
Photo
این روش همون کاریه که ما باید انجام بدیم.
حالا اگه لغت نامه ۹ کلمهایمون رو بخوایم بهینه کنیم خروجی چطوری میشه؟
حالا اگه لغت نامه ۹ کلمهایمون رو بخوایم بهینه کنیم خروجی چطوری میشه؟
👍1
حالا اگه بخواید برای هرکلمه وزن دهی انجام بدید و بجای اون اعداد صفر مقادیری رو ست کنید که بین ۰ تا ۱ باشن - برای هر ویژگی چه عددی ثبت میکردید؟
⚠️ عکس پایین شامل مقادیر پیشنهادی (تقریبی و برای آموزش هستن) - میتونید بعد از فکر کردن روی جدول بالا عکس پایین رو ببینید
⚠️ عکس پایین شامل مقادیر پیشنهادی (تقریبی و برای آموزش هستن) - میتونید بعد از فکر کردن روی جدول بالا عکس پایین رو ببینید
👍1
میبینید که ما یک فضای ۳ بعدی تونستیم چند هزار برابر بهینه سازی نسبت به روش One Hot Encoding داشته باشیم - این همون کاریه که Word Embedding های مدرن برای ما انجام میدن.
مزایاشون چیه؟ فکر کنم میدونید و دیگه نیاز به گفتن هم نداره.
ما حتی با نگاه کردن به این بردار هم میتونیم ارتباط بین کلمات و صفتها و ... رو تشخیص بدیم. 😁
مورد بعدی اینه که کلمات مشابه - بردارهای مشابهتری دارن - مثلا embedding نهایی برای کلمه "خواب" و "بیداری" فاصله کمتری نسبت به "خواب" و "پادشاه" دارن.
منظور از فاصله - فاصله اقلیدسی هست.
این دوتا رفرنس رو یه نگاهی بندازید.
https://en.wikipedia.org/wiki/Cosine_similarity
https://www.sciencedirect.com/topics/computer-science/cosine-similarity
- جلوتر بیشتر درمودشون میگیم.
مزایاشون چیه؟ فکر کنم میدونید و دیگه نیاز به گفتن هم نداره.
ما حتی با نگاه کردن به این بردار هم میتونیم ارتباط بین کلمات و صفتها و ... رو تشخیص بدیم. 😁
مورد بعدی اینه که کلمات مشابه - بردارهای مشابهتری دارن - مثلا embedding نهایی برای کلمه "خواب" و "بیداری" فاصله کمتری نسبت به "خواب" و "پادشاه" دارن.
منظور از فاصله - فاصله اقلیدسی هست.
این دوتا رفرنس رو یه نگاهی بندازید.
https://en.wikipedia.org/wiki/Cosine_similarity
https://www.sciencedirect.com/topics/computer-science/cosine-similarity
- جلوتر بیشتر درمودشون میگیم.
👍3
مورد بعدی اینکه اگه دقت کنید ماتریس نهایی خیلی متراکم تر شده و داره دیتای بهتری رو به ما میده - ضمن اینکه روابط بین کلمات هم به وضوح مشخصه
مثلا شما اگه از پادشاه به سمت ملکه حرکت کنید - روند حرکتتون دقیقا مشابه حرکتی خواهد بود که از پسر به دختر انجام میدید.
مثلا شما اگه از پادشاه به سمت ملکه حرکت کنید - روند حرکتتون دقیقا مشابه حرکتی خواهد بود که از پسر به دختر انجام میدید.
👍2
نکتهای که وجود داره اینه که توی دیتای واقعی - بردارهای ما و ابعادشون خیلی زیاد میشه و ما نمیتونیم مثل عکس های بالا انتساب هارو دستی انجام بدیم و خروجیشون رو به راحتی نمایش بدیم - درنتیجه الگوریتم هایی مثل GloVe که بالاتر هم بهش اشاره کردیم ایجاد شده تا این زحمت رو از دوش ما برداره.
👍3
حالا فرض کنید ما یک لغتنامه بزرگتر داریم و یک سیستم هوشمند خصوصیات و وزندهی هارو برای ما انجام داده.
ما الان میتونیم یک خروجی انتزاعی از روابط کلمات بر اساس فاصله اقلیدسی کلمات لغتنامهمون و شباهتشون بر اساس شباهت کسینوسی ببینیم.
— رفرنس هاشون رو بالاتر هم ارسال کردم
خروجی چیزی شبیه این خواهد شد:
ما الان میتونیم یک خروجی انتزاعی از روابط کلمات بر اساس فاصله اقلیدسی کلمات لغتنامهمون و شباهتشون بر اساس شباهت کسینوسی ببینیم.
— رفرنس هاشون رو بالاتر هم ارسال کردم
خروجی چیزی شبیه این خواهد شد:
👍1
اگه دقت کنید - کلمات مشابه توی مکانهای مشابه قرار گرفتن - یعنی توی فضای N - D بعدی همگرا شدن و Vector های مشابهی دارن که درجهت مشابهی داره حرکت میکنه.
👍1