هوش مصنوعی دقیقا چیه؟ (2)
وقتی صحبت از هوشمندی و هوش مصنوعی میشه، بیشتر از اینکه
بیشتر از اینکه به یه برنامهی کامپیوتری با کدای عجیب غریب فکر کنیم،
یه ربات انساننمای هوشمند میاد تو ذهنمون.
یه ربات میتونه تعداد زیادی از شاخههای هوش مصنوعی رو تو خودش جا داده باشه.
از یادگیری ماشین و پردازش زبان طبیعی گرفته تا بینایی ماشین و چیزای دیگه.
کنار اینا از ابزارهای مکانیکی هم استفاده میکنه برای
حرکت و جابجایی و انجام دادن کارایی که بهش محول میشه.
حالا بیایید خودمون یه برنامهی سادهی هوش مصنوعی بنویسیم که
از اطلاعاتی که ما بهش میدیم یاد بگیره، بعد وقتی که اطلاعات جدید
بهش دادیم بر اساس اون چیزایی که یاد گرفته بیاد جواب درست به ما بده.
اینجا هدفم، آموزش برنامهنویسی یادگیری ماشین نیست، فقط میخوایم ببینیم
که یه برنامهی خیلی ساده که یادگیری انجام میده، چجوری اینکارو میکنه.
خب برنامه رو به زبان پایتون مینویسم.
یادگیری ماشین، همونطور که گفتم، با استفاده از دادههای زیاد انجام میشه.
که این دادهها هم هر چیزی میتونن باشن مث عکس، فیلم، متن.
سایتای زیادی وجود دارن که دادههای رایگان در اختیار شما میذارن.
من از این سایت استفاده میکنم که لینکشو میذارم زیر ویدیو:
این سایت یه مجموعه داده داره دربارهی ماشینا.
یعنی یه نفر یا چند نفر اومدن از روی ماشینای واقعی،
یه سری اطلاعات جمعآوری کردن و داخلش ذخیره کردن.
اینجا سرچ میکنم car.... اولین گزینه رو میزنم.
اینجا Data Folder رو میزنم، اینجا فایل car.data فایلی که دیتا سِت ماست
یعنی اطلاعات ما توش ذخیره شده، اینو ذخیرش میکنم.
حالا نرمافزار py charm که برای برنامهنویسی پایتون
استفاده میشه رو باز میکنم یه پروژه توش ایجاد میکنم،
خب این فایل car.data رو...
که دانلود کردم میبرم تو محل ذخیرهی پروژهی پایتونم قرار میدم.
هرکدوم از این سطرا مربوط به یه ماشینه که چندتا اطلاعات درمورد این ماشینا داره.
اما الان مشخص نیست که هرکدوم مال چی هستن، برای همین تو خط اول
تعریف میکنم که هرکدوم از این ستونا مربوط به چی ویژگی هستن.
پس این خطو اضافه میکنم به... اولین خط این فایل.
خب ستون اول ارزش خرید یه ماشینو نشون میده که میتونه
خیلی بالا، بالا، متوسط یا پایین باشه، ستون دوم هزینهی نگهداریه
که اونم باز به همین شکل، ستون سوم تعداد درها، بعدی ظرفیت ماشین
تعداد اشخاصی که توش جا میشن، بعدی ظرفیت صندوق، بعدی مقدار امنیت ماشین
بعدیم که آخریه، کلاس اون ماشینه که چهار حالت مختلف میتونه داشته باشه:
un acceptable غیر قابل قبول، acceptable قابل قبول
good, very good یعنی خوب و خیلی خوب.
یعنی با توجه به این ویژگیهایی که هر ماشین داره،
حالا آیا این ماشین قابل قبول هست که بخریمش یا نه.
مثلا ماشین اول ارزش خریدش خیلی بالاس، هزینهی نگهداریش خیلی بالاس،
تعداد دراش دوتاس، ظرفیتش دوتاست، صندوقش کوچیکه، امنیتش پایینه،
درنهایت این یه ماشین غیر قابل قبوله un acceptable. بقیهام به همین شکل.
حالا ما میخوایم یه برنامه بنویسیم که بیاد ویژگیای یه تعدادی از این ماشینا رو
ببینه بعد کلاسشونم نگاه بکنه، بعد یاد بگیره که مثلا ماشینی که
فلان ویژگیها رو داره تو کدوم کلاس قرار میگیره.
بعدش ویژگیای ماشینای جدیدی که تا حالا ندیده رو بدیم بهش، ببینیم
با استفاده از چیزایی که تا حالا یاد گرفته چقدر میتونه کلاس ماشینا رو درست حدس بزنه.
پس بریم برنامهشو بنویسیم:
خب اول، پکیجهایی که برنامهم نیاز داره بهش وارد میکنم:
حالا فایلی که دادهها توش ذخیره شدنو وارد برنامه میکنم:
تو مرحلهی بعدی، دادههامو از حالت متنی به حالت عددی تبدیل میکنم
چون الگوریتمهای یادگیری فقط با اعداد میتونن کار کنن:
حالا از تمام اطلاعاتی که دارم، دو تا لیست جدا میسازم.
یه لیست فقط حاوی اون فیلدی هست که میخوام
برنامهم بتونه پیشبینی کنه، یعنی کلاس ماشینها.
یه لیست هم حاوی بقیهی فیلدهاست یعنی ارزش خرید،
ظرفیت نگهداری، تعداد درها، ظرفیت صندوق وچیزای دیگه. پس:
تو این مرحله دو تا لیست قبلی رو دوباره هرکدوموشونو
تقسیم میکنم به دو تا لیست دیگه.
دلیل این کار اینه که میخوام یه قسمت از اطلاعاتو بدم به برنامه
تا ازشون استفاده کنه برای یاد گرفتن، بعد یه قسمت دیگه از اطلاعاتم
کنار نگه دارم که برای برنامم کاملا جدید باشه و بعدا ازش
استفاده کنم برای آزمایش یادگیری برنامهم. پس:
حالا میام از یکی از الگوریتمای یادگیری که برای این دادهها مناسبه استفاده میکنم.
الگوریتمای مختلفی برای استفاده تو بحث یادگیری ماشین وجود داره.
اینکه از کدومشون استفاده کنیم بستگی به نوع دادهها داره
چون برای هر نوع داده، یکی از این الگوریتما بهتر جواب میده.
الان من ترجیح میدم از یه الگوریتم به نام KNN استفاده کنم. پس:
خب حالا برنامهی من با استفاده از الگوریتم KNN و اطلاعات یه تعدادی از
ماشینا که بهش دادم، تونسته یاد بگیره که هر ماشینی که فلان ویژگیها رو
داشته باشه، توی کدوم کلاس قرار میگیره.
اگه بخوام مقدار دقت یادگیریشم ببینم، این کد رو اضافه میکنم:
تو آخرین مرحله، میام اون دادههایی که قبلا کنار گذاشته بودم به برنامهم میدم
تا ببینم که با استفاده از چیزایی که تا الان یاد گرفته،
کلاس هر ماشینو چقدر میتونه دقیق حدس بزنه. بنابراین:
خب برنامه رو اجرا میکنم.
اینجا این بالا دقت یادگیریمو میبینید که 93 صدمه،
یعنی با یه دقت نسبتا خوبی تونسته یادگیری رو انجام بده برنامهی من.
اینجا کلاسه برای هر کدوم از ماشینا که بهش دادیم
کلاس پیشبینی، کلاسی که برنامهی من تونسته پیشبینی کنه اینه:
کلاس واقعی اون ماشین که تو دادهها بوده اینه:
میبینید که اکثر جاها برنامهی من تونسته درست پیشبینی بکنه.
پس به صورت خلاصه، کاری که کردیم این بود که یه برنامه نوشتیم که از روی
یه بخشی از اطلاعات ماشینا تونست یاد بگیره که مثلا هر ماشینی که دو تا در داره،
صندوقش بزرگه، امنیتش بالاست و این چیزا، یه ماشین قابل قبوله.
بعدش اومدیم اطلاعات یه سری ماشین جدیدو بهش دادیم تا با استفاده از اون چیزایی که
تا حالا یاد گرفته بتونه تشخیص بده که هرکدوم از این ماشینا مناسب خرید هستن یا نه.
این یه نمونهی خیلی خیلی ساده از یادگیری ماشین
یا به صورت کاملتر، هوش مصنوعی بود که خودمون ساختیمش.
هرچی اطلاعاتی که برنامه باهاش کار میکنه پیچیدهتر و بزرگتر باشه،
برنامه هم پیچیدهتر میشه و از الگوریتمای پیشرفتهتری استفاده میکنه.
کنار تمام نظرات مثبت و منفی که در مورد هوش مصنوعی وجود داره،
یه سوال همیشه ذهن منو مشغول میکنه.
اینکه شاید جهان هستی داره وارد یه فاز جدیدی از آگاهی میشه.
منظورم اینه که ما انسانا الان باهوشترین موجود این سیارهایم
ولی خب ایراداتی داریم مثل عمر کوتاه، بیماریای لاعلاج،
پرمصرف بودن، مشکلات روانی و احساسی، یا خیلی محدودیتای دیگه.
هوش مصنوعی حتی اگه فقط بتونه به اندازهی ما باهوش بشه،
نه بیشتر، بازم خیلی از این محدودیتای ما رو نداره.
شاید طبیعت داره وارد یه مرحلهی بهتری از آگاهی میشه و
این کارم داره از طریق ما انسانا انجام میده.
ما ابزار دست طبیعت شدیم برای ساختن یه هوش برتر،
بعدشم دیگه نیازی به وجود ما نیست و حذف میشیم.
شما هم حتما نظر خودتونو توی کامنتا بنویسید تا منم از اطلاعات شما یاد بگیرم.
اگه این ویدیو رو دوست داشتی یه لایک برام بزن و
یادت باشه که همیشه بدون ترس سوال بپرس.