یادگیری عمیق

یادگیری عمیق زیرمجموعه‌ای از یادگیری ماشین است که در آن از الگوریتم‌هایی استفاده می‌شود که مغز انسان را شبیه‌سازی می‌کنند. این الگوریتم‌ها شبکه‌های عصبی مصنوعی نام دارند.

اندرو ان‌جی، توسعه‌ی یادگیری عمیق در بسیاری از سرویس‌های گوگل را پایه‌گذاری کرده است. او این ایده را به شکل زیر توصیف می‌کند:

«استفاده از شبیه‌سازی‌های مغز انسان برای:

– بهتر کردن و ساده سازی استفاده‌ی الگوریتم‌های یادگیری.

– ایجاد پیشرفت‌های انقلابی در زمینه‌ی هوش مصنوعی و یادگیری ماشین.

از نظر من این روش بهترین راه برای رسیدن به هوش مصنوعی واقعی است.»

این نوع یادگیری یک روش یادگیری ماشین است که به کامپیوترها یاد می‌دهد که کاری را که انسان‌ها انجام می‌دهند را انجام دهند. یادگیری با مثال‌ها. یادگیری عمیق تکنولوژی اصلی ساخت خودروهای خودران است. یادگیری عمیق به خودروها این توانایی را می‌دهد که تابلوها را شناسایی کنند. و یا تیر چراغ برق را از انسان تشخیص دهند. همچنین تکنولوژی کلیدی مورد استفاده در رابط کاربری صوتی تلفن‌های همراه، تبلت‌ها، تلویزیون‌ها و هندزفری‌ها است. مدتی است که یادگیری عمیق توجه بیش‌تری را به سمت خود جلب کرده است. چراکه نتایجی را با خود به همراه داشته است که هیچگاه در گذشته ممکن نبوده‌اند.

در این یادگیری، یک مدل کامپیوتری یاد می‌گیرد که دستورهای دسته‌بندی (classification) را مستقیما از تصویر، متن، یا صدا اجرا کند. مدل‌های یادگیری عمیق می‌توانند به بالاترین سطح دقت برسند. به طوری که گاهی از انسان‌ها هم بهتر عمل می‌کنند. مدل‌های یادگیری، با استفاده از گروه‌های عظیمی از داده‌ها و شبکه‌های عصبی با لایه‌های بسیار، تعلیم (train) داده می‌شوند.

دلیل اهمیت این نوع یادگیری چیست؟

این مدل یادگیری چگونه به این نتایج شگفت‌انگیز دست می‌یابد؟ در یک کلمه، در این مدل یادگیری،  دقت به سطح بسیار بالایی از تشخیص دست یافته است. این دقت، وسایل الکترونیکی را قادر می‌سازد که پاسخگوی سطح انتظارات کاربران باشند. همچنین داشتن چنین دقتی، در کاربری‌های حساسی چون خودروهای خودران بسیار حیاتی است. پیشرفت‌های اخیر در یادگیری عمیق به جایی رسیده است که در بعضی کارها مانند دسته‌بندی کردن تصاویر، یادگیری عمیق بهتر از انسان عمل می‌کند.

در این مورد،  اولین بار در دهه‌ی ۸۰ میلادی نظریه‌پردازی شد. با این حال، دو دلیل اصلی وجود دارد که تکنولوژی یادگیری عمیق تنها اخیرا سودمند ظاهر شده است:

  • یادگیری عمیق نیاز به مقدار عظیمی از داده‌ها دارد. برای مثال، برای توسعه‌ی خودروهای خودران نیاز به میلیون‌ها تصویر و هزاران ساعت ویدیو است.
  • این یادگیری، به قدرت پردازشی بسیار بالایی نیاز دارد. واحدهای پردازنده‌ی گرافیکی قدرتمندی که در یادگیری عمیق استفاده می‌شوند، هزینه‌ی بالایی دارند. همچنین تیم‌های توسعه می‌توانند زمان تعلیم یافتن مدل‌ها را از هفته‌ها به ساعت‌ها یا کمتر تبدیل کنند.

کاربردهای یادگیری عمیق چیست؟

این مدل یادگیری ذکر شده در صنعت کاربردهای بسیاری دارد. از رانندگی خودکار گرفته تا تکنولوژی‌های به کار رفته در وسایل پزشکی.

  • کاربرد در رانندگی خودکار: محققین خودروها در حال استفاده از یادگیری عمیق برای شناسایی اشیایی مانند تابلوها و چراغ‌های راهنمایی هستند. علاوه بر این، یادگیری عمیق در تشخیص عابرین پیاده استفاده می‌شود که به کاهش تصادفات کمک می‌کند.
  • کاربرد در مسائل نظامی و هوایی: این الگوریتم‌ها می‌توانند تصاویر ماهواره‌ای را آنالیز کنند و نقاط امن و ناامن را برای سربازان شناسایی کند.
  • کاربرد در تحقیقات پزشکی: محققان سرطان از یادگیری عمیق برای تشخیص خودکار سلول‌های سرطانی استفاده می‌کنند. در دانشگاه کالیفرنیا (UCLA) میکروسکوپ پیشرفته‌ای ساخته شده است که داده‌هایی با بعد بالا تولید می‌کند. از این داده‌ها برای تعلیم مدل‌های یادگیری عمیق در تشخیص دقیق سلول‌های سرطانی استفاده می‌شود.

و کاربردهای دیگر

  • کاربرد در دستیارهای مجازی: دستیارهای مجازی مانند الکسا، سیری، و کورتانا، از یادگیری عمیق برای پردازش زبان طبیعی و برقراری ارتباط موثر با انسان‌ها استفاده می‌کنند.
  • کاربرد در ترجمه: به روشی مشابه، الگوریتم‌های یادگیری عمیق می‌توانند زبان‌های مختلف را به یکدیگر ترجمه کنند. این کار می‌تواند برای بسیاری از مسافران و تاجران، و حتی دولت‌ها مفید باشد.
  • استفاده از این نوع یادگیری در چت بات‌ها: از چت بات‌های مبتنی بر هوش مصنوعی در جهت ارائه‌ی پشتیبانی آنلاین برای کاربران استفاده می‌شود. این چت بات‌ها به دلیل بهره بردن از تکنولوژی یادگیری عمیق می‌توانند یک پشتیبانی هوشمند و کارآمد ارائه کنند.
  • کاربرد یادگیری عمیق در رنگ کردن تصاویر سیاه و سفید: تبدیل عکس‌های سیاه و سفید به تصاویر رنگی، عملی است که در گذشته به صورت دستی انجام می‌شده است. این الگوریتم‌ها می‌توانند تصاویر سیاه و سفید را با توجه به اشیایی که در آن‌ها وجود دارد رنگ‌آمیزی کنند. و تصاویری رنگی تولید کنند. نتایج این کار بسیار دقیق و حیرت‌انگیز است.
  • کاربرد یادگیری عمیق در تشخیص چهره: با استفاده از این الگوریتم‌ها نه تنها در کاربردهای امنیتی، بلکه در کاربردهایی مثل تگ کردن افراد در تصاویر فیسبوک استفاده می‌شود. از تکنولوژی تشخیص چهره می‌توان در پرداخت وجوه در فروشگاه‌ها نیز استفاده کرد. چالشی که در تشخیص چهره با آن مواجه هستیم، این است که بتوان یک فرد را در شرایط مختلف شناسایی کرد.  مثلا با مدل مو یا ریش متفاوت و با عینک و بدون آن، یا در شرایط نوری ضعیف.

روش کار یادگیری عمیق چیست؟

حال که فهمیدیم این نوع یادگیری چیست، می‌خواهیم بدانیم که روش کار آن چگونه است. جف دین (Jeff Dean)  می‌گوید: «وقتی واژه‌ی یادگیری عمیق را می‌شنوید، آن را یک شبکه‌ی بزرگ عصبی در نظر بگیرید. واژه‌ی «عمیق» عموما به تعداد لایه‌های پنهان شبکه‌ی عصبی اشاره دارد». این شبکه‌های عصبی می‌توانند از دو یا سه لایه، تا بیش از ۱۰۰ لایه داشته باشد. به همین دلیل، اغلب، مدل‌های یادگیری عمیق را «شبکه‌های عصبی عمیق» می‌گویند.

این نوع یادگیری مسائلی که دارای ورودی‌ها  و خروجی‌های آنالوگ هستند را حل میکند. یعنی ما با تعداد محدودی مقدار سر و کار نداریم؛ بلکه با داده‌های پیکسلی، نوشته‌ها با داده‌های متنی، و فایل‌ها با داده‌های صوتی سر و کار داریم.

شبکه‌ی عصبی پیچشی یا CNN، یکی از انواع شبکه‌های عصبی عمیق

یکی از مشهورترین انواع شبکه‌های عصبی عمیق، شبکه‌ی عصبی پیچشی یا همگشتی (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، شروع می‌کنیم و آن را با داده‌های جدیدمان تنظیم می‌کنیم. بعد از این که تغییرات لازم را بر شبکه‌ی عصبی اعمال کردیم، می‌توانیم از آن برای اجرای دستور مورد نظرمان استفاده کنیم. مزیت این روش این است که به دلیل نیاز به داده‌های کم‌تر (مثلا به جای پردازش میلیون‌ها تصویر، چند هزار تصویر را پردازش می‌کنیم)، زمان تعلیم به دقیقه‌ها یا ساعت‌ها کاهش می‌یابد.

منبع: محمد عرب زاده – فنولوژی

© کپی رایت - هوشمندی کسب و کار، انبار داده، دریاچه داده، پلتفرم داده، تحلیل کلان داده، رهیافت های داده محور، علم داده، هوش مصنوعی | Power by kte.ir