<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علیرضا محمدی</title>
        <link>https://virgool.io/feed/@alireza17010</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-07-08 06:08:14</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/67862/avatar/sBZFjW.jpeg?height=120&amp;width=120</url>
            <title>علیرضا محمدی</title>
            <link>https://virgool.io/@alireza17010</link>
        </image>

                    <item>
                <title>Hierarchical Triplet Loss</title>
                <link>https://virgool.io/@alireza17010/hierarchical-triplet-loss-mmjz3ga2av4p</link>
                <description>در تسک‌های metric learning یا similarity learning به دنبال یادگیری یک تابع فاصله هستیم که این تابع به عنوان معیاری برای مقایسه تصاویر مختلف و بررسی شباهت آن‌ها مورد استفاده قرار می‌گیرد.بر این اساس وقتی تابع فاصله‌ی مناسبی آموزش دیده شود، تصاویر ورودی با محتوای مشابه به ناحیه مشخصی در فضای embedded تصویر می‌شوند که از تصاویر با محتوای متفاوت فاصله خواهند داشت.Deep Metric Learningبا رشد و توسعه شبکه‌های عصبی عمیق، پیشرفت زیادی نیز در زمینه‌ی metric learning رخ داده‌است.  استفاده از شبکه‌های عصبی عمیق این امکان را فراهم می‌سازد تا بتوان فضای embedded را به نحوی شکل داد که با استفاده از توابع فاصله‌ی ساده مثل فاصله اقلیدسی و فاصله کسینوسی امکان تمایز بین تصاویر با محتوای متفاوت وجود داشته باشد. بر این اساس ورودی با استفاده از یک شبکه عصبی عمیق، به فضای embedded تصویر می‌شود که در این فضا می‌توان با استفاده از یک تابع فاصله اقلیدسی، فاصله بین دو نقطه را تعریف کرد؛ تصاویر با محتوای مشابه به به نواحی مشابهی در فضای ثانویه تصویر خواهند شد و دو تصویری که محتوای متفاوتی دارند، در این فضای ثانویه نیز با یکدیگر فاصله خواهند داشت.توابع خطادر یک شبکه‌ی عصبی عمیق به منظور طبقه‌بندی تصاویر، از یک تابع هدف مثل softmax استفاده می‌شود که احتمال هر یک از کلاس‌ها را به ازای هر تصویر ورودی محاسبه می‌کند. در این شبکه به منظور یادگیری وزن‌ها، از روش گرادیان نزولی استفاده می‌شود؛ گرادیان به ازای هر یک از تک تصاویر ورودی محاسبه شده و سپس وزن‌های شبکه بروزرسانی خواهد شد.در توسعه‌های اخیر، توابع loss مختلفی مورد بررسی و استفاده قرار گرفته‌اند، مثل:contrastive losstriplet lossquadruplet lossمقدار این توابع بر اساس چند نمونه‌ی همبسته محاسبه می‌شود با این منظور که نمونه‌های مشابه و مربوط به یک کلاس، در فضای ثانویه به یکدیگر نزدیک شوند و نمونه‌های متعلق به کلاس‌های متفاوت از یکدگیر فاصله بگیرند.از همین رو انتخاب نمونه‌های مناسب به منظور آموزش شبکه با چالش‌های زیادی همراه است، زیرا ورودی شبکه به صورت یک دوتایی یا چندتایی از تصاویر است و ایجاد چنین نمونه‌هایی در یک دیتاست با تعداد تصاویر و کلاس‌های زیاد، حالت‌های زیادی را ایجاد می‌کند. برای مثال در یک دیتاست با N تصویر، تعداد زوج‌های ممکن برای استفاده از تابع contrastive loss از مرتبه O(N^2) و تعداد سه‌تایی‌ها برای استفاده از تابع triplet loss از مرتبه O(N^3) است که عملا بررسی تمامی این حالات، مخصوصا در یک دیتاست بزرگ امکان پذیر نخواهد بود. در یک شبکه که به منظور طبقه‌بندی تصاویر مورد استفاده قرار می‌گیرد وقتی از mini batch استفاده می‌کنیم، گرادیان‌های محاسبه شده به منظور بهینه‌سازی پارامتر‌های شبکه، محلی خواهند بود زیرا به دلیل محدودیت محاسباتی و فضای ذخیره‌سازی، امکان استفاده از تمامی دیتاست در یک batch وجود ندارد و شبکه تنها بر روی توزیع محلی دیتاهای یک mini batch تمرکز می‌کند.بنابراین نمی‌توان توزیع فراگیر دیتا را به سادگی مورد بررسی قرار داد به همین دلیل یادگیری شبکه کند شده و امکان گرفتار شدن در کمینه‌های محلی نیز زیاد می‌شود.این مساله در شبکه‌های deep metric نیز به صورت شدیدتری بروز پیدا می‌کند، زیرا  اندازه‌ی فضای نمونه‌ها همانطور که گفته شده از مرتبه O(N^2) تا O(N^4) افزایش خواهد یافت که در این فضا بحث redundancy نیز مساله‌ساز خواهد شد و اکثر نمونه‌ها نیز اطلاعات کافی ارائه نمی‌کنند بنابراین نمونه‌برداری تصاد   فی و استفاده از این نمونه‌های redundant باعث کاهش شدید عملکرد شبکه و همگرایی کند آن خواهد شد.به همین دلیل اساس بیشتر تحقیقات و توسعه‌های انجام شده در زمینه‌ی metric learning ، ارائه روشی به منظور مواجهه با این redundancy و استراتژی مناسب به منظور انتخاب نمونه‌هایی است که اطلاعات کافی را در اختیار شبکه قرار دهند و روند آموزش آن را تسریع کنند.Triplet Lossهمانطور که در بخش قبل اشاره شد، یکی از توابع loss مورد استفاده در شبکه‌های metric learning تابع triplet است که مقدار آن بر اساس دسته‌ی سه‌تایی از تصاویر محاسبه می‌شود. در این دسته‌ی سه‌تایی یک تصویر به عنوان مرجع، یک تصویر از کلاس مشابه با تصویر مرجع و یک تصویر از کلاس متفاوتی انتخاب می‌شودتاثیر کاهش تابع خطای tripletبرای مثال (x_i,y_i) نمونه‌ی i ام در دیتاست آموزشیاست وبردار ویژگی متناظر با ورودی x_i در فضای ثانویه است که معمولا این بردار ویژگی نرمالیزه می‌شود تا فرآیند آموزش شبکه پایدارتر شود. در طی فرآیند آموزش شبکه، سه نمونه از دیتاست آموزشی انتخاب می‌شود و سه‌تاییتشکیل داده می‌شود که در آن x_a تصویر مرجع، x_p تصویر با کلاس مشابه و x_n تصویر از کلاس متفاوت است. هدف کلی این تابع loss این است که نمونه‌های مرتبط با یک کلاس را در فضای ثانویه به یکدیگر نزدیک کرده و نمونه‌های متفاوت را دور کند، بر این اساس تابع خطا به صورت زیر تعریف می‌شود:با توجه به این تابع خطا، در صورتی که فاصله بین تصویر مرجع و نمونه مثبت کم‌تر از فاصله تا نمونه منفی باشد شبکه به هدف خود رسیده‌است و نتیجتا مقدار تابع خطا و گرادیان آن نیز صفر خواهد بود و وزن‌های شبکه بروزرسانی نمی‌شود.اما در صورتی که فاصله تصویر مرجع تا نمونه منفی کم‌تر باشد، گرادیان غیر صفر بوده و وزن‌های شبکه بروزرسانی می‌شود. پارامتر alpha به نحوی حاشیه‌ای را برای آموزش شبکه در نظر می‌گیرد تا فاصله نمونه‌های مربوط به کلاس متفاوت به اندازه‌ی مشخصی زیاد شود.این پارامتر نقش کلیدی در انتخاب نمونه‌ها در آموزش شبکه‌ی deep metric با استفاده از تابع خطای triplet بازی می‌کند.Hierarchical Triplet Lossدر مدل‌های متداول کنونی metric learning که از توابع خطای contrastive، triplet و quadruplet استفاده می‌کنند با چالش‌های جدی روبرو هستیم:همانطور که در بخش قبل هم به آن اشاره شد، به دلیل محدودیت‌های حافظه در پردازنده‌های گرافیکی نمی‌توان تمامی نمونه‌ها را در یک batch به شبکه تحویل داد و از همین رو نمی‌توان به سادگی، توزیع فراگیر دیتا را مورد بررسی قرار داد که این موضوع می‌تواند موجب گرفتار شدن مدل در کمینه‌های محلی شود.برای حل این مشکل راهکار استفاده از ساختار درختی در [1] ارائه شده‌است. به این صورت که در هر مرحله درختی را تشکیل می‌دهیم که برگ‌های آن در سطح صفر، کلاس‌های موجود در دیتاست هستند و در هر سطح بر اساس مدل کنونی و یک مقدار آستانه، کلاس‌هایی با محتوای مشابه و نزدیک به هم، تلفیق می‌شوند. بر اساس این ساختار درختی می‌توانیم روابط موجود در دیتاست را بررسی کنیم.مشکل دیگری که برای مثال در یک مدل با تابع خطای triplet با آن روبرو هستیم، این است که تعداد زیادی از triplet های ایجاد شده، به دلیل در نظر گرفتن یک مقدار ثابت برای violate margin ، گرادیانی را ایجاد نمی‌کنند و از این رو اطلاعات جدیدی را به مدل اضافه نخواهند کرد، در حالی که سرعت همگرایی و آموزش شبکه را به شدت کاهش می‌دهند. به عبارتی با تمامی دیتاها به صورت یکسان برخورد می‌شود. برای حل این مساله نیز ایده‌ی استفاده از dynamic margin ارائه شده‌است. به این صورت که این مقدار حاشیه را به نحوی انتخاب می‌کنیم تا تمرکز مدل بر روی نمونه‌های دارای اطلاعات باشد.مورد نهایی نیز بحث انتخاب tripletهایی است که اطلاعات مناسبی را در هنگام آموزش مدل ارائه کنند. آنچه در [1] بررسی شده‌است این است که به جای دور کردن صرفا نمونه‌هایی با کلاس‌های متفاوت، تلاش کنیم تا کلاس‌هایی با محتوای مشابه را نیز از یکدیگر دور کنیم و از این رو مدلی با قابلیت جداسازی قوی‌تر ایجاد کنیم.الگوریتم HTL ارائه شده در [1]  دارای دو بخش اصلی است:ایجاد ساختار درختی از کلاس‌های موجود در دیتاست بر اساس مدل کنونی که سطح اول این درخت  متشکل از تمامی کلاس‌هاست و در سطح آخر آن، تمامی نود‌ها با یکدیگر تلفیق شده‌اند.تشکیل تابع خطای جدید بر مبنای خطای triplet که پارامتر آستانه در آن به صورت متغیر در نظر گرفته می‌شود.روند ایجاد ساختار درختیبا استفاده از شبکه عصبیکه وزن‌های آن با استفاده از خطای triplet مرسوم آموزش دیده‌است، ساختار درختی فراگیر را ایجاد می‌کنیم. با توجه به اینکهبیان نمونه‌ی x_i در فضای ثانویه است، ماتریس فاصله‌ی C بین تمامی کلاس‌ها را بر روی دیتاست آموزشی D محاسبه می‌کنیم:که در آنd(p, q) فاصله‌ی بین دو کلاس می‌باشد. مقدار بردار r_i به دلیل پایداری فرآیند یادگیری مدل، به مقدار واحد نرمالیزه می‌شود. در صورتی که در معادله از نرم مرتبه اول استفاده شود، مقدار این فاصله‌ در بازه‌ی [0,4] و در صورتی که از نرم اقلیدسی استفاده شود در بازه‌ی [0,2] خواهد بود.برای ساخت درخت از کلاس‌های موجود، ابتدا با برگ‌هایی متشکل از تمامی کلاس‌ها در سطح صفر شروع می‌کنیم و در سطوح بعدی به تدریج این نود‌ها را بر اساس ماتریس فاصله محاسبه شده، تلفیق می کنیم تا اینکه در مرحله آخر تنها یک نود باقی می‌ماند.در سطح صفر، حد آستانه برای تلفیق نود‌ها به صورت میانگین فواصل درونی هر کلاس محاسبه می‌شود:که در آن n_c تعداد نمونه‌های موجود در کلاس c ام می‌باشد. در سطح l ام از ساختار درختی، نود‌هایی که فاصله‌ی آن‌ها کم‌تر از حد آستانه‌یباشد، با یکدیگر تلفیق می‌شوند. تابع خطا و حد آستانهپس از ایجاد ساختار درختی مشابه با آنچه در بخش قبل به آن اشاره شد، به صورت تصادفی &#x27;l نود از سطح صفر درخت H را انتخاب می‌کنیم که هر نود بیانگر یک کلاس می‌باشد، این کار به منظور حفظ تنوع در نمونه‌های آموزشی انجام می‌شود.سپس m- 1 نزدیک‌ترین کلاس را به هر یک از این &#x27;l نود در سطح صفر انتخاب می‌کنیم. این کار با هدف افزایش قدرت مدل در جدایی‌سازی بین کلاس‌هایی با محتوای تقریبا مشابه انجام می‌شود.در نهایت t تصویر را از هر کلاس انتخاب می‌کنیم که نتیجتا به n = l&#x27; * m * t تصویر در mini batch M می‌رسیم. به منظور ایجاد تمامی triplet های ممکن در این mini batch ، ابتدا باید از بین l&#x27; m کلاس، دو کلاس مثبت و منفی را انتخاب کنیم که تعداد حالات ممکن برای آن برابر بااست. سپس دو نمونه‌ی مثبت و مرجع را از بین دیتاهای کلاس مثبت انتخاب می‌کنیم و از بین نمونه‌های کلاس منفی انتخاب شده‌ نیز نمونه‌ی negetive را انتخاب می‌کنیم پس بنابراین تعداد triplet های موجود در M برابر باخواهد بود.پس از ایجاد triplet های ممکن در mini batch ، مقدار تابع خطا را محاسبه می‌کنیم:یکی از مهمترین وجه تمایز‌های تابع خطای بررسی شده در [1] با تابع خطای مرسوم triplet استفاده از حد آستانه‌ی متغیر است. مقدار این حد آستانه بر اساس ساختار درختی وطبق ارتباط بین کلاس مرجع و کلاس منفی محاسبه می‌شود. برای مثال برای سه‌تایی T مقدار آستانه برابر است با: این مقدار آستانه از سه‌ترم تشکیل شده‌است. ترم beta برای اطمینان از این موضوع است که کلاس‌های تصاویر در مرحله کنونی آموزش نسبت به مرحله قبلی از یکدیگر دورتر شوند. ترم d حد آستانه‌ای که به خاطر آن دو کلاس مرجع و کلاس منفی در ساختار درختی با یکدیگر تلفیق شده‌اند را در نظر می‌گیرد. با توجه به آنکه اگر در سه‌تایی انتخاب شده، فاصله بین کلاس مرجع و کلاس منفی، بیشتر از کلاس مرجع و کلاس مثبت باشد، در حالت عادی ممکن است به خاطر انتخاب حد آستانه ثابت، گرادیان برابر با صفر باشد و این سه‌تایی تاثیری در آموزش نداشته باشد،‌ اما اگر این ترم را در حد آستانه متغیر در نظر بگیریم، چنین سه‌تایی‌هایی نیز می‌توانند در ایجاد گرادیان نقش داشته باشند و موجب دورتر شدن کلاس‌هایی که با یکدیگر confusion زیادی دارند بشویم.ترم d برابر با حد آستانه‌ی تلفیق کلاس مرجع و کلاس منفی در سطحی از درخت H است که در سطح بعدی این دو کلاس تلفیق شده‌باشند.در ترم سوم نیز فاصله‌ی متوسط بین نمونه‌های کلاس مرجع در نظر گرفته شده‌است:در این تابع خطای ارائه شده، نمونه‌ی مرجع در triplet تلاش می‌کند تا نمونه‌هایی با مفاهیم متفاوت را از خودش دور کند، از طرفی استفاده از  حد آستانه‌ی متغیر باعث می‌شود که triplet هایی که در آن‌ها فاصله بین نمونه مرجع و نمونه منفی خیلی زیاد است نیز در ایجاد گرادیان نقش داشته باشند.پیاده‌سازیبه منظور پیاده‌سازی HTL از فریم‌ورک Caffe بر روی پردازنده گرافیکی NVIDIA TITAN X استفاده شده‌است که دارای 12 گیگابایت فضای ذخیره‌سازی می‌باشد. برای ساختار شبکه عصبی از معماری GoogLeNet با تکنیک batch-norm بهره گرفته شده‌است که وزن‌های آن به صورت از پیش آموزش دیده شده بر روی دیتاست ImageNet می‌باشد با این تفاوت که لایه‌های fully connected نهایی این شبکه حذف شده و یک لایه جدید d  بعدی اضافه شده‌است که بیان هر تصویر در فضای ثانویه را ایجاد می‌کند.وزن‌های این لایه بر اساس نویز تصادفی و با استفاده از فیلتر Xavier مقداردهی شده‌اند.در [1] به منظور استفاده از 650 تصویر در هر mini batch تغییراتی در مدیریت حافظه فریم‌ورک مربوطه داده‌شده‌است. هر تصویر ورودی این شبکه دارای ابعاد 224*224 بوده که مقدار میانگین پیکسل‌ها به عنوان پیش‌پردازش، از آن‌ها کاسته شده‌است.نتایجالگوریتم HTL ارائه شده در [1] بر روی دیتاست‌های مختلفی مورد بررسی قرار گرفته‌است. یکی از این دیتاست‌ها Cars-196 و Stanford Online Products است. برای بررسی عملکرد این الگوریتم، عمق ساختار درختی برابر با 16 و مقدار beta = 0.2 انتخاب شده‌است. کل فرآیند آموزش بر روی این دیتاست به 30 epoch احتیاج دارد و اندازه batch برابر با 50 می‌باشد. در هر 10 epoch نرخ یادگیری یک‌دهم می‌شود.نتایج مقایسه این روش با چند روش دیگر در جدول زیر و به ازای Recall@x های مختلف نمایش داده‌شده‌است:مقایسه نتایجاین نتایج نشان می‌دهد که روش HTL ارائه شده در [1] عملکرد triplet loss را به صورت قابل توجهی افزایش داده و قابلیت تعمیم مدل نیز افزایش داشته‌است.[1] Ge, W., Huang, W., Dong, D., Scott, M.R. (2018). Deep Metric Learning with Hierarchical Triplet Loss. ECCV.</description>
                <category>علیرضا محمدی</category>
                <author>علیرضا محمدی</author>
                <pubDate>Fri, 03 Jun 2022 16:15:35 +0430</pubDate>
            </item>
                    <item>
                <title>یادگیری محلی contrastive بدون نظارت</title>
                <link>https://virgool.io/@alireza17010/%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%AD%D9%84%DB%8C-contrastive-%D8%A8%D8%AF%D9%88%D9%86-%D9%86%D8%B8%D8%A7%D8%B1%D8%AA-amyi3tlonqti</link>
                <description>در این روش، برای محاسبه گرادیان لایه‌های ابتدایی شبکه، به گرادیان لایه‌های انتهایی نیاز داریم. در چنین ساختاری لایه‌های ابتدایی در فرآیند backwark propagation باید منتظر لایه‌های انتهایی بمانند در حالی که این قید وابستگی بین لایه‌ها چندان منطقی به نظر نمی‌رسد. اگر بخواهیم شبکه‌های عصبی عمیق را در مقایسه با سیستم‌های زیستی بررسی کنیم،  شواهدی وجود دارد که وزن سیناپس‌های موجود در مغز انسان به صورت محلی بروزرسانی می‌شود و احتیاجی به هماهنگی و منتظر ماندن برای اتمام کار باقی قسمت‌های مغز وجود ندارد.علاوه بر این موضوع، حذف قید هماهنگی بین بخش‌های مختلف شبکه‌ی عصبی این امکان را فراهم می‌سازد تا بتوان آموزش شبکه را به صورت موازی و توزیع‌شده انجام داد که این مساله سرعت آموزش و همچنین استنتاج مدل را افزایش می‌دهد. همچنین به دلیل عدم نیاز به مقادیر خروجی تمامی نورون‌ها در آموزش هر لایه (به دلیل محاسبه محلی مقادیر مربوط به همان لایه) میزان استفاده از حافظه در آموزش محلی شبکه‌های عصبی عمیق کاهش می‌یابد.در این مقاله ابتدا نگاهی خواهیم داشت به ایده‌های کنونی در زمینه آموزش محلی شبکه و ساختار Greedy InfoMax را مورد بررسی قرار می‌دهیم؛ سپس با بررسی مشکلات و نواقص آن، ساختار یادگیری محلی LoCo [1] را معرفی می‌کنیم و راهکار‌هایی را که در این ساختار به منظور کاهش فاصله‌ی بین عملکرد یادگیری end to end و یادگیری محلی، ارائه شده‌است بررسی می‌کنیم.یادگیری بدون نظارتدر ابتدا با موفقیت شبکه‌ی AlexNet در یادگیری بازنمایی تصاویر بدون برچسب، یادگیری بدون نظارت در زمینه‌هایی همچون پیش‌بینی محتوا، پیش‌بینی چرخش تصاویر، افزودن رنگ‌ به تصاویر و مساله شمارش یک مفهوم در تصویر مورد توجه قرار گرفت. بازنمایی که این شبکه‌ها از تصاویر می‌آموزند را می‌توان با استفاده از یک دیکودر و حتی با بهره‌گیری از لایه‌های خطی به برچسب کلاس تبدیل کرد.پس از آن یادگیری بدون نظارت contrastive معرفی شد که توانست عملکرد خوبی را از خود در شبکه‌ی ImageNet نشان دهد و فاصله‌ی بین یادگیری با نظارت و بدون نظارت را هرچه بیشتر کاهش دهد.روش contrastive عبارت است از یادگیری بازنمایی تصاویر از زوج ورودی‌های مشابه و غیرمشابه. بدین صورت که در طول یادگیری شبکه، انکودر تلاش می‌کند یک بازنمایی معقول را از تصاویر ایجاد کند و دیکودر نیز تا بر اساس تابع خطای contrastive تصاویر غیرمشابه را از هم تفکیک کند.یکی از نمونه‌های این تابع خطا به صورت زیر است:این تابع خطای InfoNCE مشابه با تابع خطای cross entropy در یک مساله طبقه‌بندی است که پارامتر دما tau نیز در آن لحاظ شده‌است. در این تابع q و k بردار بازنمایی نرمال‌شده تصاویر هستند که هدف کلی ایجاد یک بازنمایی است که در آن نمونه‌ی مرجع q فاصله‌ی کم‌تری از نمونه مثبت داشته و فاصله بیشتری از نمونه‌های منفی پیدا کند. یک شبکه ارائه شده  یادگیری بدون نظارت و بر اساس تابع خطای بررسی شده در بالا، شبکه‌ی SimCLR نام دارد که در آن روش‌های زیادی به منظور کاهش فاصله‌ی بین یادگیری بدون نظارت و یادگیری با نظارت ارائه شده‌است.اولین ایده استفاده از batch بزرگ‌تر و augmentation قوی‌تر تصاویر آموزشی است. همچنین به منظور ایجاد بازنمایی‌ها عمومی‌تر به جای استفاده از دیکودر خطی، از MLP غیرخطی استفاده شده‌است.شبکه‌ی Greedy InfoMax نیز شبکه‌ی دیگری است که بر اساس یادگیری بدون نظارت ولی با ارائه‌ی ایده‌هایی در آموزش محلی مطرح شده‌است که در ادامه به بررسی جزئیات آن می‌پردازیم.Greedy InfoMaxیکی از چالش‌هایی که شاید در روند یادگیری محلی به نظر برسد، لزوم وجود نظارت لایه‌ نهایی در آموزش وزن‌های شبکه‌است. به این صورت که لایه‌های ابتدایی شبکه بیان خود را از ورودی، بر اساس خطایی که خروجی لایه نهایی ایجاد می‌کند اصلاح می‌کنند. در واقع هرچه بیان ایجاد شده توسط لایه‌های ابتدایی شبکه دقیق‌تر و حاوی ویژگی‌های مهم‌تر و جامع‌تری باشد، خروجی لایه‌ی نهایی نیز خطای کم‌تری ایجاد خواهد کرد. بنابراین بر اساس این نظارت یادگیری شبکه‌های عمیق صورت می‌گیرد.هرچند موفقیت تعدادی از مدل‌های self-supervised contrastive این مساله را به چالش می‌کشد، زیرا این مدل‌ها در مرحله‌ی یادگیری بازنمایی بدون استفاده از دیتاهای برچسب خورده، توانسته‌اند به عملکرد مشابه و یا نزدیک به رقبایsupervised خود برسند. بر این اساس ایده‌ای که وجود دارد این است که بلوک‌های شبکه‌ی عصبی عمیق را از لحاظ گرادیانی ایزوله کنیم و هر بلوک را با استفاده از روش یادگیری contrastive محلی آموزش دهیم.این ایده موجب می‌شود تا به این موضوع فکر کنیم که آیا می‌توانیم نتایج مشابه با روش‌های contrastive را به صورت محلی بدست آوریم؟بر این اساس روش contrastive ارائه شده‌است که به دنبال یادگیری بازنمایی محلی در هر طبقه است.در این شبکه، بخش انکودر که مسئول یادگیری بازنمایی دیتاست، به چند ماژول مختلف تقسیم شده‌است که در انتهای هرکدام یک تابع خطای contrastive استفاده شده‌است بنابراین در روند back propagation گرادیان در طول شبکه جریان نمی‌یابد و بلکه هر یک از ماژول‌ها بر اساس تابع خطای تعریف شده و به صورت حریصانه آموزش می‌بیند.اما باید توجه داشت که گاهی اوقات یادگیری حریصانه‌ی ماژول‌های ابتدایی شبکه نمی‌تواند عملکرد کلی شبکه را تضمین کند. بر این اساس به دلیل آنکه ماژول‌های شبکه عصبی از یکدیگر اطلاعی ندارند، بنابراین نمی‌توانیم از تمامی ظرفیت یک شبکه‌ی عمیق استفاده کنیم.همچنین ایزولاسیون گرادیان موجب می‌شود تا لایه‌های مختلف از یکدیگر بازخوردی نداشته باشند؛ همانطور که گفته شد در حالت عادی لایه‌های ابتدایی بازنمایی خود را از دیتا بر اساس نظارت لایه‌ی نهایی بهبود می‌بخشند و در صورتی که این نظارت وجود نداشته باشد، بازنمایی ضعیف از دیتا در لایه‌های ابتدایی می‌تواند عملکرد شبکه را در لایه‌های نهایی کاهش دهد.بنابراین عملکرد شبکه در این ساختار همچنان وجود دارد و فاصله زیادی بین این ساختار یادگیری محلی و یادگیری end to end دیده می‌شود که در روش LoCo تلاش شده‌است تا این فاصله کم و کم‌تر شود.روش LoCoبه منظور کاهش فاصله‌ی عملکرد بین شبکه‌های مطرح با روش یادگیری end to end و یادگیری محلی contrastive ، روش Local Contrastive Representation Learning معرفی شده‌است. اولین ایده‌ی مطرح شده در این مقاله به منظور مرتفع ساختن مشکل ناشی از ایزولاسیون گرادیان می‌باشد که در بخش قبل به آن اشاره شد.بر خلاف روش GIM که در آن تمامی ماژول‌ها از یکدیگر ایزوله بودند و بازخوردی از عملکرد باقی شبکه دریافت نمی‌کردند، در ساختار LoCo هر دو طبقه در یک واحد با یادگیری محلی قرار می‌گیرد که طبقه‌های میانی دو واحد متوالی با یکدیگر اشتراک دارند.بدین صورت بین واحد‌های متوالی در شبکه، یک همپوشانی وجود خواهد داشت و یک پل گرادیانی بین آن‌ها شکل می‌گیرد. بنابراین در عین آنکه می‌توان یادگیری را در هر واحد به صورت محلی انجام داد، به وسیله‌ی طبقه‌های مشترک بین دو واحد متوالی، بازخوردی نیز از باقی بخش‌های شبکه دریافت می‌شود.پل گرادیانیبه منظور ایجاد یک مکانیزم بازخورد مناسب در یادگیری محلی، ایده‌های مختلفی در [1] بررسی شده‌است.در ایده‌ی اول به منظور بروزرسانی وزن‌های طبقات مشترک بین دو واحد، تنها از گرادیان لایه بالاتر در شبکه استفاده می‌شود. این روش نسبت به ایده‌ی اصلی ارائه شده در [1] که وزن‌ها از هر دو لایه‌ی بالایی و پایینی به اشتراک گذاشته می‌شود عملکرد ضعیف‌تری دارد اما باز هم عملکرد بهتری را نسبت به حالتی که ایزولاسیون کامل گرادیانی وجود داشته باشد از خود نشان می‌دهد.در این روش مکانیزم soft sharing مورد بررسی قرار گرفته‌است. بدین صورایده‌های مختلفی برای ایجاد این مکانیزم بازخورد گرادیانی وجود دارد که بعضی از این ایده‌ها ظت که وزن‌ها مستقیما در ماژول‌های یادگیری محلی به اشتراک گذاشته نمی‌شوند بلکه از طریق اعمال ترم جریمه‌ی L2 بر روی تفاضل آن‌ها، استفاده خواهند شد. برای مثال در تصویر مروبط به ساختار LoCo بلوک res3 در ابتدای یادگیری دارای وزن‌دهی یکسانی در ماژول‌های محلی متفاوت است، اما در طول یادگیری این وزن‌ها واگرا خواهند شد. ترم پنالتی به منظور کنترل این وضعیت  و اشتراک وزن‌ها  به صورت soft اضافه می‌شود. ضرائب مختلفی برای ترم پنالتی مورد بررسی قرار گرفته‌است که این روش اشتراک را از soft تا hard مورد بررسی قرار دهد. انتخاب ضریب ترم پنالتی و soft sharing بهبودی را در عملکرد شبکه نسبت به حالتی که هیچ اشتراک‌گذاری وزنی وجود نداشته باشد، ایجاد می‌کند اما اعمال روش hard sharing اندکی عملکرد را کاهش می‌دهد، هرچند که باز هم عملکرد کلی نسبت به روش بدون اشتراک‌گذاری بهتر است.در نهایت نیز مساله اندازه‌ی ماژول یادگیری محلی بررسی شده‌است. به این صورت که به جای استفاده از یک طبقه کامل، از تعداد کم‌تری لایه residual به منظور به اشتراک‌گذاری وزن‌ها استفاده شود. در حالت عادی هر واحد یادگیری محلی دارای دو طبقه کامل است اما حال می‌خواهیم عملکرد شبکه را در حالتی که هر واحد متشکل از یک طبقه کامل و تعدادی لایه کانولوشنی باشد بررسی کنیم. در این حالت تنها بلوک‌های residual ابتدای هر واحد به اشتراک گذاشته خواهند شد. برای این بررسی عملکرد شبکه در دو حالتی که یک بلوک و یا دو بلوک مشترک باشد بررسی شده‌است. مشاهده می‌شود که هرچه تعداد بلوک‌های بیشتری مشترک باشد (که نهایتا به اشتراک گذاری یک طبقه کامل و ساختار (که نهایتا به اشتراک گذاری یک طبقه کامل و ساختار LoCo نزدیک می‌شود.) عملکرد شبکه بهتر خواهد شد. هر چه تعداد بلوک‌های مشترک کم‌تر باشد، دریافت بازخورد ضعیف‌تر بوده و نتیجتا عملکرد شبکه به ساختار GIM نزدیک‌تر است.با استفاده از این بررسی و مقایسه نتایج این 3 روش با روش بدون بازخورد و با روش پل گرادیانی معرفی شده در [1] دریافتیم که به اشتراک گذاری وزن‌های یک طبقه کامل بین دو واحد یادگیری محلی متوالی، بهترین عملکرد را نتیجه می‌دهد و تا حد خوبی فاصله را با یادگیری end to end کاهش می‌دهد.دیکودر عمیق‌ترتحلیل دیگری که در [1] بررسی شده‌است این است که اندازه‌ی محدوده‌ی موثر در لایه‌های کانولوشنی ابتدایی شبکه ممکن است برای عملکرد مناسب یادگیری contrastive خیلی کوچک باشد.با توجه به آنکه تابع خطا در تمامی واحد‌ها استفاده می‌شود، تشخیص نمونه‌ی مثبت در دیکودر مربوط به واحد‌های ابتدایی خیلی سخت می‌باشد. برای مثال در نظر داشته باشد که در واحدهای یادگیری محلی  در ابتدای شبکه، باید یک max pooling بر روی فضای ویژگی 56*56 اعمال شود و سپس بردار حاصل برای طبقه‌بندی به دیکودر سپرده شود. بنابراین به نظر می‌رسد که افزودن لایه‌های کانولوشنی به دیکودر، به منظور افزایش محدوده‌ی موثر دریافت، ایده‌ی مناسبی باشد. همچنین با توجه به طبقات مشترک بین واحد‌ها، می‌توان بدون ایجاد بار اضافی در مسیر forward شبکه، دیکودر را عمیق‌تر کرد.در ابتدا تاثیر افزودن یک لایه کانولوشنی به دیکودر بررسی شده‌است. افزودن یک لایه به تنهایی باعث بهبود عملکرد نشده‌است اما افزودن یک لایه کانولوشنی با downsampling  از max pooling در دیکودر، توانسته‌است عملکرد یادگیری محلی contrastive را بهبود بخشد.در این بخش تعداد لایه‌های کانولوشنی بیشتری به دیکودر اضافه می‌شود. ابتدا تنها دو لایه، سپس به اندازه یک طبقه کامل و نهایتا به ازای یک شبکه کامل لایه اضافه می‌شود. مشاهده شده‌است که عملکرد هر سه در مقدار مشخصی اشباع شده‌است و افزودن بیش از دو لایه تاثیری در عملکرد نخواهد داشت؛ هرچند عملکرد 2 لایه کانولوشنی بهتر از 1 لایه کانولوشنی در دیکودر است.ایده‌ی دیگری که بررسی شده‌است، افزودن دو لایه MLP و ایجاد یک دیکودر با 4 لایه می‌باشد. افزودن این لایه موجب بهبود عملکرد کلی شده‌است اما مشکل محدوده‌ی موثر دریافت همچنان وجود دارد.ایده‌ای که در نهایت استفاده شده‌است، افزودن یک لایه کانولوشنی residual و دیکودر با دو لایه MLP است که در این حالت حتی با به اشتراک‌گذاری یک طبقه بین واحد‌های متوالی و یادگیری محلی، عملکرد شبکه خیلی نزدیک به شبکه‌ی SimCLR شده‌است، در حالی که از دیکودر خیلی عمیقی نیز استفاده نکردیم.بحث مدیریت حافظهایده‌ای که در ابتدای بررسی یادگیری محلی نیز مطرح شد این است که با استفاده از یادگیری محلی احتیاج به نگه‌داری خروجی تمامی نورون‌ها و گرادیان‌ها برای بروز‌رسانی وزن‌ لایه‌ها از بین می‌رود و از این رو میزان مصرف حافظه در این روش‌های یادگیری کم‌تر خواهد بود.اما مساله‌ای که وجود دارد و باعث می‌شود تا LoCo نتواند از قابلیت اشتراک‌گذاری محلی با استفاده از شبکه‌ی ResNet-50 بهره ببرد این است که هرچند در پیاده‌سازی این شبکه مساله‌ی توازن هزینه‌ی محاسباتی در نظر گرفته‌شده اما مساله‌ی توازن مصرف حافظه نادیده گرفته شده‌است.برای مثال در شبکه‌ی ResNet-50 هرچند که ابعاد فضایی پس از کاهش بعد به اندازه‌ی یک‌چهارم کاهش می‌یابد، اما تعداد کانال‌های ویژگی تنها دو برابر می‌شود؛ این موضوع سبب می‌شود تا دو لایه‌ی conv1 و res2 به تنهایی 50 درصد از حافظه‌ای که کل شبکه استفاده می‌کند را به خود اختصاص دهند.هرچند با استفاده از این شبکه به عنوان backbone نسبت کاهش مصرف مموری در ساختار GIM برابر با 1.81x و این نسبت در ساختار LoCo برابر با 1.28x می‌باشد، به این دلیل که LoCo بر خلاف GIM یک طبقه اضافی را نیز ذخیره می‌کند.ایده‌ای که به منظور بهره‌برداری بیشتر از اشتراک‌گذاری محلی در [1] استفاده شده‌است، بازطراحی و ایجاد تغییراتی در ساختار ResNet-50 است. به این صورت که به جای استفاده از شبکه با 4 طبقه، از شبکه‌ای با 6 طبقه و کاهش ابعاد تصاعدی‌تر استفاده شده‌است که هر طبقه دارای 3 بلوک residual است؛ این ساختار PResNet-50 نامیده‌شده‌است [1]. استفاده از این شبکه به عنوان backbone میزان کاهش مصرف مموری در LoCo نسبت به SimCLR به 2.76x رسیده‌است با وجود آنکه عملکرد هر دو خیلی نزدیک می‌باشد.میزان مصرف حافظه در لایه‌های مختلف ResNet-50 و PResNet-50 در تصویر زیر مقایسه شده‌است:همانطور که در شکل فوق نیز مشاهده می‌شود، PResNet-50 مصرف حافظه متعادل‌تری نسبت به ResNet-50 دارد.مقایسه عملکردبرای آنکه فاصله بین  عملکرد سه مدل زیر بررسی شود، نمودار توابع خطای هر مدل در مقایسه با هم نمایش داده‌شده‌است. شبکه SimCLR که آموزش آن به صورت end to end انجام می‌شود و یک مدل بدون نظارت و contrastive است و تنها یک تابع خطا دارد.مدل GIM که یادگیری آن کاملا محلی است و مکانیزم بازخوردی وجود ندارد، به منظور بررسی آن با مدل SimCLR مقادیر تمامی توابع خطا پس از تمامی لایه‌ها بررسی می‌شود، انتظار می‌رود که مقدار تابع خطای لایه آخر، در صورتی که عملکرد مشابه با SimCLR باشد، به مقدار تابع خطای این شبکه میل کند.مدل LoCo با یادگیری محلی و مکانیزم بازخورد گرادیانی، مجددا مقادیر توابع خطای تمامی لایه‌ها بررسی می‌شود.مقایسه عملکرد سه شبکههمانطور که مشاهده می‌شود مقدار تابع خطای طبقه نهایی شبکه LoCo به مقدار تابع خطای شبکه‌ی SimCLR کرده‌است و بنابراین هردوی این شبکه‌ها عملکرد مشابهی دارند، اما مقدار تابع خطای نهایی در GIM فاصله زیادی از مقدار خطای این دو شبکه دارد و نتوانسته‌است به بازنمایی خوبی از تصاویر برسد.[1] X. Yuwen, R. Mengye, (2020). LoCo: Local Contrastive Representation Learning.</description>
                <category>علیرضا محمدی</category>
                <author>علیرضا محمدی</author>
                <pubDate>Fri, 03 Jun 2022 15:18:22 +0430</pubDate>
            </item>
                    <item>
                <title>شبکه‌ی VGG-Net</title>
                <link>https://virgool.io/@alireza17010/%D8%B4%D8%A8%DA%A9%D9%87-%DB%8C-vgg-net-lvamxkjio6yp</link>
                <description>شبکه عصبی کانولوشنی VGG توسط Karen Simonyan و Andrew Zisserman از دانشگاه آکسفورد در سال 2014 معرفی شده‌است. در این مقاله تلاش شده‌است تا با افزایش عمق شبکه‌های عصبی کانولوشنی، به دقت بیشتری نسبت به شبکه‌های پیشین همچون AlexNet دست یابد.معماری شبکه استفاده شده در [1] متشکل از 5 لایه کانولوشنی و 3 لایه Fully Connected می‌باشد، اما در مقاله‌ی [2] به منظور بررسی اثر افزایش عمق شبکه، با ثابت در نظر گرفتن لایه‌های نهایی، تعداد لایه‌های کانولوشنی افزایش یافته‌است تا تاثیر آن در دقت شبکه بر روی دیتاست‌های ابعاد بزرگ شناسایی تصویر مورد بررسی قرار بگیرد.ورودی شبکه‌ها به صورت یک تصویر رنگی (سه کانال قرمز، سبز و آبی) با ابعاد 224*224 می‌باشد و به عنوان پیش‌پردازش، مقدار میانگین پیکسل‌ها که بر اساس دیتاست آموزش محاسبه می‌شود، از مقدار هر پیکسل کم می‌شود.در [1] ساختار شبکه متشکل از 5 لایه کانولوشنی است که لایه‌های اولیه دارای فیلتر‌های بزرگ‌تر با محدوده‌ی دریافت بیشتر هستند و اندازه‌ی فیلتر‌ به تدریج در طول 5 لایه کانولوشنی کاهش پیدا می‌کند.با این هدف که لایه‌های آغازین شبکه، محدوده‌ی دریافت (Receptive Field) بزرگ‌تری داشته‌باشند.اما تکنیکی که در مقاله‌ی [2] مورد استفاده قرار گرفته‌است، استفاده از فیلتر‌های کانولوشنی 3*3 با محدوده‌ی دریافت کوچک به جای استفاده از فیلتر‌های بزرگ‌تر می‌باشد. مقدار stride و padding برای این‌ لایه‌ها به گونه‌ای انتخاب شده‌است که ابعاد تصویر ورودی هر لایه، در خروجی آن حفظ شود.می‌توان نشان داد که دو فیلتر 3*3  متوالی بدون لایه pooling میان آن‌ها به نحوی که ابعاد ورودی حفظ شود، محدوده‌ی دریافتی موثری برابر با یک فیلتر 5*5 خواهد داشت و در صورت استفاده از سه فیلتر 3*3 متوالی، محدوده دریافتی موثری معادل با فیلتر 7*7 حاصل می‌شود.استفاده از این فیلتر کوچک‌تر مزایای بسیاری را در ساختار شبکه خواهد داشت. اولین مورد، افزایش میزان غیرخطی بودن به دلیل استفاده از فیلتر‌های کوچک متوالی است که این امر موجب افزایش قدرت تمایز تابع تصمیم خواهد بود. همچنین با توجه به آنکه تعداد لایه‌های کانولوشنی در [2] افزایش یافته است، به منظور بهبود سرعت یادگیری شبکه، بهتر است که تعداد پارامتر‌ها افزایش چندانی نداشته باشد.استفاده از 3 لایه کانولوشنی 3*3 با تعداد C کانال، 27C^2 پارامتر را به شبکه اضافه خواهد کرد، در حالی که استفاده از یک فیلتر 7*7 با محدوده‌ی دریافت موثر معادل، 49C^2 پارامتر خواهد داشت.استفاده از چنین ساختاری موجب شده‌است تا با افزایش تعداد لایه‌های کانولوشنی و عمیق‌تر کردن شبکه، تعداد پارامتر‌ها چندان زیاد نشود.یکی از ایده‌هایی که در [2] مورد توجه قرار گرفته‌است، استفاده از فیلتر‌های 1*1 می‌باشد که با وجود افزایش میزان غیرخطی بودن شبکه، تاثیری بر محدوده‌ی دریافت نخواهد داشت. چنین لایه‌ای را می‌توان به صورت یک تبدیل خطی به فضایی با ابعاد مشابه فضای ورودی دید.تابع فعال‌سازی استفاده شده در این لایه‌ها، ReLU می‌باشد. استفاده از توابع فعال‌سازی دیگری نظیر tanh نیز در شبکه‌های عصبی عمیق کانولوشنی متداول است، اما می‌توان نشان داد که به دلیل وجود ناحیه اشباع در تابع tanh، این تابع فعال‌سازی سرعت‌ همگرایی کم‌تری نسبت به ReLU دارد و از طرفی در شبکه‌های عصبی عمیق‌تر، با احتمال بیشتری دچار فرابرازش خواهد شد.همچنین Spatial Pooling با استفاده از پنج لایه‌ی max pool که به دنبال بعضی از لایه‌های کانولوشنی قرار گرفته‌است، انجام می‌شود. پنجره‌ی این لایه‌ها 2*2 و با stride برابر با 2 انتخاب شده‌است.در [2] پنج ساختار کلی برای شبکه عصبی کانولوشنی در نظر گرفته شده‌است که تفاوت آن‌ها تنها در تعداد لایه‌های کانولوشنی است و در باقی ساختار با یکدیگر مشابه هستند. نوع اول دارای 8 لایه کانولوشنی است که در دو زیر مدل مختلف بررسی شده‌است، در یکی از مدل‌ها از روش نرمالیزاسیون LRN که در ادامه به آن پرداخته می‌شود استفاده شده‌است.عمیق‌ترین شبکه‌ای که در [2] بررسی شده‌است دارای 16 لایه کانولوشنی است که در مجموع با احتساب لایه‌های FC نهایی، دارای 144 میلیون پارامتر می‌باشد. با توجه به اصلاحاتی که در ساختار بخش کانولوشنی شبکه انجام شده‌است، تعداد پارامتر‌های آن نسبت به بعضی از شبکه‌های کم‌عمق‌تر، کم‌تر است.ساختار شبکه‌های بررسی شده در [2]یکی از تکنیک‌های نرمالیزه کردن ورودی لایه‌ها در شبکه‌های عصبی عمیق که می‌تواند قابلیت تعمیم شبکه را افزایش دهد، استفاده از روش Local Response Normalization است.در صورتی کهخروجی نورون با اعمال کرنل i  در موقعیت (x, y) باشد و سپس تابع فعال‌سازی ReLU بر روی آن اعمال شود، پاسخ نرمالیزه شده‌یبه صورت زیر محاسبه می‌شود:این تجمیع بر روی n کرنل مپ همسایه در یک موقعیت ابعادی صورت می‌گیرد و N نیز تعداد کرنل‌های موجود در آن لایه می‌باشد. این نوع نرمالیزه کردن دیتا در واقع الهام گرفته از نورون‌های واقعی است و به نحوی رقابتی را بین خروجی نورون‌های حاصل از کرنل‌های مختلف ایجاد می‌کند.بحث نرمالیزه کردن ورودی در شبکه‌های عصبی عمیق می‌تواند تاثیر بسزایی در آموزش شبکه داشته باشد، زیرا در صورتی که ورودی یک لایه به نحو مناسبی نرمالیزه نشود، این ورودی می‌تواند به سمت نواحی اشباع تابع فعال‌سازی حرکت کند و موجب کند شدن و یا حتی توقف یادگیری گردد.اما همانطور که ذکر شد در [2] و [1] از تابع فعال‌سازی ReLU استفاده شده‌است که فاقد ناحیه اشباع به ازای ورودی مثبت است، از این رو نرمالیزه کردن ورودی احتمالا تاثیر چندانی در یادگیری نخواهد داشت. همانطور که در [1] نشان داده‌شده‌است، استفاده از روش نرمالیزه کردن LRN تاثیر چندانی بر عملکرد شبکه بر روی دیتاست ILSVRC نداشته و تنها موجب افزایش میزان مصرف حافظه شده‌است، بنابراین در شبکه‌ی‌ نهایی معرفی شده در [1] از این روش استفاده نشده‌است.هر دوی این شبکه‌ها [1], [2] از ساختار مشابهی در لایه‌های آخر استفاده می‌کنند که متشکل از 3 لایه FC می‌باشد. 2 لایه اول دارای 4096 نورون هستند و از تابع فعال‌سازی ReLU در آن‌ها استفاده شده‌است و لایه آخر دارای 1000 نورون (هر کدام برای یک کلاس) است که در این لایه از تابع فعال‌سازی softmax بهره گرفته شده‌است.استفاده از این تابع فعال‌سازی این امکان را فراهم می‌سازد تا شبکه توزیعی احتمالی را برای کلاس‌های مختلف دیتاست ایجاد کند، به این صورت که کلاس شئ موجود در تصویر دارای بیشترین احتمال خواهد بود.یکی از مسائلی که شبکه‌های FC با تعداد نورون‌های زیاد با آن مواجه هستند، مساله فرابرازش است. به این صورت که در طی آموزش شبکه، بعضی نورون‌ها بیشتر تحریک می‌شوند، در حالی که ممکن است تعداد زیادی از نورون‌ها هیچ وقت در روند آموزش اثری نداشته باشند. تکنیکی که معمولا در چنین مواردی استفاده می‌شود Dropout می‌باشد. این تکنیک به این صورت است که در حین آموزش شبکه خروجی بعضی از نورون‌ها با احتمال p صفر می‌شود و همچنین این نورون‌ها در روند بازگشت آموزش شبکه نیز تاثیری نخواهند داشت.این تکنیک را می‌توان به این صورت دید که در هر بار آموزش، شبکه ساختار متفاوتی نسبت به قبل خواهد داشت که این امر می‌تواند موجب کاهش خطای تست شود.همچنین حذف تصادفی نورون‌ها در هر مرحله از آموزش موجب می‌شود تا وابستگی بین نورون‌های موجود  در یک لایه کمتر شود و نورون‌ها ویژگی‌های مقاوم‌تری را یاد بگیرند.آموزش شبکهشبکه معرفی شده در [1] به دنبال افزایش تابع هدف چندجمله‌ایlogistic است که معادل با بیشینه‌سازی میانگین روی لگاریتم احتمال برچسب درست بر اساس توزیع پیش‌بینی شده می‌باشد. به منظور آموزش شبکه از stocastic gradient descent با اندازه‌ی batch برابر با 128  و مقدار momentum برابر با 0.9 استفاده شده‌است. همچنین ترم جریمه‌ی L2 نیز در تابع هدف شبکه در نظر گرفته شده‌است که از بزرگ‌شدن وزن‌های شبکه جلوگیری می‌کند و باعث می‌شود آموزش شبکه پایدارتر باشد.نرخ یادگیری در ابتدا برابر با 0.01 انتخاب می‌شود و در صورتی که خطای شبکه بر روی دیتای validationبهبودی نداشته باشد، این مقدار از مرتبه 10 کاهش پیدا می‌کند.در [2] نیز روند مشابهی به منظور آموزش شبکه استفاده شده‌است اما با انجام تغییراتی در ساختار و روند آموزش شبکه، شبکه‌ی عمیق‌تر معرفی شده در این مقاله علیرغم تعداد پارامتر‌ها و عمق بیشتر، به ازای تعداد کم‌تری epoch همگرا می‌شود.اولین دلیل این امر آن است که افزایش عمق شبکه و استفاده از فیلتر‌های کوچک‌تر، عملا regularization شبکه را به صورت ضمنی افزایش می‌دهد.این مساله در کنار استفاده از ترم جریمه در تابع هدف که در شبکه‌ی [1] استفاده شده‌است، توانای تعمیم را افزایش می‌دهد.دلیل دیگر استفاده از روش‌های بهینه به منظور وزن‌دهی اولیه لایه‌های شبکه می‌باشد.در شبکه‌ی [1] مقدار وزن‌ها بر اساس یک توزیع نرمال با میانگین صفر و مقدار بایاس برابر با صفر انتخاب می‌شود. انتخاب نادرست وزن‌های اولیه می‌تواند موجب ناپایداری گرادیان و نتیجتا توقف یادگیری شود، از این رو وزن‌دهی اولیه به خصوص در شبکه‌های عمیق‌تر، از اهمیت بالایی برخوردار است.به منظور حل مشکل وزن‌دهی اولیه در [2] ابتدا ساختار ساده‌تری از این شبکه با 11 لایه و با وزن‌دهی تصادفی آموزش داده شده‌است و از این وزن‌ها در شبکه‌های عمیق‌تر (با ساختار مشابه) استفاده شده‌است. در شبکه‌های عمیق‌تر، وزن‌‌های مربوط به لایه‌های جدید کانولوشنی، به صورت تصادفی انتخاب می‌شوند.یکی از چالش‌هایی که در آموزش شبکه‌های عمیق وجود دارد، محدود بودن دیتاست است. به همین دلیل در آموزش شبکه معمولا از تکنیک‌هایی به منظور افزایش دیتا استفاده می‌شود. این تکنیک‌ها برچسب داده را حفظ می‌کنند و بدون تغییر در ماهیت تصویر، ظاهرا دیتای جدیدی را ایجاد می‌کنند. این مورد علاوه بر افزایش تعداد دیتای آموزشی شبکه، سبب می‌شود تا حساسیت شبکه نسبت به بعضی از ویژگی‌های تصویر کاهش پیدا کند.تغییر در رنگ تصاویر و flip افقی یا عمودی از جمله تکنیک‌هایی هستند که میتوان به منظور augmentation دیتا استفاده کرد. روش دیگری که در [2] استفاده شده‌است crop کردن تصاویر آموزشی به صورت تصادفی در هر مرحله از آموزش است.تکنیک دیگری که می‌تواند به منظور augmentation مورد استفاده قرار بگیرد، تغییر ابعاد تصاویر ورودی شبکه، قبل از برش تصاویر به اندازه‌ی 224*224  است که می‌تواند قدرت شبکه را در تشخیص اهداف با مقیاس‌های مختلف، افزایش دهد. این تکنیک به صورت خاص در [2] استفاده شده‌است که در ادامه به آن اشاره می‌شود.در [2] تصاویر دیتاست ابتدا با حفظ نسبت ابعاد، تغییر مقیاس داده می‌شوند. به این صورت که کوچک‌ترین ضلع تصویر به S=256 تغییر اندازه داده می‌شود و اندازه‌ی ضلع بزرگ‌تر نیز به‌گونه‌ای تعیین می‌شود که نسبت ابعاد تصویر نهایی تغییری نکند. سپس از بخش مرکزی تصویر، مربعی به ابعاد 256*256 بریده می‌شود که به عنوان دیتای آموزشی شبکه مورد استفاده قرار می‌گیرد.اما در [2] با توجه به آنکه ابعاد برش تصاویر ورودی که به صورت تصادفی صورت می‌گیرد برابر با 224*224 است، تصویر کوچک‌شده به صورت مستطیلی مورد استفاده قرار می‌گیرد که اندازه کوچک‌ترین ضلع آن حداقل برابر با  S = 224 پیکسل خواهد بود.در صورتی که مقدار S برابر با 224 انتخاب شود، با برش تصویر در هنگام آموزش شبکه، تصویر تقریبا به صورت کامل حفظ می‌شود در حالی که اگر S خیلی بزرگ‌تر از ابعاد تصویر ورودی شبکه باشد، با برش تصویر در هنگام آموزش، تنها بخش کوچکی از تصویر متشکل از اهداف کوچک یا بخشی از اهداف بزرگ، در تصویر باقی خواهد ماند.دو روش برای انتخاب مقدار S استفاده شده‌است. در روش اول مقدار این پارامتر به صورت ثابت در نظر گرفته می‌شود. دو مقدار 256 و 384 به منظور بررسی عملکرد استفاده شده‌اند. ابتدا شبکه با استفاده از S = 256 آموزش داده می‌شود و سپس برای بررسی عملکرد به ازای S = 384 از وزن‌های شبکه آموزش دیده شده‌ استفاده می‌شود و همچنین نرخ یادگیری کوچک‌تری نیز مورد استفاده قرار می‌گیرد.در روش دوم این موضوع مورد توجه قرار گرفته‌است که اهداف موجود در تصاویر می‌توانند در مقیاس‌های متفاوتی باشند. به منظور در نظر گرفتن این موضوع در امر آموزش شبکه، مقدار S به منظور تغییر مقیاس تصویر ورودی، به صورت تصادفی و از بازه‌یانتخاب می‌شود.جزئیات پیاده‌سازینحوه پیاده‌سازی شبکه‌های عصبی عمیق از اهمیت بالایی برخوردار است. از آن‌جا که این شبکه از تعداد زیادی عملگر‌های تک‌بعدی و دوبعدی تشکیل شده‌اند و همچنین از اعداد ممیز شناور استفاده می‌شود، حجم محاسبات و زمان لازم برای آموزش شبکه بسیار بالا خواهد بود و عملا آموزش شبکه بر روی پردازشگر مرکزی سیستم‌های رایانه‌ای امکان‌پذیر نخواهد بود. همچنین این مساله با افزایش تعداد پارامتر‌های شبکه و عمیق‌تر کردن آن جدی‌تر شده‌است.برای رفع این مشکل معمولا از پردازشگر‌های گرافیکی استفاده می‌شود. پرداز‌شگر‌های گرافیکی دارای تعداد زیادی هسته‌های پردازشی ضعیف هستند که در کنار یکدیگر و با هماهنگی در پردازش و دسترسی به حافظه گرافیکی، امکان اجرای موازی الگوریتم‌ها را فراهم می‌کند.بنابراین با استفاده از یک پردازشگر گرافیکی می‌توان الگوریتم‌ها را به‌گونه‌ای پیاده‌سازی کرد که بخش‌های مختلف و مستقل آن، به صورت موازی اجرا شوند و نتیجتا زمان اجرای کلی الگوریتم کاهش چشم‌گیری پیدا کند.در شبکه‌های عصبی عمیق، عملگر کانولوشن دوبعدی چالش‌های زیادی را از نظر زمان اجرای الگوریتم ایجاد می‌کند، در حالی که با توجه به ماهیت این عملگر، می‌توان آن را به صورت موازی و بر روی هسته‌های مختلف پردازشگر گرافیکی پیاده‌سازی کرد. با توجه به پیشرفت پردازنده‌های گرافیکی، می‌توان از تعدادی پردازنده‌ی گرافیکی در کنار یکدیگر استفاده کرد و عملکرد آن‌ها را با یکدیگر هماهنگ نمود.برای مثال می‌توان هر batch از تصاویر آموزشی شبکه را بین پردازنده‌های مختلف تقسیم کرد تا هر یک از این پردازنده‌ها به صورت مستقل و موازی با بقیه، گرادیان را محاسبه کند و سپس بین این گرادیان‌ها میانگین گرفت تا گرادیان مربوط به batch کلی محاسبه شود. در این حالت محاسبه گرادیان بین تمامی پردازنده‌ها هماهنگ خواهد بود تا مقدار محاسبه شده با حالتی که تنها از یک گرافیک استفاده می‌شود برابر باشد.در [1] هم بر روی دیتا و هم در لایه‌های مختلف مدل، پردازش موازی صورت گرفته است، به این صورت که بعضی از لایه‌ها به دو بخش تقسیم شده و هر کدام بر روی یک پردازنده اجرا می‌شود. در حالی که روش به نسبت ساده‌تری که در [1] استفاده شده‌است عملکرد بهتری را نشان داده‌است.نتایجشبکه عصبی کانولوشنی 8 لایه [1] در رقابت‌های ILSVRC-2010 توانسته تا به خطای %top-5 = 17 برسد. همچنین این شبکه در رقابت‌هایILSVRC-2012 نیز شرکت داده‌شده‌است و با میانگین‌گیری از نتایج پنج شبکه‌ی مشابه، به %top-5 = 16.4 رسیده‌است. شبکه‌ی بررسی شده در [2] بر روی دیتاست ILSVRC-2012 بررسی شده‌است که متشکل از 1.3 میلیون تصویر آموزشی، 50‌هزار تصویر برای validation و 100‌هزار تصویر تست می‌باشد. همچنین در این رقابت‌ها به جای استفاده از خطای طبقه‌بندی چند کلاسه، از معیار خطای top-1 و top-5 استفاده شده‌است.ابتدا عملکرد یک شبکه با در نظر گرفتن ثابت بودن مقیاس تصویر ورودی، مورد بررسی قرار گرفته‌است (Q = S) همچنین به منظور ایجاد jitter در مقیاس تصاویر ورودی، مقداربرای تصاویر تست انتخاب شده‌است.نتایج تست عملکرد هر 6 شبکه بررسی شده در [2]به ازای مقیاس ثابت تصاویر آموزشی و مقیاس متغیر ارائه شده‌است.بر اساس این نتایج مدل A توانسته است تا به خطای %top-5 = 10.4  برسد که بهبود خیلی خوبی نسبت به شبکه‌ی بررسی شده در [1] داشته است. همچنین با مقایسه نتایج شبکه‌ی A و A-LRN می‌توان دریافت که استفاده از این روش نرمالیزه کردن ورودی لایه‌ها، تاثیر چندانی در بهبود عملکرد شبکه نداشته‌است. در حالی که با عمیق‌تر کردن شبکه، خطای %top-5 = 8.7 به ازای شبکه‌ی E حاصل شده‌است.همچنین می‌توان دریافت که با استفاده از روش تغییر مقیاس تصاویر ورودی به منظور آموزش شبکه برای تشخیص اشیا کوچک و بزرگ، عملکرد شبکه بهبود مشخصی داشته‌است و به ازای تغییر مقیاس تصاویر در بازه‌ی [512,256]  شبکه‌ی E توانسته است تا به خطای %top-5 = 8.0  برسد.تکنیک دیگری که به منظور بررسی عملکرد شبکه استفاده شده‌است، استفاده از چندین مقیاس متفاوت برای تصاویر تست می‌باشد. به این صورت که عملکرد شبکه به ازای 3 مقیاس متفاوت از تصویر تست مورد بررسی قرار می‌گیرد و سپس روی این نتایج میانگین گرفته می‌شود.برای حالتی که مقیاس تصاویر آموزشی ثابت باشد، تصاویر تست در 3 مقیاس {S - 32, S, S+ 32} بررسی می‌شوند که در آن S مقیاس تصویر آموزشی است. همچنین به ازای حالتی که مقیاس تصاویر آموزشی از بازه‌یانتخاب می‌شود، تصاویر تست در 3 مقیاسدر این حالت مشاهده شده‌است که شبکه‌ی E به ازای تغییر مقیاس تصاویر آموزشی و بررسی تصاویر تست در 3 مقیاس،‌ به خطای %top-5 = 7.5  رسیده است.عملکرد ترکیب چند شبکه نیز در [2] بررسی شده‌است. ابتدا با استفاده از ساختار زیر متشکل از 7 شبکه به خطای %top-5 = 7.3  رسیده‌است در حالی که بعد از رقابت‌های ILSVRC توانسته‌اند با ترکیب دو شبکه‌ی D و E که هر دو از تغییر مقیاس در تصاویر آموزشی و بررسی تصاویر تست در 3 مقیاس مختلف استفاده می‌کنند، به خطای %top-5 = 6.8 دست‌یابند.[1] A.Krizhevsky, I.Sutskever, G.Hinton. (2012). ImageNet Classification with Deep Convolutional Neural Networks. Neural Information Processing Systems. 25. 10.1145/3065386.[2] K.Simonyan, A.Zisserman. (2014). Very Deep Convolutional Networks for Large-Scale Image Recognition. arXiv 1409.1556.</description>
                <category>علیرضا محمدی</category>
                <author>علیرضا محمدی</author>
                <pubDate>Wed, 01 Jun 2022 22:37:13 +0430</pubDate>
            </item>
            </channel>
</rss>