برو به محتوای اصلی

برای یاد گرفتن هوش مصنوعی از ابتدایی‌ترین مرحله، چه مرجعی را پیشنهاد می‌کنید؟

۵

من کجام؟ اینجا کجاست؟

در جواب‌کو می‌تونید در مورد هر موضوعی سوال کنید، به سوالای بقیه جواب بدید و تجربتون رو به اشتراک بگذارید!

سیاوش محمودیان
سیاوش محمودیان ، بنیانگذار جواب‌کو

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

شبکه‌های عصبی مصنوعی (Artificial Neural Networks)

خیلی از مباحث در هوش مصنوعی و الگوریتم‌های کامپیوتری، شبیه‌سازی مواردیه که انسان‌ها در اطرافشون می‌بینن. الگوریتم‌های بهینه‌سازی کلونی مورچه‌ها (Ant Colony) و الگوریتم ژنتیک (Genetic Algorithm) و یا حتی الگوریتم پرندگان یا همان اجتماع ذرات (Particle Swarm Optimization) چند مثال از این موارد هستند، ولی از نظر من هیچ شبیه‌سازی به زیبایی الگوریتم شبکه‌های عصبی مصنوعی نیست! در Artificial Neural Networks یا به اختصار ANN در واقع نحوه فکر کردن انسان‌ها شبیه‌سازی شده. در این مدل به صورت ریاضیاتی نورون‌ها و اتصال‌های بین این نورون‌ها شبیه‌سازی می‌شه و در واقع با ارائه مثال‌های زیاد به کامپیوتر می‌تونیم بهش کارهایی که بلد نیست رو یاد بدیم. من یه ویدیو خیلی ساده در مورد هوش مصنوعی و شبکه‌های عصبی مصنوعی۴۱۷ درست کردم که شاید دیدنش بتونه شما رو به این مبحث علاقه‌مند کنه.

الگوریتم ژنتیک (Genetic Algorithm)

الگوریتم ژنتیک در واقع شبیه‌سازی تئوری داروین هست! در کل خیلی دانشمندان اعتقاد دارند که موجودات زنده با توجه به شرایط محیط بهبود پیدا می‌کنند. قوی‌ترها می‌مونن و ضعیف‌ترها از بین می‌رن و در نهایت قوی‌ترها نسل جدید رو ایجاد می‌کنند. در این بین بعضی وقت‌ها موتاسیون (Mutation) یا جهش اتفاق میوفته که ممکنه یک موجود رو خیلی بهتر یا خیلی بدتر کنه. حالا فرض کنید همین مورد رو برای اعداد شبیه‌سازی کنیم! کلی رشته از اعداد خواهیم داشت که در واقع پارامتر‌های مختلف یه فرمول می‌تونن باشن. هر کدوم از این رشته‌ها رو یه کروموزوم در نظر می‌گیریم. این کروموزوم رو توی فرمولی که می‌خوایم بهینه کنیم (مثلا مقدارشو ماکزیمم کنیم) قرار می‌دیم. اگر نتیجه فرمول عدد کوچکی شد این کروموزوم ضعیفه و اگر بزرگ شد قویه. در هر دوره (Epoch) کروموزوم‌های ضعیف میمیرن و کروموزوم‌های قوی ازدواج می‌کنن! یعنی مثلا یک سوم اول یک رشته با دو سوم دوم یه رشته‌ی دیگه پشت هم گذاشته می‌شن و یه کروموزوم جدید ایجاد می‌کنن! حالا فرض کنید همین روند رو در ۱۰۰۰ دوره تکرار کنیم. در این بین یه پارامتر تصادفی هم نیاز داریم که همون Mutation هست. یعنی مثلا به احتمال ۱ درصد شانسی یه قسمت از یه کروموزوم رو انتخاب می‌کنیم و مقدارشو ۰ می‌کنیم. خیلی جالبه که در عمل اگر این Mutation نباشه خیلی وقت‌ها هیچ وقت به جواب درستی نمی‌رسیم، چون که در ماکسیمم لوکال گیر می‌کنیم. خیلی وقت‌ها در اثر موتاسیون کروموزوم جدید خیلی ضعیف می‌شه اما بعضی وقت‌ها فوق‌العاده قوی از آب در میاد. شاید برای همینه که در ژنتیک و در کل به دنیا آمدن موجودات زنده بعضی اوقات جهش وجود داره...

شاید جالب باشه در مورد الگوریتم ژنتیک از یه مثالی که در گذشته خودم انجام دادم استفاده می‌کنم. فرض کنید می‌خوایم به یه روبات دوپا راه رفتن یاد بدیم. یه روبات مثلا ۲۰ درجه آزادی و در نتیجه ۲۰ موتور داره و در هر لحظه باید به هر کدوم از این موتورها یه سرعت لحظه‌ای بدیم. از اونجایی که راه رفتن یه سیکل هست ۲۰ تا معادله سری فوریه رو در نظر بگیرید که هر کدوم ۱۰ تا پارامتر دارن. یعنی در کل ۲۰۰ تا پارامتر! هدفمون اینه روبات رو در کامپیوتر با توجه به قوانین فیزیک شبیه‌سازی کنیم و بهش ۲۰ تا معادله رو هر بار با ۲۰۰ پارامتر بدیم و کروموزومی رو به عنوان قوی انتخاب کنیم که روبات رو به بیشترین حد به جلو ببره! وقتی این کار رو شروع کردیم روبات بعد از هزاران دوره یاد گرفت که روی زمین خودشو بکشه جلو! بعدش تا حدودی چهار دست و پا رفتن رو یاد گرفت و بعد از کلی دوره و تعیین جریمه برای افتادن، ایستاده راه رفتن رو آموزش دید! خیلی حس عجیب و جالبیه که ببینید یه کامپیوتر مثل یک انسان راه رفتن رو یاد بگیره.

یادگیری عمیق (Deep Learning)

یادگیری عمیق در واقع یک جورایی نسل جدیدتری از شبکه‌های عصبی مصنوعی هست که ازش در موارد زیادی مثل شناسایی صدا (Speech Recognition)، بینایی رایانه‌ای (Computer Vision) و پردازش زبان‌های طبیعی (Natural Language Processing) استفاده می‌شه.

به نظر من جذاب‌ترین بخش از یادگیری عمیق مبحث Convolutional Neural Networks یا CNNs هست که برای تشخیص تصاویر بیشتر ازش استفاده میشه. در این مورد یک دوره آموزشی رایگان در یوتیوب هست که در واقع کلاس CS231n در استنفورد۱۵ هست که دیدن این دوره رو به همه پیشنهاد می‌کنم. مواردی توش یاد میگیرید که واقعا جذاب و حیرت‌انگیزن. من خودم دوره زمستان ۲۰۱۶ رو دیدم اما انگار ویدئوهای دوره بهار ۲۰۱۷ ۱۰اون هم الآن بیرون اومده. در این دوره نشون می‌دن که چطور کامپیوتر می‌تونه یک عکس بگیره و مثلا بگه در این عکس "یک بچه داره توپ‌بازی می‌کنه با مادرش"! همینطور در اون به Long Short-Term Memory یا LSTM اشاره می‌شه که برای من خیلی جالب بود. من خودم با LSTM به کامپیوتر با ارایه کلی شعر حافظ، یاد دادم که بتونه شعرهای جدید با سبک حافظ بگه! همینطور تونستم بهش یاد بدم که نقاشی صورت بکنه با ۱۰۰۰۰ تا مثال نقاشی که واقعا جالب و عجیب بود.

یادگیری ماشین (Machine Learning)

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

جالبی موضوع اینه که با ترکیب این زیرشاخه‌ها می‌شه کلی کارای جالب انجام داد. مثلا با ترکیب Deep Learning و Genetic Algorithm الآن روبات‌هایی ساخته شدن که بازی ماریو (همون قارچ‌خور) رو در کمترین زمان تا انتها می‌برن! یا حتی اخیرا روباتی ایجاد شده که بازی DotA رو که یه بازی خیلی پیچیده هست از تمام قهرمانان جهان برده. یا مثلا برنامه Alpha Zero که توسط گوگل ارائه شده و برترین برنامه پیشین در شطرنج که Stockfish نام داره رو با ۲۸ برد، ۷۲ مساوی و بدون باخت نابود می‌کنه. جالبی موضوع این هست که هیچ کدوم از این برنامه‌ها هیچ اطلاعاتی در ابتدا در مورد بازی بجز قوانین و ورودی‌ها نداشتن و تخصصشون رو با بازی کردن در مقابل خودشون یاد گرفتن! یعنی مثلا Alpha Zero فقط با دونستن قوانین شطرنج و کلی بازی در مقابل خودش این مهارت رو بدست آورده که از نظر من باورنکردنیه. 

منطق فازی (Fuzzy Logic)

ما همیشه یاد گرفتیم که کامپیوتر به صورت ۰ و ۱ فکر می‌کنه. در واقع یک گزاره یا درست هست (یک) و یا غلط (صفر). ولی آقای دکتر لطفی‌زاده (بله، ایشون ایرانی هستند) در سال ۱۹۶۵ میلادی مبحث جدیدی رو معرفی کردند به نام منطق فازی که در واقع می‌گه یک گزاره ممکنه ۰.۷ درست و ۰.۳ اشتباه باشه! اگر کمی فکر کنید انسان تصمیم‌گیری‌هاش صفر و یکی نیست و از اطلاعات غیر دقیق می‌تونه تصمیم‌گیری‌های دقیق و قطعی کنه! مثلا وقتی شما توی ماشین نشستید نمی‌دونید دقیقا دمای هوا چقدر هست (البته اگر ماشینتون کمی جدید باشه دماسنج داره، اما فرض کنید نداره)، ولی می‌بینید که هوا خیلی گرمه (اطلاعات غیردقیق) و در نتیجه کولر رو روی درجه ۳ روشن می‌کنید (تصمیم‌گیری دقیق). منطق فازی هم دقیقا همینطوره، یعنی می‌تونید یه if یا شرط روی مواردی بنویسید که ۰ و ۱ نیست. مثلا:

IF temperature IS hot AND window IS up THEN speed up fan

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

من سعی می‌کنم این جواب رو در آینده کمی کامل‌تر کنم تا موارد جالب‌تری رو در بر بگیره.

۱۷
فرهاد شیرزاد
فرهاد شیرزاد، برنامه‌نویس، دانشجوی هوش‌مصنوعی

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


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


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

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

۱- تقویت پایه ریاضی (بسیار بسیار مهم). حداقل تسلط بر تئوری احتمالات و جبر خطی

۲- مطالعه تئوری یادگیری ماشین - کتاب تام میشل۱۸ یک کتاب کلاسیک و معروف و البته قدیمی در این زمینه هست. یکی از منابع بسیار عالی کلاس Andrew Ng در دانشگاه استنفورد۱۵ هست.

۳- انتخاب یک تکنیک یادگیری ماشین یا همان هوش مصنوعی(مثل شبکه‌های عصبی). فعلا قوی‌ترین جنبه هوش مصنوعی همین یادگیری ماشین هست و تمرکزتون میتونه این موضوع باشه. یک شروع خوب میتونه کتاب Laurene Fausett  باشه ۸۸که خوب هست. همچنین کتاب دکتر محمدباقر منهاج۱۲۴ که به زبان فارسی منتشر شده، واقعا فوق‌العاده هست.

برای درک بهتر موارد ذکر شده، از هر کدوم توضیح کوتاهی ارائه میدم:

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

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

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

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

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

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

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


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

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

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

بحث Deep Learning

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


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

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

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

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

۱۶
مهدی غنیمی‌فرد
مهدی غنیمی‌فرد، دانشجوی دکتری زبان‌شناسی رایانشی

هوش مصنوعی یکی از موضوعات اصلی علوم است که در بسیاری از دانشگاه‌ها به عنوان رشته تحصیلی تدریس می‌شود. از بین کتاب‌های درسی من کتاب Artificial Intelligence: A Modern Approach نوشته‌ی  استوارت ج. راسل و پیتر نورویگ را پیشنهاد می‌کنم. این کتاب با عنوان‌های مختلف به زبان فارسی هم ترجمه شده: «هوش‌مصنوعی: مفاهیم بنیادین»، «هوش‌مصنوعی: رهیافتی نوین»، «رویکردی نوین در هوش‌مصنوعی» و «هوش‌مصنوعی پیشرفته».
این یک کتاب درسی است. یادگیری آن با یادگیری یک فن و یک حرفه یا یک تئوری علمی کمی متفاوت است. مثل علم فیزیک: «یادگیری فیزیک» به معنی آشنایی با مباحث کلی در علم فیزیک و همچنین کلیتی مفهوم آنهاست همانطور که در مدارس ابتدایی به نام درس علوم، فصلی به فیزیک اختصاص داده می‌شود. درباره یادگیری هوش مصنوعی هم همینطور باید انگاشت. چیزی که امروزه در زندگی ما تاثیرگذار است فناوری‌هایی است که در قالب این رشته جای میگیرند و البته با رشته‌های دیگر در ارتباط هستند. یادگیری این فنون میتواند بدون تحصیل در رشته‌ی هوش‌مصنوعی باشد. مثل «علوم کامپیوتر»، که بدون تحصیل در رشته‌ی علوم کامپیوتر فردی ممکن است برنامه‌نویسی یاد بگیرد. به همین ترتیب یادگیری فناوری‌هایی مربوط به یادگیری ماشین (Machine Learning) و روش‌های داده‌ای (Data-driven Methods) می‌تواند به خودی خود مفید باشد.

۱۶
بابک
بابک، هوش مصنوعی

دوستان توضیحات کاملی درباره‌ی موضوعات مختلف دادن اما اگر منظورتون مشخصا مرجع یادگیریه این‌ها شاید به کارتون بیاد:

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

چون در متن سوال "ابتدایی‌ترین مرحله" ذکر شده، من کاملا بصورت ابتدایی‌ترین حالت می‌گویم، با توجه به اینکه جواب‌های اخیر را کاملا قبول دارم.

۱- شهود: سعی کنید ارتباط یک "خواست" تا "عمل" را ببینید و درک کنید. از زمانی که می‌خواهید برای خرید چیزی به مغازه بروید تا زمانی که آنرا در اختیار دارید "خواست" و "عمل"های زیادی را طی خواهید کرد.

۲-گرته برداری: شاید با روش رسم "فلوچارت" آشنایی داشته باشید، در غیر اینصورت آنرا بیاموزید. فلوچارت یک روش ترسیم "عمل" است.

۳-دید پرنده: جمعیتی در حال پیاده شدن از مترو یا سوار شدن به آن هستند. شما بنابر خوش‌اقبالی در طبقه دوم در حال مشاهده منظره‌اید. سعی کنید مسیرهای آنها را درک کنید. رفت و آمد، مستقیم و غیر مستقیم حرکت آنها.

تا اینجا شما خواهید توانست یک سلسه "رفتار" را بشناسید. این شناخت برای درک یک  سیستم "غیرزنده" با انتخاب‌های "نزدیک به زنده" و "نزدیک به خواست انسانی" خیلی مهم هستند. 

۸