1. مقدمه :
با گسترش حوزه IOT استفاده از برنامه های یادگیری ماشین در دستگاه های تعبیه شده را افزایش داده است. شبکههای عصبی کانولوشنال (CNN) به طور چشم گیری در انواع برنامههای یادگیری ماشین استفاده میشوند لذا توسعه شتابدهندههای سختافزاری بلادرنگ و کم مصرف بهویژه برای سیستم های با منابع محدود حیاتی است. اما پیچیدگی محاسباتی و ردپای حافظه این شبکه ها موانعی برای اجرای کارآمد بر روی دستگاه های تعبیه شده است.
کارهایی برای کاهش پیچیدگی محاسباتی و ردپای حافظه CNN ها انجام شده بطور مثال استفاده از تکنیکهای بهینهسازی شامل تجزیه تانسور tensor decomposition ، کوانتیزاسیون پارامتر parameter quantization ، کانولوشنهای پراکنده sparse convolutions و آموزش شبکههای عصبی باینری training binary neural networks که در این بین شبکه های باینری از مزایایی برخوردارند که اخیرا مورد توجه بسیاری از محققین قرار گرفته اند البته چالش هایی نیز به همراه دارد که در ادامه بررسی می کنیم.
مزایای شبکه های باینری :
(1) آنها ردپای حافظه را در مقایسه با مدلهای با پارامترهای نقطه ثابت کاهش میدهند چراکه وزن ها و/یا فعال سازها را بصورت باینری ذخیره می کنند.
(2) زمان اجرا و مصرف انرژی را به میزان قابل توجهی کاهش میدهد چراکه CNNهای دودویی ضربهای بامصرف انرژی بالا را با عملیات ساده XNOR جایگزین میکنند.
(3) معماری جریان داده CNN های باینری به طور قابل ملاحظه ای ساده تر از همتایان نقطه ثابت آنها است.
چالش های آموزش CNN های باینری :
(1) مرحله آموزش شبکههای عصبی باینری اغلب کند است.
(2) دقت طبقهبندی در این مدل ها معمولاً کمتر از مدل هایی با پارامترهای دقیق است.
برای رفع این چالش ها تلاش هایی انجام گرفته مثلا در مقاله [2] ثابت شده آموزش شبکه های وسیع تر دقت را بهبود می دهد اما این روش سادگی شبکه های باینری را ازبین می برد.
در[3] استفاده از عوامل مقیاسگذاری (scaling factors) که با میانگینگیری ویژگیها در طول استنتاج محاسبه میشوند، دقت را بهبود بخشیده اما سادگی شتابدهنده CNN باینری را با اضافه کردن محاسبات با دقت کامل اضافی ، به جریان محاسباتی لایههای CNN باینری قربانی میکند.
به طور مشابه، در [4] روندهای متعدد محاسبه میانگین مقدار مطلق فعالسازیهای ورودی را داریم که هزینه محاسباتی بیش از حد را در طول فاز استنتاج تحمیل میکند
شبکه های عصبی سه تایی از نظر دقت استنتاج از CNN های باینری پیشی گرفته اند اما از مزایای عملیات ساده XNOR محروم هستند.
برای پاسخ به چالش های مطرح شده این مقاله ReBNet را پیشنهاد میکند، یک چارچوب سرتاسر برای آموزش CNNهای باینری بصورت قابل تنظیم مجدد در نرمافزار و توسعه شتابدهندههای سختافزاری کارآمد برای اجرا در FPGA. در این مقاله قسمت شتاب دهنده توضیح داده نشده است برای اطلاع بیشتر میتوانید به مقاله اصلی مراجعه نمایید.
مزیت ReBNet نسبت به کارهای قبلی این است که تعداد سطوح باینریسازی را میتوان برای برنامههای مختلف بدون تغییرات سختافزاری قابل ملاحظه ای، تنظیم کرد. دقت ReBNet را میتوان با استفاده از 2 یا 3 سطح باینریسازی باقیمانده residual binarization با سربار سطح ناچیز، بهبود بخشید. خوشبختانه طراحی باینری سازی باقیمانده ReBNet با عملیات استاندارد XnorPopcount سازگار است.
2. مقدمه ای بر شبکه های باینری:
پیش از توضیح کامل فریم ورک ReBNet باید کمی در مورد عملیات CNN های باینری و پیاده سازی سخت افزاری آنها بدانیم.
عملیات CNN باینری شبکه های عصبی از لایه های کانولوشن متعدد، کاملاً متصل، فعال سازی، نرمال سازی دسته ای و maxpooling تشکیل شده اند که Binarization آنها را ساده تر می کند.
ا- Binary dot product: عملیات لایه های کانولوشنی و کاملا متصل بصورت ضرب نقطه ای بین بردار وزن و بردار ویژگی انجام می شود درواقع یک ضرب نقطهای، حاصلضرب عناصر بردار ویژگی X و بردار وزن W را جمع میکند. در شبکه های باینری عناصر X و W به ترتیب به مقادیر باینری γx+- و γw+- محدود می شوند. فرض کنید X=γx Sx و W=γw Sw که در آن { γx ; γw }مقادیر اسکالر هستند و {Sx ; Sw } بردارهای علامتی اند که عناصر آنها 1+ یا 1- هستند. اگر مقادیر علامت (1- به 0 و 1+ به 1) را رمزگذاری کنیم، بردارهای دودویی {bx ; bw} را به دست خواهیم آورد. حاصل ضرب نقطه ای این بردارها را می توان با استفاده از عملیات XnorPopcount طبق فرمول زیر بدست آورد. شکل1 این عملیات را نشان می دهد.
ا- Binary activation: تابع فعال ساز باینری یک ورودی y را با استفاده از یک بیت بر اساس علامت y رمزگذاری می کند. بنابراین، پیاده سازی سخت افزاری فقط به یک مقایسه کننده نیاز دارد.
ا- Binary batch-normalization: نتیجه حاصلضرب نقطه ای y = dot( X ; W ) را معمولا قبل از ارسال آن به تابع فعال ساز باینری که در بالا توضیح داده شد، نرمال سازی می کنیم. یک لایه نرمالسازی دستهای، هر ورودی y را به αy-β تبدیل میکند، که α و β پارامترهای لایه هستند. با ترکیب لایههای نرمالسازی دستهای و فعالسازباینری در یک لایه، فقط نیاز به مقایسه با مقدار آستانه β/α داریم.
ا- Binary max-pooling: عملیات max-pooling را می توان با استفاده از element wise OR انجام داد.
3. چهارچوب ReBNet
عملیات RESIDUAL BINARIZATION
در ReBNet یک کتابخانه نرم افزاری، معماری CNN را از کاربر دریافت می کند و با تعداد مشخصی از سطوح RESIDUAL BINARIZATION مدل را آموزش می دهد.
در باینری سازی چند سطحی خطاهای باقیمانده هرسطح بهطور متوالی باینری میشوند تا دقت عددی تقریب افزایش یابد. شکل 2 روش تقریب یک ورودی نقطه ثابت x به مقدار دودویی چندسطحی e را ارائه می دهد. برای باینری سازی در M سطح به یک مجموعه Mتایی از فاکتورهای مقیاس بندی(scaling factors) {γ1 ; γ2;...; γm} نیاز است که همین مجموعه برای همه ویژگی های مربوط به یک لایه CNN خاص استفاده و در نتیجه ورودی به M بیت کد می شود. فاکتورهای مقیاس بندی درطول مرحله آموزش بروز می شوند.
در سطح اول باینریزه کردن ورودی X را با γ1+ یا γ1- بر اساس علامت X تقریب و سپس خطای باقیمانده r2 = x - γ1 *sign(x) محاسبه می شود.
سطح دوم باینریزه کردن r2 را بر اساس علامت r2 با γ2+ یا γ2- تقریب میکند، سپس خطای باقیمانده r3 = r2 - γ2 *sign(r2) را محاسبه میکند. و این عملیات M بار تکرار می شود.
بطور کلی یک ورودی x میتواند به صورت زیر بدست آید.
الگوریتم۱ مراحل کد کردن M بیت را برای فعالساز نمایش می دهد.
آموزش شبکه عصبی باینری چند سطحی:
درآموزش شبکه عصبی باینری مرحله انتشار رو به جلو با استفاده از تقریب های باینری پارامترها و ویژگی ها انجام می شود. با این حال، در مرحله انتشار به عقب، پارامترهای با دقت کامل به روز می شوند و پس ازآموزش شبکه پارامترهای با دقت کامل نیز باینریزه شده و برای استنتاج بهینه استفاده می شوند.
محاسبه گرادیان تابع هزینه: با فرض آنکه تابع هزینه باشد و مقدار ویژگی بصورتی که بالا گفته شد تخمین زده شود داریم :
4. نتایج :
و API نرم افزار با استفاده از کتابخانه Keras پیاده سازی شده و چهار دیتاست : CIFAR-10، SVHN، MNIST و ILSVRC-2012 (Imagenet) با سه مدل با سایز های کوچک و متوسط ویزرگ مورد بررسی قرار گرفت. شبکه کوچک شامل لایه های کاملا متصل برای داده های MNIST پیاده سازی شده که آن را Arch-1 می نامیم. مجموعه داده های CIFAR-10 و SVHN بر روی یک شبکه عصبی کانولوشنال متوسط به نام Arch-2 ارزیابی می شوند. در نهایت، مجموعه داده Imagenet بر روی یک شبکه نسبتا بزرگ به نام Arch-3 ارزیابی می شود. جدول1 جزئیات معماری هر شبکه را نشان می دهد.
موازنه دقت و کارایی :
دقت یک CNN باینری به معماری شبکه و تعداد دوره های آموزشی بستگی دارد. همانطور که در منحنی های یادگیری (دقت در مقابل دوره) در شکل 5 مشاهده می کنید، افزایش M هم سرعت همگرایی و هم دقت نهایی قابل دستیابی را بهبود می بخشد. از طرف دیگر، M بالاتر به زمان محاسبات بیشتری در طول اجرا نیاز دارد. جدول 2 دقت و توان عملیاتی ReBNe را با روش باینری سازی مرسوم مقایسه می کند. حتی با 1 سطح باینری سازی، این روش از نظر دقت از طراحی FINN پیشی می گیرد، که به دلیل فاکتورهای مقیاس پذیر قابل آموزش ReBNet است.
5. نتیجه گیری :
در خلاصه ی این مقاله ابتدا شبکه های باینری ، عملیات اصلی این شبکه ها و مزایا و چالش های آن هارا و سپس عملیات باینری سازی باقیمانده معرفی شده در فریم ورک ReBNet و آموزش شبکه های باینری چندسطحی را توضیح دادیم. درقسمت نتایج نشان دادیم با افزایش سطح باینری سازی تا 3 سطح دقت شبکه افزایش قابل توجهی داشته و حتی درحالتی که یک سطح استفاده شده بع خاطر استفاده از فاکتورهای قابل آموزش در حین آموزش دقت بدست آمده از فریم ورک پیشرفته FINN پیشی می گیرد.
5. مراجع :
[1]: ReBNet: Residual Binarized Neural Network, The 26th IEEE International Symposium on Field-Programmable Custom Computing Machines , 2018, https://arxiv.org/abs/1711.01243
[2]: Finn: A framework for fast, scalable binarized neural network inference, in Proceedings of the 2017 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays
[3]: Xnor-net: Imagenet classification using binary convolutional neural networks, in European Conference on Computer Vision ,2016
[4]: How to train a compact binary neural network with high accuracy?, in AAAI, 2017