دسته‌بندی نشدههوش مصنوعییادگیری عمیق

سفر جذاب من به دنیای یادگیری عمیق – قسمت اول

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

استفاده از “سفری جذاب” در عنوان را به این خاطر انتخاب کردم که فارغ از ساختار های مرسوم در معرفی یادگیری عمیق که با مباحث ریاضی و سپس شیوه پیاده سازی در علوم کامپیوتر و در نهایت کاربرد ها و… صحبت ها آغاز میشود , میخواهم تا حدی با روایت برخی از پیشکسوتان یادگیری عمیق به موضوع بپردازم. ماهیت جعبه سیاه شبکه های عصبی به عنوان ایده اصلی تولد یادگیری عمیق (البته توجه کنید که در این سال ها برخی از افراد تلاش کردند یادگیری عمیق را به ماهیت شبکه های  عصبی منحصر ندانند)  موجب شده مطالعات زیادی برای فهم علت موفقیت حیرت انگیز این روش صورت بگیره. اما در همین ابتدا تاکید کنم که من بسیار علاقه مند پیگیری آقای Andrew Ng یکی از اولین های حوزه یادگیری عمیق هستم و در این سفر هم گام اول را با دیدگاه های ایشان آغاز خواهم کرد. 

در این مقاله زیاد از یادگیری صحبت خواهیم کرد. اما

یادگیری چیست؟

در حوزه یادگیری ماشین، کلمه “یادگیری” فرایند جستجوی اتوماتیک برای ارائه (representation) جلوه بهتر داده ای است که شما در حال تجزیه و تحلیل آن هستید . منظور من از ارائه , روشی برای نگاه کردن به داده است.

از آنجایی که این موضوع برای ادامه مطلب بسیار مهمه اجازه بدهید با مثالی از “کتاب یادگیری عمیق” آقای ایان گودفیلو به تشریح واژه “ارائه” بپردازم.

این شکل رو ببینید .دو نوع داده در مختصات کارتزین ارائه شده است.اگر ما بخواهیم این دو داده را با خطی از هم جدا کنیم (طبقه بندی کنیم) میتوانیم ؟ طبق تعریفی که از خط داریم که مجموعه ای از نقاط پیوسته در یک راستا و با طول بینهایت است , این کار ممکن نیست . پس یعنی هیچ راه حلی برای جدا سازی خطی دو دسته شکل بالا وجود ندارد ؟ جواب در اینجا نهفته شده که با تغییر نوع ارائه داده های بالا (بردن آنها به مختصات قطبی) میتوانیم شکل زیر را ایجاد کنیم و داده ها را بصورت خطی جدا کنیم و تمام ! این مثال بنظرم بطور شفاف ماهیت ارائه را مشخص میکند.

نتیجه اینکه میتوانیم یادگیری عیق را “یادگیری ارائه” هم تلقی کنیم که به شکل متفاوتی در مواجه با داده های خاص (مانند داده های بزرگ و پر ابعاد) بدنبال ارائه بهتری برای پاسخ به مسئله ماست .

خوب بریم سراغ گرایش به یادگیری عمیق ,

با توجه به نموداری که IBM منتشر کرده مشاهده میکنید که میزان ترند یادگیری عمیق از سال ۲۰۱۵ رشد قابل ملاحظه ای داشته.علت هم مشخص است.با رشد تکنولوژی خصوصا در حوزه IOT و فناوری اطلاعات و ارتباطات و ظهور سنسور های پیشرفته زمینه رشد فزاینده داده های در دسترس مهیا شده و روش های کلاسیک هوش مصنوعی عملکرد مناسبی برای آنالیز روی این داده های بزرگ ندارند . 

از آنجایی که دید غالب در یادگیری ماشین بر مبنای معماری شبکه های عصبی است اجازه بدید محتوای این مقاله را با تکیه بر این این ساختار پیش ببرم . اما قبل از شروع بد نیست دو مفهوم تکنیکال بنام “مسیر تخصیص اعتبار (CAP)” و “یادگیری سلسله مراتبی” را هم توضیح بدم.دانستن این دو , دید مناسبی به مفهوم یادگیری عمیق خواهد داد . 

اصولا وقتی میخواهیم عمیق بودن یک معماری صحبت کنیم در حال  اشاره به تعداد لایه هایی هستیم که از مسیر آن داده ها تغییر می کنند. به عبارتی استفاده از یک ساختار انتقالی از لایه های چندگانه متشکل از واحد های  پردازش غیرخطی که ویژگی ها را استخراج و تبدیل به ویژگی های سطح بالاتر نموده و انتقال میدهند. هر لایه پیوندی از خروجی لایه قبلی به عنوان ورودی استفاده می کند. قسمت مبهم در عمیق بودن یک مدلاینجاست که چه موقع یادگیری کم عمق  (shallow) پایان میابد و یادگیری عمیق شروع میشود ؟ متخصصین DL هنوز جواب قطعی به این سوال نداده اند. اما برای اینکه مرزی را مشخص کنیم بیشتر آنها معتقدند که عمق بالای ۱۰ را میتوان عمیق در نظر گرفت (که بنظرم جواب قطعی نیست) . طول مفهوم مسیر تخصیص اعتبار (CAP ) به ما این امکان را میدهد تا طول این زنجیره از تبدیلات ورودی به خروجی را تعریف کنیم و بتوانیم مرز بین عمیق بودن را مدیریت کنیم. 

 بحث بعدی یادگیری سلسله مراتبی (hierarchical learning) است که اشاره به ساختار انتقال مفاهیم در قالب ابشاری بین لایه ها است. یکی از ویژگی های اساسی در حل مسائل توسط ما با استفاده از یادگیری ، توانایی شکستن مفاهیم بزرگ تر به مفاهیم کوچک تر است  که میتواند به راحتی از یک سطح انتزاع به دیگری ترجمه  شود. این همان داستان یادگیری سلسله مراتبی است که میگوید  مفاهیم دارای سطح بندی هستند و مفاهیم سطح پایین ( low level ) در ذیل مفاهیم سطح بالا ( high level ) قرار میگیرند. هدف یادگیری سطوح مختلف  میباشد که این سطوح سلسله مراتبی از مفاهیم انتزاعی سطح بالا یا پایین را تشکیل می دهند.

یادگیری عمیق و مقیاس های بزرگ در مدلینگ و داده ها

 Andrew Ng به عنوان کسی که در یادگیری عمیق سخنرانی های متعددی داشته , نقطه شروع خوبی برای صحبت علمی تر درباره یادگیری عمیق است . اگر صحبت های اندریو را در ویدئوی “یادگیری عمیق , یادگیری خود فکر و یادگیری ویژگی بدون نظارت ” دیده باشید ایشان ایده یادگیری عمیق را در پروژه مغز گوگل با ۲ محور معرفی میکند و معتقد است که این راه به عنوان بهترین قسمت فرآیند حرکت به سوی هوش مصنوعی واقعی است :

  •  تغییر در الگوریتم های یادگیری برای استفاده بهتر و راحت تر 
  • انقلابی در پیشرفت های حوزه یادگیری ماشین و هوش مصنوعی 

در نگاه اندریو هسته یادگیری عمیق اینه که ما در حال حاضر به اندازه کافی کامپیوترهای سریع و اطلاعات کافی برای آموزش شبکه های عصبی بزرگ را داریم. وی هنگام بحث در مورد اینکه چرا در حال حاضر زمان اوج گرفتن صحبت ها درباره یادگیری عمیق است در کنفرانس ExtractConf 2015 در گفتگویی با عنوان “دانشمندان باید چه چیزی را درباره یادگیری عمیق بدانند” اظهار داشت که:

ما اکنون میتوانیم شبکه های عصبی بسیار بزرگ داشته باشیم و … حجم اطلاعات بسیار زیادی که در دسترس ما هستند.

همانطور که میبینید ایشان تاکید بر مقیاس در هر دو حوزه دارد و معتقده که یادگیری عمیق شروعی انقلابی در الگوریتم هاست که نه تنها با افزایش حجم داده های ورودی کارایی اش رو از دست نمیده بلکه با دقت بیشتری هم کار میکند.بد نیست این را هم اشاره کنم که ایشان در چندین سخنرانی موکدا برتری یادگیری ماشین را دریادگیری با نظارت میداند(در یادگیری با نظارت شما از داده های لیبل گذاری شده برای مرحله آموزش استفاده میکنید). 

Jeff Dean هم که به عنوان مدیر بخش هوش مصنوعی گوگل و از راهبران پروژه مغز گوگل و مهندسین هوش مصنوعی مقیاس بزرگ DistBelief و TensorFlow به یادگیری ماشین با دید شبکه های عصبی بزرگ نگاه میکند. در ویدئوی “استفاده از یادگیری عمیق برای ساخت سیستمهای کامپیوتری هوشمند” ایشان بیان میکنند که :

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

یادگیری عمیق حاوی یادگیری ویژگی

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

Yoshua Bengio صحبت های خوبی درباره قابلیت بالای شیکه های عصبی عمیق برای یادگیری عمیق انجام داده .مثلا ایشان در مقاله “Deep Learning of Representations for Unsupervised and Transfer Learning  سال ۲۰۱۲ بیان کرد که :

الگوریتم های یادگیری عمیق به دنبال استخراج ساختار ناشناخته در توزیع ورودی به منظور کشف نمایه های خوب، اغلب در سطوح مختلف، با ویژگی های یادگرفته سطح بالا اما تعریف شده بر اساس ویژگی های سطح پایین , هستند.

مبنای این تعریف برگرفته از توصیف ایشان د سال ۲۰۰۹ بوده که بیان کرده بود : 

روش های یادگیری عمیق , یادگیری سلسه مراتب ویژگی ها را بر اساس ویژگی های سلسه مراتب سطوح بالا که خود از ترکیب ویژگی های سطوح پایین تشکیل شده اند  ,هدف گذاری کرده است.  یادگیری  خودکارویژگی ها  در سطوح مختلف انتزاعی اجازه می دهد تا یک سیستم بدون اینکه به طور کامل به ویژگی های دست ساز انسان وابسته باشد , توابع پیچیده ای که  ورودی را به طور مستقیم از داده ها به خروجی نگاشت کنند را یاد بگیرد .

همچنین در کتاب یادگیری عمیق اشاره میکند که :

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

حالا این سوال پیش میآید که چرا ما یادگیری عمیق را یادگیری شبکه های عصبی عمیق نامگذاری نکنیم ؟ 

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

اگر چه رویکردهای اولیه توسط هینتون و همکارانش بر تمرکز بر روی یادگیری حریصانه لایه محور و روشهای نظارت نشده مانند autoencoders  است، اما مشاده میشود که فناوری های مدرن یادگیری عمیق بر روی آموزش مدلهای شبکه عصبی عمیق (چند لایه) با استفاده از الگوریتم backpropagation  شکل گرفته است.  

بر همین اساس در کتاب “یادگیری عمیق” نوشته Adam Gibson, Josh Patterson  چهار معماری اصلی شبکه های عمیق و نحوه استفاده از شبکه های کوچکتر برای ساخت آنها اشاره شده است :

  • Unsupervised Pretrained Networks (UPNs)
  • Convolutional Neural Networks (CNNs)
  • Recurrent Neural Networks
  • Recursive Neural Networks

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

ذکر این نکته هم خالی از لطف نیست که  پیوند یادگیری عمیق با یادگیری شبکه های عصبی عمیق , دو چالش مهم را در پی داشته است . یکی زمان پردازش (که باید توسط زیر ساخت های مناسب به حداقل برسد ) و دیگری بیش برازش ( که با روش های تنظیم سازی ( Regularization) یا کاهش وزن (weight decay) و… برطرف شود) .

 پس 

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

در آخر بد نیست مروری به تایم لاینی که اقای Favio Vázquez طراحی کردند هم بیاندازید تا با سیر زمانی تکامل یادگیری عمیق هم آشنا شوید .برای مشاهده تصویر بزرگ تر روی آن کلیک بفرمائید.

این داستان ادامه دارد ….


امیر حسین اکبری- تحلیلگر داده در سیستم های صنعتی و بازاریابی دیجیتال 

مطالعه این مقاله رو هم پیشنهاد میکنم :

چگونه در ۶ ماه یادگیری عمیق یا deep learning یاد بگیریم ؟

برچسب ها

نوشته های مشابه

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن