آیا می دانستید دوره های آموزشی مجتمع فنی و حرفه ای دارالفنون مطابق با استاندارد ها و با مدرک بین المللی است ؟

هوش مصنوعی چیست و چه کاربردی دارد

چیزی که با نام «هوش مصنوعی» شناخته میشه، مجموعه تکنیک‌ها و علومی هستن که درواقع «به دنبال تحقق هوش مصنوعی» هستن. یک مفهوم واحد و مستقلی وجود نداره که کسی بخواد با برنامه منظم شروع به یادگیریش بکنه و درک خوبی از مفهوم گسترده هوش‌مصنوعی داشته باشه. هوش مصنوعی یک نیاز و خواست بشر هست که یک زمانی مطرح شده و تا به الان به دنبالش هستیم و شاید تا ۱۰۰ سال آینده به صورت جدی به دنبالش باشیم تا به مرحله قابل قبولی برسه و بشه با هوش انسانی مقایسه‌اش کرد۴۵. یعنی سیستم‌هایی ایجاد کنیم که توانایی یادگیری و تفکر و توسعه خودکار داشته باشن. این هدف نهایی هست ولی قبل از رسیدن به اون، روشهایی ضعیف‌تر و ابتدایی‌تر هم توسعه پیدا کردن که امروزه شاهدشون هستیم و ازشون استفاده می‌کنیم. در محیط آکادمیک هم مجموعه‌ای از این روشها در قالب واحدهای درسی بحث میشه و به هیچ وجه یک روش ثابت برای این مساله وجود نداره.

در طول سالیان گذشته تکنیک‌هایی برای شبیه‌سازی هوشمندی به صورت مصنوعی توسعه داده شده که هر کدام برای کاربردهای مختلف توصیه میشه. روشهایی مثل شبکه‌های عصبی و سیستم‌های فازی و… این روشها معادل دقیق مفهوم هوش مصنوعی نیستن بلکه فعلا تنها دستاوردهای ما در این حوزه و نزدیکترین ایده‌ها به هدف اصلی سیستم‌های هوشمند هستن و برای همین با تمام ابهامات و مشکلاتشون زیر چتر تکنولوژی هوش مصنوعی قرار می‌گیرن. در این پاسخ من مواردی که از نظر خودم مهم هست رو به ترتیب و ساده‌ترین شکلی که می‌تونم، به عنوان مسیر یادگیری شما پیشنهاد می‌کنم.

شروع فرایند یادگیری

پیشنهاد من به این شکل هست:

  1. تقویت پایه ریاضی (بسیار بسیار مهم). حداقل تسلط بر تئوری احتمالات و جبر خطی
  2. مطالعه تئوری یادگیری ماشین – کتاب تام میشل یک کتاب کلاسیک و معروف و البته قدیمی در این زمینه هست. یکی از منابع بسیار عالی کلاس Andrew Ng در دانشگاه استنفورد هست.
  3. انتخاب یک تکنیک یادگیری ماشین یا همان هوش مصنوعی(مثل شبکه‌های عصبی). فعلا قوی‌ترین جنبه هوش مصنوعی همین یادگیری ماشین هست و تمرکزتون میتونه این موضوع باشه. یک شروع خوب میتونه کتاب Laurene Fausett باشه که خوب هست.

همچنین کتاب دکتر محمدباقر منهاج که به زبان فارسی منتشر شده، واقعا فوق‌العاده برای درک بهتر موارد ذکر شده، از هر کدوم توضیح کوتاهی ارائه میدم:

 

اهمیت ریاضیات

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

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

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

 

یادگیری ماشین

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

به روش‌های رایج برنامه اون رو می‌نویسیم و برنامه با دقت کار خواهد کرد. اما بعضی مسائل هستند که مدل یا الگوریتم رو در اختیار نداریم و نمی‌تونیم داشته باشیم، برای همین اصولا برای بعضی مسائل نمیشه به صورت سنتی برنامه‌نویسی کرد. به عنوان یک مثال، تصور کنید میخواهیم تصاویر رو دسته‌بندی کنیم و مثلا تصاویر سگ و گربه رو تشخیص و از هم جدا کنیم.

در این حالت نمیشه یک برنامه نوشت که تمام حالت‌ها رو از این دو دسته توش مشخص کرد و به برنامه گفت هر وقت مشابه اینها رو دیدی به عنوان گربه یا سگ در نظر بگیر! چرا که دامنه مساله بسیار گسترده هست و نمی‌تونیم با برنامه‌نویسی سنتی این مشکل رو با کارایی خوبی حلش کنیم.

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

در اینجا مفهوم «مدل» رو معادل الگوریتم اصلی یک برنامه در نظر بگیرید و یادگیری ماشین رو روشی برای استخراج و کشف اتوماتیک اون الگوریتم. برای اینکه از این بحث «یادگیری» درک درستی داشته باشید کتابهای مربوط به تئوری یادگیری ماشین، مثل کتاب تام میشل رو بخونید.

 

شبکه‌های عصبی مصنوعی

به زبان ساده، شبکه‌های عصبی مکانیزمی محاسباتی هستند که عملکردی مشابه سلولهای داخل مغز دارند (نورون) و اجازه میدن الگوهایی رو از بین داده‌های ورودی استخراج و ذخیره کنیم (دانش) و از اونها برای انجام یک سری تخمین در آینده استفاده کنیم. برای درک بهتر، اینطور فرض کنید که الگوریتم حل یک مسئله رو، از درون مثالهای فراوانی که از قبل برای اون مسئله موجود هست (خود سوال به همراه جواب صحیح) به صورت خودکار پیدا کنیم و مسائل جدید‌تر از همون نوع رو با اون الگوریتم تازه کشف شده حل کنیم.

به لحاظ فنی، کاری که می‌کنیم این هست که ساختار داده‌ای مشابه نورون در مغز ایجاد می‌کنیم (مدل ریاضی یا ساختار داده‌ای مشابه گراف) و یک شبکه بین این واحد‌های داده کوچک ایجاد می‌کنیم. هر مساله ساختار خاص خودش رو می‌طلبه و با فرآیند آموزش، وزن بین واحدها (معادل شدت ارتباط بین دو نرون در مغز- وزن یالهای گراف) رو تعیین می‌کنیم. هر واحد به تنهایی اهمیتی نداره و چیزی که مهمه اجتماع اون واحدها باهم و نحوه ارتباطشون هست که مشخص میکنه شبکه عصبی ما چه وظیفه‌ای رو با چه کیفیتی میتونه انجام بده.

اینکه وزنها بهتر تنظیم بشن بستگی زیادی به دیتای ورودی (به منظور آموزش شبکه) داره و معمولا دیتای خوب و کافی خروجی خوبی رو هم برای شبکه به ‌همراه خواهد داشت. شرکتهایی نظیر گوگل چون به دیتای دسته‌بندی شده با کیفیت بسیار زیادی دسترسی دارن، شبکه‌های بهتری رو هم میتونن آموزش بدن و البته همین موضوع دسترسی به دیتای خوب و کافی یکی از مشکلات بسیار جدی این حوزه هست. بدون دیتای آموزشی، الگوریتم به تنهایی تقریبا ارزشی نداره و در اغلب مواقع ارزش دیتای آموزشی بسیار بیشتر از الگوریتم هست و هزینه بیشتری هم برای فراهم کردنش میشه.

 

بحث Deep Learning

اخیرا بحث Deep Learning مطرح شده و ممکنه در تحقیقاتتون خیلی به این موضوع برخورد کنید و شاید نتونید در ابتدا فرقش رو با مخصوصا شبکه‌های عصبی متوجه بشید. باید بگم که در واقع هیچ فرقی ندارند. Deep Learning در واقع «فقط یک نام جدید و بدون پشتوانه علمی» هست که برای مباحث مربوط به یادگیری ماشین و مخصوصا شبکه‌های عصبی مطرح شده و بیشتر یک مفهوم مارکتینگ هست.

در چند سال اخیر در بحث شبکه‌های عصبی پیشرفت‌هایی رخ داده (افزایش لایه‌های شبکه عصبی بدون ایجاد مشکلاتی مثل Vanishing Gradient و کارهای خوبی در این زمینه انجام شده، و افرادی برای اینکه کارهاشون رو طوری معرفی بکنن که کاملا نو و جدید به نظر برسه، این نام جدید رو ابداع کردن و شما می‌تونید شبکه‌های عصبی و Deep Learning رو یک چیز در نظر بگیرید. هر جایی آموزش Deep Learning دیدید در واقع دارید همون آموزش شبکه‌های عصبی رو می‌خونید که چند دهه قدمت داره و اصلا بحث جدیدی نیست و بهتره این موضوع رو به صورت تبلیغات و هایپ بهش نگاه کنید.

این نام جدید توسط محافل آکادمیک معتبر معمولا مورد قبول نیست و اغلب در سایتهای خبری به میزان زیادی قابل مشاهده هست تا توجه مردم رو بهتر جلب بکنه و ظاهرا کارکرد سرمایه، یک بخشیش به این شکل هست!

 

استفاده از فریمورک‌های آماده

شاید در تحقیقاتتون به مواردی غیر از این مفاهیمی که در این پاسخ گفتم برسید مثل آموزش‌های نرم‌افزارها و فریمورک‌هایی مثل TensorFlow و AutoML و مواردی از این دست. باید بدونید که این بسته‌های نرم‌افزاری صرفا برای راحت‌تر کردن کار هستند و برای این ایجاد شدن که یک برنامه‌نویس بدون داشتن دانش تخصصی از بحث یادگیری ماشین یا هوش مصنوعی بتونه برنامه‌های هوشمند بسازه.

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

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

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

 

  • انتشار : 1 ماه قبل