هوش مصنوعی (Artificial intelligence)، یادگیری ماشین (Machine Learning) و یادگیری عمیق (Deep Learning) سه عبارتی هستند که خیلی زیاد و گاهی به اشتباه به جای یکدیگر استفاده میشوند تا نرمافزاری را توصیف کنند که هوشمندانه عمل میکند. اما بهتر است افرادی که میخواهند در این حوزه حرفهای شوند، فرق آنها را بدانند.
یک راه ساده برای فهمیدن تفاوت این سه موضوع این است که آنها را مانند یک سری عروسکهای روسی تصور کنیم که هر کدام داخل دیگری جای میگیرند. یادگیری عمیق زیرمجموعهای از یادگیری ماشین است، و یادگیری ماشین زیرمجموعهای از هوش مصنوعی. در واقع هوش مصنوعی چتری است که تمام برنامههای کامپیوتری که کاری هوشمندانه انجام میدهند را در زیر خود جا میدهد. به عبارت دیگر، هر نوع یادگیری ماشین خودش هوش مصنوعی به حساب میآید، اما هر هوش مصنوعیای یادگیری ماشین نیست.
جان مکارتی (John McCarthy) که او را پدرخوانده هوش مصنوعی میدانند، AI را به عنوان دانش و مهندسی ساختن ماشینهای هوشمند تعریف میکند.
چند تعریف دیگر از هوش مصنوعی:
· شاخهای از علوم کامپیوتر که با شبیهسازی رفتارهای هوشمندانه در کامپیوترها سروکار دارد.
· قابلیت یک ماشین برای اینکه رفتار هوشمندانه انسان را تقلید کند.
· یک سیستم کامیپوتری که میتواند کارهایی انجام دهد که در حالت طبیعی به هوش انسانی نیاز دارد؛ مانند درک دیداری، تشخیص صدا، تصمیمگیری و ترجمه.
راههای زیادی برای شبیهسازی هوش انسانی وجود دارد و برخی از روشها هوشمندانهتر از بقیه هستند.
هوش مصنوعی میتواند تعدادی جمله «اگر-آنگاه» باشد (if-then statement)، یا یک مدل آماری پیچیده باشد که دادههای خام حسی را به صورت گروههایی مدل میکند. جملههای اگر آنگاه به سادگی قانونهایی هستند که به دست انسان برنامهریزی شدهاند. وقتی این اگر-آنگاهها کنار هم قرار بگیرند به آنها موتور قوانین، سیستمهای خبره، گراف دانش یا هوش مصنوعی نمادین میگویند. و در مجموع به تمام آنها هوش مصنوعی قدیمی یا به انگلیسی Good, Old-Fashioned AI (GOFAI) گفته میشود.
هوشی که به ماشینها دیکته میکند کاری را تقلید کنند را میتواند مشابه حسابداری دانست که دانش محاسبه مالیات را دارد. یعنی این نوع از هوش، اطلاعاتی که شما برایش تامین میکنید را میگیرد، آن اطلاعات را از میان یک سری قانون ثابت عبور میدهد و میزان مالیاتی که باید بپردازید را به عنوان خروجی به شما باز میگرداند.
معمولا وقتی کامپیوتری توسط محققان طراحی شده تا کار مشخصی را انجام دهد، مثل بردن در بازی شطرنج، خیلی از افراد آن را واقعا هوشمندانه نمیدانند، چون الگوریتم داخلی چنین برنامهای کاملا قابل درک است. برخی منتقدان فکر میکنند هوش باید چیزی غیرقابللمس باشد، چیزی شبیه هوش انسان. برخی میگویند هوش مصنوعی واقعی چیزی است که کامپیوترها هنوز قادر به انجام آن نیستند.
یادگیری ماشین یکی از زیرمجموعههای هوش مصنوعی است. به این معنی که تمام یادگیری ماشینها، هوش مصنوعی به حساب میآیند، اما تمام هوش مصنوعیها، یادگیری ماشین حساب نمیشوند. به عنوان مثال، منطق نمادین، سیستمها خبره و گرافهای دانش، میتوانند هوش مصنوعی نامیده شوند، اما هیچکدام یادگیری ماشین نیستند.
یکی از ویژگیهایی که یادگیری ماشین را از گراف دانش و سیستمهای خبره متمایز میکند این است که قادر است خودش را با در اختیار داشتن دادههای بیشتر بهتر کند. به عبارت دیگر، یادگیری ماشین پویا است و برای ایجاد برخی تغییرات به دخالت انسان نیاز ندارد.
به گفته تام میشل:
یک برنامه کامپیوتری که با انجام تسکهای T و معیار عملکرد P در انجام این تسکها، تجربه E را یاد میگیرد و با بهبود تجربه E، معیار عملکرد P هم بهبود پیدا میکند.
آرتور سمئول، یکی از پیشکسوتان یادگیری ماشین، آن را به این صورت تعریف میکند: «یک شاخه مطالعه که به کامپیوترها این قدرت را میدهد که بدون اینکه به طور صریح برنامهنویسی شوند، میتوانند یاد بگیرند». به این معنی که برنامههای یادگیری ماشین، مثل جملات «اگر-آنگاه» به طور صریح به کامپیوتر داده نشدهاند. به عبارتی میتوان گفت برنامههای یادگیری ماشین، میتوانند خودشان را در مواجهه با داده تنظیم کنند (مثل بچهای که زمان به دنیا آمدن هیچ دانشی ندارد و درکش را از دنیا در پاسخ به تجربهها شکل میدهد).
سمئول به یک برنامه کامپیوتری یاد داد شطرنج بازی کند. هدفش این بود که برنامه بتواند از خود او بهتر بازی کند، که به طور واضح چیزی نبود که بتوان به طور صریح آن را برنامهنویسی کرد. او موفق شد، و در سال ۱۹۶۲، برنامهاش موفق شد قهرمان شطرنج در ایالت کنتیکت را ببرد.
واژه «یادگیری» در یادگیری ماشین به این معنی است که الگوریتمهای یادگیری ماشین سعی میکنند در یک بعد خاص خودشان را بهبود دهند. به این معنی که معمولا سعی میکنند خطا را حداقل کنند، یا احتمال درست بودن پیشبینیها را حداکثر کنند. معمولا از سه اسم برای بیان این موضوع استفاده میشود: تابع خطا، تابع ضرر یا تابع هدف، چون هر الگوریتم یادگیری ماشین باید یک هدف داشته باشد.
حالا خطا چگونه کمینه میشود؟ یکی از راهها این است که چارچوبی بسازیم که ورودیهایی را در هم ضرب کند تا بتواند حدسهایی با همان طبیعت ورودیها بزند. خروجی/حدسهای متفاوت، محصول ورودیها و الگوریتم هستند. معمولا حدسهای اولیه تا حد زیادی اشتباه هستند، و اگر خوششانس باشید و به برچسبهای درستی برسید که متناظر با ورودی باشند، میتوانید با حساب کردن تفریق حدسها از مقدار واقعی بفهمید که چقدر خطا داشتهاید و بعد، از آن خطا برای بهینه کردن الگوریتم استفاده کنید. این کاری است که یک شبکه عصبی انجام میدهد. شبکه عصبی آنقدر به محاسبه خطا و بهتر کردن پارامترها ادامه میدهد که دیگر نتوانند به میزان خطای کمتری برسد.
به این نوع الگوریتمها، الگوریتمهای بهینهسازی هم میگویند. اگر بتوانید آنها را به درستی تنظیم کنید، میتوانند میزان خطایشان را با حدسزدن و حدسزدن و بازهم حدسزدن بهبود دهند.
یادگیری عمیق یکی از زیرمجموعههای یادگیری ماشین است. معمولا افراد وقتی از عبارت یادگیری عمیق استفاده میکنند، منظورشان شبکههای عصبی مصنوعی عمیق است و گاهی هم یادگیری تقویتی عمیق.
شبکههای عصبی مصنوعی عمیق، مجموعهای از الگوریتمها هستند که رکوردهای جدیدی برای مسائل مهمی مثل تشخیص تصویر، تشخیص صدا، سیستمهای پیشنهاددهنده، پردازش زبان طبیعی و... ثبت کردهاند. به عنوان مثال، یادگیری عمیق بخشی از الگوریتم معروف DeepMind به اسم AlohaGo است، که قهرمان سابق جهان، لی سدول و قهرمان فعلی کیجی را در Go شکست داده است.
عمیق یک عبارت فنی است و به تعداد لایهها در یک شبکه عصبی اشاره دارد. یک شبکه سطحی، فقط یک لایه پنهان دارد، و یک شبکه عمیق بیش از یک لایه دارد. لایههای پنهان چندگانه به شبکههای مصنوعی عمیق این امکان را میدهند که ویژگیهای داده از نوع ویژگیهای سلسلهمراتبی را یاد بگیرند. چراکه ویژگیهای ساده مانند دو پیکسل، از یک لایه به یک لایه دیگر ترکیب میشوند و یک ویژگی پیچیدهتر میسازند، مثل یک خط. شبکههایی با چندین لایه، دادههای ورودی (ویژگیها) را از عملیات ریاضی پیچیدهتری، نسبت به شبکههایی با لایههای کمتر عبور میدهند؛ بنابراین به توان محاسباتی زیادی برای یادگیری نیاز دارند. محاسبات زیاد یکی از مشکلات سر راه یادگیری عمیق است و یکی از دلایلی است که چیپهای جدیدی به نام GPU برای آموزش مدلهای یادگیری عمیق مورد استفاده قرار میگیرند.
پس میتوانیم همان تعریف آرتور سمئول را برای یادگیری عمیق هم به کار ببریم: «یک حوزه مطالعه که به کامپیوترهای این قدرت را میدهد که بدون اینکه به طور صریح برنامهنویسی شوند بتوانند یاد بگیرند» و به این تعریف اضافه کنیم: هدف آنها دقت بیشتر است و به سختافزار یا زمان یادگیری بیشتری هم نیاز دارد، و در تسکهای درک ماشین که شامل دادههای غیرساختارمند مانند تعدادی پیکسل یا متن هستند، فوقالعاده عمل میکنند.