در اين مطالعه ميخواهيم به بررسي ايده و اهميت مقالهEfficientNet بپردازيم.
بسياري از معماري هاي طراحي شده در راستاي استفاده از توان محاسباتي موجود به صورت بهينه مي باشند مانند MobileNet. حال ميخواهيم بدانيم اگر ميزان توان محاسباتي كاهش يا افزايش پيدا كند يا اگر بخواهيم يك شبكه زودتر آموزش داده شود، به چه طريق ميتوان شبكه مورد نظر را scale كنيم.
در معماري هاي طراحي شده در شبكه هاي كانولوشني، سه روش براي افزايش دقت استفاده ميشود.اين سه روش شامل: افزايش عمق شبكه، ارتفاع شبكه و همچنين افزايش رزولوشن ورودي ميباشد. كه افزايش هر كدامم از اين ويژگيها ميتواند باعث بهبود عملكرد شبكه شود.
در اين مقاله به بررسي رابطه اين سه ويژگي ميپردازد و بديهي ميباشد كه اين سه ويژگي با يكديگر ارتباط مستقيمي دارند، بدين صورت كه با افزايش رزولوشن، ويژگي بيشتري براي بررسي وجود دارد بنابراين شبكه ميتواند عمق بيشتري داشته باشد.
در واقع مي توان به effecientNet به عنوان يك نوع جستجو براي كارآمد ترين شبكه ي عصبي با توجه به ميزان توان محاسباتي نگاه كرد.
در ادامه به بررسي ايدهي دو ورژن اين مقاله ميپردازيم.
در اين قسمت به بررسي ايده مقالهي Efficient Net ميپردازيم. در اين مقاله ايده اي در رابطه با طراحي شبكه جديد مطرح نشده است. بلكه با توجه به اينكه دستگاه هاي مختلف از توان پردازشي متفاوتي بهره مند هستند ميخواهيم شيوه اي داشته باشيم كه با توجه به دستگاه در دسترس و توانايي پردازش موجود چگونه يك شبكه را Scale كنيم. همچنين اگر از نظر زماني، ميزان زمان لازم براي آموزش شبكه را در نظر بگيريم با scale down شبكه زود تر و با scale up شبكه به مدت طولاني تري نياز به آموزش دارد. به طور مثال اگر بخواهيم شبكه ي ما سريعتر آموزش ببيند و كمي كاهش دقت در نتايج شبكه مسئله ي خيلي مهمي نباشد ميتوان از اين روش استفاده نمود.
بنابراين Efficient-net يك راهي براي به دست آوردن بهينه ترين ميزان براي scale up كردن با توجه به شرايط موجود مي باشد.
همان طور كه در شكل اول مي توان مشاهده نمود، با در نظر گرفتن يك baseline به صورت كلي سه روش براي scaling شبكه براي به دست آوردن دقت بهينه وجود دارد.
سه روش براي scale up كردن يك شبكه ي كانوولوشني به صورت زير ميباشد:
روش اول افزاش عمق: اين روش بيشترين استفاده را در معماري هاي موجود تا كنون داشته است. منظور از افزايش عمق، افزايش تعداد لايه هاي يك شبكه مي باشد.
روش دوم افزايش عرض: از اين روش نسبت به عمق كمتر استفاده ميشود. منظور از عرض نيز مقدار كانال هاي يك شبكه مي باشد.
روش سوم افزايش resolution عكس ورودي: از اين روش نيز گاها در مقالات مشاهده شده كه استفاده شده است.
در مقالات از يكي از اين سه روش براي scale كردن مدل استفاده ميشد.
در اين مقاله يك روش مبتني بر افزايش عمق، عرض و resolution ورودي براي scale up كردن يك شبكه را بررسي مي نماييم كه در شكل 1 قسمت e قابل مشاهده است و آن زا compound scaling ناميده اند كه در ادامه به بررسي آن ميپردازيم.
در اكثر مقالات براي زماني كه مي خاهند مدل را بهبود ببخشند يك معماري جديد طراحي و معرفي مي كنند. اما در اين مقاله روشي معرفي شده است كه ابتدا يك مدل baseline در نظر گرفته و سعي مي كند با افزايش سه بعد طول، عرض و رزولوشن در مدل baseline بهبود ايجاد نمايد. مسئله كه وجود دارد براي پيدا كردن طول، عرض و رزولوشن مناسب فضايي كه بايد جستجو نماييم بسيار بزرگ ميشود بنابراين ما براي هر لايه در نظر ميگيريم كه به صورت يكنواخت با يك ضريب ثابت رشد كنند.
همان طور كه در قسمت هاي قبي نيز اشاره شد بر اساس سه بعد طول، عرض و رزولوشن مي توان يك شبكه را scale كرد.يك از مشكلاتي كه scale up كردن شبكه مي تواند ايجاد كند، مشكل vanishing gradient شود كه با skip connection قابل حل مي باشد.
همان طو كه در شكل دوم مشاهده ميشود، افزايش هر يك از اين ابعاد باعث افزايش دقت ميشود، اما با رسيدن به دقت 80% دقت اشباع شده و افزايشي صورت نميگيرد.
بنابراين سوالي كه پيش ميآيد اين است كه آيا ميتوانبا تركيب اين سه بعد براي scale-up كردن به افزايش دقت بيشتري دست پيدا نمود؟
مشاهدهاي كه صورت گرفته است و نتيجه ي آن را ميتوان در شكل سوم مشاهده نمود، نشان ميدهد كه ميتوان با تركيب اين ابعاد با يكديگر به ميزان دقت بيشتري دست پيدا نمود. به عبارت ديگر ميتوان بيان نمود كه اين ابعاد ازيكديگر مستقل ينستند. به طور مثال اگر عرض شبكه را افزايش دهيم، پيكسل هاي بيشتري داريم كه اطلاعات بيشتري به ما ميدهند بنابراين ميتوانيم رزولوشن بالاتري نيزز داشته باشيم. يا از زاويه اي ديگر اگر بخواهيم بررسي كنيم ميتوانيم بگوييم هر چقدر عمق بيشتر باشد، receptive field بزرگ تر مي شود بدين معنا كه ويژگي سطح بالاتري براي پردازش داريم.
پس در ادامه به معرفي متد معرفي شده در اين مقاله به نام compound scaling method مي پردازيم. در واقع اين مسدله به صورت يك مسدله بهينه سازي ميباشد، كه به صورت فرمول زير ميتوان مشاهده نمود بدين صورت كه آلفا، بتا و گاما به صورت ثابت در نظر گرفته ميشوند كه با استفاده از يك grid search مي توان آن هارا به دست آورد. و اگر بتوانيم هزينه محاسباتي را افزايش دهيم با يك ضريب ثابت، مقدار phi را تغيير مي دهيم.
Depth: d = alpha^phi
Width: w = betha^phi
Resolution: r = gama^phi
s.t. alpha.betha^2.gama^2 = 2
alpha>=1, betha>=1, gamma>=1
في نيز مي تواند تسط user بسته به مقدار منابع محاسباتي كه در اختيار، تغيير داده شود.ميزان تواان محاسباتي با FLOPS سنجيده مي شود كه در واقع نشان دهندهي ميزان تعداد عمليات محاسباتي شناور كه در يك ثانيه قابل انجام است، مي باشد. محدوديت alpha.betha^2.gama^2 = 2 به اين معني ميباشد كه ميزان FLOPS ها به ميزان 2^phi ميتوواند افزايش يابد.
معماري كه به عنوان baseline در نظر گرفته مي شود نيز از اهميت بسياري برخوردار است، زيرا efficient netمعماري baseline را تغييري نمي دهد و صرفا آن را scale ميكند. و علاوه بر آن به طور مثال اگر Alexnet به عنوان baseline استفاده شود، و بعد از تغيير scale با استفاده از عرض، طول و رزولوشن روي همان Alexnet مقايسه ميشود و ب شبكهي ديگري به طور مثال مانند REsnet مقايسه نمي شود. پس بنابراين داشتن يك baseline مناسب نيز از اهميت ويژه اي برخوردار است.
efficientNet داراي هفت ورژن مختلف مي باشد. كه ابتدا B0 را با استفاده از روش و معماري معرفي شده به دست مي آورده و آن را به عنوان baseline در نظر گرفته و سپس با دو گام ورژن هايي ديگر (B1-B7) را به دست مي آوريم.
گام ها به صورت زير مي باشند:
ابتدا phi را ثابت و برابر يك در نظر ميگيريم، فرض مي كنيم كه دو برابر توان محاسباتي در اختيار داريم و با استفاده از يك grid search ، alpha ، beta و gamma مناسب را پيدا ميكنيم. با در نظر گرفتن شرط ذكر شده alpha.betha^2.gama^2 = 2 .
در اين قسمت آلفا، بتا و گاما را ثابت در نظر گرفته و با در نظر گرفتن phi هاي مختلف baseline يعني B0 را scale up مي نماييم.
سوالي كه در اين جا مي توان مطرح نمود اين است كه آيا مي توان بدون در نظر گرفتن baseline و بر روي شبكه هاي بزرگ تر آلفا، بتا و گاماي مناسب را جستجو نمود؟
امكان جستجو جود دارد، ولي از لحاظ محاسباتي بسيار گران مي شود. و اين مسدله با به دست آوردن مقاذ=دير مناسب بر روي baseline و سپس scale كردن آن به مدل هاي بزرگ تر به دست آمده است.
همان طور كه در شكل 4 ميتوان مشاهده نمود، دقت efficientnet نسبت به بقيه مدل ها بيشتر مي باشد.
سوالي كه پيش ميآيد اين است كه آيا ممكن است نتايج به دست آمده صرفا به خاطر معماري نمي باشد، آيا EfficientNet مدل هارا بهبود بخشيده است؟
نويسندگان مقاله روش خود را بر روي چندين مدل پياده سازي كرده و نتايج مشابهي به دست آورده اند كه مي توان در شكل 5 مشاهده نمود. با توجه به اينكه پس از اعمال روش efficient net بر روي مدل هاي مختلف، دقت بهبود پيدا كرده است، بنابراين مي توان اين روش وافزايش دقت توسط آن را به تمامي مدل ها تعميم داد.
و همان طور كه در شكل 5 ميتان مشاهده نمود EfficientNet در تمام ورژنهاي خود از مدل هاي ديگر داراي دقت بيشتر، مقدار پارامتر كمتر و FLOPS كمتري مي باشد. EfficientNet B7 به دقت 84.3% كه state-of-the-art مي باشد رسيده است و8.4x كوچك تر و 6.1x سريع تر مي باشد.
براي اينكه به صورت تصويري نيز بتوانيم نتياج را مشاهده كنيم، مي توان در شكل 6 Activaton Map را مشاهده نمود. كه همان طور كه مشخص مي باشد با اضافه نمودن هر كدام از ويژگي هاي عمق، عرض و رزولوشن نتايج تا حدودي بهبود يافته اند، و زماني كه از روش معرفي شده در اين مقاله compound scaling براي scale كردن شبكه استفاده شده است مشاهده مي شود كه نسبت به سه روش قبلي بهبود چشم گيري ايجاد شده است.
در اين مقاله از يك سري ايده براي طراحي شبكه آن استفاده شده است كه در ادامه از اين شيوه هارا نام مي بريم:
در كارهاي اخير با توجه به اينكه تعداد پارامترهاي مدل بيشتر و ميزان FLOPS در آن ها بيشتر است نسبت به EfficientNet با اين حال سرعت آموزش بهتري دارند. بنابراين در اين مقاله، به بررسي علل كند بودن و ايرادات EfficientNet1 پرداختن و چند ايده براي تسريع و بهبود پارامتر شيوه ي ارائه شده در مقاله مطرح شده است، مانند Fused-MBConv ، Progressive Learning ، بهينه كردن سرعت يادگيري و راندمان پارامتر ها كه در ادامه به بررسي آن ها ميپردازيم.
با بررسي EfficientNet1 به اين مسئله پي بردند كه:
براي حل اين مشكلات راه كار هايي در اين مقاله ارائه شده است بدين صورت كه به صورت همزمان دقت، سرعت و سايز پارامتر هارا بهينه نمايد. در اين مقاله سعي شده است سرعت يادگيري و سايز پارامتر به صورت صريح در objective بهينه شوند.
هر چقدر عكس هاي ورودي سايز بزرگ تري داشته باشند، batch size قابل استفاده كوچك تر مي باشد. بنابرابن سرعت آموزش نيز كاهش مي يابد. در ادامه به بررسي شيوه اي براي حل اين مشكل ميپردازيم كه به صورت تصاعدي، سايز عكس ورودي را افزايش و ار روش هايي مانند data augmentation و dropout نيز استفاده ميشود.
براي بهبود سرعت مي توان از Fused-MBConv به جاي MBConv استفاده نمود. همان طور كه در شكل 7 مي توان مشاهده كرد، به جاي depthwise conv 3x3 و expantion conv 1x1x يك conv 3x3 جايگزين شده است.
متد Fused-mbconvمي تواند باعث افزايش سرعت شود ولي از طرفي باعث افزايش Flops و پارامتر ها ميشود كه باعث كاهش سرعت ميشود. پس بنابراين براي به دست آوردن جواب بهينه به دنبال بهترين تركيب دو ماژول MBConv و Fused-MBConvd هستيم.
اگر همه ي لايه هاي شبكه را Scale up كنيم بهينه ي كامل نمي باشد بنابراين به صورت non-uniform شبكه را scale ميكنيم كه بهينه تر است. بدين صورت كه به قسمت هاي انتهايي لايههاي بيشتري اضافه ميشود.
هدف اين مقاله به صورت همزمان بهينه كردن دقت و سايز پارامتر ها ميباشد.و از EfficientNetبه عنوان backbone استفاده شده است. از متد NAS براي جستجو استفاده نمده اين ك سايز فضاي جستجو را با حذف نمودن قسمت هايي كه ضروري نبودند كاهش دادهايم. چون فضاي حالت كوچك است ميتوان از reinforcement learning يا جستجوي رندم استفاده نمود. پاداش جستجو به صورت زير مي باشد:
A . S^w . p^v
P = parameter size
S = time step
W = -0.07
V = -0.05
به دليل اينكه w و v منفي مي باشند براي به دست آوردن پاداش بهينه، ميبايست مقادير S و P به سمت صفر ميل كنند. در واقع هر جقدر كوچك تر باشند بهتر است. به عنوان يك هيوريستيك نيز براي قسمت هاي انتهايي لايههاي بيشتري اضافه مي كنيم.
فرضيه موجود در اين مقاله به اين صورت بود كه، براي جلوگيري از overfittingعكس هاي كوچك تر regularization كم تر و عكس هايي كه بزرگ تر هستند نياز به regularization بيشتري دارند.
همان طور كه در شكل 8 مي توان مشاهده نمود، با افزايش سايز مدل، هر چقدر ميزان regularization بيشتر باشد، دق به دست آمده نيز بيشتر است.
بنابراين شيوه ي استفاده شده بدين صورت مي باشد كه به ازاي تعداد گام هايي كه داريم، سايز عكس و شدت regularization درهر گام افزايش پيدا ميكند.
رگولاريزيشن در سطح شبكه هست كه به صورت رندم يك كانال را حذف مي كند
آگمنتيشن رندم بر روي يك عكس، با ميزان مشخص
در اين نوع از augmentation، دو جت عكس داريم با استفاده از يك ضريب به تركيب اين دوعكس و تركيب ليبل آنها با همان ضريب ميپردازيم.زمان پيش بيني مدل ميبايست درصد تركيب دو عكس را پيش بيني نمايد.
دقت EfficentNet2 تقريبا برابر با EfficientNet1B7 ميباشد با اين تفاوت كه با استفاده از منبع محاسباتي يكسان 11x سريع تر است.