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

محدودیت های یادگیری عمیق و آینده شبکه های عصبی عمیق چگونه به نظر می رسند و چرا به حافظه زیادی نیاز دارند

به من گفت چقدر مصنوعی شبکه های عصبیتفاوت آنها با سنتی برنامه های کامپیوتریو چرا این روند برای مدت طولانی با ما خواهد ماند.

یادگیری عمیق چیست؟

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

نمایش اینترنت آسان بود: در ابتدا سریع بود (در مقایسه با کاغذ) پست الکترونیک، سپس وب سایت های رنگارنگ قابل دسترسی در هر رایانه متصل به اینترنت. در یادگیری عمیق، همه چیز متفاوت است: توجه به آن وجود دارد، اما نشان دادن چیزی خاص غیرممکن است. در واقع، چه چیزی برنامه ها و برنامه های تشخیص گفتار را به هم متصل می کند ترجمه خودکار، برنامه های شناسایی عیوب در تجهیزات نفت و گاز و برنامه های ترکیب متن توصیف کننده عکس ها؟



این تنوع تصادفی نیست: اگر اینترنت فقط یک نوع ارتباط باشد، شبکه های عصبی عمیق (DNN) اساسا نوع جدیدبرنامه هایی که به اندازه برنامه های کامپیوتری سنتی همه کاره هستند. این جهانی بودن از نظر تئوری ثابت شده است: یک شبکه عصبی در تئوری می تواند به طور بی نهایت دقیق هر تابعی از متغیرهای زیادی را تقریب کند - و همچنین محاسباتی معادل محاسبات یک ماشین تورینگ را انجام دهد.

شبکه هایی که باید یاد بگیرید

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

توصیف امروز شبکه های عصبی یعنی در اواخر دهه پنجاه توصیف برنامه های کامپیوتری سنتی (و زبان FORTRAN در سال 1957 منتشر شد) - اگر شروع کردید به گفتن اینکه رایانه ها احتراق را در هر ماشین کنترل می کنند و همچنین فیلم های پورنو را نشان می دهند. روی صفحه نمایش گوشی شما را می خنداند.

اگر الان به شما بگویم که با یک عصبی صحبت خواهید کرد شبکه کامپیوتریدر تبلت شما، و شبکه عصبی ماشینی را بدون راننده کنترل می کند، شما هم باور نمی کنید - اما بیهوده.

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

برخلاف برنامه‌های رایانه‌ای سنتی، شبکه‌های عصبی نیازی به «نوشتن» ندارند، بلکه باید «آموزش» شوند. و می توان به آنها آموزش داد که پیاده سازی آن با مهندسی نرم افزار سنتی بی نهایت دشوار (اگر نه غیرممکن) است. به عنوان مثال، شبکه های عصبی قبلاً یاد گرفته اند که صدا و تصویر را در سطح افراد - و حتی بهتر از آنها - تشخیص دهند. یا برعکس، صدا و تصویر ایجاد کنید - اگر درک درستی از تصاویر برخی از اشیاء تجسم یافته در یک شبکه عصبی عمیق آموزش دیده دارید، از همین درک می توانید برای ایجاد تصاویر این اشیا استفاده کنید. سنتز صدا، متن و تصاویر هنوز به بازار نرسیده است، اما آزمایش‌ها در حال حاضر موفقیت‌هایی را نشان می‌دهند که قبلاً در این زمینه دست نیافتنی نبود. علاوه بر این، شبکه های عصبی نه تنها می توانند داده ها را تجزیه و تحلیل کنند، بلکه دستوراتی را نیز صادر می کنند. بنابراین، آنها یاد گرفتند که بازی های Atari 2600 را انجام دهند، حتی بسیاری از آنها بهتر از انسان، و لازم نیست برای این کار به طور ویژه برنامه ریزی شده باشند.

چگونه این تنها امروز ممکن شد؟ چرا چنین نتایجی مدت ها پیش حتی قبل از ظهور اینترنت به دست نیامده بود؟ به هر حال، بحث در مورد قابلیت های شبکه های عصبی از دهه 50 قرن گذشته شروع شده است!

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

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



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

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

« استادان شبکه عصبی"

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

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

امروزه نمودار یکی از قابل قبول ترین روش ها برای توصیف مدل های ایجاد شده در سیستم است فراگیری ماشین. این نمودارهای محاسباتی از رئوس نورونی تشکیل شده است که توسط لبه های سیناپس به هم متصل شده اند که ارتباط بین رئوس را توصیف می کنند.

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

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

Poplar شامل یک کامپایلر گرافیکی است که از ابتدا برای ترجمه عملیات استاندارد یادگیری ماشین به کد برنامه IPU بسیار بهینه شده ساخته شده است. این به شما امکان می دهد این نمودارها را با هم با استفاده از همان اصل جمع آوری POPNN جمع آوری کنید. کتابخانه شامل یک مجموعه است انواع مختلفرئوس برای جملات اولیه تعمیم یافته

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

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

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

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


نمودار چرخه کامل آموزش AlexNet در جهت جلو و عقب

کامپایلر گرافیکی Poplar توضیحات AlexNet را به یک نمودار محاسباتی از 18.7 میلیون رأس و 115.8 میلیون یال تبدیل کرد. خوشه بندی به وضوح قابل مشاهده، نتیجه ارتباط قوی بین فرآیندها در هر لایه از شبکه، با ارتباط آسان تر بین لایه ها است.

مثال دیگر یک شبکه کاملا متصل ساده است که در MNIST آموزش دیده است - شماره گیری سادهداده برای بینایی کامپیوتری، نوعی «سلام، دنیا» در یادگیری ماشینی. شبکه سادهبررسی این مجموعه داده به درک نمودارهایی که توسط برنامه های کاربردی Poplar هدایت می شوند کمک می کند. این شرکت با ادغام کتابخانه های گراف با چارچوب هایی مانند TensorFlow، یکی از آنها را ارائه می کند راه های سادهبرای استفاده از IPU در برنامه های یادگیری ماشین

پس از اینکه گراف با استفاده از کامپایلر ساخته شد، باید اجرا شود. این کار با استفاده از Graph Engine امکان پذیر است. مثال ResNet-50 عملکرد آن را نشان می دهد.


نمودار ResNet-50

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

موتور با استفاده از یک نمودار تولید شده توسط کامپایلر، اجرای یک مدل یادگیری ماشین را ایجاد و مدیریت می کند. پس از استقرار، Graph Engine IPUها یا دستگاه‌هایی را که توسط برنامه‌ها استفاده می‌شوند نظارت می‌کند و به آنها پاسخ می‌دهد.

تصویر ResNet-50 کل مدل را نشان می دهد. در این سطح تشخیص ارتباطات بین رئوس منفرد دشوار است، بنابراین ارزش دیدن تصاویر بزرگ شده را دارد. در زیر چند نمونه از بخش های درون لایه های شبکه عصبی آورده شده است.

چرا شبکه های عمیق به حافظه زیادی نیاز دارند؟

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

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

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

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

بنابراین مفید است که به نحوه استفاده از حافظه امروزه در CPU ها و سیستم های یادگیری عمیق مبتنی بر GPU نگاه کنید و از خود بپرسید که چرا آنها به چنین حافظه ای نیاز دارند. دستگاه های بزرگذخیره سازی حافظه زمانی که مغز انسان بدون آنها خوب کار می کند؟

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

به عنوان مثال، یک شبکه ResNet 50 لایه ای حدود 26 میلیون پارامتر وزن دارد و 16 میلیون فعال سازی رو به جلو را محاسبه می کند. اگر از یک شناور 32 بیتی برای ذخیره هر وزن و فعال سازی استفاده کنید، به حدود 168 مگابایت فضا نیاز دارد. استفاده بیشتر کم ارزشدقت برای ذخیره این وزن ها و فعال سازی ها، می توانیم این نیاز ذخیره سازی را نصف یا حتی چهار برابر کنیم.

یک مشکل عمده حافظه از این واقعیت ناشی می شود که GPU ها به داده هایی که به عنوان بردارهای متراکم نشان داده می شوند متکی هستند. بنابراین، آنها می توانند از رشته دستورالعمل واحد (SIMD) برای دستیابی به چگالی محاسباتی بالا استفاده کنند. CPU از واحدهای برداری مشابه برای محاسبات با کارایی بالا استفاده می کند.

GPU ها دارای عرض سیناپس 1024 بیت هستند، بنابراین از داده های ممیز شناور 32 بیتی استفاده می کنند، بنابراین اغلب آنها را به دسته کوچک موازی از 32 نمونه تقسیم می کنند تا بردارهایی از داده های 1024 بیتی ایجاد کنند. این رویکرد برای سازماندهی موازی برداری، تعداد فعال سازی ها را 32 برابر افزایش می دهد و نیاز به ذخیره سازی محلیبا ظرفیت بیش از 2 گیگابایت

پردازنده‌های گرافیکی و سایر ماشین‌های طراحی‌شده برای جبر ماتریسی نیز در معرض بار حافظه ناشی از وزن‌ها یا فعال‌سازی شبکه‌های عصبی هستند. پردازنده‌های گرافیکی نمی‌توانند پیچیدگی‌های کوچک مورد استفاده در شبکه‌های عصبی عمیق را به طور موثر انجام دهند. بنابراین، تبدیلی به نام "کاهش" برای تبدیل این کانولوشن ها به ضرب های ماتریس-ماتریس (GEMM) استفاده می شود. شتاب دهنده های گرافیکیمی تواند به طور موثر مقابله کند.

حافظه اضافی نیز برای ذخیره داده های ورودی، مقادیر موقت و دستورالعمل های برنامه مورد نیاز است. اندازه گیری میزان مصرف حافظه هنگام آموزش ResNet-50 در HPC پردازنده گرافیکینشان داد که به بیش از 7.5 گیگابایت DRAM محلی نیاز دارد.

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

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

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

رویکرد دوم به ویژه زمانی مؤثر است که کل شبکه عصبی را بتوان در زمان کامپایل برای ایجاد یک حافظه تخصیص یافته ثابت تجزیه و تحلیل کرد، زیرا هزینه مدیریت حافظه تقریباً به صفر کاهش می یابد. مشخص شد که ترکیب این روش ها می تواند استفاده از حافظه شبکه عصبی را دو تا سه برابر کاهش دهد.
سومین رویکرد مهم اخیراً توسط تیم گفتار عمیق بایدو کشف شد. درخواست دادند روش های مختلفصرفه جویی در حافظه برای کاهش 16 برابری در مصرف حافظه عملکردهای فعال سازی، که به آنها اجازه می دهد شبکه هایی را با 100 لایه آموزش دهند. قبلاً با همین مقدار حافظه می توانستند شبکه هایی را با 9 لایه آموزش دهند.

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

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

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

امروزه نمودار یکی از قابل قبول ترین روش ها برای توصیف مدل های ایجاد شده در سیستم یادگیری ماشین است. این نمودارهای محاسباتی از رئوس نورونی تشکیل شده است که توسط لبه های سیناپس به هم متصل شده اند که ارتباط بین رئوس را توصیف می کنند.

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

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

Poplar شامل یک کامپایلر گرافیکی است که از ابتدا برای ترجمه عملیات استاندارد یادگیری ماشین به کد برنامه IPU بسیار بهینه شده ساخته شده است. این به شما امکان می دهد این نمودارها را با هم با استفاده از همان اصل جمع آوری POPNN جمع آوری کنید. این کتابخانه شامل مجموعه ای از انواع مختلف رأس برای موارد اولیه تعمیم یافته است.

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

به طور معمول، عملیات با رئوس بسیار پیچیده تر از مثال توضیح داده شده در بالا است. آنها اغلب توسط برنامه های کوچکی به نام کدلت (نام کد) تعریف می شوند. انتزاع گرافیکی جذاب است زیرا هیچ فرضی در مورد ساختار محاسبات ایجاد نمی کند و محاسبات را به اجزایی تقسیم می کند که IPU می تواند از آنها استفاده کند.

Poplar از این انتزاع ساده برای ساختن نمودارهای بسیار بزرگی که به صورت تصویر نمایش داده می شوند استفاده می کند. تولید نرم‌افزار نمودار به این معنی است که می‌توانیم آن را بر اساس محاسبات خاص مورد نیاز برای اطمینان از کارآمدترین استفاده از منابع IPU تنظیم کنیم.

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


نمودار چرخه کامل آموزش AlexNet در جهت جلو و عقب

کامپایلر گرافیکی Poplar توضیحات AlexNet را به یک نمودار محاسباتی از 18.7 میلیون رأس و 115.8 میلیون یال تبدیل کرد. خوشه بندی به وضوح قابل مشاهده، نتیجه ارتباط قوی بین فرآیندها در هر لایه از شبکه، با ارتباط آسان تر بین لایه ها است.

مثال دیگر یک شبکه کاملا متصل ساده است که در MNIST آموزش دیده است، یک مجموعه داده ساده بینایی کامپیوتری، نوعی «سلام، دنیا» در یادگیری ماشین. یک شبکه ساده برای کاوش این مجموعه داده به درک نمودارهای هدایت شده توسط برنامه های کاربردی Poplar کمک می کند. این شرکت با ادغام کتابخانه‌های گراف با چارچوب‌هایی مانند TensorFlow، یکی از ساده‌ترین راه‌ها را برای استفاده از IPU در برنامه‌های یادگیری ماشین ارائه می‌کند.

پس از اینکه گراف با استفاده از کامپایلر ساخته شد، باید اجرا شود. این کار با استفاده از Graph Engine امکان پذیر است. مثال ResNet-50 عملکرد آن را نشان می دهد.


نمودار ResNet-50

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

موتور با استفاده از یک نمودار تولید شده توسط کامپایلر، اجرای یک مدل یادگیری ماشین را ایجاد و مدیریت می کند. پس از استقرار، Graph Engine IPUها یا دستگاه‌هایی را که توسط برنامه‌ها استفاده می‌شوند نظارت می‌کند و به آنها پاسخ می‌دهد.

تصویر ResNet-50 کل مدل را نشان می دهد. در این سطح تشخیص ارتباطات بین رئوس منفرد دشوار است، بنابراین ارزش دیدن تصاویر بزرگ شده را دارد. در زیر چند نمونه از بخش های درون لایه های شبکه عصبی آورده شده است.

چرا شبکه های عمیق به حافظه زیادی نیاز دارند؟

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

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

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

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

بنابراین مفید است که به نحوه استفاده از حافظه امروزه در CPU ها و سیستم های یادگیری عمیق مبتنی بر GPU نگاه کنیم و از خود بپرسیم: چرا آنها به چنین دستگاه های ذخیره سازی حافظه بزرگی نیاز دارند در حالی که مغز انسان بدون آنها به خوبی کار می کند؟

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

به عنوان مثال، یک شبکه ResNet 50 لایه ای حدود 26 میلیون پارامتر وزن دارد و 16 میلیون فعال سازی رو به جلو را محاسبه می کند. اگر از یک شناور 32 بیتی برای ذخیره هر وزن و فعال سازی استفاده کنید، به حدود 168 مگابایت فضا نیاز دارد. با استفاده از یک مقدار دقت کمتر برای ذخیره این وزن‌ها و فعال‌سازی‌ها، می‌توانیم این نیاز ذخیره‌سازی را به نصف یا حتی چهار برابر کنیم.

یک مشکل عمده حافظه از این واقعیت ناشی می شود که GPU ها به داده هایی که به عنوان بردارهای متراکم نشان داده می شوند متکی هستند. بنابراین، آنها می توانند از رشته دستورالعمل واحد (SIMD) برای دستیابی به چگالی محاسباتی بالا استفاده کنند. CPU از واحدهای برداری مشابه برای محاسبات با کارایی بالا استفاده می کند.

GPU ها دارای عرض سیناپس 1024 بیت هستند، بنابراین از داده های ممیز شناور 32 بیتی استفاده می کنند، بنابراین اغلب آنها را به دسته کوچک موازی از 32 نمونه تقسیم می کنند تا بردارهایی از داده های 1024 بیتی ایجاد کنند. این رویکرد به موازی سازی برداری، تعداد فعال سازی ها را 32 برابر و نیاز به ذخیره سازی محلی با ظرفیت بیش از 2 گیگابایت را افزایش می دهد.

پردازنده‌های گرافیکی و سایر ماشین‌های طراحی‌شده برای جبر ماتریسی نیز در معرض بار حافظه ناشی از وزن‌ها یا فعال‌سازی شبکه‌های عصبی هستند. پردازنده‌های گرافیکی نمی‌توانند پیچیدگی‌های کوچک مورد استفاده در شبکه‌های عصبی عمیق را به طور موثر انجام دهند. بنابراین، تبدیلی به نام "کاهش" برای تبدیل این کانولوشن ها به ضرب ماتریس-ماتریس (GEMM) استفاده می شود، که GPU ها می توانند به طور موثر از عهده آن برآیند.

حافظه اضافی نیز برای ذخیره داده های ورودی، مقادیر موقت و دستورالعمل های برنامه مورد نیاز است. اندازه گیری میزان مصرف حافظه هنگام آموزش ResNet-50 بر روی یک GPU سطح بالا نشان داد که به بیش از 7.5 گیگابایت DRAM محلی نیاز دارد.

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

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

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

رویکرد دوم به ویژه زمانی مؤثر است که کل شبکه عصبی را بتوان در زمان کامپایل برای ایجاد یک حافظه تخصیص یافته ثابت تجزیه و تحلیل کرد، زیرا هزینه مدیریت حافظه تقریباً به صفر کاهش می یابد. مشخص شد که ترکیب این روش ها می تواند استفاده از حافظه شبکه عصبی را دو تا سه برابر کاهش دهد.
سومین رویکرد مهم اخیراً توسط تیم گفتار عمیق بایدو کشف شد. آن‌ها از تکنیک‌های مختلف ذخیره‌سازی حافظه برای دستیابی به کاهش ۱۶ برابری مصرف حافظه عملکردهای فعال‌سازی استفاده کردند و به آنها اجازه داد شبکه‌هایی را با ۱۰۰ لایه آموزش دهند. قبلاً با همین مقدار حافظه می توانستند شبکه هایی را با 9 لایه آموزش دهند.

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

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

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

یادگیری عمیق چیست؟ 3 مارس 2016

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


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

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

بیایید به یک مثال از یک کار تشخیص تصویر نگاه کنیم: قبل از آن، آنها یک لایه بزرگ را در یک شبکه عصبی معمولی با یک لایه (1024×768 - حدود 800000) قرار دادند. مقادیر عددی) تصویر کنید و کامپیوتر را تماشا کنید که به آرامی می میرد، خفه شدن از کمبود حافظه و ناتوانی در درک اینکه کدام پیکسل برای تشخیص مهم است و کدام نیست. ناگفته نماند اثربخشی این روش. در اینجا معماری چنین شبکه عصبی منظم (کم عمق) وجود دارد.

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

در سال 2006، چندین محقق مستقل به طور همزمان این مشکل را حل کردند (علاوه بر این، قابلیت های سخت افزاری قبلاً به اندازه کافی توسعه یافته بودند، کارت های ویدئویی کاملاً قدرتمند ظاهر شدند). این محققین عبارتند از: جفری هینتون (و همکارش روسلان سالاخوتیدینوف) با تکنیک پیش‌آموزش هر لایه از یک شبکه عصبی با ماشین بولتزمن محدود (من را بابت این اصطلاحات ببخشید...)، یان لیکان با شبکه‌های عصبی کانولوشن، و Yoshuay Bengio با رمزگذارهای خودکار آبشاری. دو نفر اول بلافاصله به ترتیب توسط گوگل و فیس بوک جذب شدند. در اینجا دو سخنرانی وجود دارد: یک - هینتون، دیگری - لیاکونا، که در آن می گویند یادگیری عمیق چیست. هیچ کس بهتر از آنها نمی تواند در این مورد به شما بگوید. یکی دیگه باحاله سخنرانی Schmidhuber در مورد توسعه یادگیری عمیق، همچنین یکی از ارکان این علم است. و هینتون همچنین یک دوره عالی در نورون ها دارد.

اکنون شبکه های عصبی عمیق چه کاری می توانند انجام دهند؟ آنها قادر به تشخیص و توصیف اشیاء هستند، ممکن است کسی بگوید "می فهمد" که چیست. این در مورد استدر مورد شناخت معانی

فقط این ویدیو را تماشا کنید که در زمان واقعی آن چیزی که دوربین می بیند را تشخیص می دهد.

همانطور که قبلاً گفتم، فناوری های یادگیری عمیق یک گروه کامل از فناوری ها و راه حل ها هستند. من قبلاً چندین مورد از آنها را در پاراگراف بالا فهرست کرده ام، مثال دیگر شبکه های تکراری است که در ویدیوی بالا برای توصیف آنچه که شبکه می بیند استفاده می شود. اما محبوب ترین نماینده فناوری از این کلاس- اینها هنوز شبکه های عصبی کانولوشنال LyaKun هستند. آنها بر اساس قیاس با اصول عملکرد قشر بینایی مغز گربه ساخته شده اند، که در آن سلول های به اصطلاح ساده کشف شد که به خطوط مستقیم در زوایای مختلف پاسخ می دهند، و سلول های پیچیده - که واکنش آنها با فعال شدن همراه است. مجموعه خاصی از سلول های ساده اگرچه، صادقانه بگویم، لاکون خودش روی زیست شناسی متمرکز نبود، اما تصمیم گرفت وظیفه خاص(سخنرانی های او را تماشا کنید)، و سپس مصادف شد.

به بیان ساده، شبکه های کانولوشنال شبکه هایی هستند که در آن ها اصلی هستند عنصر ساختارییادگیری گروهی (ترکیبی) از نورون ها است (معمولاً یک مربع 3x3، 10x10 و غیره) و نه یک. و در هر سطح از شبکه، ده ها گروه از این قبیل آموزش می بینند. شبکه ترکیبی از نورون ها را پیدا می کند که اطلاعات مربوط به تصویر را به حداکثر می رساند. در سطح اول، شبکه ابتدایی ترین و از نظر ساختاری عناصر ساده تصویر را استخراج می کند - می توان گفت، واحدهای ساختمانی: مرزها، ضربه ها، بخش ها، تضادها. بالاتر از قبل ترکیبات پایداری از عناصر سطح اول، و به همین ترتیب در زنجیره بالا وجود دارد. من می خواهم یک بار دیگر تاکید کنم ویژگی اصلییادگیری عمیق: شبکه‌ها خودشان این عناصر را تشکیل می‌دهند و تصمیم می‌گیرند که کدام یک از آنها مهم‌تر و کدامیک نیستند. این مهم است زیرا در زمینه یادگیری ماشین، ایجاد ویژگی ها کلیدی است و اکنون به مرحله ای می رویم که کامپیوتر خود یاد می گیرد که ویژگی ها را ایجاد و انتخاب کند. خود ماشین سلسله مراتبی از ویژگی های اطلاعاتی را شناسایی می کند.

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


در سطح دوم، این قبلاً عنصری از عناصر سطح اول خواهد بود. در سوم - از دوم. ما باید آن را درک کنیم این تصویر- فقط یک نمایش اکنون در مصارف صنعتی، چنین شبکه هایی از 10 تا 30 لایه (سطح) دارند.

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

اطلاعات بیشتر در مورد شبکه های کانولوشنال -

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

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

کمی تاریخچه

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

بعد گام مهماولین الگوریتم برای محاسبه ANN در سال 1949 توسط دونالد هب ایجاد شد که برای چندین دهه بعد اساسی شد. در سال 1958، فرانک روزنبلات پارسپترون را توسعه داد، سیستمی که فرآیندهای مغز را تقلید می کند. زمانی، این فناوری مشابهی نداشت و هنوز در شبکه های عصبی اساسی است. در سال 1986، دانشمندان آمریکایی و شوروی تقریباً به طور همزمان، مستقل از یکدیگر، روش اساسی آموزش پرسپترون چند لایه را به طور قابل توجهی بهبود بخشیدند. در سال 2007، شبکه های عصبی تولدی دوباره را تجربه کردند. جفری هینتون، دانشمند کامپیوتر بریتانیایی، برای اولین بار یک الگوریتم یادگیری عمیق برای شبکه های عصبی چندلایه ایجاد کرد، که اکنون برای مثال برای کار با ماشین های خودران استفاده می شود.

به طور خلاصه در مورد اصل مطلب

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

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

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

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

وضعیت فعلی

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

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

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

چرا شبکه های عصبی هنوز از مغز انسان دور هستند؟

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

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

خط پایین

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

برای کسانی که می خواهند بیشتر بدانند

  • جنگ بزرگ عصبی: گوگل واقعاً چه کاری انجام می دهد
  • چگونه کامپیوترهای شناختی می توانند آینده ما را تغییر دهند

بهترین مقالات در این زمینه