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