هوش مصنوعی چیست؟!

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

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


به همین خاطر، در طول تاریخ چهار نگرش کلی در مورد هوش مصنوعی به وجود آمده است.

  1. اولین افرادی که از واژه هوش مصنوعی استفاده کردند (مثل John McCarthy و Marvin Minsky) به دنبال شبیه‌سازی دقیق مغز انسان و پیاده‌سازی مدل مصنوعی آن بودند تا از این طریق بتوانند ساختار مغز و در نتیجه انسان را بهتر بشناسند به همین خاطر امروزه به افراد با این نگرش، متخصص علوم شناختی (Cognitive Scientist) می‌گویند. متخصصین با این نگرش در واقع به دنبال ساخت سیستم هایی اند که دقیقا همانند انسان فکر کنند.
ماروین مینسکی و جان مک‌کارتی، از بزرگترین دانشمندان علوم شناختی
ماروین مینسکی و جان مک‌کارتی، از بزرگترین دانشمندان علوم شناختی


۲. عده ای از محققان به ویژه افرادی که از علومی همچون روانشناسی وارد این حوزه شده اند، خیلی به دنبال درک دقیق ساختار داخلی مغز و شبیه‌سازی عینی آن نیستند، بلکه به دنبال ساخت سیستم هایی اند که فارق از ساختار داخلی، عملکردی شبیه به عملکرد انسان داشته باشند. Alan Turing از برجسته ترین دانشمندان این حوزه در سال ۱۹۵۰ آزمونی را برای سنجش هوشمندی این سیستم ها پیشنهاد داد که به آزمون تورینگ مشهور است. در این آزمون، سیستم هوشمند مصنوعی باید بتواند یک داور انسانی را در چت طوری فریب دهد که او نتواند تشخیص دهد که در حال صحبت با یک کامپیوتر است! این آزمون در سال ۲۰۱۴ توسط یک چت بات به نام Eugene Goostman پاس شد.

Alan Turing
Alan Turing


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

لطفی زاده، مبدع منطق فازی و استاد دانشگاه برکلی
لطفی زاده، مبدع منطق فازی و استاد دانشگاه برکلی


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

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

Yann LeCun, Jeoffery Hinton, Yoshua Bengio, Andrew Ng
Yann LeCun, Jeoffery Hinton, Yoshua Bengio, Andrew Ng


مدلسازی مسایل هوش مصنوعی با استفاده از مفهومی به نام عامل هوشمند:

در هوش مصنوعی، برای مدلسازی و حل مسایل، معمولا به دنبال طراحی و ساخت یک عامل هوشمند (Intelligent Agent) هستیم. عامل هوشمند در یک محیط (Environment) قرار دارد و با آن در تعامل است. در محیط اطراف عامل، رویداد هایی اتفاق می‌افتد که این رویدا‌د‌ها می‌توانند قطعی و قابل پیش‌بینی و یا غیرقطعی و تصادفی باشند. رخ دادن این رویداد ها، تاثیراتی (سیگنال هایی) در محیط دارد که عامل می‌تواند با استفاده از حسگر (Sensor) های خود آنها را مشاهده کند (Perception). البته با توجه به قدرت و قابلیت Sensor های عامل ممکن است بعضی از این سیگنال ها از دید عامل مخفی و برخی دیگر برای آن آشکار باشند. به مجموعه این سیگنال‌ها که عامل از طریق حسگر های خود از محیط دریافت می‌کند State می‌گوییم. عامل برای رسیدن به هدف یا اهداف خود، پس از Perception و با توجه به State دریافت شده از محیط، تصمیم به اجرای یک عمل (Action) خاص گرفته و آن عمل را به کمک عملگر (Actuator) های خود بر روی محیط انجام می‌دهد. انجام این عمل در محیط، خود یک رویداد است که می‌تواند State را تغییر دهد. به بخشی از عامل که با دریافت State در هر لحظه، تصمیم به اجرای یک Action خاص می‌گیرد، Agent Function یا Policy گفته می‌شود.

اجزای مختلف یک عامل هوشمند در این شکل قابل مشاهده اند. Policy با علامت سوال در شکل نشان داده شده است.
اجزای مختلف یک عامل هوشمند در این شکل قابل مشاهده اند. Policy با علامت سوال در شکل نشان داده شده است.


برای مثال انسان را به عنوان یک عامل هوشمند طبیعی تصور کنید. این عامل رویداد های موجود در محیط اطراف خود را توسط حسگر هایش (چشم‌ها، گوش‌ها، لامسه و ...) مشاهده کرده و متوجه وضعیت (State) محیط می‌شود. سپس این وضعیت را در مغز (Agent Function) خود بررسی کرده و تصمیم به انجام یک عمل (Action) خاص در محیط برای رسیدن به هدفش می‌گیرد و این عمل را توسط Actuator های خود (دست و پا، زبان و ...) در محیط به اجرا می‌رساند...

به عنوان مثالی از عامل هوشمند مصنوعی، می‌توان اتوموبیل‌های خودران (Self-driving Cars) را بررسی کرد.

اتوموبیل خودران به عنوان یک عامل هوشمند مصنوعی در حال Perception
اتوموبیل خودران به عنوان یک عامل هوشمند مصنوعی در حال Perception


عامل هوشمند: اتوموبیل خودران
محیط: خیابان، سایر اتوموبیل‌ها، عابرین پیاده، چراغ راهنمایی و ...
حسگر ها: دوربین ها، سرعت‌سنج، Radar ها، LiDAR ها و ...
عملگر‌ها -> فرمان، ترمز، چرخ‌ها و ...
عمل‌ها: گاز دادن، ترمز گرفتن، تغییر دنده، چرخاندن فرمان، بوق زدن و ...
پالیسی: نرم‌افزار موجود بر روی کامپیوتر مرکزی اتوموبیل


سنسور‌های موجود در اتوموبیل خودران Waymo
سنسور‌های موجود در اتوموبیل خودران Waymo


همانطور که احتمالا متوجه شده اید مهمترین وظیفه یک متخصص هوش مصنوعی، طراحی Agent Function در یک عامل هوشمند است.

اولین و ساده‌ترین ایده ای که به برای طراحی Agent Function به ذهن می رسد، این است که در ابتدا دانش لازم برای حل مساله را استخراج کرده و سپس آن را به صورت یک الگوریتم منطقی مشخص، بیان و پیاده‌سازی کنیم. این روش اگرچه به صورت گسترده در سیستم های خبره (Expert System ها) مورد استفاده قرار گرفت اما این روز ها خیلی مورد توجه نیست و از آن با عنوان Good Old-Fashioned Artificial Intelligence یاد می‌شود زیرا همه مسایل مانند مسیله مرتب‌سازی چند عدد نیستند که روش مشخص و قابل بیانی برای آنها وجود داشته باشد. در مقابل، روش دیگر، معروف به یادگیری ماشین (Machine Learning)، ساخت یک عامل یادگیرنده است که به جای دریافت کردن کامل دانش در ابتدای کار، آن را طی تجربه در محیط و به مرور زمان یاد بگیرد. در واقع عامل یادگیرنده، دانش لازم برای حل مساله را به صورت ضمنی و از روی تجربه یاد می‌گیرد. این تجربه معمولا به صورت یک مجموعه داده (Dataset) برای یادگیری به عامل داده می‌شود، از این رو، این روش به Data-driven Approach نیز مشهور است.

همانطور که گفته شد، تجربه عامل معمولا به شکل یک Dataset در اختیار آن قرار می‌گیرد. بنابراین واضح است که نقش این Data در کارایی هرچه بیشتر عامل یادگیرنده بسیار پررنگ است و در واقع برای به انجام رساندن بسیاری از پروژه های امروزی AI نیاز به داده‌های بسیار زیاد (Massive Dataset) داریم. معمولا هرچه داده بیشتری در اختیار داشته باشیم، عامل یادگیرنده تجربه بیشتری خواهد داشت و محصول تولید شده کیفیت بالاتری دارد، بنابراین کاربران بیشتری را جذب کرده و به نسبت،‌ دیتای بیشتری تولید می‌کند... و این چرخه ادامه دارد. دلیل موفقیت بسیاری از محصولات شرکتی مثل Google هم دقیقا همین است!


هر که دیتایش بیش، دیتایش بیشتر!
هر که دیتایش بیش، دیتایش بیشتر!


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

ما که محصولی نداریم چی؟ دیتای خوب از کجا بیاریم؟!

پاسخ اینه که، شرکت گوگل به تازگی موتور جستجوی خود برای Dataset ها را معرفی کرده که می‌تونید از اون استفاده کنید و هر مجموعه دیتایی که لازم دارید رو در اینترنت پیدا کنید!

http://toolbox.google.com/datasetsearch
http://toolbox.google.com/datasetsearch


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

. یادگیری با نظارت (Supervised Learning)
. یادگیری بدون نظارت (Unsupervised Learning)
. یادگیری نیمه نظارتی (Semi-supervised Learning)
. یادگیری تقویتی (Reinforcement Learning)


انواع task ها در یادگیری ماشین بر اساس شکل و نوع Dataset موجود
انواع task ها در یادگیری ماشین بر اساس شکل و نوع Dataset موجود


یادگیری با نظارت (Supervised Learning)

زمانی که Dataset موجود شامل State (مجموعه سیگنال ها) و Action مطلوب متناظر با هر State بود، از روش های Supervised Learning برای آموزش عامل هوشمند استفاده می‌شود.

شکل کلی دیتاست در روش های یادگیری با نظارت
شکل کلی دیتاست در روش های یادگیری با نظارت


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

در اینجا، عامل هوشمند (دسته‌بندی کننده تصاویر)، که به صورت Supervised آموزش دیده، یک تصویر جدید را به عنوان State از محیط دریافت کرده و باید آن را در یکی از دو دسته سگ یا گربه قرار دهد.
در اینجا، عامل هوشمند (دسته‌بندی کننده تصاویر)، که به صورت Supervised آموزش دیده، یک تصویر جدید را به عنوان State از محیط دریافت کرده و باید آن را در یکی از دو دسته سگ یا گربه قرار دهد.


یادگیری بدون نظارت (Unsupervised Learning)

زمانی که Dataset موجود تنها شامل State (مجموعه سیگنال‌ها) است و هیچ Action متناظر با State وجود ندارد از روش های Unsupervised Learning برای آموزش عامل هوشمند استفاده می‌شود.

شکل کلی دیتاست در روش های یادگیری بدون نظارت
شکل کلی دیتاست در روش های یادگیری بدون نظارت


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

در اینجا، عامل هوشمند، با تعدادی نقاشی به صورت Unsupervised آموزش دیده و با کشف روابط معنی دار بین اجزای نقاشی، می‌تواند نقاشی شما را کامل کند.
در اینجا، عامل هوشمند، با تعدادی نقاشی به صورت Unsupervised آموزش دیده و با کشف روابط معنی دار بین اجزای نقاشی، می‌تواند نقاشی شما را کامل کند.


یادگیری نیمه نظارتی (Semi-supervised Learning)

از این نوع یادگیری زمانی استفاده می شود که Action مطلوب متناظر با تعداد کمی از State ها در Dataset مشخص باشد، اما به ازای بسیاری از State ها Action مطلوب را نداشته باشیم. این نوع یادگیری نسبت به سه نوع دیگر کاربرد کمتری دارد و بیش از این به آن نمی‌پردازیم.

یادگیری تقویتی (Reinforcement Learning)

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

شکل کلی دیتاست در روش‌های یادگیری تقویتی
شکل کلی دیتاست در روش‌های یادگیری تقویتی


عامل یادگیرنده برای آموزش دیدن تحت روش‌های یادگیری تقویتی، ممکن است به صورت Real-time و به تعداد دفعات زیاد، با محیط تعامل کرده، با مشاهده State محیط یک Action خاص را روی محیط انجام دهد و به ازای انجام آن عمل، از محیط پاداش (Reward) دریافت کند. سپس استراتژی خود را جوری اصلاح کند که مجموع پاداش‌های دریافتی اش در طول زمان بیشتر شود.

در اینجا، عامل هوشمند که به یکی از روش های Reinforcement Learning آموزش دیده، در هر لحظه، با مشاهده صفحه بازی آتاری به عنوان State می‌تواند یکی از دکمه های دسته بازی را به عنوان Action مناسب انتخاب کند.
در اینجا، عامل هوشمند که به یکی از روش های Reinforcement Learning آموزش دیده، در هر لحظه، با مشاهده صفحه بازی آتاری به عنوان State می‌تواند یکی از دکمه های دسته بازی را به عنوان Action مناسب انتخاب کند.


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