به گفته hackster
یوتیوبری به نام KenDesigns با بهکارگیری چند شگرد هوشمندانه به چالش کشیدن حدود و مرزهای ممکن، یک شبکه عصبی MNIST را بر روی مکینتاش ۵۱۲K که ۴۱ سال قدمت دارد، اجرا کرد. دستهبندی ارقام دستنوشته با استفاده از یک شبکه عصبی ساده که با دادههای آموزشی MNIST تمرین یافته، یکی از اولین پروژههایی است که افراد هنگام شروع یادگیری ماشین انجام میدهند. معمولاً، افراد با دنبال کردن آموزشهای گامبهگامی که نشان میدهد چگونه این کار را روی یک کامپیوتر دسکتاپ با استفاده از چارچوبهای معروفی مثل TensorFlow یا PyTorch انجام دهند، پیش میروند. الگوریتم نسبتاً سادهای دارد، بنابراین نیازمند سیستمهای فنی پیچیدهای نیست – بطور کلی هر ماشین مدرنی قادر به اجرای محاسبات است.
اما KenDesigns خواستار یافتن پاسخ به این سوال بود که چقدر میتوان این حدود را کاهش داد. آیا مکینتاش ۵۱۲K قدیمی ۴۱ ساله او قادر به اجرای این نوع شبکه عصبی بود؟ شاید حتی مکینتاش اصلی ۱۲۸K؟ با استانداردهای امروزی، این سختافزار بسیار محدود است، اما KenDesigns برای یافتن پاسخ، عزم خود را جزم کرد.
دو مشکل اصلی در مسیر اجرای هر شبکه عصبی روی سختافزار قدیمی وجود دارد. اول از همه، کل شبکه باید قبل از اجرای استنتاج، در حافظه اصلی بارگذاری شود و با تنها ۱۲۸K فضای موجود، این کار آسان نیست. دوم، این الگوریتمها تعداد زیادی عملیات نقطه شناور را اجرا میکنند و مکینتاش اصلی تنها از پردازنده قدیمی Motorola 68000 خود برای اجرای آنها استفاده میکند، بدون واحد پردازش ممیز شناور (FPU) برای کمک به بار.
در ابتدا، KenDesigns به فکر در پیش گرفتن رویکرد سادهنگری به مشکل بود. مسئله حافظه میتوانست با کاهش تعداد پارامترهای شبکه عصبی حل شود. و از نظر ریاضیات نقطه شناور، روشهای شناختهشدهای وجود دارد که میتوانند بهمنظور شبیهسازی عملکرد یک FPU بهکار برده شوند. هیچ شکی نیست که این رویکرد میتوانست کار کند، اما مدل کوچکتر بهشدت کارایی را محدود میکند و شبیهسازی FPU بهشدت کند است، بنابراین تجربهای وحشتناک به همراه دارد.
برای خلق تجربهای بسیار بهتر، KenDesigns از تکنیک پیچیدهتری بهنام کوانتیزاسیون استفاده کرد. بهزبان ساده، کوانتیزاسیون اعداد نقطه شناور را به اعداد صحیح ۸ بیتی تبدیل میکند. این اعداد صحیح، تقریباً همان اطلاعاتی را که نمونههای نقطه شناورشان ارائه میدهند، منتقل میکنند، اما تنها یک چهارم فضای حافظه را اشغال میکنند. و از همه مهمتر، میتوان به طور مستقیم بر روی آنها عملیات انجام داد بدون نیاز به تبدیل، که تقریباً نیاز به کار با مقادیر نقطه شناور را از بین میبرد.
با پیادهسازی الگوریتم اصلی، KenDesigns یک برنامه به نام MacNIST68000 را طراحی کرد که بهصورت برهنه روی سختافزار اجرا میشود تا از بار اضافی سیستمعامل جلوگیری کند (برای جزئیات بیشتر در مورد نحوه کار آن به پروژه اخیرش مراجعه کنید). با استفاده از MacNIST68000، کاربر میتواند با موس خود یک رقم را روی صفحه ترسیم کند، سپس شبکه عصبی را برای دستهبندی آن اجرا کند. به طور کلی، به نظر میرسد که کار میکند. اما اگر بدانید چه کاری انجام میدهید، میتوانید به راحتی آن را فریب دهید، به عنوان مثال با ترسیم یک رقم کوچک در گوشهای از صفحه.
اگر علاقمند به دیدن پروژههای بیشتری هستید که الگوریتمهای یادگیری ماشین را در پلتفرمهای سختافزاری قدیمی گنجاندهاند، ممکن است TensorFlow Lite برای کامودور ۶۴ یا رقیبی هوشمند در بازی Combat برای آتاری ۲۶۰۰ به شما علاقمند باشد.
وبسایت: http://www.arvidtek.com
www.arvidtek.com | گروه مهندسی آرویدتک | فعال حوزه الکترونیک و مخابرات | فروشگاه تخصصی قطعات الکترونیک
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.