پردازش تقریبی

**پردازش تقریبی** یک الگوی رو به رشد برای طراحی کم مصرف یا عملکرد بالا است. این شامل تعداد زیادی از روش‌های محاسباتی است که نتیجه احتمالی (که کاملا درست نیست) را به جای یک نتیجه دقیق تضمینی بازمی‌گرداند و می‌تواند برای برنامه‌هایی استفاده شود که نتیجه تقریبی برای هدف آن کافی است.

برای نمونه می‌توان به موتورهای جستجو اشاره کرد که هیچ پاسخ قطعی و دقیقی نمی‌توان برای یک جستجو خاص در نظر گرفت و بنابراین، بسیاری از پاسخ‌ها ممکن است قابل قبول باشند. به‌طور مشابه، افت گاه به گاه برخی از فریم‌ها در یک برنامه ویدیویی می‌توانند به دلیل محدودیت‌های ادراکی انسان‌ها تشخیص داده نشوند.

محاسبه تقریبی بر اساس این مشاهدات استوار است که در بسیاری از زمینه‌ها، علاوه بر اینکه انجام محاسبات دقیق به منابع زیادی نیاز دارد، تقریب محدود می‌تواند دستاوردهای غیرمنتظره ای در عملکرد و انرژی ایجاد کند، در حالی که هنوز به نتایج قابل قبولی دست می‌یابد. به عنوان مثال، در الگوریتم خوشه بندی ''k'' -means، اگر تنها ۵٪ از دقت طبقه‌بندی را کاهش دهیم، می‌توانیم ۵۰ برابر صرفه جویی انرژی در مقایسه با طبقه‌بندی کاملاً دقیق ایجاد کنیم.

نکتهٔ اصلی در محاسبات تقریبی این است که فقط در داده‌های غیر اصلی و غیر مهم می‌توان از تقریب استفاده کرد چراکه تقریب داده‌های مهم (به عنوان مثال عملیات کنترل) می‌تواند عواقب فاجعه آمیزی ایجاد کند برای مثال می‌تواند باعث خرابی برنامه یا خروجی اشتباه شود.

## استراتژی‌ها
از چندین روش می‌توان برای انجام محاسبات تقریبی استفاده کرد.

; **مدارهای تقریبی**
: مدارهای حسابی تقریبی: جمع، ضرب و دیگر مدارهای منطقی می‌توانند مخارج کلی سخت‌افزار را کاهش دهند. به عنوان مثال، یک جمع‌کننده چند بیتی تقریبی می‌تواند زنجیره حمل را نادیده بگیرد و بنابراین، به همه اضافات فرعی آن اجازه می‌دهد تا عملیات جمع را به صورت موازی انجام دهند.
; **ذخیره‌سازی تقریبی**
: به جای ذخیره دقیق داده‌ها، می‌توان آنها را تقریباً ذخیره کرد، به عنوان مثال، (با) کوتاه کردن بیت‌های پایین در داده‌های نقطه شناور.
: روش دیگر، پذیرش حافظه کمتر موثق است. برای این منظور، در DRAM و eDRAM، می‌توان تخصیص نرخ تازه سازی را کاهش یا کنترل کرد. در SRAM، می‌توان ولتاژ منبع را کاهش داد یا کنترل کرد. می‌توان از ذخیره‌سازی تقریبی برای کاهش مصرف بالای انرژی نوشتاری MRAM استفاده کرد. به‌طور کلی، هر مکانیزم تشخیص و تصحیح خطا باید غیرفعال شود.
; **تقریب در سطح نرم‌افزار**
: چندین روش برای تقریب در سطح نرم‌افزار وجود دارد. به خاطر سپاری می‌تواند اعمال شود. برخی از تکرارهای حلقه‌ها را می‌توان نادیده گرفت (این روش سوراخ حلقه نامیده می‌شود) تا سریعتر به نتیجه برسیم. برخی از وظایف نیز می‌توانند نادیده گرفته شوند، به عنوان مثال هنگامی که وضعیت زمان اجرا نشان می‌دهد که این کارها مفید نخواهد بود (نادیده گرفتن کار). الگوریتم‌های مونت کارلو و الگوریتم‌های تصادفی صحت را با ضمانت زمان اجرا مبادله می‌کنند. محاسبه را می‌توان با توجه به پارادایم‌هایی که به راحتی امکان تسریع در سخت‌افزارهای تخصصی را می‌دهند (به عنوان مثال واحد پردازش عصبی)، دوباره فرموله کرد.
; سیستم تقریبی
: در یک سیستم تقریبی، تقریب های هم افزایی زیر‌سیستم‌های مختلف آن مانند پردازنده، حافظه، سنسور و ماژول‌های ارتباطی برای دستیابی به یک منحنی مبادله QE در سطح سیستم در مقایسه با تقریب‌های جداگانه برای هر یک از زیر سیستم‌ها، بسیار بهتر هستند.

## حوزه‌های کاربرد
از محاسبات تقریبی در حوزه‌هایی که برنامه‌ها در برابر خطاها تحمل پذیر هستند استفاده می‌شود، مانند پردازش چند رسانه ای ، یادگیری ماشین، پردازش سیگنال، محاسبات علمی. به همین دلیل محاسبات تقریبی بیشتر توسط برنامه‌هایی انجام می‌شود که به ادراک (شناخت) انسان مربوط می‌شوند و ممکن است به خودی خود دارای خطا باشد. بسیاری از این برنامه‌ها بر اساس محاسبات آماری یا احتمالی هستند که (مانند تقریب‌های مختلف) می‌تواند با اهداف مطلوب بهتر مطابقت داشته باشد. یکی از کاربردهای قابل توجه در یادگیری ماشین این است که گوگل از این روش در واحدهای پردازش Tensor (TPU , ASIC سفارشی) استفاده می‌کند.

## پارادایم‌های مشتق شده
مسئله اصلی در محاسبات تقریبی، شناسایی قسمتی از برنامه است که می‌تواند تقریبی باشد. در مورد برنامه‌های کاربردی در مقیاس وسیع، بسیار رایج است افرادی را در زمینه تکنیک‌های محاسباتی تقریبی داشته باشند که دارای تخصص و تجربه کافی در حوزه اجرایی نیستند و نمی‌دانند آن تکنیک‌ها را در کدام بخش‌ها می‌توانند به کار بگیرند (و بالعکس). به منظور حل این مشکل (داشتن تکنینک مناسب و شناخت موقعیت مناسب برنامه برای اجرای محاسبات تقریبی)، الگوهای برنامه‌نویسی پیشنهاد شده‌است. همه آنها به‌طور واضح نقش اصلی را بین برنامه نویس برنامه و متخصص حوزه برنامه مشخص می‌کنند. این رویکردها اجازه می‌دهند متداول‌ترین بهینه‌سازی‌ها و تکنیک‌های محاسباتی تقریبی گسترش یابند.

## جستارهای وابسته
* شبکه‌های عصبی مصنوعی
* فراماسونری

## منابع

رده:بهینه‌سازی نرم‌افزار
رده:تقریب‌های ریاضی
رده:معماری رایانه