یادگیری عمیق (Deep Learning) بخشی از خانوادهی بزرگتر یادگیری ماشین است که بر روشهایی تمرکز دارد که مبتنی بر شبکههای عصبی مصنوعی هستند. در این مقاله از فنولوژی به این سوال پاسخ میدهیم که یادگیری عمیق چیست؟ برای فهم سادهتر این مفهوم ابتدا در ویدیوی زیر به توضیح یادگیری عمیق به زبان ساده میپردازیم.
یادگیری عمیق چیست؟
یادگیری عمیق زیرمجموعهای از یادگیری ماشین است که در آن از الگوریتمهایی استفاده میشود که مغز انسان را شبیهسازی میکنند. این الگوریتمها شبکههای عصبی مصنوعی نام دارند.
برای پاسخ به این سوال که یادگیری عمیق چیست؟، به صحبتهای یکی از دانشمندان در این زمینه رجوع میکنیم. اندرو انجی (Andrew Ng)، دانشمند ارشد مرکز تحقیقات بایدو (Baidu)، پروژهی Google Brain را که منجر به توسعهی یادگیری عمیق در بسیاری از سرویسهای گوگل شد پایهگذاری کرده است. او در یک سخنرانی در مورد یادگیری عمیق، ایدهی یادگیری عمیق را به شکل زیر توصیف میکند:
«استفاده از شبیهسازیهای مغز انسان برای:
– بهتر کردن و ساده سازی استفادهی الگوریتمهای یادگیری.
– ایجاد پیشرفتهای انقلابی در زمینهی هوش مصنوعی و یادگیری ماشین.
از نظر من یادگیری عمیق بهترین راه برای رسیدن به هوش مصنوعی واقعی است.»
یادگیری عمیق یک روش یادگیری ماشین است که به کامپیوترها یاد میدهد که کاری را که معمولا انسانها انجام میدهند را انجام دهند: یادگیری با مثالها. یادگیری عمیق تکنولوژی اصلی ساخت خودروهای خودران است؛ یادگیری عمیق به خودروها این توانایی را میدهد که تابلوها را شناسایی کنند، و یا تیر چراغ برق را از انسان تشخیص دهند. یادگیری عمیق تکنولوژی کلیدی مورد استفاده در رابط کاربری صوتی تلفنهای همراه، تبلتها، تلویزیونها و هندزفریها است. مدتی است که یادگیری عمیق توجه بیشتری را به سمت خود جلب کرده است؛ چراکه نتایجی را با خود به همراه داشته است که هیچگاه در گذشته ممکن نبودهاند.
در یادگیری عمیق، یک مدل کامپیوتری یاد میگیرد که دستورهای دستهبندی (classification) را مستقیما از تصویر، متن، یا صدا اجرا کند. مدلهای یادگیری عمیق میتوانند به بالاترین سطح دقت برسند؛ به طوری که گاهی از انسانها هم بهتر عمل میکنند. مدلهای یادگیری عمیق با استفاده از گروههای عظیمی از دادهها و شبکههای عصبی با لایههای بسیار، تعلیم (train) داده میشوند.
دلیل اهمیت یادگیری عمیق چیست؟
یادگیری عمیق چگونه به این نتایج شگفتانگیز دست مییابد؟ در یک کلمه، دقت. امروزه، یادگیری عمیق به سطح بسیار بالایی از دقت در تشخیص دست یافته است. این دقت، وسایل الکترونیکی را قادر میسازد که پاسخگوی سطح انتظارات کاربران باشند. همچنین داشتن چنین دقتی، در کاربریهای حساسی چون خودروهای خودران بسیار حیاتی است. پیشرفتهای اخیر در یادگیری عمیق به جایی رسیده است که در بعضی کارها مانند دستهبندی کردن تصاویر، یادگیری عمیق بهتر از انسان عمل میکند.
یادگیری عمیق اولین بار در دههی ۸۰ میلادی نظریهپردازی شد. با این حال، دو دلیل اصلی وجود دارد که تکنولوژی یادگیری عمیق تنها اخیرا سودمند ظاهر شده است:
- یادگیری عمیق نیاز به مقدار عظیمی از دادهها دارد. برای مثال، برای توسعهی خودروهای خودران نیاز به میلیونها تصویر و هزاران ساعت ویدیو است.
- یادگیری عمیق به قدرت پردازشی بسیار بالایی نیاز دارد. واحدهای پردازندهی گرافیکی قدرتمندی که در یادگیری عمیق استفاده میشوند، هزینهی بالایی دارند. اگر این پردازندهها با رایانش ابری همگام شوند، تیمهای توسعه میتوانند زمان تعلیم یافتن مدلها را از هفتهها به ساعتها یا کمتر تبدیل کنند.
کاربردهای یادگیری عمیق چیست؟
یادگیری عمیق در صنعت کاربردهای بسیاری دارد؛ از رانندگی خودکار گرفته تا تکنولوژیهای به کار رفته در وسایل پزشکی.
- کاربرد یادگیری عمیق در رانندگی خودکار: محققین خودروها در حال استفاده از یادگیری عمیق برای شناسایی اشیایی مانند تابلوها و چراغهای راهنمایی هستند. علاوه بر این، یادگیری عمیق در تشخیص عابرین پیاده استفاده میشود که به کاهش تصادفات کمک میکند.
- کاربرد نظامی و هوایی یادگیری عمیق: الگوریتمهای یادگیری عمیق میتوانند تصاویر ماهوارهای را آنالیز کنند و نقاط امن و ناامن را برای سربازان شناسایی کند.
- کاربرد یادگیری عمیق در تحقیقات پزشکی: محققان سرطان از یادگیری عمیق برای تشخیص خودکار سلولهای سرطانی استفاده میکنند. در دانشگاه کالیفرنیا (UCLA) میکروسکوپ پیشرفتهای ساخته شده است که دادههایی با بعد بالا تولید میکند. از این دادهها برای تعلیم مدلهای یادگیری عمیق در تشخیص دقیق سلولهای سرطانی استفاده میشود.
- یادگیری عمیق در دستیارهای مجازی: دستیارهای مجازی مانند الکسا، سیری، و کورتانا، از یادگیری عمیق برای پردازش زبان طبیعی و برقراری ارتباط موثر با انسانها استفاده میکنند.
- کاربرد یادگیری عمیق در ترجمه: به روشی مشابه، الگوریتمهای یادگیری عمیق میتوانند زبانهای مختلف را به یکدیگر ترجمه کنند. این کار میتواند برای بسیاری از مسافران و تاجران، و حتی دولتها مفید باشد.
- استفاده از یادگیری عمیق در چت باتها: در بسیاری از شرکتها از چت باتهای مبتنی بر هوش مصنوعی در جهت ارائهی پشتیبانی آنلاین برای کاربران استفاده میشود. این چت باتها به دلیل بهره بردن از تکنولوژی یادگیری عمیق میتوانند یک پشتیبانی هوشمند و کارآمد ارائه کنند.
- کاربرد یادگیری عمیق در رنگ کردن تصاویر سیاه و سفید: تبدیل عکسهای سیاه و سفید به تصاویر رنگی، عملی است که در گذشته به صورت دستی انجام میشده است. امروزه، الگوریتمهای یادگیری عمیق میتوانند تصاویر سیاه و سفید را با توجه به اشیایی که در آنها وجود دارد رنگآمیزی کنند و تصاویری رنگی تولید کنند. نتایج این کار بسیار دقیق و حیرتانگیز است.
رنگکردن تصاویر سیاه و سفید با استفاده از OpenCV و یادگیری عمیق
- کاربرد یادگیری عمیق در تشخیص چهره: از تشخیص چهره با استفاده از الگوریتمهای یادگیری عمیق نه تنها در کاربردهای امنیتی، بلکه در کاربردهایی مثل تگ کردن افراد در تصاویر فیسبوک استفاده میشود. از تکنولوژی تشخیص چهره میتوان در پرداخت وجوه در فروشگاهها نیز استفاده کرد. چالشی که در تشخیص چهره با آن مواجه هستیم، این است که بتوان یک فرد را در شرایط مختلف شناسایی کرد؛ مثلا با مدل مو یا ریش متفاوت و با عینک و بدون آن، یا در شرایط نوری ضعیف.
روش کار یادگیری عمیق چیست؟
حال که فهمیدیم یادگیری عمیق چیست، میخواهیم بدانیم که روش کار آن چگونه است. جف دین (Jeff Dean) که او هم در پروژهی Google Brain شرکت داشته است، میگوید: «وقتی واژهی یادگیری عمیق را میشنوید، آن را یک شبکهی بزرگ عصبی در نظر بگیرید. واژهی «عمیق» عموما به تعداد لایههای پنهان شبکهی عصبی اشاره دارد». این شبکههای عصبی میتوانند از دو یا سه لایه، تا بیش از ۱۰۰ لایه داشته باشد. به همین دلیل، اغلب، مدلهای یادگیری عمیق را «شبکههای عصبی عمیق» میگویند. برای آشنایی دقیقتر با شبکهی عصبی عمیق و مفاهیم مربوط به آن، مقالهی شبکه عصبی عمیق را مطالعه کنید.
یادگیری عمیق مسائلی را حل میکند که دارای ورودیها (و بعضا خروجیهای) آنالوگ هستند. به این معنی که ما با تعداد محدودی مقدار سر و کار نداریم؛ بلکه با تصاویر با دادههای پیکسلی، نوشتهها با دادههای متنی، و فایلها با دادههای صوتی سر و کار داریم.
شبکهی عصبی پیچشی، یکی از انواع شبکههای عصبی عمیق
یکی از مشهورترین انواع شبکههای عصبی عمیق، شبکهی عصبی پیچشی یا همگشتی (Convolutional Neural Network) نام دارد که به اختصار ConvNet یا CNN نیز میگویند. این روش موفقیتهای زیادی را کسب کرده است؛ چرا که در CNN، با افزایش دادهها و اندازهی مدل، شبکهی عصبی گسترش مییابد و خود را تطبیق میدهد. همچنین میتواند با روش انتشار معکوس (backpropagation) نیز تعلیم یابد.
CNNها نیاز به استخراج ویژگیها را حذف میکند؛ به این معنا که برای دستهبندی تصاویر، نیازی به مشخص کردن ویژگیهای آن نخواهیم داشت. شبکهی CNN، به شکل خودکار، ویژگیهای تصاویر را به صورت مستقیم استخراج میکند. خصوصیاتی که CNN دارد، باعث شده است که در کارهای بینایی ماشین، مانند دستهبندی کردن اشیا، بسیار دقیق عمل کند.
CNNها یاد میگیرند که ویژگیهای مختلف یک تصویر را با استفاده از دهها و صدها لایهی مخفی شبکهی عصبی تشخیص دهند. هر لایهی اضافی، پیچیدگی ویژگیها را افزایش میدهد. برای مثال، اولین لایه میتواند یاد بگیرید لبههای اشیا را تشخیص دهد؛ در حالی که آخرین لایه یاد میگیرد شکلها و خمیدگیهای پیچیدهی اشیا را شناسایی کند. برای کسب اطلاعات بیشتر درمورد شبکههای عصبی پیچشی، مقالهی “شبکه عصبی کانولوشن چیست؟” را مطالعه کنید.
تفاوت یادگیری ماشین با یادگیری عمیق چیست؟
یادگیری عمیق نوع خاصی از یادگیری ماشین است. روند کار یادگیری ماشین با استخراج دستی ویژگیها شروع میشود. سپس با استفاده از این ویژگیها مدلی برای یادگیری ماشین طراحی میشود. اما روند کار یادگیری عمیق به این صورت است که ویژگیهای مربوطه به صورت خودکار توسط کامپیوتر شناسایی و استخراج میشوند. علاوه بر آن در یادگیری عمیق از یادگیری انتهابهانتها (end-to-end learning) استفاده میشود؛ به این معنا که دادههای خام به شبکهی عصبی وارد میشود و به آن یک وظیفه داده میشود، مثلا دستهبندی. مدل یادگیری عمیق، خود یاد میگیرد که چگونه این کار را به طور خودکار انجام دهد.
تفاوت کلیدی دیگر، این است که یادگیری عمیق خود را با افزایش حجم دادهها تطبیق میدهد؛ در حالی که یادگیری کمعمق (shallow learning) در این مورد با محدودیت مواجه است. منظور از یادگیری کمعمق، روشهای یادگیری ماشینی است که اگر در آنها تعداد دادهها از حدی عبور کند، منحنی یادگیری روند افزایشی خود را از دست میدهد و ثابت میشود. مزیت کلیدی یادگیری عمیق این است که با افزایش حجم دادهها، بهبود عملکرد شبکهی عصبی ادامه پیدا میکند.
اندرو انجی در این باره میگوید: «در اکثر روشهای یادگیری قدیمی، عملکرد تا میزان محدودی افزایش مییابد و بعد از آن ثابت میگردد. یادگیری عمیق، اولین الگوریتم یادگیری است که در آن با افزایش تعداد دادهها، عملکرد بهتر و بهتر میشود.»
نمودار عملکرد بر حسب تعداد دادهها – از اسلایدهای اندرو انجی
انتخاب بین یادگیری ماشین و یادگیری عمیق
یادگیری ماشین روشها و مدلهای متنوعی با توجه به کاربری، حجم دادههایی که پردازش میکنیم، و نوع مسئلهای که میخواهیم حل کنیم ارائه میدهد. اما برای داشتن یک مدل کارآمد یادگیری عمیق، نیاز به حجم بسیار زیادی داده، مثلا هزاران یا میلیونها تصویر داریم تا مدل را تعلیم دهیم؛ علاوه بر آن، به پردازندههای گرافیگی قدرتمندی نیز برای پردازش چنین دادههایی نیاز داریم.
زمانی میتوانیم بین یادگیری عمیق و یادگیری ماشین، یادگیری عمیق را انتخاب کنیم که یک پردازشگر گرافیکی قدرتمند و تعداد زیادی دادهی کلاسبندیشده داریم. اما اگر هیچکدام از اینها را نداریم، بهتر است از یادگیری ماشین استفاده کنیم. یادگیری عمیق معمولا از یادگیری ماشین پیچیدهتر است، بنابراین برای گرفتن یک نتیجهی مطلوب نیاز به هزاران تصویر برای تعلیم مدل خواهیم داشت. داشتن پردازندهی قدرتمند، به ما کمک میکند که این دادهها را در زمان کمتری آنالیز کنیم.
روش ساخت و تعلیم مدلهای یادگیری عمیق چیست؟
دو روش معمول برای استفاده از یادگیری عمیق در دستهبندی اشیا (object classification) به شرح زیر است:
یادگیری از صفر (training from scratch)
برای تعلیم یک شبکهی عمیق از صفر، باید یک مجموعهی عظیم از دادههای کلاسبندیشده فراهم کنیم. همچنین باید یک شبکهی عصبی طراحی کنیم تا از طریق این دادهها مدل یادگیری عمیق تعلیم یابد. این روش برای برنامههای جدید یا برنامههایی که خروجیهای زیادی دارند مناسب است. به دلیل این که تعداد دادهها بسیار زیاد است و عملیات تعلیم یافتن روزها و هفتهها طول میکشد، از این روش کمتر استفاده میشود.
یادگیری انتقالی (transfer learning)
در بسیاری از برنامههای یادگیری عمیق از روش یادگیری انتقالی استفاده میشود؛ فرایندی که شامل تعدیل و تنظیم کردن مدلی است که از قبل تعلیم یافته است. به این شکل که ما با یک شبکهی عصبی آماده، مانند AlexNet یا GoogLeNet، شروع میکنیم و آن را با دادههای جدیدمان تنظیم میکنیم. بعد از این که تغییرات لازم را بر شبکهی عصبی اعمال کردیم، میتوانیم از آن برای اجرای دستور مورد نظرمان استفاده کنیم. مزیت این روش این است که به دلیل نیاز به دادههای کمتر (مثلا به جای پردازش میلیونها تصویر، چند هزار تصویر را پردازش میکنیم)، زمان تعلیم به دقیقهها یا ساعتها کاهش مییابد.
منبع: MATHWORKS
عالی بود هم خلاصه هم مفید
ممنون خیلی روان گفته شده بود.
بسیار عالی👌