سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
امیدوارم حالتون خوب باشه. همونطور که خاطرتون هست، در این مجموعه مطالب، قصد داریم با الگوریتم های مختلف هوش منصوعی و ریاضیات به کار برده شده در اونها آشنا بشیم . در دو هفته اخیر، با الگوریتم بیز ساده آشنا شدیم و کاربردهاش رو در یک مثال ساده بررسی کردیم . در ادامه روندمون، میخواهیم یک الگوریتم طبقه بندی و پردازش زبان طبیعی دیگه ای رو مورد بررسی قرار بدیم با نام مدل فضای برداری. هدف ما از آشنایی ما با این الگوریتم، نحوه طبقه بندی و بازیابی متن در هوش مصنوعی و یادگیری ماشین هست که برای یادگرفتن نحوه عمل این الگوریتم، برخی مسائل ریاضی مانند فضاهای برداری و ماتریس ها رو لازم خواهیم داشت و با همدیگر مرور خواهیم کرد.
الگوریتم مدل فضای برداری
الگوریتم مدل فضای برداری، در بسیاری از فناوری های مبتنی بر هوش مصنوعی مورد استفاده قرار میگیره که از مهم ترین اونها میشه به چت بات (Chat bot) اشاره کرد. چت بات یک نرمافزار هوش مصنوعی است که میتونه از طریق برنامههای پیامرسان، وبسایتها، اپلیکیشنهای موبایلی و یا تلفن، مکالمه (چت) با یک کاربر را به زبان طبیعی شبیهسازی کند. چت باتها اغلب به عنوان یکی از پیشرفتهترین و کارآمدترین ابزار، جهت تعامل بین انسان و ماشین محسوب میشوند. همین کاربرد به قدری مهم هست که به گفته فیسبوک، الان بالای 300 هزار ربات فعال در مسنجر وجود داره و بی شک در آینده نزدیک، بخش بزرگی از وظایف حوزه بازیابی و پشتیبانی مشتری توسط چت بات ها انجام خواهد گرفت. واسه همین آشنایی با این فناوری ها می تونه مقدمه ای باشه که در آینده بشه در زمینه هوش مصنوعی فعالیت کرد و به کسب و کارهای پردرآمد رسید. کاربرد دیگه ای که این الگوریتم داره، در ترجمه متون با استفاده از هوش مصنوعی هست؛ فناوری که باهاش در Google translate آشنا هستیم و روز به روز داره کامل و کامل تر میشه. کاربرد دیگه این الگوریتم در بازیابی و استخراج کلمات در اینترنت هست که در موتورهای جستجو باهاش سر و کار داریم.
از کاربردهای مهم دیگه ای که با الگوریتم مدل فضای برداری ممکن میشه، جذب وابستگی های لغات در یادگیری ماشین هست. بزارید این کاربرد رو با یک مثال براتون توضیح بدم . مثلا شما هنگام جستجو در موتور جستجو Google، عبارت (( آموزش یادگیری ماشین)) رو جستجو می کنید. موتور جستجو Google، هنگام بازیابی نتایج و کلمات، علاوه بر نتایجی که حاوی عبارت (( آموزش یادگیری ماشین )) هست، نتایج دیگری را نیز پیرامون موضوعاتی همچون ((آموزش پایتون)) ، (( آموزش الگوریتم های طبقه بندی)) و غیره را برایتان بازیابی می کند؛ چون موتور جستجو Google روابط معنایی را تشخیص می دهد و می داند که بین کلید واژه های (( یادگیری ماشین)) ، ((پایتون)) و غیره روابط معنایی وجود دارد که تشخیص این عمل با استفاده از الگوریتم های مدل فضای برداری امکان پذیر می باشد. برای یک نرم افزار مبتنی بر یادگیری ماشین، بسیار مهم است که این روابط معنایی را تشخیص دهد جان روبرت فرث، زبان شناس انگلیسی متولد 1980 ، اعتقاد دارد که برای تشخیص و شناختن بار معنایی یک کلمه، باید کلمات دیگری که با آن کلمه رابطه دارند را شناخت . این اصل زبان شناسی، مبنای کار در بخش پردازش زبانی طبیعی (NLP) در یادگیری ماشین می باشد. شکل زیر، کلیدواژه های مربوط و نزدیک به کلیدواژه (Machine learning) را نشان می دهد.
در ادامه و پس از توضیح کامل این الگوریتم، با کاربردهای دیگر مدل فضای برداری در قالب مثال ها هم آشنا خواهیم شد. خب پس هدف ما در این الگوریتم، همانطور که از اسمش هم پیداست، پیدا کردن مدلی برای روابط معنایی لغات و تعریف اون به ماشین هست . در ابتدا میریم سراغ مدل سازی کلمه با کلمه بر طبق این الگوریتم.
برای شروع درک و فهم بهتر این الگوریتم و کارهایی که می خوایم باهاش انجام بدیم ، دو جمله زیر رو در نظر بگیرید:

این دو جمله سوالی، دارای 3 کلمه مشترک هستند، اما به دلیل تفاوت در کلمه چهارم، معنی مشابهی ندارند که در پایین مشخص شده است :

حال دو جمله سوالی دیگر رو در نظر بگیرید که تمام کلمات آن متفاوت بوده و هیچ اشتراک لغوی ندارند، اما معنی آن ها یکسان است. برای مثال:

خب، تشخیص اینکه این دو جمله بدون اشتراک لغوی دارای معنای یکسانی هستند، برای انسان کار آسونی هست، اما همانطور که قبلا هم در موردش صحبت کردیم، برای یک ربات یا یک هوش مصنوعی، همه این مفاهیم باید تعریف بشه و تشخیص و تعریف روابط معنایی می تونه برای یک ماشین، چالش بزرگی باشه؛ مخصوصا که جملاتی مثل جملات مثال اول وجود دارند که تنها با تغییر یک کلمه، دارای بار معنایی کاملا متفاوتی هستند و بنابراین تنها اشتراک لغوی رو نمیشه به عنوان مبنایی برای تشخیص بار معنایی و روابط معنایی یک ماشین تعریف کرد. از این رو، الگوریتم هایی مثل مدل فضای برداری ایجاد شدند تا این کار رو برای ماشین ممکن کنند. مدل سازی کلمه به کلمه یکی از راه هایی هست که میشه به نوعی یک رابطه ای بین کلمات برای ماشین تعریف کرد.
مدل سازی کلمه با کلمه
در مدل سازی کلمه با کلمه، تعداد دفعاتی که دو کلمه در فاصله مشخصی مثل x در یک جمله آورده شدند رو محاسبه می کنیم. برای مثال دو جمله زیر رو در نظر داشته باشید:

می خواهیم ماتریسی تشکیل دهیم که در آن تعداد رخداد کلمات این دو جمله رو در فاصله 2 کلمه از کلیدواژه data رو اومده باشه. همونطور که می دونید ماتریس یک آرایش مستطیلی شکل از اعداد یا عبارات ریاضی هست که به صورت سطر و ستون شکل پیدا می کنه. کاربرد ماتریس ها در کد نویسی برای یادگیری ماشین خیلی زیاده و در الگوریتم مدل فضای برداری هم کاربرد فراوانی داره . خب برگردیم سمت مثالمون! در جدول زیر، تعداد تکرار یا رخداد کلمات simple، raw وI رو در فاصله X=2 کلمه data در دو جمله بالا آورده شده :

همانطور که میبینید، زیر کلمه simple نوشتیم 2 ، چون این کلمه در این دو جمله 2 بار در فاصله 2 کلمه یا کمتر کلیدواژه data ظاهر شده است.
اما زیر کلمه I نوشتیم صفر . چون با وجود اینکه این کلمه در هر دو جمله اومده، فاصله اش با کلمه data بیشتر از 2 کلمه بوده و پس در تحلیل ما به حساب نمیاد. سهم کلمه Raw هم یک بار تکرار بوده اونم در جمله دوم. خب پس ما یک ماتریسی تعریف می کنیم به اسم n . که این ماتریس میشه :

که این ماتریس ها بعدا در ادامه مدل سازی و کد نویسی به دردمون خواهد خورد . ولی در کل همونطور که دیدیم، در طراحی کلمه به کلمه ، معیار ما نزدیکی دو کلمه هست که به نوعی، نزدیک بودن دو کلمه به همدیگر در جملات فراوان، یک دلیل برای نزدیکی و رابطه داشتن دو کلمه می باشد.
خب، در هفته بعدی، قراره بریم و همین کار رو برای بررسی رابطه یک کلیدواژه با یک متن یا یک مقاله رو بررسی کنیم که در بازیابی کلمات و دسته بندی اطلاعات بسیار کاربرد داره . پس با ما همراه باشید ..
دوستان عزیزم؛ برای ارتباط با رتبه برترها صفحه اینستاگرام زیر رو دنبال کنید.

