شبکه عصبی عمیق
یکی از مهمترین و جدیدترین مباحث در یادگیری ماشینی و یادگیری عمیق، مبحث شبکه عصبی عمیق است.شبکه عصبی، دستهای از الگوریتمهاست که برای شناسایی و تشخیص الگوها استفاده میشود. شبکهی عصبی ساختاری شبیه به مغز انسان دارد و نامگذاری آن نیز به همین دلیل است. انواع دادهها مانند متن، تصویر، فیلم و … قابل تبدیل به بردارهایی با مولفههای عددی هستند. الگوهایی که یک شبکه عصبی تشخیص میدهد، به شکل مولفههای عددی یک بردار چند بعدی هستند. بنابراین، شبکه عصبی، با استفاده از یک ابزار ادارکی ماشینی (machine perception)، دادههای خام را دریافت میکند و سعی میکند الگوهای موجود در این دادهها را شناسایی کند.
با استفاده از الگوریتم های شبکه عصبی، میتوان اقدام به دستهبندی (classification) یا خوشهبندی (clustering) دادهها کرد. شبکه عصبی را میتوان مانند یک فیلتر دانست که دادههای عبوری از خودش را دستهبندی یا خوشهبندی میکند. برای مثال، میتوان مجموعهای از دادههای کلاسبندیشده (labeled) را به شبکه عصبی داد تا با این ورودی آموزش ببینید. سپس، میتوان این انتظار را داشت که دادهای جدید به شکل خودکار کلاسبندی شوند.
تفاوت یادگیری عمیق و DeepLerning algorithm
وقتی از عبارت یادگیری عمیق (Deep Learning) استفاده میکنیم، عمدتاً مقصودمان همان شبکه عصبی عمیق (Deep Neural Network) است. البتهی اگر بخواهیم دقیقتر عنوان کنیم، تفاوت یادگیری عمیق و شبکه عصبی در آن است که یادگیری عمیق محدودهای گستردهتر از شبکه عصبی دارد و الگوریتمهای یادگیری تقویتی (reinforcement learning) را نیز در برمیگیرد. به این ترتیب تفاوت شبکه عصبی با یادگیری عمیق روشن شد و نباید آنها را با هم اشتباه بگیریم. اما سوال مهمی که مطرح میشود، آن است که به وسیلهی یادگیری عمیق، چه نوع مسائلی را میتوان حل کرد؟ برای جواب به این سوال، باید ابتدا به دو سوال دیگر جواب دهیم:
- چه کلاسبندیهایی برای ما اهمیت دارد؟ برای مثال، ممکن است در فیلتر ایمیل، اسپم بودن یا اسپم نبودن مهم باشد. یا ممکن است در سیستمهای مدیریت مشتری، شاد بودن یا نبودن مشتری به عنوان کلاسهای ما مطرح شود.
- آیا دادههای کلاسبندیشده برای آموزش به سیستم (train) در اختیار داریم؟ به طور دقیقتر، آیا قادر به یافتن یا ساختن یک دیتاست کلاسبندیشده هستیم یا نه؟
انواع دسته بندی (classification)
در روش دستهبندی، ما یک مجموعه از دادههای کلاسبندیشده (labeled datasets) در اختیار شبکهی عصبی قرار میدهیم و انتظار داریم که شبکه، رابطهی خروجی و دادههای ورودی را پیدا کند. نام دیگر این روش، یادگیری با ناظر (supervised learning) است.
چند نمونه از کاربردهای روش دستهبندی:
- تشخیص چهره و بدن فرد در یک تصویر، تشخیص حالت صورت (مثلا خوشحال یا عصبانی)
- تشخیص اشیای مختلف در تصاویر
- تشخیص حرکات در ویدیو
- شناسایی صدا، تبدیل صوت به متن، تشخیص احساسات در صدا
- دستهبندی ایمیلها، تشخیص احساسات داخل متن (مثلا احساس مشتری نسبت به محصول در متن بازخورد او)
انواع شبکه عصبی عمیق – خوشه بندی (clustering)
خوشهبندی به عبارت ساده، پیدا کردن نقاط اشتراک است. در روش خوشهبندی، نیازی به دادههای اولیه کلاسبندیشده نداریم. نام دیگر این روش، یادگیری بدون ناظر (unsupervised learning) است. حجم عظیمی از دادههایی که در دنیا وجود دارند، دادههای کلاسبندینشده (Unlabeled data) هستند. بر اساس یک قانون کلی در یادگیری ماشینی، هر چقدر میزان دادههای ورودی بیشتر باشد، دقت مدلسازی ما نیز بیشتر میشود. بنابراین، در روشهای یادگیری بدون ناظر، به دلیل دسترسی به حجم بیشتری از دادهها، به مدلهای دقیقتری دست مییابیم.
چند نمونه از کاربردهای روش خوشهبندی:
- جستوجو: مقایسهی اسناد، تصاویر و صداها با یکدیگر برای یافتن موارد مشابه
- تشخیص تضادها: پیدا کردن ناسازگاریها در یک مجموعه داده
انواع شبکه عصبی عمیق – رگرسیون (regressions)
رگرسیون نیز مانند روش دستهبندی، نوعی روش یادگیری با ناظر است. تفاوت اصلی رگرسیون با دستهبندی در نوع دادههای ورودی است. دادههای ورودی در روش دستهبندی (classification)، دادههایی گسسته هستند. در حالیکه دادههای ورودی در روش رگرسیون (regressions)، پیوسته هستند.
چند نمونه از کاربردهای روش رگرسیون:
- خرابی سختافزارها (دیتا سنتر، کارخانهها، خطوط حملونقل عمومی و …)
- بیماریها (سکته مغزی، سکته قلبی)
- محاسبه احتمال خروج و عدم رضایت مشتری از وبسایت بر اساس رفتار او
- پیشبینی میزان گردش مالی
هرچقدر بتوانیم پیشبینیهای دقیقتری داشته باشیم، بهتر میتوانیم عمل کنیم و از وقوع حوادث نامطلوب پیشگیری کنیم. با استفاده از شبکهی عصبی، با پیشبینیهای مختلف میتوانیم دنیایی با اتفاقات عجیب و غیرمترقبهی کمتری بسازیم.
اجزای DeepLerning algorithm چیست؟
یادگیری عمیق، در واقع عبارتی است که ما برای شبکههای عصبی عمیق استفاده میکنیم. منظور از عمیق بودن در اینجا، چند لایه بودن این شبکههاست. لایههای شبکهی عصبی، از گرهها (nodes) تشکیل شدهاند. یک گره، مانند نورونهای مغز انسان، مکانی برای انجام محاسبات است.
تصویر زیر، فرآیندی را که دادهها در یک شبکهی عصبی طی میکنند، نشان میدهد.
در یک گره، دادهی ورودی در یک وزن (weight) ضرب میشود. این وزن، تاثیر آن داده را نشان میدهد. وزن میتواند تاثیر یک داده را افزایش یا کاهش دهد. پس از آن، مجموع دادههای ضربشده در وزنشان محاسبه میگردد. در آخر هم برای رسیدن به خروجی، مجموع به دست آمده، از یک تابع فعالساز (Activation Function) عبور میکند.
مفاهیم کلیدی در شبکه عصبی چیست؟
تفاوت اصلی شبکههای عمیق عصبی و شبکههای عصبی معمولی در تعداد لایههای درونی آنهاست. شبکهی عصبی معمولی حداکثر از سه لایه تشکیل شدهاست؛ اما، در شبکهی عمیق عصبی، دادهها باید از یک شبکه با چندین لایه عبور کنند.
در یک شبکهی عمیق عصبی، در هر لایه، بر روی ویژگی خاصی از دادهها کار میشود. هر چقدر در شبکهی عصبی پیش برویم، شبکه قادر به تشخیص ویژگیهای پیچیدهتری میشود. این فرآیند، سلسلهمراتب ویژگیها (feature hierarchy) نام دارد. این ویژگی شبکهی عصبی، باعث میشود که بسیار قدرتمند شوند و دادههایی با ویژگیهای متعدد (high-dimensional data) را پردازش کند.
یکی از ویژگیهای دیگر شبکهی عصبی آن است که این شبکه میتواند دادههای کلاسبندینشده یا ساختارنیافته (unlabeled یا unstructured) را خوشهبندی کند. برای مثال، شبکهی عصبی مجموعهای از عکسهای مختلف را دریافت میکند و آنها را به خوشههای عکسهای مادربزرگ شما، عکسهای ماشین، عکسهای کوه و … تقسیمبندی میکند؛ بدون آنکه، نیاز به دخالت انسانی یا دادههای کلاسبندیشده باشد.
منبع : علیرضا کریمی – فنولوژی