وقتی داده های محدودی داریم، چگونه از یادگیری عمیق استفاده کنیم؟ بخش اول : یادگیری انتقالی

من تصور می کنم هوش مصنوعی شبیه به ساخت یک موشک است که به یک موتور عظیم و مقدار زیادی سوخت نیاز دارد. چنانچه موتور بزرگ اما سوخت کمی دارید، قادر به فعال نمودن آن نخواهید بود. اگر یک موتور کوچک و حدود یک تن سوخت داشته باشید، نمی توانید حتی آن را بلند کنید. برای ساخت موشک، نیاز به یک موتور بزرگ و سوخت بسیار زیادی دارید.
شباهت این مثال با یادگیری عمیق ، آن است که موتور موشک ، مدل  های یادگیری عمیق است و سوخت آن، داده های زیادی است که به این الگوریتم ها داده می شود. –  Andrew Ng

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

چند نمونه از تعداد پارامتر های مورد استفاده در مدل های اخیر در جدول زیر آورده شده است :

جزئیات مدل های یادگیری عمیق
جزئیاتی از مدل های مختلف یادگیری عمیق

شبکه های عصبی مرسوم در یادگیری عمیق ، ساختار های لایه ای هستند که در کنار یکدیگر قرار می گیرند ( مانند لِگو تصور کنید )

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

شبکه عصبی عمیق کلاسه بند بیشینه هموار

اندازه « مدل » متناسب با اندازه « داده » متناسب با پیچیدگی « مسئله » است

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

شبکه عصبی Alexnet
آنچه که مدل AlexNet در هر مرحله می بیند

یادگیری انتقالی شما را نجات می دهد!

زمانی که روی مسئله ای معین در حوزه خود کار می کنید، اغلب، یافتن مقدار داده مورد نیاز برای ساخت مدل هایی با این اندازه، ناممکن است. با این حال، مدل های آموزش دیده روی یک وظیفه، ارتباطاتی در نوع داده اتخاذ می کنند و می توانند بسادگی برای مسائل مختلف در همان حوزه مجدداً استفاده شوند. این روش تحت عنوان یادگیری انتقالی خوانده می شود.

تفاوت یادگیری انتقالی و یادگیری ماشین معمولی
Qiang Yang, Sinno Jialin Pan, “A Survey on Transfer Learning”, IEEE Transactions on Knowledge & Data Engineering, vol. 22, no. , pp. 1345–۱۳۵۹, October 2010, doi:10.1109/TKDE.2009.191

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

با ارجاع به  Awesome — Most Cited Deep Learning Papers  برای مقاله های عالی در مورد یادگیری عمیق، بیش از ۵۰ درصد از مقالات از اشکال مختلفی از یادگیری انتقالی یا پیش آموزش ( Pretraining ) استفاده می کنند.  یادگیری انتقالی برای افرادی که دارای منابع محدودی هستند ( داده و منابع محاسباتی )، بیشتر و بیشتر قابل استفاده می باشد، اما این ایده آنگونه که باید به اندازه کافی عمومی نشده است. افرادی که به آن نیاز دارند، اکثراً چیزی در مورد آن نمی دانند.

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

با یادگیری انتقالی می توان از یک مدل از پیش آموزش دیده استفاده کرد که روی پایگاه داده بسیار بزرگی آموزش دیده است (روی یک کار کاملاً متفاوت، با همان ورودی، اما خروجی های متفاوت آموزش داده شده است). سپس لایه هایی را پیدا کرد که ویژگی هایی با قابلیت استفاده مجدد در خروجی خود داشته باشند. از خروجی این لایه بعنوان ویژگی های ورودی برای آموزش یک شبکه بسیار کوچکتر، که نیاز به تعداد کمتری پارامتر دارد، استفاده می گردد. این شبکه کوچک تر تنها نیاز دارد که روابط موجود در مسئله مورد نظر را که از قبل در مورد الگو ها با استفاده از یک مدل از پیش آموزش دیده وجود داشته است، یاد بگیرد. به این ترتیب، مدلی که برای شناسایی گربه ها آموزش دیده است، می تواند برای بازآفرینی اثار ون گوگ نیز استفاده شود.

مزایا یادگیری انتقالی

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

بیش برازش مانند این است که شبکه  بجای یادگیری و آموزش، حفظ کند. –  James Faghmous

کاهش داده بخاطر یادگیری انتقالی

بیایید بحث مربوط به لباس آبی و سیاه در برابر لباس سفید و طلایی را در نظر بگیریم. شما شروع به جمع آوری تصاویری از لباس های آبی و سیاه و نیز لباس های طلایی و سفید واقعی می کنید. برای ساخت یک مدل به تنهایی ، مشابه با یکی از مدل های بیان شده در فوق (با ۱۴۰میلیون پارامتر) و آموزش این مدل، نیاز به ۱٫۲ میلیون تصویر خواهید داشت که کاری ناممکن است. در اینجا، شما می توانید یادگیری انتقالی را بررسی کنید.

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

پارامتر ۴۰۹۸ ~ [۱+۱]*[۱+۲۰۴۸] = [۱ + (خروجی)اندازه] * [۱ + (ورودی)اندازه] = تعداد پارامتر ها

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

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

راهنمای گام به گام برای یادگیری انتقالی – استفاده از مثالی کوچک برای تجزیه و تحلیل احساسات

در این مثال، ۷۲ نقد و بررسی فیلم وجود دارد:

  1. به ۶۲ نقد ، هیچ گونه احساساتی تخصیص داده نشده است که برای پیش آموزش مدل استفاده می شوند.
  2. به ۸ نقد ، احساسات اختصاص یافته است که برای آموزش مدل استفاده می شوند.
  3. به ۲ نقد احساساتی تخصیص داده شده که برای تست مدل استفاده می شوند.

از آنجایی که تنها ۸ جمله برچسب خورده داریم (جملاتی که دارای احساسات مرتبط هستند)، ابتدا مدل را برای پیش بینی مفاد و مفاهیم، پیش آموزش می دهیم. اگر مدل روی تنها ۸ جمله آموزش داده شود، دقتی برابر با ۵۰ درصد بدست می دهد (۵۰ درصد ، دقت شیر یا خط سکه است).

برای حل این مسئله، از یادگیری انتقالی استفاده می کنیم و ابتدا مدلی را روی ۶۲ جمله آموزش می دهیم. سپس از بخشی از مدل نخست استفاده کرده و یک کلاسه بند احساسات را روی آن آموزش می دهیم. با آموزش روی ۸ جمله، می توان در زمان تست روی دو جمله باقیمانده، به دقت ۱۰۰ درصد دست یافت.

پیش آموزش مدل یادگیری انتقالیگام ۱

یک شبکه را برای مدل سازی ارتباط میان واژگان آموزش می دهیم. یک واژه در جمله می یابیم و سعی می کنیم دیگر واژگان موجود در آن جمله را پیش بینی کنیم. در کد نوشته شده در اینجا، اندازه ماتریس تعبیه به اندازه واژه x است (embedding_size) که برداری را ذخیره می کند که نمایشگر هر کلمه است (در اینجا از اندازه ۴ استفاده شده است).

نگاشت یک کلمه به کلمات اطرافگام ۲

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

یادگیری انتقالی جملهگام ۳

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

بجای استفاده مستقیم از جملات، بردار جمله را بصورت متوسطی از تمام کلمات آن تنظیم می کنیم (در امور واقعی، معمولاً از چیزی شبیه به LSTM استفاده می شود).

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

اگرچه این یک مثالی کوچک بود، اما می توان بهبود قابل توجهی از دقت از ۵۰ به ۱۰۰ درصد را با استفاده از یادگیری انتقالی مشاهده نمود. برای مشاهده کامل مثال و نیز کد های مربوط به آن، لینک زیر را مشاهده کنید :

کد کلاسه بندی فیلم ها بر اساس احساس در Github

برخی از مثال های واقعی در یادگیری انتقالی

در مباحث مربوط به تصاویر : بهبود تصاویرتبدیل سبک تصاویرتشخیص اشیاتشیخص سرطان پوست .

در مباحث مربوط به متن : ترجمه Zero-Shotکلاسه بندی احساس

دشواری های اجرا یادگیری انتقالی

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

برخی از مسائل مربوط به یادگیری انتقالی عبارتند از:

  1. یافتن یک پایگاه داده بزرگ برای انجام پیش آموزش روی آن.
  2. تصمیم گیری در مورد اینکه کدام مدل برای پیش آموزش استفاده شود.
  3. دشوار بودن اشکال زدایی در مورد اینکه کدام یک از دو مدل کار نمی کنند.
  4. آگاه نبودن از اینکه چه مقدار داده های اضافی برای آموزش مدل کافی هستند.
  5. دشواری تصمیم گیری در مورد اینکه در کجا ، روند استفاده از مدل از پیش آموزش دیده، باید توقف نمود.
  6. تصمیم گیری در مورد تعداد لایه ها و پارامتر ها که روی مدل از پیش آموزش دیده استفاده می شوند.
  7. نگهداری و استفاده از مدل های ترکیبی
  8. بروزرسانی مدل از پیش آموزش دیده، زمانی که داده های بیشتر و یا روش های بهتری در دسترس باشند.

یافتن یک داشنمند داده دشوار است. یافتن افرادی که می دانند یک داشنمند داده کیست، به همان اندازه دشوار است. –  Krzysztof Zawadzki

نانوشبکه ها یادگیری انتقالی را ساده تر می کنند

با داشتن تجارب شخصی، می توان شروع به کار کرد، بدین صورت که با ساختن خدمات یادگیری عمیق ابری که از یادگیری انتقالی استفاده می کند، این مسائل قابل حل می باشند. این موضوع شامل مجموعه ای از مدل های از پیش آموزش دیده است که روی میلیون ها پارامتر آموزش داده شده اند. شما داده های خود را بارگذاری می کنید (یا برای داده وب را جستجو می کنید)، بهترین مدل برای استفاده در کار شما انتخاب می شود، یک نانوشبکه ( Nanonet ) جدید روی مدل از پیش آموزش دیده موجود، ایجاد می گردد و نانوشبکه متناسب با داده های شما خواهد شد.

یادگیری انتقالی با نانو شبکه ها
یادگیری انتقالی با نانوشبکه ها (این معماری تنها جهت نمایش است)

نخستین نانوشبکه خود را بسازید ( کلاسه بندی تصویر )

۱- کلاس هایی که می خواهید با آن ها کار کنید را انتخاب نمایید:

انتخاب دسته بندی نانوشبکه

۲- با یک کلیک، وب را جستجو کرده و یک مدل می سازیم (شما می توانید تصاویر خود را نیز بارگذاری کنید):

داده های تصویری برای آموزش

۳- راز لباس آبی در برابر طلایی را حل کنید (پس از آنکه آماده شد، به شما یک رابط وب قابل استفاده برای بارگذاری یک تصویر تست و نیز یک API مستقل زبانی داده می شود.)

ورودی و خروجی نانو شبکه

شما می توانید از طریق لینک زیر، ساخت نانوشبکه ها را شروع کنید.

نانوشبکه ( NanoNet )

بیشتر بخوانید :

منبع Medium
0/5 (0 نظر)

درباره‌ی احمدرضا جعفری

همچنین ببینید

هوش مصنوعی آهنگ ساز

هوش مصنوعی آهنگ می سازد!

این هوش مصنوعی با استفاده از آهنگ های موجود و یادگیری آن ها می تواند …

دیدگاهتان را بنویسید

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