<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های mojtaba rayati</title>
        <link>https://virgool.io/feed/@rayatimojtaba</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-10 22:34:10</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1666627/avatar/avatar.png?height=120&amp;width=120</url>
            <title>mojtaba rayati</title>
            <link>https://virgool.io/@rayatimojtaba</link>
        </image>

                    <item>
                <title>آموزش شبکه های عمیق: layer wise در مقابل end to end</title>
                <link>https://virgool.io/@rayatimojtaba/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B4%D8%A8%DA%A9%D9%87-%D9%87%D8%A7%DB%8C-%D8%B9%D9%85%DB%8C%D9%82-layer-wise-%D8%AF%D8%B1-%D9%85%D9%82%D8%A7%D8%A8%D9%84-end-to-end-o8rirsbfhiae</link>
                <description>این نوشته بر اساس مقاله Greedy Layerwise Learning Can Scale to ImageNet نوشته شده است. هدف اینست که با آموزش با یکی شیوه های آموزش layerwised آشنا شویم، امکان­پذیری و مزیت­های آن را دریابیم.آشنایی با Layerwised trainingمی دانیم که شبکه­ های عمیق در مسائل supervised به این صورت آموزش داده می شوند که برای لایه آخر خطایی بر اساس خروجی حاصل شده و خروجی دلخواه در نظر گرفته می شود سپس تمامی لایه ها و وزن ها بر اساس خطای به دست آمده تغییر می کند. به این شیوه از آموزش اصطلاح end to end training اطلاق می شود. اگرچه این شیوه از آموزش در عملکرد موثر اما از نظر تحلیل رفتاری شبکه حین آموزش دشوار است یعنی اولاً نمی توان ارتباط بین لایه ها را فهمید و یا اینکه فهمید هر لایه چه عملکردی از خود نشان می دهد. حال اگر مسئله، آموزش یک شبکه تک لایه بود، به دلیل وجود پشتوانه گسترده علمی می­شد آنها را به خوبی تجزیه تحلیل کرد. یعنی می­توان فهمید که آن لایه چه رفتاری از خود نشان می دهند همچنین می­توان در مورد همگرایی آن اظهار نظر های قویتری انجام داد.هدف این است که روشی پیشنهاد بشود که بتوان در عین اینکه شبکه هدف عمیق است، در حین طراحی از ابزارهای تحلیلی شبکه های کم بهره ببریم. برای این کار ابتدا این مشاهده را که در شبکه های دیده می‌شود را در نظر بگیرید داده ها در شبکه ها هر چی پیش می روند به صورت تدریجی کلاس های مختلف جداسازی بیشتر و کلاس های مشابه نزدیکی بیشتری از خود نشان خواهند داد (contraction &amp; sepertaion). به شکل زیر توجه کنید در شکل ρ همان تابع تحریک ReLu و W نیز بلوک کانولوشنی هست.شکل 1. جداسازی کلاس­های مختلف داده در لایه­های به صورت تدریجیاین مشاهده در شبکه­های عمیق کانولوشنی بسیار فراگیر است. بنابراین می توان گفت ظاهراً هر لایه وظیفه دارد روی داده ها عملیات separationرا انجام دهد.حال می­توان ایده greedy layer wised training را مطرح کرد. این روش بیان می دارد که آموزش لایه­ای باشد. به این صورت که هر لایه وظیفه داشته باشد حداکثر جداسازی برای ورودی های خود را به وجود آورد. در این حال چون آموزش در هر بار برای یک لایه هست، می توان ابزار تحلیل شبکه­های تک لایه را نیز برای آن در نظر گرفت.حال چطور می ­توان لایه به لایه این شکل از آموزش را انجام داد. به شکل های زیر توجه کنید.شکل 2. مراحل آموزش یک شبکه عمیق به صورت layerwisedدر این شبکه ابتدا لایه­ی مورد نظر با یکclassifier auxiliary آموزش می بیند. تابع هدف این گذاشته می­شود که خروجی شاخه همان خروجی هدف (لیبل کلاس­ها) باشد (به همین دلیل از کلمه greedy در عنوان روش استفاده شده است). بعد از اتمام آموزش ضرایب به‌دست‌آمده فریز می شود و لایه بعد به شبکه اضافه می شود. این لایه نیز با classifier auxiliary مربوط به خود آموزش می­بیند. پس در هر مرحله تنها یک لایه آموزش می بیند که برای آن یک لایه ورودی، خروجی لایه قبل و خروجی لیبل های هر کلاس از داده است. در شکل DNN شبکه عمیق متناظر با classifier auxiliary و عمق شاخه auxiliary به صورت زیر تعریف شده است.در این رابطه اگر k=1 باشد به معنای اینست که شاخه auxiliary تنها یک جداساز خطی هست. شکل زیر نمودار دیگری برای این شیوه از آموزش هست.شکل 3. دیاگرام بلوکی آموزش layer wisedحال ممکن این سوال پیش آید که آیا آموزش layer wisedبرای عملکرد کل شبکه موثر است؟ به بیان دیگر آیا شبکه آموزش دیده شده توسط این روش classifier خوبی خواهد بود؟ نویسندگان مقاله به ازای قبول شرایطی خاص قضایای زیر را به صورت تحلیلی نشان دادند. پیشرفت تدریجی (progressive improvement) به شرط اینکه در لایه ها از downsampling استفاده نشود تابع هزینه هر لایه از لایه قبلی خود خود کمتر یا مساوی است.اگر تابع تحریک تابعی 1-lipshitz باشد (تابع Relu تابع 1-lipshitz هست) که با لایه­ های کانولوشنی سری شده شبکه پایدار می ماندخطای عملکرد لایه آخر با یک باند از مرتبه J2ε محدود می‌شود. که J تعداد لایه هاست و همچنین ε از تعریف لایه ­ها به دست می ­آید ( ε -approximation ) و نیاز به محاسبه جداگانه آن نیست. دقت کنید این قضیه نشان می دهد که هر چه تعداد لایه ها بیشتر باشند باند خطا از مرتبه ای بالاتر خواهد بود و شبکه از بهینگی فاصله می‌گیرد. به شکل زیر توجه کنید که هرچه تعداد لایه­ها بیشتر شده رفتار از بهینگی فاصله گرفته (فاصله دقت داده­های train و testتخمینی از فاصله شبکه از بهینگی هست).شکل 4. تغییرات خطا به ازای تغییر عمق شبکه (J)ادعاهای فوق اثبات نمی‌کند که شیوه آموزش به این روش بهینه است. اما چون شروط گذاشته شده برای درستی قضایای فوق چندان سختگیرانه نیست، می‌توان گفت که احتمال اینکه شبکه رفتار ناپایدار از خود نشان دهد کم است.تست روش layer wisedاین شیوه از آموزش هم بر روی دیتاست cifar10 تست شده و هم بر روی ImageNet. دو جدول زیر عملکرد شبکه روی این دیتاست ها را نشان می دهد. در جدول SimCNN شبکه مورد نظر است و شبکه به ازای عمق­های مختلفی از auxiliary classifier آموزش داده شده است (k=1,2,3).دیده می­شود شبکه به ازای k=3 از روی دیتاست cifar10 (با دقت 92.8) از دقت VGG (با دقت 92.5) فراتر رفته است. همچنین برای همین عمق از شبکه auxiliary عملکرد (با دقت 89.8) نسبت به vgg13 (با دقت 89.3) بر روی دیتاست ImageNet بهتر شده است. در جدول دیده می شود هرچه عمق شبکه auxiliary (k) افزایش پیدا کرده عملکرد بهبود می­یابد. نمودار زیر این مطلب را دقیق­تر نشان­ می­دهد.شکل 5. تغییرات دقت بر حسب عمق شبکه اصلی و شبکه auxiliaryنتیجه ­گیریاول از همه باید گفته این پژوهش قوام این ایده که لایه­های کانولشونی در CNNها باعث جداسازی تدریجی داده ها می­شوند را تقویت کرد. و نشان داد که می توان از روش layer wised برای آموزش شبکه­های عمیق بر روی دیتاست­های سخت مانند ImageNetاستفاده کرد. نتایج و تحلیل­ها این پژوهش نشان داد که این شیوه از آموزش، جدا از امکان تحلیل لایه­ای بهتر، استفاده­های کاربردی نیز دارد:زمانی که محدودیت حافظه وجود دارد چراکه در زمان آموزش تنها متغیرهای یک لایه آموزش می بینندزمانی که پایداری شبکه در طول آموزش چالش باشد.برای prototypingو زمانی که معلوم نیست معماری پیشنهادی موثر است یا نه این شیوه می­تواند به عنوان قدم اول استفاده شود.مرجع:[1] Belilovsky, Eugene, Michael Eickenberg, and Edouard Oyallon. &quot;Greedy layerwise learning can scale to imagenet.&quot; International conference on machine learning. PMLR, 2019.</description>
                <category>mojtaba rayati</category>
                <author>mojtaba rayati</author>
                <pubDate>Mon, 06 Jun 2022 15:45:19 +0430</pubDate>
            </item>
                    <item>
                <title>روش S2SD</title>
                <link>https://virgool.io/@rayatimojtaba/%D8%B1%D9%88%D8%B4-s2sd-ssxjngacwi3a</link>
                <description>روش S2SD برای بهبود عملکرد deep metric learning (DML) توسعه داده شده است.روش DML چیست و چه کاربردی دارد؟  برای فهم بهتر مثال زیر را در نظر بگیرید. کاربرد معمولی که از شبکه‌های عصبی می شناسیم مسئله classification است. مثلاً وقتی در خیابان قدم می­زنیم تشخیص می دهیم که این شی درخت است، این شی خودرو هست، این شی پرنده هست و ... . و این توانایی طی آموزش طولانی (داده برداری زیاد) برای ما به وجود آمده است.اما گاه فردی را می بینیم که او را نمی شناسیم(کلاسی مشخصی برای او نداریم) اما می دانیم این فرد را در مکانی دیگر دیده بودیم. در مسئله دوم آموزش زیادی (داده برداری زیاد) برای چهره فرد برای ما انجام نشده، اما شناسایی انجام شده است. در واقع ما آموزش دیده ایم که ویژگی‌های چهره افراد را در ذهن بسپاریم و اگر آن ویژگی‌ها را مجدد ببینیم این تشخیص برای ما اتفاق می­افتد که این همان فرد قبلی است.DML روشی است که می‌تواند برای شبکه های عصبی عملکرد مشابه را ایجاد کند. یعنی شبکهبتواند تشخیص دهد آیا دو چهره مربوط به یک نفر هستند یا خیر. مدل کردن ویژگی ها عموما با یک بردار انجام می شود و Metric تابعیست که نزدیکی دو بردار ویژگی را مدل می کند. وظیفه شبکه­ی عصبی نیز استخراج آن ویژگی­هاست.شکل 1. استخراج ویژگی توسط شبکه برای DMLloss شبکه نیز تابعی از Metric بردارهاست. برای مثال طبق تعریف تابع متریک، متریک دو بردار مشابه صفر است. به همین دلیل اگر دو چهره از فرد یکسانی باشند و در عین حال شبکه متریک غیر صفری برگرداند خطایی برای شبکه در نظر گرفته می­شود.در عمل چه نکاتی باید رعایت شود تا شبکه عملکرد خوبی در DML داشته باشد؟ در تحقیقات دیده شده که هرچه ابعاد خروجی شبکه گسترش پیدا می کند قدرت تعمیم DML نیز افزایش پیدا می­کند. قدرت تعمیم به چه معناست؟ یعنی شبکه­ای که بر روی تعداد محدودی چهره آموزش دیده چقدر می­تواند چهره های جدید را بهتر تطبیق (یا معادلا تفکیک) دهد.قدرت تعمیم یکی از مهمترین شاخص­هاییست که از شبکه انتظار داریم. گفته شد که مطالعات نشان داده­اند که افزایش بعد منجر به افزایش قدرت تعمیم نیز می شود. اما در کاربرد های DML در بسیاری از مواقع ما نیاز به ایجاد پایگاه داده­هایی بزرگ داریم و همزمان لازم است تطبیق تصویر دو چهره با سرعت کافی انجام پذیرد. در نتیجه اگر ابعاد شبکه یا خروجی نهایی بزرگ باشد سرعت کارکرد کاهش پیدا می­کند. راه حل چیست؟ روش­های مبتنی بر knowledge distillation روشیهاییند که می توانند اطلاعات یک شبکه بزرگتر به یک شبکه کوچکتر را بفهمانند به طوری که شبکه کوچکتر رفتاری مشابه با شبکه بزرگتر از خود نشان دهد.ایده اصلی S2SD اینست این است که برای مسئله DML با استفاده از knowledge distillation پیشنهادی خود، شبکه­ای طراحی کند که در این حالی که به قدر کافی کوچک است، رفتاری مشابه شبکه­های بزرگتر را تقلید کند تا بتواند قدرت تعمیم بیشتری از خود نشان دهد. حال به جزئیات این ایده می پردازیم.معرفی metric و loss:فضای ویژگی را تصور کنید که توسط شبکه­های بزرگ استخراج می­شوند، شبکه­هایی نظیر resnet و یا inception. این فضای ویژگی Φ نامیده شده و این فضای ویژگی متناسب با مسئله classification به دست آمده است. هدف اینست که تابع fی را پیدا کنیم که این ویژگی­ها را برای تطبیق دو چهره بهینه کند. این تابع همان شبکه عصبی­ای است که نیاز داریم آموزش دهیم. خروجی این شبکه (تابع) را  Ψ نامیده شده است. متریک به صورت زیر را تعریف شده است. یعنی نزدیکی دو چهره معادل است با فاصله­ای اقلدیسی دو بردار ویژگی به دست آمده از شبکه f. حال loss شبکه را نیز از جنس triplet تعریف شده است. triplet loss تلاش می­کند بین متریک دو تصویر یکسان تفاوتی با متریک دو تصویر غیر کسان ایجاد کند بدون اینکه اندازه­ای دلخواهی برای این متریک قائل باشد. یعنی هدف اصلی آن تفاوتگذاریست.در معادله بالا i و j به معنای تصویر مختلف از یک فرد، i و k نیز به معنای دو تصویر مختلف از دو فرد هستند. مقدار m نیز عددی مثبت است یک آستانه­ی حداقلی برای این تفاوت ایجاد کند.روش knowledge distillation:گفته شد که برای knowledge distillation باید از شبکه های بزرگتر برای آموزش شبکه کوچکتر استفاده کرد. شبکه بزرگتر با تابع g را در نظر بگیرید که همزمان با f بر روی مجموعه Φ عمل می کند. و خروجی آن Ψg  نامیده شده و مشابه با f آموزش می بیند. در این حالت شبکه fهم تلاش می­کند که Ltriplet را کمینه سازد و هم سعی می کند رفتار شبکه g را نیز تقلید کند. تقلید گفته شده با مشابه­سازی cosine similarity matrix (CSM) انجام می­شود.ابتدا را بردارها Ψ نرمال می کنیم. CSM برای ست Ψ را Dمی­نامیم (Dij=ψiTψj). در این صورت هر درایه اندازه کسینوس زاویه بین هر دو بردار را نمایش می دهد. در طول آموزش تلاش می‌شود که f CSM مشابهی با g برای هر batch از داده ها را به وجود ‌آورد. اما معیار شباهت بین دو CSM چیست؟ آیا باید اندازه درایه های آن مشابه اندازه درایه دومی شود. مثال فرضی زیر را در نظر بگیرید اولین سطر مرجع بوده و می­خواهیم دومی و سومی را از نظر رفتاری با آن مقایسه کنیم.در سطح اول (D1) می­بینیم که بین داده اول بیشترین شباهت با داده چهارم وجود دارد. برای مجموعه داده دوم (D2) بیشترین شباهت داده اول با داده های سوم و پنجم بوده همچنین در سطر سوم (D3) نیز شباهت داده اول و چهارم بیشتر است. پس می­بینیم اگرچه اندازه­ی درایه های سطر دوم با سطر اول مشابه­تر است، اما از لحاظ رفتاری سطر سوم و اول سنخیت بیشتری با یکدیگر دارند. برای کمی کردن این تشابه می­توان از معیار پراکندگی Kullback-Leibler  استفاده کرد در واقع KL میزان شباهت دو توزیع را نشان می دهد و با رابطه­ی زیر به دست می ­آید.در اینجا نیز از همین منطق برای ایجاد خطا استفاده شد یعنی هرچه ماتریس CSM تابع f، از نظر پراکندگی KL، تفاوت بیشتری با g داشته باشد، خطای بیشتری برای آن در نظر گرفته می شود. مدل ریاضی آن به شرح زیر است.در اینجا σ تابع softmax بوده و T متغیر میزان temperature است (یعنی اگر به سمت بی نهایت برود خروجی softmax برای همه یکسان می شود). دقت شود خطای distillationتنها برای آموزش f استفاده خواهد شد و مفروض این است که رفتار g نیازی به تقلید ندارد. علامت † نشان دهنده همین است که g با این خطا آموزش نخواهد یافت. با تعریف این خطا، خطای کلی برای شبکه را به صورت زیر در نظر گرفته می­شود.در اینجا L_DML همان Ltriplet است. نمودار بلوک این ساختار در زیر آمده است.شکل 2. پیاده ­سازی knowledge distillition از شبکه g به f با استفاده از CSMباز هم Knowledge distillation!در مرحله قبل این احتمال داده شد که اگر اطلاعات از یک شبکه بزرگتر به شبکه کوچکتر انتقال یابد قدرت تعمیم شبکه کوچک بالا می رود. محتمل است که شبکه های دیگری نیز وجود داشته باشند که برای مجموعه ای از داده ها قدرت تعمیم بهتری را فراهم آورد. و به این دلیل شاید بهتر باشد به جای استفاده تنها از gاز مجموعه ای از شبکه ها با ابعاد مختلف استفاده شود و هر کدام از آنها اطلاعات خود را به f بفرستند. به این صورت که مجموعه ای از شبکه ها از g1 تا gm که ابعاد  g_(i+1)&gt;g_i  است همزمان بر روی داده­ ها عمل می کنند و اطلاعات خود را به f بفرستند. تابع هزینه در این حالت به شکل زیر خواهد شد.مسئله بعدی این است که هنگامی که ابعاد در میانه شبکه کاهش پیدا میکند شبکه دچار dimensionality bottleneck می­شود. در اینجا نیز از φ به f یک bottleneck ایجاد می شود که ممکن است باعث شود قدرت تعمیم f کاهش یابد. همچنین دیده شده φ به دلیل ابعاد بالا می‌تواند برای مسئله DML مورد استفاده قرار گیرد به همین دلیل knowledge distillation از φ به fنیز انجام شده تا اگر اطلاعاتی از دست رفت بازیابی شود. در نتیجه loss نهایی پیشنهادی S2SD به فرم زیر خواهد بود.نمودار بلوکی کل شبکه به صورت زیر شده است.شکل 3. نمودار بلوکی S2SDنتایج:با این تغییرات نویسندگان مقاله S2SD ادعا کرده­اند که توانستند ۷ درصد بهبود در معیار Recal@1 بگیرند. در فرمول­ها loss متغیر γ که واضحا میزان تاثیر knowledge distillationرا در کل فرایند یادگیری کنترل می­کرد. شکل زیر نشان دهنده ­ی تغییرات معیار Recall@1 بر حسب این متغیر برای سه دیتاست مختلف از داده هست.شکل 4.  تغییرات Recall@1 برحسب میزان تاثیر knowledge distillation (با متغیر γ)واضحا دیده­ می­شود که معیار با knowledge distillationبهبود یافته اما در عین حال مقدار بهینه نیز برای آن وجود دارد.همچنین اثر توسعه lossهایی که در مراحل مختلف بیان شد بررسی شده و گزارش شده که آخرین lossپیشنهادی در کل بهترین عملکرد را از خود نشان داده است. همچنین اثر افزایش بعد بر Recall@1 نشان داده شده است.شکل 5. تاثیر ابعاد و lossهای مختلف بر recall@1همچینین در مقاله بیان شده بهتر است که شبکه مورد استفاده برای f و giها یک MLP دو لایه باشد. شکل زیر اثر شبکه­هایی مختلف را در معیار سنجش نشان می­دهد.شکل 6. تاثیر شبکه­های مختلف بر Recall@1مرجع:[1] Roth, Karsten, et al. &quot;Simultaneous Similarity-based Self-Distillation for Deep Metric Learning.&quot; International Conference on Machine Learning. PMLR, 2021.</description>
                <category>mojtaba rayati</category>
                <author>mojtaba rayati</author>
                <pubDate>Mon, 06 Jun 2022 15:26:13 +0430</pubDate>
            </item>
                    <item>
                <title>شبکه Inception از V1 تا V4</title>
                <link>https://virgool.io/@rayatimojtaba/%D8%B4%D8%A8%DA%A9%D9%87-inception-%D8%A7%D8%B2-v1-%D8%AA%D8%A7-v4-xkjjkevp3byg</link>
                <description>ماژول Inception چیست؟در شبکه های CNN فیلتر های کانولوشن برای استخراج ویژگی های تصویر استفاده می شوند. اندازه فیلترها یکی از عوامل تعیین کننده در ویژگی‌های استخراج شده از تصویر است. پیش از معرفی ماژول های Inception طراحان شبکه باید با توجه به تصویر اندازه فیلترها را تعیین می‌کردند برای درک این اهمیت مسئله اندازه فیلترها به مثال ساده زیر توجه کنید.بر روی پایه های برج آزادی خطوط قرار دارد که در تصاویر نشان داده شد فرض کنید یکی از ویژگی‌های لازم برای تشخیص این برج از برج های دیگر این خطوط باشند تصویر با دو کیفیت مختلف تصویر برداری شده است. در تصویر اول دیده میشود خطوط بر روی پنجره 5x5 از پیکسل ها ظاهر می شود در حالی که در تصویر دوم یک پنجره 3x3 نیاز است.شکل 1.	استخراج ویژگی خطوط روی پایه با دو کیفیت مختلف. برای شکل اول به فیلترهایی با اندازه 5x5 نیاز است و برای شکل دوم فیلترهای 3x3ایده ماژول Inception استفاده از فیلترهای با ابعاد مختلف به طور همزمان است. به این صورت که چند فلیتر با ابعاد مختلف (فیلترهای کانولوشنی و pooling) روی ورودی اعمال می‌شوند. سپس خروجی آنها کنار یکدیگر قرار می‌گیرد (concat می شوند). در این حالت feature mapها مشتمل بر ویژگی های مختلف خواهند بود. هر ماژول شامل چند عملیات کانولوشنی و pooling موازی است. شکل زیر به صورت بلوکی یک ماژول Inception دلخواه را نشان می دهد.شکل 2.	نمودار بلوکی یک ماژول Inception دلخواهمشکل این شبکه ها چه بود؟به تصویر زیر که در واقع شبکه­ای است که توسط طراحان ماژول پیشنهاد شده توجه کنید.شکل 3.	شبکه Inception V1در نگاه اول چه میبینید؟ تعداد زیادی عملیات موازی، که یعنی هزینه محاسباتی زیاد!. طراحان ماژول پس از این ضمن تلاش برای افزایش دقت، به اصلاحاتی برای کاهش هزینه محاسباتی نیز پرداختند.تغییرات در Inception V2:سه نوع آوری در این ورژن رخ داد:تفکیک در فیلترها (مهمترین)اصلاح شاخه های Auxiliaryکاهش ابعاد grid به صورت بهینهتفکیک در فیلترها (Filter factorization)به شکل 4 الف که یک ماژول Inception از نوع هست V1 نگاه کنید.شکل 4.	تغییر اندازه ی فیلترها. شکل الف برای V1 و شکل ب  برای V2 هستاز نگاه محاسباتی فیلتر 5x5 به شدت از دیگر فیلترها چالش برانگیزتر است. این فیلتر برای محاسبه هر پیکسل 25 ضرب و جمع انجام می‌دهد اما فیلتر 3x3 تنها 9 ضرب و جمع انجام می دهد. فیلترهای بزرگ در مسائل کلاسیک بینایی ماشین نیز چالش برانگیزند. یکی از راه‌حل‌های مرسوم برای کاهش حجم محاسباتی، تفکیک فیلترهاست یعنی فیلتر را به صورت کانولوشن دو یا چند فیلتر تفکیک شده از هم بنویسیم. شکل زیر فرم تفکیک شده فیلتر معروف Sobel را نشان می­دهد که می‌توان آن را با کانولوشن دو فیلتر دیگر ساخت.برای هر محاسبه هر پیکسل با این فیلتر به جای 9 ضرب و جمع 3+3=6 ضرب و جمع انجام می شود. کاملا مشخص است تفکیک برای فیلترهایی با اندازه های بالاتر صرفه‌جویی محاسباتی پررنگ‌تری از خود نشان می‌دهد.نوع دیگری از تفکیک این است که یک فیلتر مربعی بزرگتر به چند فیلتر مربعی کوچکتر افراز شود برای مثال اگر کانولوشن را از نوع full در نظر بگیریم بسیاری از فیلترهای 5x5 قابل تفکیک به دو فیلتر 3x3 هستند.طراحان شبکه Inception در V2 از این دو شیوه در تفکیک استفاده کردند تا هزینه محاسباتی را کاهش دهد. شکل 4 (ب) نمایی از اجرای تفکیک در ماژول را نشان می‌دهد.سوال: آیا باید همه فیلترها را همواره کوچک کرد؟از نگاه حجم محاسباتی پاسخ به سوال فوق مثبت به نظر می‌رسد. اما نکته اینجاست که هر فیلتر بزرگی با فیلترهای کوچکتر از خود به شیوه ای که گفته شد قابل تفکیک نیست. برای مثال یک فیلتر 3x3 دارای ۹ درجه آزادی در حالیکه دو فیلتر 3x1 دارای 6 درجه آزادی هستند. (دلیل اینکه فیلتر Sobel با دو فیلتر کوچکتر قابل تفکیک بود این است که به دلیل ماهیت متقارن، درجه آزادی آن کمتر از ۶ است).پس از تفکیک حداکثری امکان پذیر نیست طراحان با آزمایش و خطا به این نتیجه رسیدند که در لایه های ابتدایی از تفکیک کمتر استفاده شود برای مثال فقط کرنل های مربعی 5تایی به 3تایی افراز شود. در لایه­های میانی و پایانی تفکیک­های بیشتری امکان پذیر است. همچنین برای تفکیک کرنل های مربعی بزرگتر (بین ۱۲ تا ۲۰) از کرنل های 7x1 استفاده شود.اصلاح شاخه های Auxiliary:در ورژن 1 شاخه هایی در میانه شبکه با نام Auxiliary classifier قرار داده شد (شکل 3) با این هدف که خطا به لایه‌های میانی مستقیماً تزریق شود و با این روش سرعت همگرایی افزایش یابد در ورژن ۲ طراحان به این نتیجه رسیدند سرعت همگرایی در حضور این شاخه تغییر محسوسی ندارد.کاهش اندازه  grid:‌در شبکه­هاای Inception هر چه به لایه‌های جلوتر می‌رویم Feature mapها در اندازه­ی grid کاهش و در عمق افزایش پیدا می‌کنند. در V1 افزایش عمق توسط ماژولهای Inception و کاهش اندازه با عملیات pooling انجام می شد (شکل 5 الف). در این ورژن با تغییر بلوکهای کانولوشنی و پولینگ معمولی در ماژول به strided convolution و strided pooling علاوه بر افزایش عمق grid نیز کاهش ابعاد داده می‌شود. شکل 5 ب ماژولی که همزمان کاهش ابعاد نیز می‌دهد را نشان می دهد.شکل 5. کاهش اندازه gridها (الف) در V1 (ب) در V2تغییرات در Inception V3:تغییرات زیر در ورژن سوم شبکه­های Inception داده شد.استفاده از RMSProbفاکتوریزه کردن کرنل های 7x7استفاده از BN auxiliaryاستفاده از تکنیک Label smoothingاستفاده RMSProb: یک الگوریتم بهینه سازی است که برای شبکه های عصبی طراحی شده این الگوریتم نرخ یادگیری را به صورت تطبیقی تغییر می دهد و موفقیت‌های خوبی در بسیاری از شبکه ها نشان داده در Inceptionنیز بهبود دقت نشان داد.کرنل­های 7x7: در این ورژن در ماژول­ها به جای استفاده از کرنل های 7x7 از کرنل­های 3x3 به صورت سری استفاده شد که منطق آن در V2 توضیح داده شد.شاخه BN auxiliary: اگرچه در تحقیقات مربوط به V2 نشان داده شد که شاخه auxiliary بر سرعت همگرایی تاثیر زیادی ندارد. اما دیده شد که استفاده از این شاخه زمانی که Batch normalized باشد، می تواند به عنوان Regularizerعمل کند.استفاده از Label smoothing: اگر خروجی‌های نرمال نشده را z بنامیم و خروجی مورد نظر را x، آنگاه اینکه هر داده چقدر توسط شبکه احتمال داده شده که مربوط به دسته kام باشد از رابطه p(k|x)=exp(zk)/(1+Σexp(zk)) به دست می آید. حال خروجی ایده آل این است که وقتی داده مربوط به دسته yام است به آن احتمال 1 نسبت داده شده باشد و احتمال تعلق آن به دسته‌های دیگر 0 یعنی q(k|x)=δ[k-y] در حالت عادی شبکه را به گونه آموزش می دهیم که p مشابه q شود. اما این می تواند منجر به بروز مشکلاتی شود. دقت کنید که زمانی p مشابه q خواهد شد که برای داده دسته yام zy به سمت بی نهایت میل کند که با تعداد­ داده­های آموزش محدود امکان پذیر نیست. به عبارت دیگر چون هیچ گاه p با q نمی­تواند برابر شود، در حین آموزش همیشه مقداری خطا در شبکه محاسبه می شود و بر وزن ها تاثیر می گذارد این پدیده ممکن است باعث overfitting شود.طراحان پیشنهاد دادند که به جای استفاده از تابع دلتا برای q از تابعی محافظه ­کارانه­ تر به صورت:به این صورت احتمال تعلق به یک دسته کاملاً 1 نبوده و با رسیدن به zهای محدود می توان خطا را صفر کرد. در V3 از ε=0.1 استفاده شد.معرفی Inception V4 و Inception-Resnet:نسخه V4 محصول توسعه TensorFlow بوده است. این نسخه تغییری در ساختارهای ماژول ارائه نداده. در واقع قبل از TensorFlowطراحان برای پایداری شبکه و همچنین رعایت قیدهای حافظه محافظه کارانه شبکه را طراحی می کردند با کاهش محدودیت­های طراحی به وسیله TensorFlow طراحان شبکه های عمیق تر با ماژول­هایی با فیلترهای بیشتری را پیشنهاد دادند. شکل زیر ماژول برای اندازه 8x8 را برای ورژن های ۲ و ۴ نشان می دهد بدیهی است که چقدر تعداد فیلترها در نسخه ۴ زیاد شده است.شکل 6.	مقایسه تعداد و ابعاد فیلترها در دو ورژن مختلف از Inception networkهاInception-ResNet: Resnet با معرفی Residual blockها تاثیر زیادی بر دنیای شبکه عصبی گذاشت. به همین جهت طراحان Inception نیز سعی کردند از ویژگی مسیر Residual در ساختار خود بهره ببرند. به این صورت که مجموعه فیلترها inceptionی در مسیر Residual قرار خواهند گرفت.شکل 7.	بلوکهای شبکه Inception-Resnet. الف) یک بلوک از شبکه نهایی ب) استفاده از Activation scalingبا به وجود آوردن این نوع ماژول مشکلی که در خود شبکه ResNet نیز به آن اشاره شده بود پدید آمد. اگر تعداد فیلترها از ۱۰۰۰ بیشتر می بود خروجی لایه ها بعد از چند هزار تکرار صفر می­شد. راه حل پیشنهادی استفاده از Activation scaling در مسیر Residual بوده در واقع ضریبی از بلوک Inception به مسیر مستقیم اضافه شود.شکل 7 ب نحوه استفاده از Activation Scaling را نشان می­دهد.عمق و فیلترهای ماژول­ها در Inception-ResNet به گونه ای انتخاب شد که از نظر حجم محاسباتی مشابه V4 باشد. هر دو شبکه دقتی مشابه یکدیگر داشتند اما سرعت همگرایی Inception-ResNet به وضوح بالاتر است. شکل زیر مقایسه دقت و سرعت همگرایی دو شبکه بر روی داده­های ILSVRC-2012 را نشان می دهد. (دقت شود که Inception-ResNet v1 شبکه­ایست که حجم محاسباتی آن مشابه V3 می باشد و Inception-ResNet v2 از لحاظ عمق و فیلترهای ماژول­ها معادل V4هست).شکل 8.	مقایسه InCeption-Resnetها با Inceptionها خالص و دقت آن¬هاجمع بندی:برای جمع بندی خوب است که نکاتی که از این چند ورژن یادگرفته­ایم و می­توان در دیگر ساختارها نیز از آن استفاده کرد را مرور کنیم.به جای استفاده از فیلترهای بزرگ از فیلترهای سری کوچکتر می­توان استفاده کرد (Filter factorization)شاخه­های Auxiliary همراه با BN اثر Regulizing بر شبکه­ خواهند داشت. روش Label Smoothing تکنیکیست که می­تواند در جلوگیری از Overfitting در شبکه­ها موثر باشداستفاده از بلوک­های Residual به همراه یک scaling در آن می­تواند یا در دقت و یا سرعت همگرایی موثر واقع شود.مراجع:[1] Szegedy, Christian, et al. &quot;Rethinking the inception architecture for computer vision.&quot; Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.[2] Szegedy, Christian, et al. &quot;Inception-v4, inception-resnet and the impact of residual connections on learning.&quot; Thirty-first AAAI conference on artificial intelligence. 2017.</description>
                <category>mojtaba rayati</category>
                <author>mojtaba rayati</author>
                <pubDate>Mon, 06 Jun 2022 01:13:39 +0430</pubDate>
            </item>
            </channel>
</rss>