تفکر ماشینی، پاسخی برای سوالات دنیای آینده
نویسندگان: بهار دیبایینیا، پرتو سبزواری، نرگس منتظری
یک بچه مادرش را با شنیدن صدایش تشخیص میدهد. حتی وقتی که مادرش یک جملهای را به زبان میآورد که بچه قبلا آن را نشنیده است. همان بچه وقتی یک گربه در کوچه از کنارش میگذرد هم متوجه میشود که آن حیوان یک گربه است. حتی اگر آن گربه، گربه جدیدی باشد که تاکنون آن را ندیده است.
اگر بچهها بتوانند صدای مادرشان را فقط با جملههایی که قبلا گفته بوده تشخیص بدهند یا فقط گربههایی که قبلا دیده بودهاند را به عنوان گربه شناسایی کنند، این یعنی آنکه آنها حافظه خوبی دارند. ولی اینکه بچهها مادرشان را حتی با گفتههای جدیدشان یا گربهبودن گربههای غریبه محله را هم تشخیص میدهند، یعنی آنها هوش دارند.
اما بعضی وقتها در مسائلی پیچیدهتر که اندازه داده در آنها بسیار بیشتر است، ما حتی بعد از روزها تفکر روی آنها هم هیچ روش و الگویی را برای حل آنها نمیتوانیم شناسایی کنیم. برای نمونه، از دادههای ژنوم انسان میتوان برای تشخیص سرطان استفاده کرد اما حجم و ابعاد دادههای ژنوم یک انسان بسیار بزرگ است (دهها تا صدها گیگابایت). یا اینکه در یک مسئله، تشخیصِ الگوها برای انسان ساده است، اما این کار یا خستهکننده است یا اینکه باید به تعداد دفعات زیادی انجام شود. برای مثال، پیداکردن و پیشنهاد کالاهایی که یک کاربر احتمالا دوست داشته باشد در یک فروشگاه بزرگ آنلاین مانند آمازون که میلیونها کاربر در هر روز دارد.
در این مواقع، نیاز به هوشی قویتر، سریعتر، و ارزانتر از هوش انسان داریم. اینجاست که مثل همیشه، کامپیوترها به کمکمان می آیند.
میدانیم که کامپیوترها حافظه خوبی دارند. اگر یک بار یک گفته مادر یا یک تصویر گربه محله را به آنها بدهیم، آن را خوب حفظ میکنند و اگر بعدا دقیقا همان گفته و یا تصویر همان گربه را به آنها بدهیم میفهمند که صدا، صدای مادر و عکس، عکس گربه است.
ولی حالا اگر بتوانیم برنامهای بنویسیم که کامپیوتر، بدون اینکه برایش صریحا قانونی تعریف کرده باشیم، یک گفته جدید را بشنود و بفهمد آن را مادر گفته و یا عکس یک گربه جدید را بگیرد و بفهمد که آن یک گربه است ما یک هوش ماشینی یا هوش مصنوعی (Artificial Intelligence) ساختهایم. هوش مصنوعی در زمینههای گوناگونی مانند حمل و نقل، رباتیک، پزشکی، کشاورزی، تشخیص چهره، بازیهای رایانهای، امنیت و … کاربرد زیادی دارد.
احتمالا این سوال برایتان پیش آمده است که چگونه میشود این هوش مصنوعی را ساخت؟ آیا روش برنامهنویسی هوش مصنوعی با برنامهنویسی عادی تفاوت دارد؟
برای پاسخ به این سوال بیایید چند نمونه مسئله مختلف را با هم بررسی و روش نوشتن برنامه آنها را با هم مقایسه کنیم.
- برنامه نمایش hello world روی صفحه نمایش
- برنامه پیداکردن بزرگترین عدد
- برنامه پیداکردن سریعترین مسیر برای تاکسیها
- برنامه بازی شطرنج دو نفره که یکی از بازیکنان رایانه شما باشد
با مقایسه چهار برنامه نوشته شده برای این مسائل، احتمالا شما هم مثل ما این ایده به ذهنتان می رسد که در دو برنامه ابتدایی تعداد حالتهایی که ممکن است پیش بیایند محدود است و به راحتی می توانیم تمام آنها را در نظر بگیریم. اما در برنامه سوم و چهارم ، تنوع ورودی ها بسیار زیاد است و از قبل نمی توانیم تمام زوایای ورودی را در نظر بگیریم. در واقع برنامه در این مرحله خود باید خروجی را تشخیص دهد. مثلا در یک بازی شطرنج عملا امکان ندارد ما از قبل بتوانیم تمام حالتهای بازی را داشته باشیم و بر اساس آنها خروجی را تشخیص دهیم بلکه در هر زمان برنامه با هوش خود باید بهترین حرکت را بسته به شرایط تشخیص دهد. اینکه برنامههای سوم و چهارم می توانند در طول برنامه تصمیم بگیرند یعنی ما در برنامه این دو مسئله از هوش مصنوعی استفاده کردهایم.
در برنامهنویسی هوش مصنوعی گاهی برنامهها به طوری نوشته میشوند که خودشان قوانین، الگوها، و روابط مورد نیاز را از میان حجم زیادی از داده استخراج میکنند و با یادگیری اطلاعات استخراج شده، خروجی مناسبی را ارائه میدهند. داده برای ماشین شبیه تجربه برای انسان است. هر چه دادههایی که به این دسته از برنامهها داده میشود بیشتر و دقیقتر باشد، خروجی نیز دقیقتر میشود. این نوع از برنامهها زیر شاخهای از هوش مصنوعی به نام یادگیری ماشین را تشکیل میدهند.
به طور کلی برای بررسی مسائل یادگیری ماشین از سه دسته الگوریتم اصلی استفاده میکنیم:
- یادگیری نظارتشده
- یادگیری نظارتنشده
- یادگیری نیمهنظارتشده
یادگیری نظارتشده (supervised learning)
در یادگیری نظارتشده متغیرهای ورودی (x) و یک متغیر خروجی (y) مشخص وجود دارد. و از یک الگوریتم برای کشف تابعی از ورودی به خروجی استفاده میشود تا هنگام داشتن دادههای ورودی جدید (x)، بتواند متغیرهای خروجی (y) را برای آن دادهها را با دقت بالایی پیشبینی کند. تشخیص اینکه یک شخص سرطان دارد یا نه (Y) با داشتن دادههای ژنوم آن شخص (x)، یک نمونه از این دسته مسایل است.
به این روش، یادگیری نظارتشده میگویند زیرا استفاده از مجموعه دادههای آموزشی برای فرایند یادگیری الگوریتم را میتوان مانند برخورداری از ناظر بر فرایند یادگیری در نظر گرفت. در ابتدا خروجیهای صحیح برای مجموعهای از ورودیها مشخص است (اشخاصی که دادههای ژنوم آنها و اینکه آیا واقعا سرطان دارند یا نه موجود و مشخص است). الگوریتم به طور مکرر پیشبینیهایی را در مورد دادههای آموزش انجام میدهد و توسط ناظر تصحیح میشود. زمانی یادگیری متوقف می شود که الگوریتم به سطح قابل قبولی از عملکرد برسد.
در یادگیری نظارتشده خروجیها به دو دسته تبدیل میشوند. در مواقعی متغیر خروجی یک دسته از دستههایی مشخص است مانند قرمز” یا “آبی” یا “بیماری” و “بدون بیماری” و در مواقعی دیگر متغیر خروجی یک مقدار حقیقی است مانند “قیمت” یا “وزن”.
یادگیری نظارتنشده (unsupervised learning)
یادگیری نظارتنشده یک دسته از روشهای یادگیری ماشین است که به دنبال پیدا کردن الگوهای کشفنشده میان داده های ورودی (x) است که به الگوریتم داده میشود. تفاوت اصلی این روش با یادگیری نظارتشده آن است که در این روش دادههای ورودی توسط انسانها برچسبگذاری نشدهاند و خروجی (y) به آنها اختصاص پیدا نکرده است بلکه این الگوریتم باید تلاش کند به کمک الگوهایی که درون دادهها پیدا میکند آنها را به درستی به دستههایی با عناصری که ویژگیهای یکسان دارند تقسیم کند. به طور مثال آیا تا به حال به سایت خبری گوگل سر زدهاید؟ این سایت تمامی اخبار را بدون آن که مشخص باشد درباره چه موضوعاتی هستند جمع آوری میکند و سپس آنها را با توجه به الگوهایی مثل کلمات مشابه و … که در آنها پیدا میکند به دستههای متفاوتی تقسیم میکند.
یادگیری نیمهنظارتشده (semi-supervised learning)
الگوریتم نیمهنظارتشده، ترکیبی از دو الگوریتم یادگیری نظارتشده و یادگیری نظارتنشده است.این الگوریتم با دادههایی کار میکند که در آنها مقدار زیادی داده ورودی (x) وجود دارد که فقط برخی از آنها با خروجی (y) برچسبگذاری شده اند و بقیه مانند یادگیری نظارتنشده بدون برچسب هستند.
یک مثال خوب برای این الگوریتم یک آرشیو عکس است که در آن فقط برخی از تصاویر را می دانیم مربوط به چه اشخاصی هستند. این تصاویر همان دادههای برچسبگذاریشده هستند و اکثر تصاویر هم در این آلبوم نامشخص هستند که اینها همان دادههای فاقد برچسب هستند.
در دنیای واقعی بسیاری از مشکلات یادگیری ماشین با این روش حل می شوند. دلیل آن این است که در اغلب موارد برچسب گذاری دادهها گران یا زمان بر است در حالی که دادههای بدون برچسب ارزان و جمع آوری و ذخیره آنها آسان است.
بنابراین تا کنون ما با چند الگوریتم مختلف برای یادگیری ماشین آشنا شده ایم؛ یادگیری نظارتشده، نیمهنظارتشده، و نظارتنشده که هر کدام بسته به موضوع و دادههایی که داریم در زمان درست به کار گرفته می شوند. یک دسته دیگر از الگوریتمهای ماشین هم وجود دارد که البته الگوریتمهای آن مانند دستههای بالا رایج نیستند: یادگیری تقویتی. در این دسته در ابتدا هیچ دادهای وجود ندارد و ماشین خودش با کاوشگری محیط و عمل و بررسی نتیجه آن عمل یاد میگیرد. یک ربات که به یک سیاره جدید و ناشناخته فرستاده میشود، برای نمونه، نیاز به دارا بودن این توانایی یادگیری است.
یادگیری ماشین یکی از مهمترین فناوریهای دهه آینده خواهد بود و کسانی که در این حوزه از مهارت و دانش کافی برخوردار باشند میتوانند از این راه باعث پیشرفتهای علمی در زمینههای مختلف شوند و به موفقیتهای مالی هم دست یابند.
شاید هم در آیندهای نه چندان دور به لطف یادگیری ماشینی بتوانیم بهتر به سوالات پیچیده و نامتعارفی مانند:
-
- آیا این نقطهای که در بافت بدن دیده شده، سرطان است؟
- آیا این دو فرد میتوانند روابط خوب و عاطفی با هم داشته باشند؟
- آیا این خبر که در تلگرام پخش شده دروغ است؟
- کدام موضوع برای یک فیلم باعث پرفروشترشدن آن خواهد شد؟
و هزاران سوال دیگر که به ذهنمان میرسد جواب دهیم.
هوش مصنوعی اما محدودیتهای جدی هم دارد و با چالشهای بسیاری نیز مواجه است. برای نمونه،
-
- اگر یک ماشین خودران کسی را در جاده بکشد، مقصر کیست؟
- اگر یک الگوریتم استخدامی هوشمند بین دو متقاضی با مهارت و توانایی یکسان تبعیض قایل شود چی؟
- اگر یک الگوریتم متننویس توسط تبهکاران برای تولید اخبار جعلی استفاده شد چکار کنیم؟
- اگر دادگاه از یک بانک که از هوش مصنوعی استفاده میکند خواست که دلیل رد تقاضای یک وام چه بوده بانک چگونه توضیح دهد؟
در پایان، اگر سوال و یا نظری درباره این خواندنی داشتید خوشحال میشویم با ما در قسمت زیرین به اشتراک بگذارید.
بیشتر بخوانید