شکی نیست که امروزه سختافزارها و نرمافزارها روزبهروز قدرتمندتر از سابق میشوند. در این میان دادههای بزرگی (Big Data) نیز در سوپرکامپیوترها جمعآوریشدهاند که میتوانند توان پردازشی رایانهها را بالاتر ببرند. از سوی دیگر انتظارات کسبوکارها از کامپیوترها و قدرت پردازشی آنها افزایشیافته است و شرکتها به دنبال استفاده بهینهتر و کارآمدتر از منابعشان هستند. در پاسخ به این نیاز حوزۀ جدیدی ایجاد شده است که یادگیری ماشین (machine learning) نام دارد. در طول این مقاله به موضوع آموزش deep learning میپردازیم.
موضوع اصلی دانش یادگیری ماشین الگوریتمهایی هستند که توان بهبود عملکرد خودشان را داشته باشند. یادگیری ماشین اوج تقابل دانش کامپیوتر، ریاضیات و آمار است. البته یادگیری ماشین در ابتدا برای توسعۀ هوش مصنوعی (artificial intelligence) ایجاد شد. اما به دلیل محدودیتهای نظری آن و البته محدودیتهای فناوریهای موجود، حوزۀ نفوذ آن کمتر شد و دایرۀ پوشش آن به الگوریتمهایی که وظایفی خاص را انجام میدهند تقلیل یافت.
البته همانطور که تاریخ علم به ما نشان داده است، بشر همواره توانسته است با حل یک مسئله و بسط آن به مسائل دیگر، حوزۀ یک علم را بهشدت گسترش دهد. ازاینرو هیچ بعید نیست که در آینده یادگیری ماشین منجر به ایجاد هوش مصنوعی هم گردد.
در راستای توسعۀ یادگیری ماشین و در زیر مجموعۀ آن، موضوع یادگیری عمیق (deep learning) مطرح شد و بهسرعت نیز گسترش یافت و محبوب شد. هم اکنون deep learning یکی از هیجانانگیزترین رشتههای علمی است. از deep learning در فناوریهای مختلفی همچون خودروهای بدون راننده، شناسایی تصاویر در شبکههای اجتماعی، و ترجمۀ متن از زبانی به زبان دیگر استفاده میشود.

اگر به طور فنیتری به قضیه نگاه کنیم، deep learning یکرشتهٔ فرعی از یادگیری ماشین است که تمرکز آن بر روی ایجاد الگوریتمهایی است که سطح بالا و پایینی از دادههای انتزاعی را یاد میگیرند و تفسیر میکنند. deep learning درست در همان جایی ورود کرده است که الگوریتمهای سنتی یادگیری ماشین، در انجام آن ناتوان بودند.
مدلهای موجود در deep learning معمولاً از منابع مختلفی از دانش همچون نظریۀ بازی (game theory)، عصبشناسی (neuroscience) و یا بسیاری از مدلهای دیگر که ساختار اصلی سیستم عصبی انسان را تقلید میکنند، الهام گرفته شدهاند. بد نیست بدانید در حال حاضر شرکتهای مختلف پیشرو در فناوری همچون گوگل، مایکروسافت، فیسبوک، و حتی شرکتهای تولید کنندۀ خودرو همچون تسلا موتورزو خودروسازی نیسان و … در این حوزه سرمایهگذاریهای عظیمی را کردهاند. بدون شک آوازۀ اتومبیلهای خودران تسلا به گوش شما هم رسیده است.
همانطور که این رشته توسعه مییابد، بسیاری از محققان جهانی را تصور میکنند که در آن نرمافزارها به اندازۀ آنچه که امروزه میبینیم، هارد کد (hard coded) نشده باشند و در واقع نرمافزارها راهحلهای قویتر و عمومیتری را برای مشکلات ارائه دهند که قابل بسط به مسئلههای مختلف باشد.
در اینجا و قبل از آنکه به ادامۀ آموزش deep learning بپردازم میخواهم اشاره کنم که پیشنیاز ورود به حوزه یادگیری ماشین و مباحث زیر مجموعۀ آن همچون یادگیری عمیق که بحث این مقاله است، این است که بر جبر خطی، حسابان، آمار و احتمالات تسلط کافی داشته باشید. ضمن اینکه باید یک زبان برنامهنویسی را هم خوب بلد باشید.
معمولاً از زبانهای برنامهنویسی R و یا پایتون در این حوزه بهوفور استفاده میشود و ازاینرو توصیه ما به شما همین موارد هستند. البته مواردی که در این آموزش مطرح میشوند، نیاز به این پیشنیازها ندارد و بیشتر مقدمهای بر یادگیری عمیق است. اگر احساس میکنید که در مبانی یادگیری عمیق نیاز به اطلاعات بیشتری دارید، آموزش مبانی یادگیری عمیق در فرادرس را به شما توصیه میکنم.
- آموزش مبانی یادگیری عمیق در فرادرس — کلیک کنید
آموزش deep learning – بررسی شبکۀ عصبی عمیق
در این بخش از آموزش deep learning به یکی از مفاهیم مهم و پایهای در این رشته میپردازیم. اگرچه deep learning در ابتدا در فضایی شبیه به یادگیری ماشین شروع شد، اما امروزه این شاخه تکاملیافته است و تعریف گستردهتری از الگوریتمها را در برمیگیرد که قادر به درک سطوح مختلفی از نمایش دادهها، متناظر با سلسلهمراتب مختلفی از پیچیدگیها، هستند.
بهعبارتدیگر، الگوریتمهای deep learning علاوهبرآن که قادر بهپیش بینی و طبقهبندی هستند، توانایی یادگیری سطوح مختلف پیچیدگیها را نیز دارند. نمونهای از این الگوریتمها را میتوان در الگوریتم تشخیص تصویر یافت. در الگوریتم تشخیص تصویر، یک شبکۀ عصبی بر اساس تشخیص مژهها، چهرۀ افراد و … بنا میشود. الگوریتمهای deep learning ما را قادر میسازند تا به سطحی از پیچیدگی لازم برای ایجاد نرمافزارهای هوشمند برسیم.
یکی دیگر از نرمافزارهایی که از این الگوریتمها بهره میگیرند، نرمافزارهای تصحیح خودکار متن هستند که پیشنهادهای تصحیح متنشان را با توجه الگوهای مشاهده شده در همان فرد ارائه میدهند و در واقع برای تصحیح متن از واژگان ذهنی مخصوص همان شخص بهره میگیرند. این نوع الگوریتمها در واقع دقیقاً رفتار همان شخص را در تصحیح متون تقلید میکنند.
ساختار مدلهای یادگیری عمیق اغلب بهگونهای است که دارای لایههایی از واحدهای غیرخطی هستند که دادهها یا نورونها را پردازش میکنند و لایههای متعددی در این مدلها قرار دارند که سطوح مختلفی از انتزاع دادهها را پردازش میکنند. تصویر زیر این شبکۀ عصبی عمیق را نشان میدهد.

این لایههای میانی که وظیفۀ پردازش سطوح مختلف انتزاع را بر عهده دارند، لایههای پنهان (hidden layers) نامیده میشوند. دلیل این نامگذاری این است که ما لزوماً مطلع نیستیم ورودی و خروجی این نورونها چه هستند. در واقع آنچه منجر به تفاوت مدلها میشود، این لایههای مخفی میانی هستند.
اگر بخواهیم ملموستر و واضحتر منظورمان را بیان کنیم، سطوح پایینتر این مدلها “چگونگی” را توضیح میدهند و سطوح بالاتر آنها “چرایی” را پردازش میکنند. توابع مورداستفاده در این لایهها به موارد استفاده (use case) بستگی دارند، اما غالباً توسط کاربرها قابل تنظیم هستند. این نوع توابع به طرز قابلتوجهی از مدلهای متوسط یادگیری ماشین که معمولاً برای طبقهبندی و رگرسیون (regression) استفاده میشوند، قدرتمندتر هستند. پیشفرض در مدلهای یادگیری عمیق در سطح بنیادین این است که دادههای تفسیر شده توسط تعامل بین فاکتورهای مختلفی که در این لایهها سازماندهی شدهاند، تولید میشوند.
بدین ترتیب، داشتن لایههای متعدد، مدل مربوطه را قادر میسازد تا دادهها را بهگونهای پردازش کند که درک درستی از جنبههای ساده تا جنبههای پیچیده پیدا کند. هدف این مدلها این است که وظایف را بدون دریافت دستورات صریحی که در بسیاری از الگوریتمهای یادگیری ماشین موردنیاز است، انجام دهند. یکی از مزیتهای اصلی این روش این است که بر مسائلی که از پیش پاسخی برای آنها تعیین نکردهایم قابل تعمیم هستند.
بهعنوانمثال میتوانیم به الگوریتمهای تشخیص تصویر اشاره کنیم. بعد از اینکه یک مدل را با دادههای مختلف تمرین دادیم، میتوانیم تصویری از یک سگ را به آن نشان بدهیم و آن را وارد مرحلۀ آزمایش کنیم و بدون اینکه به آن مدل بگوییم تصویر مربوط به چه چیزی است، کار را ادامه دهیم. این شبکۀ عصبی عمیق کار را با تشخیص مژهها قبل از پوزۀ سگ آغاز میکند.
سپس سراغ پوزه و سپس سراغ سر سگ و سایر اندامهای سگ میرود. این کار را تا جایی پیش میبرد که این تصویر را بهعنوان تصویر سگ طبقهبندی کند. برای عمق بخشیدن دانستههایتان در مبحث یادگیری عمیق، آموزش یادگیری عمیق با پایتون – تنسور فلو و کراس TensorFlow و Keras را به شما پیشنهاد میکنم.
- آموزش یادگیری عمیق با پایتون – تنسورفلو و کراس — کلیک کنید
مدلهای deep learning
در بخشهای پیشین از آموزش deep learning به کلیاتی راجع به یادگیری عمیق و همینطور مفاهیم پایهای مرتبط با آن اشاره کردیم. در این قسمت به مدلهای یادگیری عمیق میپردازیم. البته در اینجا باید اشاره کنم که درک کامل مدلهای یادگیری عمیق نیاز بهپیش زمینههایی در ارتباط با ریاضیات و آمار دارد. در برخی مدلها نیز مفاهیم جبر خطی وارد ماجرا میشوند. اما ازآنجاکه در این مقالۀ کوتاه آموزشی هدف ما تعمیق تا این حد نیست، وارد این مباحث نخواهیم شد.
مدل SLP
مدل SLP که سرنام کلمات عبارت single layer perceptron است، سادهترین شکل شبکۀ عصبی عمیق است. البته درعینحال که سادهترین شکل این شبکه عصبی است، پایهای برای توسعۀ سایر مدلهای یادگیری عمیق نیز است. به طور معمول از SLP در مسائل طبقهبندی استفاده میکنیم، به کمک SLP به مشاهدات دادهها برچسبهایی به شکل دودویی یا چندجملهای میدهیم. تصویر زیر این مدل را نشان میدهد.

در مدل SLP، مقادیر ورودی ابتدا در یک سری وزن (weights) ضرب میشوند و سپس به یک جمع تجمعی افزوده میشوند و به خروجی ارسال میشوند. این جمع تجمعی (cumulative sum) در یک تابع فعالسازی (activation function) قرار میگیرد. آن تابع فعالسازی خروجی را تعیین میکند. اگر خروجی بالاتر یا پایینتر از آستانۀ تعیین شده توسط کاربر باشد، خروجی نهایی تعیین میشود.
مدل MLP
در این بخش از مقالۀ آموزش deep learning به مدل MLP که در اصل Multilayer Perceptron Model است میپردازیم. مدل MLP بسیار شبیه به مدل SLP است. در واقع مدل MLP عبارت از چندین لایه به یکدیگر پیوسته است که رویهمرفته یک شبکۀ عصبی فید فوروارد (feed-forward) را تشکیل دادهاند. هر نورون در هر لایه دارای اتصالاتی به نورونهای لایههای جداگانه است.
یکی از عوامل متمایز کنندۀ کلیدی در این مدل و البته در مدل SLP این است که در آنها الگوریتم انتشار رو به عقب (back-propagation algorithm) وجود دارد. این الگوریتم یک روش رایج برای آموزشدادن شبکههای عصبی است. الگوریتم back-propagation خطاهای محاسبه شده در لایه خروجی را به لایه ورودی منتقل میکند، بهنحویکه ما میتوانیم سهم هر لایه را در تولید آن خطا بدانیم و متناسب با آن شبکه را تصحیح کنیم.
در اینجا از یک الگوریتم تدریجی نزولی (gradient descent algorithm) برای تعیین میزان تغییر وزنها در هر تکرار استفاده میکنیم. خود Gradient descent نیز یکی دیگر از الگوریتمهای محبوب یادگیری و بهینهسازی ماشین است. این الگوریتم در واقع یک مشتق تابعی ساده است که منجر به مقدار اسکالری میشود که به بیشترین تکانه اشاره دارد. این الگوریتم با کمکردن گرادیان (gradient) هر بار ما را به سمت راهحلی هدایت میکند که از راهحل قبلی بهینهتر است. این فرایند آنقدر ادامه مییابد تا به یک راهحل معروف به بهینۀ جهانی (global optimum) برسیم. شکل زیر مدل MLP را نشان میدهد.

آموزش deep learning – نتیجهگیری
یادگیری ماشین و مباحث مرتبط با آن همچون یادگیری عمیق (deep learning) جزء مباحث علمی تقریباً پیچیده هستند. بااینحال سعی ما در این مقاله بر این بود که تاحدامکان به زبان ساده این مفاهیم را توضیح دهیم. در طول این مقاله متوجه شدیم که یادگیری عمیق زیرشاخهای از یادگیری ماشین است که به مباحث خاصی پرداخته است.
موضوع اصلی یادگیری عمیق، الگوریتمهایی هستند که میتوانند دادههای انتزاعی را تفسیر کنند و از آنها بیاموزند و متناسب با آنها عملکردشان را بهبود بخشند. از این الگوریتمها در حوزههای مختلفی همچون خودروهای بدون راننده (که به خودران نیز معروفاند)، الگوریتمهای تشخیص تصاویر، و الگوریتمهای تبدیل (ترجمۀ) زبانها به یکدیگر استفاده میشود.
در طول این مقاله با یکی از مفاهیم مهم و پایهای این رشته یعنی شبکۀ عصبی عمیق آشنا شدیم. همچنین با دو مدل SLP و MLP نیز آشنایی نسبی پیدا کردیم. البته مدلهای دیگری همچون مدل CNNs، مدل RNNs، مدل RBMs، و مدل DBNs نیز وجود دارند که در طول این مقاله به آنها ورود نکردیم. شما میتوانید به کمک منابع آموزشی معرفی شده در این مقالۀ آموزشی، دانشتان در حوزه یادگیری ماشین و یادگیری عمیق را ارتقا بخشید.
در پایان این مقاله مایلم منابع آموزشی زیر از فرادرس را با شما به اشتراک بگذارم.
- آموزش یادگیری ماشین
- مجموعه آموزش هوش مصنوعی