اگر به مباحث مرتبط با فناوری هوش مصنوعی علاقه دارید و اگر بصورت سطحی هم مطالعهای در این مورد داشتهاید حتماً عبارت یادگیری ماشین یا Machine Learning را زیاد مشاهده نمودهاید. یادگیری ماشین و بخصوص زیرشاخههای آن بسیار جذاب و شگفتانگیز هستند. این زیرمجموعهها یادگیری عمیق یا Deep Learning و انواع مختلف شبکههای عصبی میباشند. جا دارد بصورت مختصر این دو اصطلاح را نیز توضیح دهیم چراکه بارها مشاهده شده که این اصطلاحات را به اشتباه بجای یکدیگر بکار میبرند.
NEURAL NETWORK
شبکههای عصبی یا Neural Networks یکی از ابزارهای اصلی مورد استفاده در یادگیری ماشین است. آنها مجموعهای از الگوریتمها هستند که بر اساس نحوه عملکرد مغز انسان مدلسازی شدهاند و برای شناسایی الگوها بکار میروند. آنها داده های حسی را از طریق برچسبگذاری و خوشه بندی دادههای ورودی، تفسیر می کنند. الگوهای تشخیص آنها اعدادی هستند که به صورت بردار، نمایش داده میشوند و در قالب این بردارها همه دادههای دنیای واقعی یعنی تصاویر، صدا، متن یا سریهای زمانی باید ترجمه شوند.
شبکههای عصبی به ما در خوشهبندی و طبقهبندی کمک میکند شما میتوانید آنها را به شکل یک لایه طبقهبندی و خوشهبندی در نظر بگیرید که در سطح بالای دادههای تحت مدیریت شما قرار می گیرند. آنها بر اساس شباهتهای میان نمونه های ورودی، دادههای برچسبگذاری نشده را گروهبندی (Grouping) میکنند و در مقابل, هنگامی که مجموعه ای از دادههای برچسبگذاریشده را دریافت میکنند مورد طبقهبندی (Clustering) قرار میدهند.
شبکههای عصبی شامل لایههای ورودی و خروجی و یک لایه پنهان هستند. وظیفۀ لایۀ پنهان تبدیل ورودی به چیزی است که بتواند مورد استفادۀ لایۀ خروجی قرار گیرد. چنین ابزاری، یک وسیلۀ فوقالعاده برای یافتن الگوهای بسیار پیچیده و پرشمار به حساب میآید در صورتیکه انسان هرگز چنین قدرتی برای استخراج این الگوها و تعلیم ماشین برای تشخیص آنها ندارد.
DEEP LEARNING
یادگیری عمیق زیرمجموعه یادگیری ماشین است و معمولاً این واژه را در اغلب موارد برای اشاره به شبکههای عصبی مصنوعی عمیق و برخی اوقات به جای یادگیری تقویتی عمیق بکار میبرند. شبکههای عصبی مصنوعی عمیق الگوریتمهایی هستند که برای مسائل مهمی همانند تشخیص تصویر، تشخیص صدا، سیستمهای پیشنهاددهنده، پردازش زبان طبیعی و ... کارکردهای قابل توجهی دارند.
واژۀ Deep یک واژۀ فنی است و به تعدادلایهها در یک شبکه عصبی اشاره دارد. یک شبکۀ غیرعمیق یک لایۀ معروف به لایۀ پنهان دارد و یک شبکۀ عمیق بیشتر از یک لایۀ پنهان دارد. شبکههای با لایههای بیشتر (عمیقتر) عملیات ریاضی بیشتری را روی دادههای ورودی اعمال نموده و بنابراین برای تعلیم، به شدت وابسته به محاسبات ریاضی فشرده هستند. به همین دلیل، ایجاد قابلیت یادگیری عمیق در ماشینها نیاز به سختافزارهای بیشتر و قویتر و زمان تعلیم بیشتری دارد ولیکن در عوض، دقت بهشدت بالاتر و عملکرد استثنایی را در وظایف ادراکی ماشین به ارمغان میآورد.
یادگیری عمیق یا Deep Learning زیر مجموعۀ یادگیری ماشین به حساب میآید و با خود یادگیری ماشین متفاوت است. تفاوت اصلی آنها در این است که مدلهای یادگیری ماشین به مرور بهتر میشوند و پیشرفت میکنند اما مدل همچنان به راهنمایی نیاز دارد. اگر یک مدل ML یک پیشبینی غیر دقیق و نادرست انجام دهد، شخص برنامهنویس میبایست مسئله را خودش با برنامهنویسی صریح (Explicit Programming) حل و فصل کند اما در یادگیری عمیق، مدل این کار را خودش انجام میدهد. نمونۀ یک مدل یادگیری عمیق را میتوانید در عملکرد سیستمهای رانندگی خودکار اتومبیلها ببینید.
یک مثال ساده:
فرض کنید یک چراغ قوه داشته باشید و با یادگیری ماشین میخواهید به آن یاد بدهید که هر وقت شخصی کلمۀ "تاریک" را به زبان آورد، چراغ روش شود. برای این کار، مدل ML عبارتهای مختلف که توسط افراد مختلف بکار میرود را تحلیل میکند و به دنبال کلمۀ "تاریک" میگردد بنابراین اگر شخصی بگوید "نور اتاقک خیلی کمه"، چراغ روش نخواهد شد. دراین موقعیت اگر یک مدل یادگیری عمیق بکار میرفت، چراغ روشن میشد چراکه یک مدل Deep Learning میتواند از شیوههای محاسباتی خودش یاد بگیرد.
روش یادگیری در Deep Learning
با یک مثال این فرایند را توضیح میدهیم:
خط تولید یک کارخانه را در نظر بگیرید. در این خط تولید، مواد خام از طریق یک نوار نقاله منتقل میشوند. در هر توقف در این مسیر، گروه متفاوتی از خصوصیات سطح بالا استخراج میگردد. در شبکۀ عصبی یادگیری عمیق، مواد خام در حکم مجموعۀ دادهها و هر توقف تسمه نقاله، به مثال یک لایۀ پنهان شبکۀ عصبی است. اگر هدف شبکۀ عصبی تشخیص یک شیء باشد، در اولین لایه، روشنایی پیکسلهای آن تحلیل میشود و در لایۀ بعدی لبههای تصویر شناسایی میگردد و همچنین ممکن است در لایۀ بعد آن، بافتها و شکلها تشخیص داده شود. پس از گذر از لایۀ چهارم و پنجم، یک ردیاب پیچیده برای خصوصیات شیء ساخته خواهدشد که میتواند عناصر معینی از تصویر را که عموماً در کنار هم هستند را بیابد. بهترین مثال میتواند چشم و گوش و بینی و .. باشد که عناصر اصلی چهره هستند و همواره در کنار هم در قالب یک چهره قرار میگیرند.
پس از این مرحله، ناظرانی که شبکه را تعلیم دادهاند می توانند خروجیها را برچسبگذاری کنند و برای تصحیح هر اشتباهی که رخ داده از انتشار رو به عقب یا Backpropagation استفاده کنند. تکنیک Backpropagation در صورتی که خروجی مورد انتظار بدست نیاید، به شبکهها اجازه میدهد لایههای پنهانشان را تغییر و اصلاح کنند. پس از مدتی، این شبکه قادر خواهد بود طبقهبندیهای خودش را بدون نیاز به کمک هر انسانی انجام دهد و در حقیقت، یک شبکۀ عصبی مصنوعی عمیق بدست خواهدآمد.
رابطۀ یادگیری عمیق با شبکههای عصبی
همانطور که در شکل بالا مشاهده میکنید رابطۀ اصطلاحات مختلفی که پیرامون فناوری هوش مصنوعی شنیدهاید در قالب یک گراف به نمایش در آمدهاست. یادگیری ماشین به عنوان زیرمجموعۀ هوش مصنوعی خودش شامل زیرمجموعهایی است که در این مقاله در مورد آنها مختصراً صحبت شده است. یادگیری عمیق یا شبکههای عصبی عمیق (Deep Neural Networks)، نامی است که برای شبکههای عصبی انباشته شده یا Stacked Neural Networks انتخاب می کنیم و به معنی شبکه هایی متشکل از چندین لایه است. یادگیری عمیق الگوریتمهایی را در ساختارهای لایهای سازماندهی میکند تا یک شبکه عصبی مصنوعی (ANN) بسازد بطوری که این شبکه بتواند به خودی خودش و بدون نیاز به انسان، تصمیمات هوشمندانه اتخاذ نماید.
روی هم رفته اگر بخواهیم شبکه های عصبی و یادگیری عمیق را تعریف کنیم بدینگونه می توان درباره آنها سخن به زبان آورد:
شبکه های عصبی یک پارادایم برنامه نویسی الهام گرفته از بیولوژی است که کامپیوترها را قادر به یادگیری از داده های بصری و شهودی میکند و یادگیری عمیق مجموعه ای از تکنیکهای قدرتمند برای یادگیری در شبکه های عصبی میباشند.
امروزه شبکههای عصبی و یادگیری عمیق بهترین راهکارها را برای مسائل متعددی همانند تشخیص چهره، تشخیص گفتار و پردازش زبان طبیعی ارائه میدهند.