دادههای زیاد، مشکل همیشگی؟ بعد از موفقیت سامان در فهمیدن مفهوم بیشبرازش و چگونگی حل آن با Regularization و Dropout، حالا به مشکلی دیگر برخورده بود. او برای پروژه جدیدش، به دادههای زیادی نیاز داشت، اما تنها چند صد نمونه داده در دسترس داشت. سامان که همیشه در ذهنش سوالهای زیادی بود، این بار از خودش پرسید: «آیا حتماً برای ساخت شبکه های عصبی باید اینقدر داده جمع کنم؟ یا راهحلی برای استفاده از دادههای کم وجود دارد؟»
این بار هوش مصنوعی بلافاصله وارد شد و گفت: «سامان، وقت آن است که با یکی از پیشرفتهترین تکنیکهای یادگیری ماشین آشنا شوی: انتقال یادگیری (Transfer Learning). »
قسمت قبل: سفر به دنیای شبکه های عصبی با سامان: شبکهها بیش از حد باهوش میشوند (قسمت چهارم)
سرفصل های مقاله
انتقال یادگیری: وقتی شبکهها قبلاً یاد گرفتهاند!
سامان کمی کنجکاو شد: «انتقال یادگیری؟ یعنی چی؟» هوش مصنوعی ادامه داد: «خیلی ساده است. فکر کن تو میخواهی یک شبکه عصبی بسازی که یک نوع خاص از تصاویر را شناسایی کند. اما به جای اینکه شبکهات را از صفر آموزش دهی، میتوانی از یک شبکه عصبی پیشآموزشدیده استفاده کنی که قبلاً روی یک مجموعه داده بزرگ آموزش دیده است.»
سامان کمی گیج شد: «یعنی شبکهای که قبلاً روی دادههای دیگری آموزش دیده، میتواند به من کمک کند؟»
هوش مصنوعی گفت: «بله، دقیقاً. شبکههای عصبی پیشآموزشدیده توانایی تشخیص ویژگیهای کلی مانند لبهها، شکلها و الگوها را دارند. این ویژگیها میتوانند به شبکه کمک کنند تا دادههای جدید تو را سریعتر و با دقت بیشتری تشخیص دهد. این یعنی دیگر نیازی به جمعآوری حجم زیادی از دادههای جدید نداری، بلکه میتوانی از دانشی که شبکه قبلاً به دست آورده استفاده کنی.»
چگونه انتقال یادگیری کار میکند؟
سامان خواست بیشتر بداند: «چطور انتقال یادگیری به شبکه های عصبی کمک میکند تا دادههای کم را هم به خوبی یاد بگیرد؟» هوش مصنوعی توضیح داد: «ببین، در انتقال یادگیری، ما شبکهای را که قبلاً روی یک مجموعه داده بزرگ و عمومی (مثل تصاویر مختلف) آموزش دیده، میگیریم و آخرین لایههای خروجی آن را برای پروژه خاص خودمان تغییر میدهیم. این تغییرات کوچک به شبکه کمک میکنند تا ویژگیهای خاص دادههای جدید تو را یاد بگیرد. به این ترتیب، شبکه نه تنها از دادههای قبلیاش استفاده میکند، بلکه خود را برای دادههای جدید تنظیم میکند.»
سامان پرسید: «یعنی لازم نیست همه نورونها را دوباره آموزش بدهم؟» هوش مصنوعی پاسخ داد: «درست است! تو فقط لایههای آخر را آموزش میدهی. این کار باعث میشود که از دانشی که قبلاً شبکه از مجموعه دادههای بزرگ یاد گرفته، استفاده کنی و شبکه سریعتر به نتیجه برسی.»
مثالی از دنیای واقعی
برای شفافتر شدن موضوع، هوش مصنوعی یک مثال ساده زد: «فرض کن تو قبلاً یک زبان جدید یاد گرفتهای، مثلاً انگلیسی. حالا میخواهی زبان اسپانیایی یاد بگیری. بسیاری از مفاهیم پایه، مثل قواعد گرامری و کلمات مشابه، در هر دو زبان وجود دارند. بنابراین نیازی نیست از صفر شروع کنی، چون دانشی که از زبان انگلیسی داری به تو کمک میکند که اسپانیایی را سریعتر یاد بگیری. انتقال یادگیری هم دقیقاً همینطور کار میکند.»
استفاده از شبکه های عصبی پیشآموزشدیده
سامان برای اولین بار تصمیم گرفت یک مدل پیشآموزشدیده را امتحان کند. او مدلی را که قبلاً روی میلیونها تصویر آموزش دیده بود انتخاب کرد و به جای اینکه آن را از ابتدا آموزش دهد، فقط آخرین لایههای خروجی را برای دادههای جدیدش تنظیم کرد. با اینکه دادههای جدیدش کم بودند، مدل با سرعت زیادی شروع به یادگیری کرد و به نتایج فوقالعادهای دست یافت.
سامان حالا فهمیده بود که نیازی نیست همیشه از حجم زیادی از دادهها استفاده کند. او از مدلهای موجود بهره برد و تنها با تغییرات جزئی، پروژه خودش را به سرانجام رساند.
فواید انتقال یادگیری هوش مصنوعی برای کمک بیشتر به سامان، فواید انتقال یادگیری را به او توضیح داد:
صرفهجویی در زمان و دادهها : نیازی به جمعآوری دادههای زیاد نیست. شبکه از دانشی که قبلاً دارد استفاده میکند.
بهینهسازی سریعتر : به دلیل اینکه فقط لایههای آخر تغییر میکنند، مدل سریعتر به نتیجه میرسد.
انعطافپذیری بالا : این تکنیک به شبکهها کمک میکند تا برای وظایف مختلف به راحتی تطبیق پیدا کنند.
پایان قسمت پنجم
سامان با تکنیک انتقال یادگیری آشنا شد و یاد گرفت که چطور میتواند با استفاده از دادههای کم و مدلهای پیشآموزشدیده، شبکههای عصبی خود را بهینهسازی کند. او حالا فهمیده بود که نیازی نیست همیشه از صفر شروع کند. اما سوال جدیدی در ذهنش شکل گرفت: «چطور شبکههای عصبی میتوانند در زمان واقعی (Real-Time) تصمیم بگیرند؟ آیا شبکهها میتوانند سریع و دقیق باشند؟» در قسمت بعد، سامان با چالشهای سرعت پردازش و شبکه های عصبی زمان واقعی آشنا خواهد شد.
در این قسمت، مفهوم انتقال یادگیری به زبان ساده توضیح داده شد و چگونگی استفاده از آن با دادههای کم بررسی شد. در قسمت بعد، میتوانی به موضوعات زمان واقعی و بهینهسازی سرعت شبکه های عصبی بپردازی.