سعید اقبالی – در مقاله قبل درباره نقش اساسی بینایی ماشین و چگونگی کمک به انسان در تشخیص رویدادها صحبت کردیم. هنگامیکه از نظارت تصویری صحبت میشود، پایش حداقل 100 الی 200 عدد دوربین نظارتی در کسری از ثانیه و یافتن رویداد موردنظر به صورت برخط و بلادرنگ یا آفلاین است.
این فناوری نه تنها در مباحث بصری بلکه در زندگی روزمره ما نیز جای خود را پیدا کرده است. تشخیص چهره موبایل، تصحیح خودکار صفحه کلید موبایل، مسیریابها، اینترنت اشیا و در مباحث کلانتر خودروهای خودران، پیشبینی بازارهای اقتصادی، آنتنهای هوشمند موبایل/BTS و Wifi از جمله مواردی هستند که توسط این فناوری عملیاتی شدهاند.
یادگیری عمیق به عنوان زیرمجموعهای از یادگیری ماشینی تعریف میشود که وجه تمایز آن با یادگیری ماشین در انجام یادگیری بدون نظارت انسان است. معمولا به یک انسان در یادگیری ماشین برای برچسبگذاری دادهها و قابل خواندن کردن آن برای برنامه، نیاز است. در مقابل، الگوریتمهای یادگیری عمیق میتوانند این دادهها را با دقت و بدون نیاز به برچسبگذاری انسانی استنتاج کنند.
الگوریتمهای یادگیری عمیق میتوانند به سادگی ارتباط بین نقاط مختلف یک مجموعه داده را بیاموزند. این الگوریتمها به جای اینکه از انسان بخواهند دادهها را غربال کند و هر نقطه داده را با مجموعهای از ویژگیها برچسبگذاری کند، میتوانند این ویژگیها را به تنهایی به هر نقطه داده اختصاص دهند.
یادگیری عمیق به دلیل کمبود قدرت محاسباتی و سختافزار مناسب عملیاتی نبوده است. به مرور زمان الگوریتمهای یادگیری ماشینی مدرن شکل گرفته، آزموده و بهینهسازی شدند.
نگاهی کوتاه به شبکههای عصبی
شبکههای عصبی مصنوعی نوعی الگوریتم یادگیری عمیق هستند که ساختار فیزیکی مغز انسان را تقلید میکنند. مغز یک فرد بالغ متشکل از 100 میلیارد نورون است که همگی به صورت یکپارچه برای کنترل بدن و ذهن انسان کار میکنند.
شبکههای عصبی مصنوعی این ساختار سلولهای عصبی آلی مغز انسان را جایگزین توابع ریاضی میکنند. درست مانند مغز، یک شبکه عصبی مصنوعی معمولا لایههای زیادی از توابع را شامل میشود که به عنوان گرهها نیز شناخته میشوند. هر کدام از این گرهها دارای “وزن” است. معمولا این وزنها نحوه پردازش دادهها توسط گرههای شبکه را دیکته میکنند و هر گره اهمیت ورودی را تقویت یا کاهش میدهد.
گرهها در نهایت یاد میگیرند که به کدام دادهها اهمیت دهند و به کدام یک نه. با گذشت زمان، ورودیهای اشتباه از چند لایه اول شبکه عبور نمیکنند. برتری شبکههای عصبی در یافتن الگوها در دادهها، تشخیص رابطه بین متغیرها، خوشهبندی و طبقهبندی دادهها است
انواع شبکههای عصبی
شبکههای عصبی بسته به معماری و نحوه قرارگیری گرهها طبقه بندی میشوند. آنها از شبکههای عصبی ساده با تنها یک تا سه لایه تا شبکههای پیچیدهتر که بیش از 10 لایه دارند را شامل میشوند.
– پرسپترون چند لایه
سادهترین نوع شبکه عصبی به عنوان پرسپترون شناخته میشود که معمولا ورودیها را از دو یا چند گره ورودی بهطور مستقیم به یک گره خروجی میفرستد. هیچ لایه میانی در این نوع شبکه عصبی وجود ندارد.
چنین شبکههایی در عملکرد ساده هستند و معمولا یک تابع غیرخطی در هر گره دارند. آنها معمولا برای مسایل پیچیدهای که نیاز به راهحلهای تقریبی دارند، استفاده شده و در تشخیص گفتار و ترجمه ماشینی استفاده میشوند.
– شبکههای عصبی کانولوشنال
شبکههای عصبی کانولوشنال CNN/نوعی شبکه عصبی هستند که میتوانند به تنهایی دادهها را وزندهی کنند و بار نیروی انسانی را برای برچسبگذاری و طبقهبندی دقیق دادهها بردارند. به طور معمول پیشپردازش دادهها، گردش کار زیادی را به خود اختصاص میدهند. CNNها میتوانند زمان لازم برای پیشپردازش دادهها را به شدت کاهش دهند، زیرا میتوانند به تنهایی دادهها را برچسبگذاری کنند.
شبکههای عصبی کانولوشنال بر اساس ساختار مغز حیوانات شبیه قشر بینایی عمل میکنند. الگوی اتصال بین گرهها در شبکه شبیه به نورونهای قشر بینایی است.
این شبکههای عصبی در تشخیص ویدیو و تصویر، موتورهای جستوجو پیشنهاددهنده/NLP استفاده میشود. یک نمونه ساده این موتورها، با پرسش چند سوال ساده در مورد ژانر/کارگردان/ یا بازیگر مورد علاقه، فیلمهای محبوب شما لیست میشوند.
– شبکههای عصبی مکرر
شبکههای عصبی مکرر RNNاز ورودیها، خروجیها و لایههای پنهان به صورت سری استفاده میکنند و شبکه میتواند ورودیها و خروجیهای گذشته را به خاطر بسپارد. این شبکهها نه تنها بر اساس دادههایی که برخط به آنها داده میشود، بلکه بر اساس دادههای گذشته که دریافت کردهاند، تصمیمگیری میکنند. شبکههای عصبی مکرر برای تشخیص گفتار مناسب به شمار میرود.
فریمورکهای یادگیری عمیق
مانند هر الگوریتم هوش مصنوعی، یک فریمورک برنامهنویسی برای ایجاد الگوریتمهای یادگیری عمیق مورد نیاز است.
– TensorFlow
Flow یک فریمورک یادگیری ماشین و یادگیری عمیق است که در سال 2015 توسط گوگل ایجاد و منتشر شد. TensorFlow محبوبترین فریمورک یادگیری عمیق است که امروزه توسط گوگل، انویدیا، اوبر و متخصصان هوش مصنوعی مورد استفاده قرار میگیرد.
TensorFlow یک کتابخانه پایتون است که در سایر زبانهای محبوب مانند جاوا، جاوا اسکریپت، C++ و … نیز قابل استفاده است. یک اشکال رایج TensorFlow این است که با یک نمودار محاسباتی ثابت عمل میکند به این معنی که الگوریتم هر بار باید اجرا شود تا تغییرات را ببینید.
– PyTorch
از بسیاری جهات، PyTorch رقیب اصلی TensorFlow در فریمورکهای یادگیری عمیق است. PyTorch که توسط فیسبوک توسعه یافته و ایجاد شده است، یک فریمورک یادگیری عمیق منبع باز است که با پایتون کار میکند. برخلاف گراف استاتیک تنسورفلو، PyTorch دارای یک نمودار محاسباتی پویا است که به کاربران اجازه میدهد به راحتی تغییرات را حین برنامهنویسی ببینند.
– Keras
Keras یکی دیگر از فریمورکهای یادگیری عمیق است که نسبت به سایر فریمورکهای برجسته مانند TensorFlow، Theano و Microsoft Cognitive Toolkit (CNTK) ساختار سادهتری دارد. حتی اگر از نظر برنامهنویسی در برابر PyTorch و TensorFlow شکست بخورد، نقطه شروع ایدهآلی برای یادگیری شبکه عصبی است. Keras به کاربران اجازه میدهد تا مدلهای بزرگ و پیچیده را با دستورات ساده ایجاد کنند.
امروزه یادگیری عمیق و شبکههای عصبی در خط مقدم تحقیقات و فناوری هوش مصنوعی قرار دارند. در این سری مقالات تلاش شده است با زبانی بسیار ساده و با کمترین پیچیدگی این فناوری معرفی شود.
*کارشناس فناوری اطلاعات و برق و مخابرات