شبکه‌های مولد تخاصمی
آموزش‌های پایه‌ای هوش مصنوعیپایتون و ابزارهای یادگیری عمیقکتابخانه‌ های یادگیری عمیقیادگیری نیمه نظارتی

یادگیری نیمه نظارتی و شبکه‌های مولد تخاصمی (GAN)

    3

    وینسنت ونگوگ Vincent Van Gogh در سال ۱۸۸۹ نقاشی زیبایی به نام «شب پرستاره» را کشید. مدل شبکه مولد تخاصمی من (که نام آن را گَن گوگ گذاشته‌ام) نیز توانست به کمک داده‌های دیتاست MNIST که تنها ۲۰% آن‌ها برچسب داشتند، یک نقاشی بکشد. اما این مدل چگونه توانست به چنین موفقیتی دست یابد؟ در ادامه مقاله با من همراه باشید تا عامل این موفقیت را به شما بگویم.

    مقدمه

    یادگیری نیمه نظارتی Semi-supervised learning چیست؟

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

    پیشینه شبکه‌های مولد تخاصمی (GAN)

    شبکه‌های GAN یکی از انواع مدل‌های عمیق مولد هستند. دلیل اصلی جذابیت این شبکه این است که توزیع احتمال در فضای داده‌ای را به‌طور واضح نشان نمی‌دهد. بلکه، با تهیه چند نمونه از این توزیع احتمال، به صورت غیرمستقیم با آن تعامل می‌کند.

    یادگیری نیمه نظارتی

    ایده اصلی شبکه مولد تخاصمی فراهم آوردن مقدمات بازی بین دو بازیکن است:

    • مولد Generator  G: مولد با دریافت یک نویز تصادفی به نام z به عنوان ورودی، یک تصویر x به عنوان خروجی تحویل می‌دهد. پارامترهای این مولد به نحوی با تنظیم میشوند که بتوانند برای تصویر جعلی که تولید کرده‌اند، امتیاز بالایی از الگوریتم تفکیک‌کننده دریافت کنند.
    • تفکیک کننده Discriminator  D: تفکیک‌کننده یا ابزار تفکیک تصویر x را به عنوان ورودی دریافت می‌کند و خروجی آن امتیازی است که میزان شباهت تصویر جعلی با تصویر واقعی را نشان می‌دهد. پارامترهای ابزار تفکیک به نحوی تنظیم شده‌اند که وقتی مولد یک تصویر واقعی را به آن‌ها می‌دهد، امتیاز بالایی دریافت کند و زمانی که تصویر داده شده جعلی باشد، امتیاز مولد پایین بیاید.

    پیشنهاد می‌کنم برای جزئیات بیشتر در این خصوص به مقالات «An introduction to Generative Adversarial Networks (with code in TensorFlow)» و «Overview of GANs (Generative Adversarial Networks) – Part I» مراجعه نمایید. درادامه به بررسی یکی از مهم‌ترین کاربردهای شبکه مولد تخاصمی یعنی یادگیری نیمه نظارتی خواهیم پرداخت.

    مبانی یادگیری نیمه نظارتی

    تفکیک کننده با معماری وانیلا برای جداسازی و طبقه‌بندی احتمالات R/F تنها یک نرون خروج دارد. ما هر دو شبکه (مولد و تفکیک ­کننده) را به‌طور هم‌زمان آموزش می‌دهیم، اما تفکیک­کننده را پس از آموزش دادن کنار می‌گذاریم، زیرا تنها کاربرد آن بهبود عملکرد مولد است.

    تفکیک ­کننده در یادگیری نیمه نظارتی، علاوه بر نورون R/F، ۱۰ نورون دیگر نیز برای طبقه‌بندی ارقام MNIST دارد. به علاوه، در این مرحله نقش تفکیک­ کننده و مولد تغییر می‌کند و ما می‌توانیم مولد را پس از آموزش کنار بگذاریم، زیرا تنها هدف آن تولید تفکیک ­کننده در یادگیری نیمه نظارتی، علاوه بر نورون R/F، ۱۰ نورون دیگر نیز برای طبقه‌بندی ارقام MNIST دارد. به علاوه، در این مرحله نقش تفکیک ­کننده و مولد تغییر می‌کند و ما می‌توانیم مولد را پس از آموزش کنار بگذاریم، زیرا تنها هدف آن تولید داده‌های بدون برچسب برای بهبود عملکرد تفکیک ­کننده است.

    یادگیری نیمه نظارتی

    تفکیک­ کننده در این مرحله به یک جداساز با ۱۱ کلاس تبدیل می‌شود که یکی از این نورون‌ها (نورون R/F) نشان‌دهنده خروجی داده‌های جعلی است. ۱۰ کلاس دیگر نیز بیان‌گر داده‌های واقعی هستند. موارد زیر را باید به‌خاطر بسپارید:

    • زمانی که دیتاست داده واقعی و نظارت نشده به مدل بدهد، برچسب نورون خروجی R/F «صفر» است.
    • زمانی که مولد داده جعلی و نظارت‌نشده به مدل بدهد، برچسب نورون خروجی R/F عدد «۱» خواهد بود.
    • زمانی که داده واقعی و نظارت‌شده به مدل داده شود، برچسب خروجی R/F «صفر» و خروجی برچسب متناظر با آن «۱» خواهد بود.

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

    معماری

    حال زمان آن است به بحث کدنویسی بپردازیم.

    تفکیک ­کننده

    معماری که در این‌جا شرح دادیم، شباهت زیادی به معماری تعریف‌شده در مقاله « UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS » دارد. در این‌جا برای کاهش ابعاد بردارهای ویژگی به جای استفاده از لایه‌های ادغام، از پیچش‌های قدم برداشته strided convolutions استفاده می‌کنیم و توابع leaky_relu، dropout و BN را برای همه لایه‌ها اجرا می‌کنیم تا فرآیند یادگیری تثبیت شود. باید توجه کنید که تابع BN برای لایه ورودی و آخرین لایه اعمال نمی‌شود (هدف از این کار منطبق کردن ویژگی‌ها با یک‌دیگر است). در آخر نیز از روش Global Average Pooling، میانگین تمامی ابعاد فضایی بردارهای ویژگی را به دست می‌آوریم. با اینکر ابعاد تنسور را در یک مقدار واحد خلاصه میکنیم. پس از مسطح کردن ویژگی‌ها، از یک لایه متراکم متشکل از ۱۱ کلاس و یک تابع فعال‌سازی بیشینه نرم softmax activation  استفاده می‌کنیم تا یک خروجی چند کلاسی به دست بیاوریم.

     

    مولد

    معماری مولد به نحوی طراحی شده که خروجی‌های فضایی تفکیک­ کننده را بازنمایی کند. ما از لایه‌های پیچشی قدم برداشته
    Fractional strided convolutions
    استفاده می‌کنیم تا بعد فضایی ارائه را افزایش دهیم. ورودی که به مولد داده می‌شود یک تنسور ۴-D از نویز z است که Hپیچش‌های ترانهاده transposed convolutions و توابع relu، BN (غیر از لایه خروجی) و dropout روی آن اعمال می‌شوند. درنهایت، تصویر خروجی توسط تابع فعال‌سازی tanh در بازه (-۱,۱) نگاشته می‌شود.

     

    زیان مدل

    ما در ابتدا با دادن مقدار صفر به برچسب‌های واقعی یک برچسب را به تمام دسته تعمیم دادیم. هدف این بود که پس از دادن داده‌ها به مدل، خروجی نورون R/F صفر شود. تابع زیان تفکیک­­ کننده برای داده‌های بدون برچسب را می‌توان یک تابع زیان سیگموئید دودویی binary sigmoid loss  درنظر گرفت که در آن خروجی نورون R/F برای تصاویر جعلی ۱ و برای تصاویر واقعی صفر است.

    تابع زیان مولد ترکیبی است از تابع زیان تصویر جعلی و تابع زیان تطبیق ویژگی. هدف تابع زیان تصویر جعلی fake_image loss
    گرفتن یک خروجی جعلی با مقدار صفر از نورون R/F است. تابع زیان تطبیق ویژگی feature matching loss نیز میانگین قدرمطلق خطای بین مقدار متوسط مجموعه‌ای از ویژگی‌های داده‌های آموزشی و مقدار متوسط همان ویژگی‌ها در داده‌های تولید شده را کاهش می‌دهد.

    آموزش

    ما در این‌جا سایز تصاویر آموزشی را از [batch_size, 28 ,28 , 1] به [batch_size, 64, 64, 1] تغییر دادیم تا مناسب معماری مولد و ابزار تفکیک شوند. سپس توابع زیان، دقت الگوریتم‌ها و نمونه‌های تولید شده برآورد می‌شوند و به منظور بهبود و پیشرفت طی هر دوره تحت بررسی قرار می‌گیرند.
     

    نتیجه‌گیری

    باتوجه به محدودیت GPU، آموزش ۵ دوره‌ای این مدل با استفاده از داده‌هایی انجام گرفت که تنها ۲۰% آن‌ها برچسب داشتند. برای کسب نتایج بهتر و دقیق‌تر پیشنهاد می‌کنم که دوره‌های آموزشی را افزایش داده و نرخ برچسب‌دار بودن داده‌ها را پایین بیاورید. برای تکمیل کدهای مربوطه می‌توانید به این لینک مراجعه نمایید.

    یادگیری نیمه نظارتی

    در حوزه هوش مصنوعی عمومی (AGI) یادگیری بدون نظارت یک نقطه مبهم است. شبکه‌های مولد تخاصمی برای رفع این ابهامات آمده‌اند. این شبکه‌های مولد تخاصمی راه‌حل مناسبی برای مسائل پیچیده یادگیری با داده‌های بدون برچسب هستند. با توجه به ارائه روش‌های جدید در حوزه یادگیری نیمه نظارتی و بدون نظارت، انتظار می‌رود که این ابهامات روزبه‌روز برای ما روشن‌تر شوند. باید خاطرنشان کنم که ایده این مدل را از مقاله زیبای « Semi-supervised learning with Generative Adversarial Networks (GANs) » و دستیار یکی از همکارانم الهام گرفته‌ام.

    تشخیص بیماری آلزایمر به کمک الگوریتم‌های یادگیری ماشین

    مقاله قبلی

    کتابخانه Pandas و ۶ گزینه برای نمایش فرمت در آن که باید به خاطر بسپارید

    مقاله بعدی

    شما همچنین ممکن است دوست داشته باشید

    3 نظرات

    1. این دومین مقاله ای هست که در مورد شبکه مولد تخاصمی تو سایت شما میخونم
      ممنون از مقالات خوبتون

      1. ممنون از حسن نظرتون? ?

    2. طولانی بود ولی ارزش خوندنشو داشت

    پاسخ دهید

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