مقدمه
در مقاله آموزش نصب کتابخانه OPENCV(آخرین ورژن) درمورد نحوه صحیح نصب کتابخانهOPENCV روی سیستمعامل رزبین توضیح داده شد که چطور باید مراحل نصب بهطورکامل انجام بگیرد و در مقاله پروژه تشخیص چهره توسط OPENCV یک پروژه تشخیص چهره توسط این کتابخانه انجام دادیم که درنهایت قابلیت اضافهکردن اشخاص و همچنین شناسایی آنان توسط موتورهای مختلف شناسایی را داشت.
حال در قسمت سوم این آموزش میخواهیم بهصورت کاملا مختصر و عامیانه مقدمات آشنایی با هوش مصنوعی، ماشینلرنینگ، دیپلرنینگ و تفاوت آنها را بیانکنیم و درنهایت در قسمتهای بعدی یک پروژه پردازش تصویر به همراه هوش مصنوعی پیادهسازی کنیم.
هوشمصنوعی چیست؟
Artificial Intelligence به هوشی که یک ماشین در شرایط مختلف از خود نشان میدهد، گفته میشود. بهعبارتدیگر هوش مصنوعی به سیستمهایی گفته میشود که میتوانند واکنشهایی مشابه رفتارهای هوشمند انسانی ازجمله درک شرایط پیچیده، شبیهسازی فرایندهای تفکری و شیوههای استدلالی انسانی و پاسخ موفق به آنها، یادگیری و توانایی کسب دانش و استدلال برای حل مسائل را داشتهباشند. خب تعریف بالا بهصورت خیلی علمی بیانشدهاست حال اگر کمی سادهتر توضیح بدهیم، به اینصورت است که:
فرضکنید یک ربات داریم و میخواهیم به آن یکسری کارها، ازجمله صحبتکردن، راهرفتن و… را یاد دهیم. درست مثل کودکی که تازه میخواهد راهرفتن را یاد بگیرد که در طی این مسیر بارها شکست میخورد و درنهایت موفق به انجام این عمل شود. هوش مصنوعی هم دقیقا دارای چنین مفهومی است.
سوالی که شاید برای خیلی از مخاطبین ممکناست پیش بیاید، این است که آیا ماشینلرنینگ و دیپلرنینگ هم زیرمجموعه هوشمصنوعی هستند؟ بله، دقیقا ماشینلرنینگ و دیپلرنینگ هم زیر مجموعه این بخش محسوب میشوند که هرکدام از آنها تاثیر زیادی درمورد یادگیری ماشین دارند. برای واضحترشدن موضوع به عکسی که در ادامه قرار میدهیم دقتکنید.
ماشینلرنینگ چیست؟
بهعنوان یکیاز شاخههای وسیع و پرکاربرد هوشمصنوعی، یادگیری ماشین(Machine learning) به تنظیم و اکتشاف شیوهها و الگوریتمهایی میپردازد که براساس آنها رایانهها و سامانهها توانایی تعلٌم و یادگیری پیدا میکنند. بهعبارتدیگر الگوریتمهایی که میتوانند یاد گرفته شوند(دادن چندین نمونه متفاوت به سیستم و تشخیص نمونههای دیگر توسط این نمونههای قبلی را یادگیری میگویند) را الگوریتمهای یادگیری ماشین میگوییم، پس اگر از این به بعد در مطلبی اسم ماشینلرنینگ را شنیدید به چیزی جز یکسری الگوریتم جهت یادگیری ماشین فکر نکنید. البته دقتکنید برای پیادهسازی یا نوشتن این الگوریتمها نیاز به یادگیری و تسلط بسیارزیادی در این بخش است که این کار مستلزم تلاش بیوقفه در این زمینه است. فقط بهعنوان یک راهنمایی اگر علاقمند به یادگیری در این زمینه هستید، حتما بهعنوان مقدمه شروع این مباحث، تسلط کافی به نرمافزار متلب داشته باشید.
دیپلرنینگ چیست؟
دیپلرنینگ هم چیزی جز نوشتن یکسری الگوریتمهای خاص نیست البته با این تفاوت که این بخش کاملا به شبکههای عصبی مرتبط میشود. که در زیر شبکه عصبی را بیشتر توضیح میدهیم.
شبکه عصبی چیست؟
این سیستم از شمار زیادی عناصر پردازشی فوقالعاده بهمپیوسته بهنام نورون تشکیلشده که برای حل یک مسئله باهم هماهنگ عمل میکنند و توسط ارتباطات الکترومغناطیسی اطلاعات را منتقل میکنند. در این شبکهها اگر یک سلول آسیب ببیند بقیه سلولها میتوانند نبود آنرا جبران کرده(این موضوع از اهمیت بسیارزیادی برخوردار است)، و نیز در بازسازی آن سهیم باشند. این شبکهها قادر به یادگیریاند. مثلاً با اعمال سوزش به سلولهای عصبی لامسه، سلولها یاد میگیرند که به طرف جسم داغ نروند و با این الگوریتم، سیستم میآموزد که خطای خود را اصلاح کند. یادگیری در این سیستمها بهصورت تطبیقی صورت میگیرد، یعنی بااستفادهاز مثالها وزن سیناپسها(ارتباطات الکترومغناطیسی) بهگونهای تغییر میکند که درصورت دادن ورودیهای جدید، سیستم پاسخ درستی تولید کند.
دقتکنید اگر علاقمند به یادگیری در این حوزه هستید حتما باید با ریاضیات آشتیکنید و این ذهنیت را فراموش کنید که تئوریات در جایی کاربرد ندارند چون تمامی مواردی که توضیحدادیم چیزی جز الگوریتمهای ریاضی نیستند.
تفاوت هوشمصنوعی، ماشینلرنینگ و دیپلرنینگ چیست؟
ماشینلرنینگ و هوشمصنوعی معمولا بهجای یکدیگر استفاده میشوند بالاخص در حوزه بیگدیتا، حال مسئلهای که مهم است، این است که واقعا کاربرد هرکدام از این موارد کجاست و در چه زمینهای باید استفاده کرد. هوش مصنوعی درواقع یک مفهوم گستردهتر از یادگیری ماشین است که اشاره به استفادهاز کامپیوتر برای تقلید اعمال انسان را ازجمله صحبتکردن، راهرفتن و لمسکردن و… دارد. یادگیری ماشین زیر مجموعهایی از هوشمصنوعی است که تمرکز یادگیری ماشین روی دریافت دیتا میباشد و به اینصورت است که با پردازش دادههای بیشتر، الگوریتم خودش را بهبود میبخشد. شبکههای عصبی یکسری از الگوریتمها هستند که سعیشده شبیه نورونهای مغز انسان شبیهسازی شوند. درست شبیه مغز انسان که الگوها را میشناسد و به ما کمک میکند که اطلاعات را دستهبندی کنیم، شبکههای عصبی دقیقا همینکار را برای کامپیوتر انجام میدهند. مغز همواره درتلاش است که اطلاعات درحال پردازش را درک کند، و برای انجام این کار اطلاعات را دستهبندی میکند و درنهایت برای هر بخش یک برچسپ مشخص میزند تا به ما برای درک موردجدید کمک کند. شبکههای عصبی هم کاری کاملا مشابه را برای کامپیوتر(منظور تمامی ادواتی است که میتوان روی آنها این پیادهسازی را انجامداد) انجام میدهند.
چرا شبکه عصبی از اهمیت بسیارزیادی برخوردار است؟
دلایل متعددی را دارد که مواردزیر ازجمله مهمترین این موارد هستند:
- استخراج از دادههای پیچیده
- تشخیص روند و شناسایی الگوهای بسیار پیچیده که تشخیصشان برای انسان سخت است.
- یادگیری بههمراه مثالهای متعدد
- سرعت تشخیص بالا(البته این مورد را میتوان بهجرات گفت که سختافزار بسیار نقشموثری را دارد بهطورمثال پیادهسازی روی FPGA و یک میکروکنترلر، که اصلا قابلمقایسه نیستند)
مفهوم دیپلرنینگ گاهی به یادگیری عمیق شبکههای عصبی ارجاع داده میشود. باتوجهبه اینکه لایههای زیادی درگیر این ماجرا هستند. یک شبکه عصبی ممکناست فقط یک لایه دیتا را داشتهباشد درحالیکه یک شبکه عصبی عمیق میتواند دو یا چندین لایه داشتهباشد. لایهها میتوانند بهعنوان زنجیرههای تودرتو دیده شوند. شبکههای عصبی عمیق برای یادگیری و آموزش نیازمند این هستند که مقادیرزیادی از آیتمها را ببینند بهجایاینکه توسط مرزهایی که آیتمها را مشخص میکنند برنامهنویسی شوند(یعنی اینجوری نباشه که چهارتا توپ رو اموزش دادیم، بعدش فقط همون چهارتا رو بشناسه بلکه بتونه توپهای دیگهای رو هم تشخیصبده) سیستمها ازطریق میلیونها(مسلما هرچی بیشتر باشه اموزشبهتری انجامخواهدشد) دادهها یاد میگیرند. بهعنوان یک مثالساده میتوان Google Brain learning را مثالزد. Google Brain یک پروژه پژوهشی هوشمصنوعی مبتنیبر دیپلرنینگ متعلقبه شرکت گوگل است که پژوهشهای ماشینلرنینگ را در کنار مهندسی سیستم و منابع محاسباتی عظیم گوگل بهکار میگیرد تا بتواند به آن واقعیت ببخشد.
شبکههای عصبی عمیق لازمنیست که حتما توسط قوانین لبههای هر ایتم برنامهنویسی شوند(مثلا بگیم هرچی گردوقهوهای بود حتما گردو است) بلکه بااستفادهاز مقدارزیادی از نمونهها، یادگیری صورت میگیرد.
درواقع اگر علاقمند به کارکردن در این حوزه هستید حتما این جمله را مدنظر داشتهباشید. “دیتای ما مهمترین چیز ماست“
به این دلیل که فرقی نمیکند، از الگوریتمهای پیچیده ماشینلرنینگ یا هوشمصنوعی و… استفاده میکنید بلکه چیزی که مشخص است، این است که اگر دیتای مورداستفاده مشکلی داشتهباشد، فهم و تشخیص ماشین هم بهدرستی صورتنخواهدگرفت.
منبع: سیسوگ
[…] در خدمتتون هستیم. حتماً به یاد دارید که قبلاً به سؤال “هوش مصنوعی چیه؟ چه تفاوتی با یادگیری ماشین داره؟” پرداخیتم و مجدد به فریمورک های مختلف و مطرح دنیا در […]