یادگیری عمیق

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

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

یک نمونه آموزشی (برای نمونه: تصویر یک گربه) می‌تواند به صورت‌های گوناگون بسان یک بردار ریاضی پر شده از مقدار به ازای هر پیکسل و در دید کلی‌تر به شکل یک مجموعه از زیرشکل‌های کوچک‌تر (نظیر اعضای صورت گربه) مدل‌سازی شود. برخی از این روش‌های مدل‌سازی سبب ساده شدن فرایند یادگیری ماشین (برای نمونه: تشخیص تصویر گربه) می‌شوند.
در یادگیری عمیق امید به جایگزینی استخراج این ویژگی‌های تصویر به دست بشر (مانند اعضای گربه) با روش‌های کامل‌خودکار بی‌نظارت و نیمه‌نظارتی وجود دارد.

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

در حقیقت عبارت یادگیری عمیق، بررسی روش‌های تازه برای شبکه عصبی مصنوعی است.

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

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

مفهوم 
یادگیری عمیق زیرشاخه‌ای از یادگیری ماشین است که از لایه‌های متعدد تبدیلات خطی به منظور پردازش سیگنال‌های حسی مانند صدا و تصویر استفاده می‌کند. ماشین در این روش هر مفهوم پیچیده را به مفاهیم ساده‌تری تقسیم می‌کند، و با ادامهٔ این روند به مفاهیم پایه‌ای می‌رسد که قادر به تصمیم‌گیری برای آن‌ها است و بدین ترتیب نیازی به نظارت کامل انسان برای مشخص کردن اطلاعات لازم ماشین در هر لحظه نیست. موضوعی که در یادگیری عمیق اهمیت زیادی دارد، نحوهٔ ارائهٔ اطلاعات است. ارائه دادن اطلاعات به ماشین باید به شیوه‌ای باشد که ماشین در کمترین زمان اطلاعات کلیدی را که می‌تواند با استناد به آن‌ها تصمیم بگیرد را دریافت کند. هنگام طراحی الگوریتم‌های یادگیری عمیق می‌بایست به عوامل دگرگونی (به انگلیسی: factors of variation) که اطلاعات مشاهده شده را توضیح می‌دهند توجه کنیم، این عوامل معمولاً عوامل قابل‌مشاهده‌ای نیستند بلکه عواملی هستند که بر روی دستهٔ قابل‌مشاهده تأثیرگذار بوده یا زادهٔ ساختارهای ذهنی انسان برای ساده‌تر کردن مسائل هستند. برای مثال در هنگام پردازش گفتار عوامل دگرگونی می‌توانند لهجهٔ گوینده، سن یا جنسیت او باشند. در هنگام پردازش تصویر یک ماشین، میزان درخشش خورشید یک عامل دگرگونی است. یکی از مشکلات هوش مصنوعی تأثیر زیاد عوامل دگرگونی بر روی اطلاعات دریافتی است. برای مثال بسیاری از پیکسل‌های دریافتی از یک ماشین قرمز در شب ممکن است سیاه دیده بشوند. برای حل این مشکلات بعضاً به درک بالای اطلاعات (در حدود انسان) نیازمندیم و در واقع گاهی یافتن نحوهٔ مناسب نمایش اطلاعات به اندازهٔ خود مسئله سخت و زمان‌بر است.

تاریخچه 
نخستین الگوریتم عملی یادگیرنده برای پرسپترون‌های چندلایهٔ نظارت‌شده، عمیق و پیش‌خور، در دههٔ ۱۹۶۰ توسط الکسی ایواخننکو - معروف به «پدر یادگیری عمیق» - و والنتن لاپا منتشر شد. در سال ۱۹۷۱، مقاله‌ای یک شبکهٔ عمیق با هشت لایه را توصیف کرد که عملیات یادگیری را با متد گروهی مدیریت داده (GMDH) انجام داده بود. سایر معماری‌های یادگیری عمیق و به ویژه آن‌هایی که برای بینایی رایانه ساخته شده بودند، در ۱۹۸۰ و با Neocognitron معرفی‌شده توسط کونیهیکو فوکوشیما آغاز گشتند.

لفظ یادگیری عمیق، نخستین‌بار در ۱۹۸۶ و توسط رینا دِختِر در زمینهٔ یادگیری ماشین به کار رفت؛ وی در مقاله‌ای تحت عنوان یادگیری به هنگام جستجو در مسائل ارضای محدودیت (Learning While Searching in Constraint-Satisfaction-Problems) از این لفظ برای پروسه‌ای استفاده کرد که در آن تمامی راه‌حل‌ها در یک فضای جستجو که به پاسخ مناسب نمی‌رسیدند نیز ذخیره می‌شدند. تحلیل این راه‌حل‌های ذخیره‌شده امکان کنترل بهتر در تلاش‌های بعدی را ممکن می‌ساخت، و به دنبال آن در همان مراحل نخستین از گیر کردن در بن‌بست‌های احتمالی نیز جلوگیری می‌کرد. با این وجود امروزه لفظ یادگیری عمیق عموماً در حوزهٔ شبکه‌های عصبی مصنوعی به کار می‌رود که نخستین‌بار در سال ۲۰۰۰ و توسط ایگور آیزنبرگ و همکاران در حوزهٔ یادشده استفاده شد؛ به‌طور دقیق‌تر، در کتاب نورون‌های دودویی چندمقداری و جهانی: نظریه، یادگیری و کاربردها (Multi-Valued and Universal Binary Neurons: Theory, Learning and Applications) و در زمینهٔ نورون‌های حدآستانهٔ بولی.

در سال ۱۹۸۹، یان لی‌کان و همکاران الگوریتم استاندارد پس‌انتشار را برای یک شبکهٔ عصبی عمیق با هدف تشخیص متن‌های دست‌نویس (به‌طور خاص با هدف بازشناسی کدهای پستی دست‌نویس روی نامه‌های پستی) به کار بست. درحالی که الگوریتم کار می‌کرد، عملیات یادگیری آن به سه روز زمان نیاز داشت. مدل مورد استفاده از یک لایهٔ ورودی با ۲۵۶ واحد (پیکسل‌های یک تصویر مربعی ۱۶×۱۶)، یک لایهٔ خروجی با ۱۰ واحد (که مشخص می‌کرد تصویر رقمی که به ورودی داده‌شده‌است، کدام یک از ارقام ۰ تا ۹ است) و سه لایهٔ پنهان در میان این دو تشکیل شده بود. با ارزیابی مدل بر روی مجموعه‌دادهٔ تست، ۸/۱٪ رده‌بندی اشتباه و ۱۹/۴٪ بازپس‌زنی برای ۱٪ نرخ خطا در میان الگوهای تست باقی‌مانده به دست آمد که نشان می‌داد که این مدل نسبت به مدل‌های ارائه‌شدهٔ پیشین از دقت بالاتری برخوردار است و استفاده از الگوریتم پس‌انتشار، روشی مناسب در فرایند تعلیم شبکه‌های عصبی عمیق است. لازم است ذکر شود که خود الگوریتم پس‌انتشار، از پیش و از ۱۹۷۰ نیز به عنوان حالت معکوس مشتق خودکار وجود داشت.

تا سال ۱۹۹۱، چنین سامانه‌هایی عموماً برای تشخیص ارقام دوبُعدی دست‌نویس ایزوله‌شده (به این معنا که ارقام به صورت تنها و بدون جزئیات و ویژگی‌های اضافهٔ دیگری در پس‌زمینه - مثلاً متن و حروف اضافه - نوشته‌شده‌اند) به کار می‌رفتند؛ درحالی که بازشناسی اجسام سه‌بُعدی همچنان یک چالش بود. در سال ۱۹۹۲، پژوهشی از جان ونگ و همکاران با توضیح معایب و محدودیت‌های شبکه‌های عصبی سه‌لایه‌ای که برای این منظور به کار می‌رفتند، از مفهوم شبکهٔ سلسله‌مراتبی (به انگلیسی: hierarchical network) استفاده کرده و مدلی موسوم به Cresceptron را ارائه دادند که قادر بود اجسام سه‌بعدی در محیط‌های شلوغ را نیز تشخیص دهد. مفهوم تجمیع حداکثری (به انگلیسی: max pooling) نیز نخستین‌بار در همین پژوهش پیاده‌سازی شد. از آن‌جایی که این مدل می‌توانست مستقیماً تصاویر طبیعی (سوژه‌های سه‌بعدی، با حضور عناصر دیگر در پس‌زمینه) را به عنوان ورودی دریافت کند، تبدیل به بنیانی برای یادگیری بصری همه‌منظوره شد.

در سال ۱۹۹۴، آندره د کاروالیو به همراه مایک فیرهورست و دیوید بیسیت، معماری‌ای مبتنی بر یک شبکهٔ عصبی بولی چندلایه را ارائه داد که تحت عنوان شبکهٔ عصبی بی‌وزن نیز شناخته می‌شد. این معماری از یک ماژول شبکهٔ عصبی سه‌لایه‌ای خودسامان‌دهندهٔ استخراج ویژگی (به انگلیسی: self-organising feature extraction یا SOFT) به همراه یک ماژول شبکهٔ عصبی چندلایهٔ رده‌بندی (به‌طور خاص یک شبکه با معماری GSN یا goal-seeking network) تشکیل شده بود که به صورت مستقل عملیات یادگیری را انجام می‌دادند. در ماژول استخراج ویژگی، تصویر ورودی به چند زیرمجموعه تقسیم شده و هر قسمت به یک بلاک از نورون‌ها (که دارای سلسله‌مراتب بوده و در چند لایه تقسیم شده‌بودند) داده می‌شد و هر بلاک به صورت موازی با دیگر بلاک‌ها و مستقل از آن‌ها آموزش می‌دید.

در سال ۱۹۹۵، یوزف زِپ هُخ‌رایتر که پیش‌تر و در ۱۹۹۱ در پایان‌نامهٔ خود - تحت عنوان: بررسی‌هایی در شبکه‌های عصبی پویا (به آلمانی: Untersuchungen zu dynamischen neuronalen Netzen) - به بررسی مسئلهٔ گرادیان کاهشی پرداخته بود (که خود پیش‌تر و در ۱۸۴۷مطرح شده و در ۱۹۴۴ نیز برای مسائل بهینه‌سازی غیرخطی مورد مطالعه قرار گرفته بود) به همراه یورگن اشمیدهوبر، معماری ال‌اس‌تی‌ام را ارائه داد و در مقالهٔ دیگری در سال ۱۹۹۷، آن را بهبود بخشید که زمینهٔ بزرگی را برای پیشرفت شبکه‌های عصبی بازگشتی فراهم ساخت. در همان سال ۱۹۹۵، برندن فرِی به همراه جفری هینتون و پیتر دایان نشان دادند که می‌توان با استفاده از الگوریتم بیدار-خواب، شبکه‌ای تشکیل‌شده از شش لایهٔ کاملاً هم‌بند و با چندصد واحد پردازشی مخفی را آموزش داد.

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

یادگیری عمیق هندسی 
در حالی‌که مدل‌های یادگیری عمیق در دهه گذشته، در برخورد با ورودی‌هایی به شکل تصاویر، گفتار یا ویدیو که اساس ساختار آن‌ها اقلیدسی است، موفقیت‌آمیز عمل کرده، اخیراً، علاقه محققین در تلاش برای استفاده از یادگیری بر روی داده‌های غیراقلیدسی افزایش یافته‌است. یادگیری عمیق هندسی، زمینه نوظهور تحقیقاتی است که سعی در تعمیم معماری یادگیری عمیق برای کار با داده‌های غیراقلیدسی دارد، تا این شکاف را پر کند.

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

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

کاربردها

بینایی رایانه 

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

از سال ۲۰۱۰ و در پروژه‌ای موسوم به ایمیج‌نت مسابقه‌ای سالانه برگزار می‌شود که شرکت‌کنندگان با ارائهٔ الگوریتم‌های کامپیوتری گوناگون، تلاش به بازشناسی تصاویر دیجیتالی در مقیاس کلان کرده و بر سر دست‌یابی به دقّت‌های بالاتر با یک‌دیگر رقابت می‌کنند. حال در سال ۲۰۱۲، یک شبکهٔ عصبی هم‌گشتی به نام الکس‌نت در این رقابت به کار رفت و با کسب نتایجی بسیار چشم‌گیر، توجه‌های گسترده‌ای را به سوی روش یادگیری عمیق جلب کرد؛ به شکلی که به باور برخی، در این سال «انقلاب یادگیری عمیق» رخ داد. لازم است ذکر شود که دقت الکس‌نت در تشخیص تصاویر پایگاه داده‌ی ایمیج‌نت از دقت انسان نیز فراتر بود (هرچند البته حتی پیش از ارائهٔ الکس‌نت نیز الگوریتم‌های دیگری به عملکرد فراانسانی دست پیدا کرده بودند).

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

بازشناسی خودکار گفتار 

از دیگر زمینه‌های موفق برای یادگیری عمیق، تشخیص و بازشناسی خودکار گفتار در مقیاس گسترده‌است که معمولاً توسط مدل‌های مبتنی بر شبکه عصبی بازگشتی (به ویژه از نوع ال‌اس‌تی‌ام) و شبکه عصبی هم‌گشتی انجام می‌گیرد.

پردازش زبان‌های طبیعی 

یادگیری عمیق اثر بزرگی در پیشرفت شاخهٔ پردازش زبان‌های طبیعی ایجاد کرده و با ایجاد یک چهارچوب مدل‌سازی قدرتمند، به نتایج چشم‌گیری دست یافته‌است. به عنوان نمونه، مدل زبانی جی‌پی‌تی-۳ از اوپن ای‌آی با بهره‌گیری روش‌های یادگیری عمیق قادر به تولید متونی مشابه متون نوشته‌شده توسط انسان است.

تشخیص الکترومیوگرافی 
سیگنال‌های الکترومیوگرافی می‌توانند به عنوان رابطی میان انسان و ماشین عمل کرده و با تحلیل آن‌ها از مقصود کاربر جهت کنترل تجهیزات گوناگون بهره برد. به عنوان نمونه، افراد دچار نقص عضو می‌توانند اعضایی مصنوعی را جایگزین عضو قطع‌شدهٔ خود کرده و آن‌ها را به شیوهٔ مؤثری کنترل کنند. یا با همین روش می‌توان اعضایی کمکی و تقویت‌کننده همچون اسکلت خارجی را کنترل کرد. برای تحلیل این سیگنال‌های خام و ارائهٔ خروجی مناسب برای کنترل دستگاه، بهره‌گیری از روش یادگیری عمیق می‌تواند بسیار کاربردی باشد.

سامانهٔ پیشنهادگر 

سامانه‌های پیشنهادگر از یادگیری عمیق جهت استخراج ویژگی‌های معنادار برای یک مدل فاکتورهای پنهان به منظور پیشنهادهای محتوا-محور موسیقی و مجله بهره برده‌اند. یادگیری عمیق چنددیدگاهی (به انگلیسی: multi-view deep learning) جهت یادگیری ترجیح‌های کاربر از چندین دامنه به کار می‌رود.

سرمایه‌گذاری 
در طرح‌های سرمایه‌گذاری، از یادگیری عمیق برای افزایش میزان بازده استفاده می‌شود.

خودروی خودران 
گوگل و تسلا امروزه ثابت کرده‌اند که خودرو‌های بدون سرنشین یا خودران امکان‌پذیر هستند. اما به هرحال باید گفت این خودرو‌ها هنوز نیاز به یادگیری بیشتر و تمرین و آزمایش‌های متفاوتی هستند و فعالیت‌ها و متغیر‌های بسیاری باید مورد بررسی قرار بگیرد.

تشخیص صدا 
تشخیص صدا جزئی جدانشدنی از فرایند زبان است. تحلیل صدای ورودی برای یک سامانه هوش مصنوعی بسیار سخت است؛ زیرا که عوامل متعددی در تشخیص درست صدا نقش دارند.

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

تشخیص الگو 
استفاده از شبکه‌های «یادگیری عمیق» می‌تواند در نرم‌افزار‌های متعددی با تشخیص الگوی به‌کار رفته توسط کاربر، کیفیت ارائۀ خدمات را بالا ببرد.

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

برنامه‌نویسی کامپیوتری 
هوش مصنوعی ضعیف، موفقیت‌هایی در حوزه تولید متن با معنا و پیشرفت در حوزه کدنویسی داشته است. به‌طور مثال GPT-۳ از شرکت OpenAI یک نرم‌افزار اوپن سورس زبان تولیدکننده است که می‌تواند با کمترین دستورالعمل از سوی کاربر، کدنویسی کرده و یا برنامه‌های ساده کامپیوتری ایجاد کند. در آینده احتمالاً شاهد حضور نرم‌افزار‌های بیشتری که از این نوع فناوری‌ها بهره‌مندند خواهیم بود و کار با نرم‌افزار‌های تخصصی رنگ و بوی دیگری به خود خواهد گرفت.

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

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

نساج شبکه‌های عصبی 
شبکه‌های عصبی عمیق (DNNs) مدل‌های یادگیری هستند که دارای محاسبات خیلی زیادی‌اند. این مدل‌ها کاربردهای روزافزونی در بخش‌های مختلف دارند. از آنجا که FPGAها یک زیرساخت قابل‌برنامه‌نویسی برای شتاب‌دادن به محاسبات می‌دهند و همچنین امروزه در بیشتر دنیا به سادگی قابل دسترس‌اند، FPGAها یک انتخاب خیلی خوب برای پیاده‌سازی مدل‌های DNN هستند. اما استفاده از FPGAها به دلیل اینکه به‌دست آوردن کارایی و مصرف انرژی کم آنها به‌طور همزمان کار خیلی سختی است و همچنین DNNها به حافظه زیادی نیاز دارند (در FPGA معمولاً حافظه روی برد کم است)، پیاده‌سازی مدل‌ها با FPGA بسیار دشوار است. نساج یا بافنده شبکه‌های عصبی (DNNWEAVER) یک چارچوب است که به صورت خودکار یک کد قابل‌سنتز برای یک زوج مرتب (DNN, FPGA) تولید می‌کند. مدل DNN را به صورتی که در Caffe معرفی می‌کنند به عنوان ورودی می‌دهند.

روند کلی کار این برنامه به این صورت است که ابتدا مدل ورودی را به یک زبان میانی تبدیل می‌کند که یک گراف از جریان داده کلی را نشان می‌دهد. در این مرحله با الگوریتمهای مختلف مدل داده شده را گروه‌بندی می‌کند تا با توجه به حافظه FPGA و دیگر منابع موجود روی FPGA به حداکثر استفاده مجدد از داده‌ها و بالاترین سطح کارایی برسد. بعد از آن نتیجه نهایی یک کد سنتزپذیر است که با بالاترین کارایی روی FPGA موردنظر تمامی نیازهای مدل ورودی را برآورده می‌سازد.

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

رابط مدل‌دادن 
ورودی برنامه DNNWEAVER یک توصیف‌گر سطح بالا از شبکه‌های عصبی عمیق است که در دانشگاه برکلی با نام قالب Caffe درست شده‌است.

Caffe یکی از پراستفاده‌ترین چارچوب‌های یادگیری عمیق است که توصیف شبکه را به عنوان ورودی می‌گیرد و به مدلی قابل اجرا روی CPU یا GPU تبدیل می‌کند.

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

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

نقشه‌کش طرح 
نقشه‌کش طرح دستورها تولید شده در مرحله قبل را به عنوان ورودی می‌گیرد و با کمک الگوریتم بهینه‌سازی منابع الگو قالب‌های سخت‌افزاری را برای FPGA مقصد بهینه می‌کند. نقشه‌کش طرح محاسبات هر لایه را به گروه‌هایی از عملگرها بخش‌بندی می‌کند که داده‌ها را به اشتراک می‌گذارند یا استفاده مجدد می‌کنند. به هرکدام این بخش‌ها تکه می‌گوییم. هر تکه بعد از محاسبه در حافظه ریخته می‌شود و FPGA به سراغ محاسبه تکه بعدی می‌رود. شتاب‌دهنده شبکه‌های عصبی مشکل اساسی با مقدار زیاد حافظه موردنیاز برخلاف حافظه کم FPGA دارد که DNNWEAVER این مشکل را با استفاده از الگوریتم بهینه‌سازی منابع الگو بهبود می‌دهد و به کمک آن یک تعادل بین عملگرهای موازی و استفاده مجدد از داده‌ها با توجه به محدودیت‌های FPGA مقصد برقرار می‌کند.

نسّاج طرح 
نسّاجی طرح مرحله یکی‌مانده به آخر از DNNWEAVER است که ورودی آن مقدار منابع موردنیاز و تقویم اجرای تولید شده در مرحله قبل است و به کمک آن هسته شتاب‌دهنده را تولید می‌کند. DNNWEAVER از تعدادی قالب بهینه‌سازی دستی استفاده می‌کند که با توجه به گرفتن منابع و سازمان‌دهی سخت‌افزار که در مرحله قبل تولید شده از آن قالب‌ها استفاده می‌کند.

مجتمع‌کننده 
آخرین قسمت DNNWEAVER مجتمع‌کننده است. در این مرحله کدهای رابط حافظه به کدهای شتاب‌دهنده اضافه می‌شود. از آنجایی که FPGAهای مختلف از رابط‌های مختلفی برای ارتباط با DRAM خارجی استفاده می‌کنند، این بخش شامل کتابخانه‌هایی از رابط‌های DRAM است که در هر بار کد لازم را اضافه می‌کند.

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

Tabla یک شتاب‌دهنده FPGA برای فاز آموزش الگوریتم‌های یادگیری ماشین ارائه می‌کند در حالی که DNNWEAVER رو رابط شبکه‌های عصبی تمرکز دارد. Tabla از زبان ریاضیاتی مختص به خودش استفاده می‌کند در حالی که DNNWEAVER از زبان Caffe برای مشخص کردن مدل استفاده می‌کند.

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

جستارهای وابسته 
 ادراک ماشین
 جعل عمیق
 بازگشت به عقب
 شبکه عصبی مصنوعی
 گرادیان کاهشی تصادفی
 یادگیری ماشین
 رگرسیون خطی

منابع 

 DNNWEAVER Article 2016 
 Page of DNNWEAVER

پیوند به بیرون 
 Deep learning 
 Video on Recent Developments in Deep Learning, by جفری اورست هینتون

 
شبکه‌های عصبی مصنوعی
شبکه‌های عصبی
فناوری‌های نوپدید
ویکی‌سازی رباتیک
یادگیری ماشینی