
سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
مدل الگوریتم فضای برداری – شباهت کسینوسی
در جلسات قبلی، در مورد مفاهیم و هدف الگوریتم مدل فضای برداری صحبت کردیم و به چند نمونه از کاربردهای این الگوریتم در فناوریهای امروزی اشاره ای داشتیم. همچنین، با نمونه های مدلسازی مختلف، نشون دادیم که روابط معنایی چطور برای ماشین ها تعریف شده اند؛ این جلسه، قصد داریم یکی دیگه از روش های مدل سازی و پردازش زبان طبیعی در فضای برداری رو با هم مرور کنیم تا بحثمون در مورد این الگوریتم کامل بشه و بریم سراغ بخش های دیگر دنیای هوش مصنوعی و یادگیری ماشین. پس میریم سراغ مدل سازی جدیدمون با عنوان شباهت کسینوسی. اما قبل از ورود به این بحث، لازمه که یه مروری به دنیای ریاضیات داشته باشیم...
ضرب داخلی بردارها
در دنیای امروزی، بسیاری از پدیده ها از جمله پدیده های فیزیکی، توسط بردارها مدل سازی می شوند. از مهم ترین مفاهیم فیزیکی که توسط بردارها تجزیه و تحلیل میگردند، میتونیم به گشتاور، مباحث کار در فیزیک، قانون دوم و سوم نیوتون و سایر مباحث فیزیک مکانیک اشاره کنیم. همچنین، بردارها در دنیای الکتریسیته و مغناطیس از جمله میدان های الکتریکی، میدان های مغناطیسی، دو قطبیهای الکتریکی، الکترومغناطیس و ... کاربرد فراوانی داره. پس آشنایی با این مبحث ریاضی، علاوه بر آشنایی ما با الگوریتم مدل فضای برداری، موجب میشه تا بعدها علومی مثل مکانیک و برق رو بهتر از قبل بشناسیم. در دنیای بردارها، اعمال جبری مانند جمع و تفریق بردارها و همچنین ضرب داخلی و ضرب خارجی بردارها صورت میگیره که همه این اعمال جبری، در مباحثی که بالا بهش اشاره کردیم، کاربرد داره.
ضرب داخلی بردار یا ضرب نقطه ای بردارها،زمانی هست که ما می خواهیم تصویر یک بردار رو روی اون یکی بردار به دست بیاریم. توجه داشته باشید که پاسخ این ضرب، یک عدد اسکالر است. این ضرب به شکل زیر نمایش داده میشه:
a · b
برای درک بهتر مفهوم این ضرب، به شکل زیر توجه کنید :

دو بردار a و b رو در شکل میبینید که با زاویه از همدیگر رسم شده اند؛ ما در ضرب برداری داخلی، میخوایم این دو بردار رو هم جهت کرده و سپس اندازه هاشون رو با همدیگه ضرب کنیم، پس برای از بین بردن تاثیر جهت و زاویه، باید تصویر یکی از بردارها رو روی اون یکی بردار به دست بیاریم. همونطور که در شکل مشاهده میکنید، تصویر بردار a روی بردار b برابر است با :
پس میشه گفت که حاصل ضرب برداری برابر است با :

از این رابطه، فرمول زیر به دست میاد :

این فرمول، در مبحث مدل سازی این هفته مون کاربرد مهمی داره که در ادامه بهش اشاره میکنیم.
فاصله اقلیدسی و شباهت کسینوسی
هفته قبل، با همدیگه نحوه مدل سازی مفاهیم رو توسط فاصله اقلیدسی بررسی کردیم و در انتها، به معایب این نوع مدل سازی اشارهای داشتیم. همونطور که در خاطرتون هست، نحوه ارزیابی فاصله مفاهیم در روش فاصله اقلیدسی، فاصله بردار ها از همدیگر بود. اما در روش شباهت کسینوسی و یاCosine similarity ، مبنای مقایسه ما، زاویه بین بردارها و حاصلضرب داخلی بردارها با همدیگه هست. برای مقایسه این دو روش، سه بردار موضوعی ((تاریخ))، ((کشاورزی)) و ((غذا و خوراکی)) را در نظر بگیرید که بر مبنای تکرار کلیدواژههای ((خورشید)) و (( قحطی)) به شکل بردار رسم شده اند. این سه بردار رو در شکل زیر مشاهده می کنید:

حال فرض کنید قصد داریم برای ماشین تعریف کنیم که کدام یک از موضوعات ((غذا و خوراکی)) و ((تاریخ)) به موضوع ((کشاورزی)) نزدیکتر هستند. اگر مبنای مقایسه را روش اقلیدسی در نظر بگیریم، خواهیم داشت:
یعنی در این روش مقایسه، موضوع ((تاریخ)) به موضوع ((کشاورزی)) نزدیکتر است، اما ما در واقعیت میدونیم که اینطور نیست. پس اگه از این روش برای مدل سازی برای ماشین استفاده کنیم، امکان بروز خطا در برخی از موارد وجود داره.
حال زاویه بردارها رو مبنایی برای مقایسه قرار میدیم،پس خواهیم داشت:
در این روش، موضوع (( غذا و خوراکی)) به موضوع ((کشاورزی)) نزدیکتر است. پس مبنا قرار دادن زاویه به جای مبنا قرار دادن فاصله، مدل سازی بهتر و دقیق تری رو برای ماشین طراحی میکنه. به این مدل سازی، شباهت کسینوسی گفته میشود.
مدل سازی مفاهیم با شباهت کسینوسی
در این بخش قصد داریم با یه مثال ساده، نحوه مدل سازی مفاهیم رو با استفاده از روش شباهت کسینوسی یاد بگیریم . خاطرتون باشه که هر موقع صحبت از مدل سازی برای ماشین هست، یعنی می خواهیم پدیده های فیزیکی، زیستی و انسانی رو تبدیل به متغیرها و اعداد کنیم؛ چون ماشین، زبان اعداد رو می فهمه، نه زبان انسان رو. تو این مثال، ما می خوایم میزان نزدیکی دو مفهوم ((تاریخ)) و (( کشاورزی)) رو با مبنا قرار دادن تکرار کلیدواژه های ((خورشید)) و ((بیماری)) رو بدست بیاریم. در شکل زیر، بردارهای مربوط به این دو مفهوم رسم شده است.
اگه زاویه بین این دو بردار رو در نظر بگیریم، پس هدفمون این هست که مقدار رو بدست بیاریم. طبق فرمولی که بالا براتون توضیح دادیم، داشتیم:
همونطور که از شکل مشخص هست، مختصات بردار a، (40,20) و مختصات بردار b، (20,30) هست . پس صورت کسر مساوی است با :
در مخرج کسر، مشاهده می کنید که بردارها داخل قدرمطلق نوشته شده اند. همونطور که خاطرتون هست، وقتی برداری داخل قدر مطلق قرار داده میشه، به این معنی هست که اندازه بردار رو باید محاسبه کنیم. پس داریم:
بنابراین بدست میاد :
به این ترتیب ما از میزان نزدیکی این دو موضوع مدل سازی کردیم. عدد بدست اومده رو زمان برنامه نویسی، به ماشین میدیم تا به وسیله این عدد، میزان نزدیکی این دو موضوع براش تعریف بشه.
در روش مدل سازی از طریق شباهت کسینوسی، اگر زاویه بین بردار ها صفر باشد، به این معنی است که دو موضوع با هم کاملا مشابه هستند و اگر زاویه بین بردارها 90 درجه باشد، به این معنی است که دو موضوع کاملا از هم مجزا هستند. در شکل زیر، این دو وضعیت رو میتونید مشاهده کنید :
خب بدین ترتیب، ما در این چند هفته، با الگوریتم مدل فضای برداری، اهداف و کاربردهای مختلف اون و روش های مدل سازی از جمله: مدل سازی کلمه با کلمه، مدل سازی کلمه با موضوع ، مدل سازی از طریق فاصله اقلیدسی و مدل سازی از طریق شباهت کسینوسی آشنا شدیم و ریاضیات مربوط به این موضوعات رو با همدیگه مرور کردیم. مثال هایی که در این چند مقاله بررسی کردیم، همگی در فضای دو بعدی و یا نهایتا سه بعدی بود. اما در واقعیت، این محاسبات در فضای n بعدی صورت میگیره. چون نیازه این مدل سازی همه موضوعات مختلف و با مبنا قرار دادن تعداد بیشماری کلیدواژه انجام بگیره. در این حالت محاسبات از طریق دستی کار محالی هستش؛ اما از طریق برنامه نویسی میشه برنامه ای نوشت که این محاسبات رو در کسری از ثانیه انجام بده که همین مسئله، الگوریتم مدل فضای برداری رو به وجود آورده. بنابراین، با یادگرفتن زبان های برنامه نویسی مرتبط، همه این مفاهیم رو میشه به صورت کد و با زبان برنامه نویسی، تمرین کرد و در تحلیل های مختلف به کار برد. امیدوارم که مطالب این هفته براتون مفید واقع شده باشه . با ما همچنان همراه باشید تا با موضوعات دیگه در زمینه هوش مصنوعی و یادگیری ماشین آشنا بشیم.
منابع :
Deeplearning.ai
Aparat.com/technoamooz
Cuemath.com/algebra/dot/dot-product/
دوستان عزیزم؛ برای ارتباط با برترها و رزرو پشتیبان ویژه پیج کانون برترها را دنبال کنید.
همچنین میتوانید با شماره 0218451 داخلی 3123 تماس بگیرید.

