یک نظریه جدید راز نحوه عملکرد شبکه های عصبی را فاش می کند. به زبان ساده در مورد پیچیده: شبکه های عصبی چیست؟
امروزه نمودار یکی از قابل قبول ترین روش ها برای توصیف مدل های ایجاد شده در سیستم یادگیری ماشین است. این نمودارهای محاسباتی از رئوس نورون های متصل شده توسط لبه های سیناپس تشکیل شده اند که ارتباط بین رئوس را توصیف می کنند.
برخلاف یک CPU اسکالر یا GPU برداری، یک 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 مگابایت فضا نیاز دارد. با استفاده از یک مقدار دقت کمتر برای ذخیره این وزنها و فعالسازیها، میتوانیم این نیاز ذخیرهسازی را به نصف یا حتی چهار برابر کنیم.
یک مشکل جدی حافظه از این واقعیت ناشی میشود که پردازندههای گرافیکی به دادههایی که بهعنوان بردارهای متراکم نشان داده میشوند متکی هستند. بنابراین، آنها می توانند از یک جریان دستورالعمل واحد (SIMD) برای دستیابی به چگالی محاسباتی بالا استفاده کنند. CPU از بلوک های برداری مشابه برای محاسبات با کارایی بالا استفاده می کند.
GPU ها دارای عرض سیناپس 1024 بیت هستند، بنابراین از داده های ممیز شناور 32 بیتی استفاده می کنند، بنابراین اغلب آن ها را به مینی دسته ای موازی از 32 نمونه برای ایجاد بردارهای 1024 بیتی از داده ها تقسیم می کنند. این رویکرد برای سازماندهی موازی برداری، تعداد فعال سازی ها را 32 برابر افزایش می دهد و نیاز به ذخیره سازی محلیبیش از 2 گیگابایت
پردازندههای گرافیکی و سایر ماشینهای طراحیشده برای جبر ماتریسی نیز تحت فشار حافظه ناشی از وزنها یا فعالسازی شبکههای عصبی قرار دارند. پردازندههای گرافیکی نمیتوانند پیچیدگیهای کوچک مورد استفاده در شبکههای عصبی عمیق را به طور موثر انجام دهند. بنابراین، تبدیلی به نام "downgrade" برای تبدیل این پیچیدگیها به ضربهای ماتریس-ماتریس (GEMM) استفاده میشود که شتابدهندههای گرافیکی میتوانند به طور موثر از عهده آن برآیند.
حافظه اضافی نیز برای ذخیره داده های ورودی، مقادیر موقت و دستورالعمل های برنامه مورد نیاز است. اندازه گیری میزان مصرف حافظه در حین آموزش ResNet-50 بر روی یک GPU پیشرفته نشان داد که به بیش از 7.5 گیگابایت DRAM محلی نیاز دارد.
ممکن است کسی فکر کند که دقت محاسباتی کمتر می تواند مقدار حافظه مورد نیاز را کاهش دهد، اما اینطور نیست. با تغییر مقادیر داده ها به نیمی از دقت برای وزن ها و فعال سازی ها، تنها نیمی از عرض برداری SIMD را با استفاده از نیمی از منابع محاسباتی موجود پر می کنید. برای جبران این، وقتی از دقت کامل به نیم دقت روی GPU تغییر میکنید، باید اندازه مینی دسته را دوبرابر کنید تا موازیسازی دادهها به اندازه کافی برای استفاده از تمام محاسبات موجود اعمال شود. بنابراین حرکت به سمت وزنهای دقیقتر و فعالسازی در GPU همچنان به بیش از 7.5 گیگابایت نیاز دارد حافظه پویابا دسترسی رایگان
با چنین مقدار زیادداده هایی که باید ذخیره شوند، به سادگی غیرممکن است که همه اینها را در GPU قرار دهید. در هر لایه از یک شبکه عصبی کانولوشن، لازم است وضعیت DRAM خارجی ذخیره شود، لایه بعدی شبکه بارگذاری شود و سپس داده ها در سیستم بارگذاری شوند. در نتیجه، رابط در حال حاضر با پهنای باند محدود است حافظه خارجیبار اضافی را متحمل می شود راه اندازی مجدد دائمیوزن ها، و همچنین ذخیره و بازیابی توابع فعال سازی. این به طور قابل توجهی زمان تمرین را کاهش می دهد و مصرف انرژی را به میزان زیادی افزایش می دهد.
راه های مختلفی برای حل این مشکل وجود دارد. اول، عملیاتی مانند توابع فعالسازی را میتوان در محل انجام داد و اجازه میدهد ورودی مستقیماً روی خروجی بازنویسی شود. بنابراین می توان از حافظه موجود مجددا استفاده کرد. دوم، توانایی استفاده مجدد از حافظه را می توان با تجزیه و تحلیل وابستگی داده بین عملیات در شبکه و تخصیص همان حافظه برای عملیاتی که در آن لحظه از آن استفاده نمی کند، به دست آورد.
روش دوم به ویژه زمانی کارآمد است که کل شبکه عصبی را بتوان در زمان کامپایل برای ایجاد یک حافظه تخصیص یافته ثابت تجزیه کرد، زیرا سربار مدیریت حافظه به نزدیک به صفر کاهش می یابد. مشخص شد که ترکیبی از این روش ها می تواند استفاده از حافظه توسط یک شبکه عصبی را دو تا سه برابر کاهش دهد.
سومین رویکرد مهم اخیراً توسط تیم گفتار عمیق بایدو کشف شد. آنها تکنیکهای ذخیرهسازی حافظه مختلفی را برای کاهش ۱۶ برابری مصرف حافظه در عملکردهای فعالسازی به کار بردند، که به آنها اجازه داد شبکههایی را با ۱۰۰ لایه آموزش دهند. قبلاً با همین مقدار حافظه می توانستند شبکه هایی را با 9 لایه آموزش دهند.
ترکیب حافظه و منابع پردازش در یک دستگاه واحد پتانسیل قابل توجهی برای بهبود عملکرد و کارایی شبکههای عصبی کانولوشنال و همچنین سایر اشکال یادگیری ماشین دارد. برای دستیابی به تعادلی از قابلیت و عملکرد در سیستم، می توان بین حافظه و منابع محاسباتی مبادله ای ایجاد کرد.
شبکه های عصبی و مدل های دانش در سایر روش های یادگیری ماشینی را می توان به عنوان نمودارهای ریاضی در نظر گرفت. مقدار زیادی موازی سازی در این نمودارها وجود دارد. یک پردازنده موازی که برای بهره برداری از موازی گراف طراحی شده است، به mini-batch متکی نیست و می تواند مقدار ذخیره سازی محلی مورد نیاز را تا حد زیادی کاهش دهد.
نتایج تحقیقات مدرن نشان داده است که تمامی این روش ها می توانند عملکرد شبکه های عصبی را به میزان قابل توجهی بهبود بخشند. پردازندههای گرافیکی و پردازندههای مرکزی مدرن حافظه داخلی بسیار محدودی دارند، در مجموع تنها چند مگابایت. معماریهای پردازنده جدید که بهطور خاص برای یادگیری ماشین طراحی شدهاند، تعادلی بین حافظه و محاسبات روی تراشه ایجاد میکنند و عملکرد و کارایی قابلتوجهی را نسبت به CPUها و GPUهای امروزی ارائه میکنند.
(انتشارات منینگ).
این مقاله برای افرادی در نظر گرفته شده است که قبلاً تجربه قابل توجهی در زمینه یادگیری عمیق دارند (به عنوان مثال، کسانی که قبلاً فصل های 1-8 این کتاب را خوانده اند). فرض می کند تعداد زیادیدانش
یادگیری عمیق: نمای هندسی
شگفت انگیزترین چیز در مورد یادگیری عمیق این است که چقدر ساده است. ده سال پیش، هیچ کس نمی توانست تصور کند که با استفاده از مدل های پارامتری ساده آموزش دیده با نزول گرادیان، به چه نتایج شگفت انگیزی در مسائل ادراک ماشین دست خواهیم یافت. حالا معلوم شد که تنها چیزی که نیاز دارید همین است به اندازه کافی بزرگمدل های پارامتریک آموزش داده شده بر روی به اندازه کافی بزرگتعداد نمونه ها همانطور که فاینمن زمانی در مورد جهان گفت: این پیچیده نیست، فقط زیاد است».در یادگیری عمیق، همه چیز بردار است، یعنی. نقطه V فضای هندسی. داده های ورودی مدل (این می تواند متن، تصویر و غیره باشد) و اهداف آن ابتدا "بردار" می شوند، یعنی به فضای برداری اولیه به عنوان ورودی و فضای برداری هدف به عنوان خروجی ترجمه می شوند. هر لایه در مدل یادگیری عمیقیک تبدیل هندسی ساده را روی داده هایی که از آن عبور می کند انجام می دهد. زنجیرهای از لایههای مدل با هم، یک تبدیل هندسی بسیار پیچیده را ایجاد میکند که به تعدادی تبدیل ساده تقسیم میشود. این تبدیل پیچیده تلاش می کند تا فضای داده ورودی را برای هر نقطه به فضای هدف تبدیل کند. پارامترهای تبدیل توسط وزن لایهها تعیین میشوند که به طور مداوم بر اساس عملکرد مدل در حال حاضر به روز میشوند. مشخصه کلیدیتبدیل هندسی - آنچه باید باشد قابل تمایزیعنی باید بتوانیم از طریق پارامترهای آن را دریابیم شیب نزول. به طور شهودی، این بدان معنی است که شکلگیری هندسی باید صاف و پیوسته باشد - یک محدودیت مهم.
کل فرآیند اعمال این تبدیل هندسی پیچیده به داده های ورودی را می توان با به تصویر کشیدن شخصی که سعی در باز کردن یک توپ کاغذی دارد به صورت سه بعدی تجسم کرد: یک توپ کاغذی مچاله شده انواعی از داده های ورودی است که مدل با آن شروع به کار می کند. هر حرکت یک فرد با یک توپ کاغذی مانند یک تبدیل هندسی ساده است که توسط یک لایه انجام می شود. توالی کامل ژست های آشکار شده، دگرگونی پیچیده ای از کل مدل است. مدلهای یادگیری عمیق، ماشینهای ریاضی برای باز کردن یک آرایه پیچیده از دادههای با ابعاد بالا هستند.
این جادوی یادگیری عمیق است: ارزش را به بردارها، به فضاهای هندسی تبدیل کنید، و سپس به تدریج تحولات هندسی پیچیده ای را یاد بگیرید که یک فضا را به فضای دیگر تبدیل می کند. تنها چیزی که لازم است فضاهایی با ابعاد کافی بزرگ برای انتقال طیف کاملی از روابط موجود در داده های اصلی است.
محدودیت های یادگیری عمیق
مجموعه مشکلاتی که می توان با این استراتژی ساده حل کرد تقریباً بی پایان است. و با این حال، بسیاری از آنها هنوز فراتر از دسترس تکنیک های یادگیری عمیق فعلی هستند - حتی با حجم عظیمی از داده های حاشیه نویسی دستی. برای مثال، فرض کنید که میتوانید مجموعه دادهای از صدها هزار - حتی میلیونها - توصیف به زبان انگلیسی از ویژگیهای نرمافزار نوشته شده توسط مدیران محصول، و همچنین یک سال پایه مربوطه را که توسط تیمهای مهندسی برای برآورده کردن این الزامات ایجاد شده است، جمعآوری کنید. حتی با این داده ها، نمی توانید یک مدل یادگیری عمیق را فقط با خواندن توضیحات محصول و ایجاد پایگاه کد مناسب آموزش دهید. این تنها یکی از نمونه های متعدد است. به طور کلی، هر چیزی که به استدلال، استدلال نیاز دارد - مانند برنامه نویسی یا استفاده از روش علمی، برنامه ریزی بلندمدت، دستکاری داده ها به سبک الگوریتمی - فراتر از توانایی های مدل های یادگیری عمیق است، صرف نظر از اینکه چقدر داده در آنها پرتاب می کنید. حتی آموزش یک شبکه عصبی برای یک الگوریتم مرتب سازی کار بسیار دشواری است.دلیل آن این است که مدل یادگیری عمیق "فقط" است زنجیره ای از دگرگونی های هندسی ساده و پیوسته، که یک فضای برداری را به فضای دیگر تبدیل می کند. تنها کاری که میتواند انجام دهد این است که یک مجموعه از دادههای X را به مجموعه دیگری Y تبدیل کند، تا زمانی که یک تبدیل مداوم احتمالی از X به Y وجود داشته باشد که بتوان آن را یاد گرفت، و در دسترس بودن مجموعه ای متراکم از نمونه هاتبدیل X:Y به عنوان داده های آموزشی. بنابراین اگرچه می توان یک مدل یادگیری عمیق را نوعی برنامه در نظر گرفت، اما اکثر برنامه ها را نمی توان به عنوان مدل های یادگیری عمیق بیان کرد- برای اکثر مشکلات، یا شبکه عصبی عمیق با اندازه عملا مناسب وجود ندارد که مشکل را حل کند، یا اگر وجود داشته باشد، می تواند غیر قابل آموزش، یعنی تبدیل هندسی مربوطه ممکن است بسیار پیچیده باشد یا داده های مناسبی برای آموزش آن وجود نداشته باشد.
مقیاسگذاری تکنیکهای یادگیری عمیق موجود - افزودن لایههای بیشتر و استفاده از دادههای آموزشی بیشتر - فقط میتواند به طور سطحی برخی از این مشکلات را کاهش دهد. این مشکل اساسیتر را حل نمیکند که مدلهای یادگیری عمیق در چیزی که میتوانند نمایش دهند بسیار محدود هستند، و اینکه اکثر برنامهها نمیتوانند به صورت شکلگیری هندسی پیوسته از انواع دادهها بیان شوند.
خطر انسانسازی مدلهای یادگیری ماشین
یکی از خطرات واقعی هوش مصنوعی مدرن، تفسیر نادرست از نحوه عملکرد مدلهای یادگیری عمیق و اغراق در قابلیتهای آنهاست. یکی از ویژگی های اساسی ذهن انسان، «الگوی روان انسان» است، یعنی تمایل ما به طرح اهداف، باورها و دانش بر روی چیزهای اطرافمان. کشیدن چهره ای خندان روی یک سنگ ناگهان ما را "خوشحال" می کند - از نظر ذهنی. در یک برنامه یادگیری عمیق، این بدان معناست که، برای مثال، اگر بتوانیم مدلی را کم و بیش با موفقیت آموزش دهیم تا توضیحات متنی تصاویر را تولید کند، در این صورت تمایل داریم فکر کنیم که مدل محتوای تصاویر را "درک" و همچنین توضیحات تولید شده زمانی که به دلیل انحراف کوچک از مجموعه تصاویر ارائه شده در داده های آموزشی، مدل شروع به تولید توصیفات کاملاً پوچ می کند، ما بسیار شگفت زده می شویم.بهویژه، این امر در «مثالهای متخاصم» بیشتر مشهود است، یعنی نمونههایی از دادههای ورودی شبکه یادگیری عمیق که مخصوصاً برای طبقهبندی اشتباه انتخاب شدهاند. قبلاً میدانید که میتوانید صعود گرادیان را در فضای داده ورودی انجام دهید تا نمونههایی تولید کنید که فعالسازی، به عنوان مثال، یک فیلتر شبکه عصبی کانولوشنال خاص را به حداکثر میرسانند - این اساس تکنیک تجسمسازی است که در فصل 5 به آن پرداختیم (توجه داشته باشید: یادگیری عمیق با کتاب های پایتون)، درست مانند الگوریتم Deep Dream از فصل 8. به روشی مشابه، از طریق صعود گرادیان، می توان تصویر را کمی تغییر داد تا پیش بینی کلاس برای یک کلاس معین به حداکثر برسد. اگر از یک پاندا عکس بگیریم و یک گرادیان "گیبون" اضافه کنیم، میتوانیم شبکه عصبی این پاندا را به عنوان گیبون طبقهبندی کنیم. این هم به شکنندگی این مدلها و هم به تفاوت عمیق بین تبدیل ورودی به خروجی که هدایت میکند و ادراک انسانی خودمان گواهی میدهد.
به طور کلی، مدلهای یادگیری عمیق، حداقل به معنای انسانی، هیچ درکی از ورودیها ندارند. درک خود ما از تصاویر، صداها، زبان، مبتنی بر تجربه حسی حرکتی ما به عنوان انسان - به عنوان موجودات زمینی مادی است. مدلهای یادگیری ماشینی به چنین تجربیاتی دسترسی ندارند و بنابراین نمیتوانند ورودیهای ما را به روشی شبیه انسان «درک» کنند. با حاشیه نویسی تعداد زیادی مثال آموزشی برای مدل های خود، آنها را وادار می کنیم یک تبدیل هندسی را بیاموزیم که داده ها را به مفاهیم انسانی برای آن مجموعه از نمونه های خاص می آورد، اما این تبدیل تنها یک طرح ساده شده از مدل اصلی ذهن ما است. از تجربه ما به عنوان عوامل بدن ایجاد شده است - مانند یک انعکاس ضعیف در یک آینه است.
به عنوان یک متخصص یادگیری ماشین، همیشه این را در ذهن داشته باشید و هرگز در دام این باور نیفتید که شبکههای عصبی وظیفهای را که انجام میدهند درک میکنند - آنها این کار را نمیکنند، حداقل نه به روشی که برای ما منطقی است. آنها روی یک کار متفاوت و بسیار محدودتر از کاری که میخواهیم به آنها آموزش دهیم آموزش دیدهاند: تبدیل نمونههای آموزشی ورودی به نمونههای آموزشی هدف، نقطه به نقطه. هر چیزی که با داده های آموزشی متفاوت است را به آنها نشان دهید و آنها به پوچ ترین راه شکست خواهند خورد.
تعمیم محلی در مقابل تعمیم حد
به نظر می رسد تفاوت های اساسی بین شکل گیری هندسی مستقیم ورودی به خروجی که مدل های یادگیری عمیق انجام می دهند و نحوه تفکر و یادگیری افراد وجود دارد. این فقط این نیست که افراد خود را از تجربیات بدنی خود یاد می گیرند و نه از طریق پردازش مجموعه ای از نمونه های آموزشی. جدای از تفاوت در فرآیندهای یادگیری، تفاوت های اساسی در ماهیت بازنمایی های اساسی وجود دارد.انسان ها قادرند خیلی بیشتر از تبدیل یک محرک فوری به یک پاسخ فوری، مانند یک شبکه عصبی یا شاید یک حشره. افراد در ذهن خود مدل های پیچیده و انتزاعی از وضعیت فعلی، خود و سایر افراد را در ذهن خود نگه می دارند و می توانند از این مدل ها برای پیش بینی های مختلف استفاده کنند. گزینه هاآینده و برنامه ریزی بلند مدت آنها میتوانند مفاهیم شناختهشده را برای نمایش چیزی که قبلاً نمیدانستند کنار هم قرار دهند - مثلاً کشیدن یک اسب با شلوار جین، یا تصویری از کاری که در صورت برنده شدن در لاتاری انجام میدهند. توانایی تفکر فرضی، گسترش مدل فضای ذهنی خود بسیار فراتر از آنچه مستقیماً تجربه کرده ایم، یعنی توانایی انجام انتزاعاتو استدلالشاید ویژگی تعیین کننده شناخت انسان باشد. من این را "تعمیم افراطی" می نامم: توانایی انطباق با موقعیت های جدید و تجربه نشده با داده های بسیار کم یا اصلاً نداشتن.
این در تضاد کامل با کاری است که شبکههای یادگیری عمیق انجام میدهند، چیزی که من آن را «تعمیم محلی» مینامم: تبدیل ورودیها به خروجیها در صورتی که ورودیهای جدید حتی اندکی با آنچه که در طول آموزش با آنها مواجه میشوند متفاوت باشند، به سرعت از بین میرود. به عنوان مثال، مشکل یادگیری پارامترهای پرتاب مناسب برای فرود موشک روی ماه را در نظر بگیرید. اگر قرار بود از یک شبکه عصبی برای این کار استفاده کنید، آن را با یک معلم آموزش دهید یا با تقویت کننده، باید هزاران یا میلیون ها مسیر پرواز به آن بدهید، یعنی باید صادر کنید. مجموعه ای متراکم از نمونه هادر فضای مقادیر ورودی یاد بگیرید که چگونه به طور قابل اعتماد از فضای مقادیر ورودی به فضای مقادیر خروجی تبدیل شوید. در مقابل، انسانها میتوانند از قدرت انتزاع برای ایجاد مدلهای فیزیکی - علم موشک - استفاده کنند و راهحل دقیقی را ارائه کنند که فقط در چند تلاش موشک را به ماه برساند. به همین ترتیب، اگر شما یک شبکه عصبی برای کنترل بدن انسان طراحی کرده اید و می خواهید آن را یاد بگیرد که چگونه بدون برخورد با ماشین به طور ایمن از شهر عبور کند، شبکه باید هزاران بار در موقعیت های مختلف قبل از پایان کار بمیرد. که خودروها خطرناک هستند و از کار می افتند رفتار مناسب برای اجتناب از آنها. اگر به شهر جدیدی منتقل شود، شبکه باید بسیاری از چیزهایی را که میدانست دوباره بیاموزد. از سوی دیگر، به لطف قدرت مدلسازی انتزاعی موقعیتهای فرضی، انسانها میتوانند بدون اینکه دوباره بمیرند، رفتار ایمن را بیاموزند.
بنابراین، با وجود پیشرفت ما در شناخت ماشینی، ما هنوز با هوش مصنوعی سطح انسانی بسیار فاصله داریم: مدل های ما فقط می توانند این کار را انجام دهند. تعمیم محلی، سازگاری با موقعیت های جدید که باید بسیار نزدیک به داده های گذشته باشد، در حالی که ذهن انسان قادر به انجام آن است تعمیم نهاییانطباق سریع با موقعیت های کاملا جدید یا برنامه ریزی برای آینده.
نتیجه گیری
این چیزی است که باید به خاطر بسپارید: تنها موفقیت واقعی یادگیری عمیق تاکنون، توانایی ترجمه فضای X به فضای Y با استفاده از یک تبدیل هندسی پیوسته در زمانی که داده های مشروح انسانی زیادی وجود دارد، است. انجام این کار به خوبی یک بازی را برای کل صنعت تغییر می دهد، اما هوش مصنوعی در سطح انسان هنوز راه زیادی دارد.برای حذف برخی از این محدودیت ها و رقابت با مغز انسان، باید از تبدیل مستقیم ورودی به خروجی فاصله بگیریم و به استدلالو انتزاعات. شاید بتوان مبنای مناسبی برای مدل سازی انتزاعی موقعیت ها و مفاهیم مختلف، برنامه های کامپیوتری باشد. قبلاً گفتهایم (توجه داشته باشید: در یادگیری عمیق با پایتون) که مدلهای یادگیری ماشین را میتوان به عنوان «برنامههای قابل آموزش» تعریف کرد. در حال حاضر فقط می توانیم یک زیرمجموعه محدود و خاص از همه برنامه های ممکن را آموزش دهیم. اما چه می شد اگر بتوانیم هر برنامه را به صورت مدولار و تکراری آموزش دهیم؟ بیایید ببینیم چگونه می توانیم به آنجا برسیم.
آینده یادگیری عمیق
با توجه به آنچه در مورد نحوه عملکرد شبکه های یادگیری عمیق، محدودیت های آنها و وضعیت فعلی می دانیم تحقیق علمی، آیا می توانیم پیش بینی کنیم که در میان مدت چه اتفاقی خواهد افتاد؟ در اینجا برخی از نظرات شخصی من در مورد این موضوع وجود دارد. به خاطر داشته باشید که من یک توپ کریستالی برای پیش بینی ندارم، بنابراین بسیاری از آنچه انتظار دارم ممکن است محقق نشود. این حدس و گمان مطلق است. من این پیشبینیها را به اشتراک میگذارم نه به این دلیل که انتظار دارم در آینده کاملاً محقق شوند، بلکه به این دلیل که در زمان حال جالب و قابل اجرا هستند.در سطح بالا، در اینجا زمینه های اصلی که به نظر من امیدوارکننده است، آمده است:
- مدلها به برنامههای رایانهای با هدف عمومی که بر روی لایههای اولیه بسیار غنیتر از لایههای متمایز فعلی ما ساخته شدهاند، نزدیک میشوند - بنابراین ما دریافت میکنیم استدلالو انتزاعاتکه فقدان آن ضعف اساسی مدل های فعلی است.
- اشکال جدیدی از یادگیری پدیدار خواهد شد که این امر را ممکن میسازد - و به مدلها اجازه میدهد تا از تبدیلهای ساده قابل تمایز دور شوند.
- مدلها به ورودی برنامهنویس کمتری نیاز دارند - وظیفه شما این نیست که دائماً دستگیرهها را تغییر دهید.
- استفاده مجدد سیستماتیک از ویژگی ها و معماری های آموخته شده بیشتر خواهد بود. سیستم های فرا یادگیری مبتنی بر روال های قابل استفاده مجدد و مدولار.
پس برو جلو
مدل ها به عنوان برنامه
همانطور که قبلاً اشاره کردیم، یک توسعه تحول آفرین ضروری که می توان در زمینه یادگیری ماشین انتظار داشت، در حال دور شدن از مدل هایی است که صرفاً عملکرد دارند. الگو شناسیو فقط قادر است تعمیم محلی، به مدل های قادر به انتزاعاتو استدلالکه می تواند برسد تعمیم نهایی. همه برنامه های فعلی هوش مصنوعی با سطح پایه استدلال توسط برنامه نویسان انسانی کدگذاری سختی دارند: به عنوان مثال، برنامه هایی که بر الگوریتم های جستجو، دستکاری نمودار، منطق رسمی تکیه دارند. به عنوان مثال، در برنامه DeepMind AlphaGo، بیشتر "هوش" روی صفحه توسط برنامه نویسان خبره طراحی و کدگذاری می شود (مثلاً جستجوی درختی با استفاده از روش مونت کارلو). یادگیری بر روی داده های جدید فقط در زیر ماژول های تخصصی - شبکه های ارزش و شبکه های سیاست رخ می دهد. اما در آینده، چنین سیستم های هوش مصنوعی می توانند بدون دخالت انسان به طور کامل آموزش داده شوند.چگونه می توان به این امر دست یافت؟ بیایید یک نوع شبکه شناخته شده را در نظر بگیریم: RNN. نکته مهم این است که RNN ها نسبت به شبکه های عصبی پیشخور کمی محدودیت های کمتری دارند. این به این دلیل است که RNN ها کمی بیشتر از تبدیل های هندسی ساده هستند: آنها تبدیل های هندسی هستند که به طور مداوم در یک حلقه for انجام می شوند. زمان بندی حلقه توسط توسعه دهنده تنظیم می شود: این یک فرض شبکه داخلی است. به طور طبیعی، RNN ها هنوز در آنچه می توانند نشان دهند محدود هستند، عمدتاً به این دلیل که هر یک از مراحل آنها هنوز یک تبدیل هندسی قابل تمایز است و به دلیل روشی که آنها اطلاعات را گام به گام از نقاطی در یک فضای هندسی پیوسته (بردارهای حالت) عبور می دهند. اکنون شبکه های عصبی را تصور کنید که با برنامه نویسی اولیه به همان روشی "افزایش" می یابند برای حلقه ها- اما نه فقط یک حلقه for-کد شده با حافظه هندسی، بلکه مجموعه بزرگی از برنامه نویسی اولیه که مدل می تواند آزادانه به آنها دسترسی داشته باشد تا قابلیت های پردازشی خود را گسترش دهد، مانند if branchs، while دستورات، ایجاد متغیر، ذخیره سازی دیسک برای حافظه بلند مدت، مرتب سازی عملگرها، ساختارهای داده پیشرفته مانند لیست ها، نمودارها، جداول هش و موارد دیگر. فضای برنامه ای که چنین شبکه ای می تواند نشان دهد بسیار گسترده تر از آن خواهد بود شبکه های موجودیادگیری عمیق، و برخی از این برنامه ها می توانند به قدرت تعمیم عالی دست یابند.
در یک کلام، از این واقعیت دور خواهیم شد که از یک طرف «هوش الگوریتمی کدگذاری شده» (نرم افزار دست نویس) و از سوی دیگر «هوش هندسی آموزش دیده» (یادگیری عمیق) داریم. در عوض، ما مخلوطی از ماژول های الگوریتمی رسمی را دریافت می کنیم که این توانایی را فراهم می کند استدلالو انتزاعاتو ماژول های هندسی که فرصت ها را فراهم می کنند شهود غیررسمی و تشخیص الگو. کل سیستم با مشارکت کم یا بدون مشارکت انسانی آموزش داده خواهد شد.
حوزه مرتبط با هوش مصنوعی که به نظر من می تواند در آینده نزدیک تفاوت بزرگی ایجاد کند، این است سنتز نرم افزاربه ویژه سنتز نرم افزار عصبی. سنتز نرم افزار شامل تولید خودکار است برنامه های ساده، با استفاده از یک الگوریتم جستجو (شاید یک جستجوی ژنتیکی، مانند برنامه نویسی ژنتیکی) برای کشف فضای بزرگی از برنامه های ممکن. جستجو زمانی متوقف می شود که برنامه ای پیدا شود که دارای مشخصات مورد نیاز باشد، که اغلب به صورت مجموعه ای از جفت ورودی-خروجی ارائه می شود. همانطور که می بینید، این بسیار شبیه به یادگیری ماشین است: "داده های آموزشی" به صورت جفت ورودی-خروجی ارائه می شود، ما یک "برنامه" را پیدا می کنیم که با تبدیل ورودی ها به خروجی مطابقت دارد و می تواند به ورودی های جدید تعمیم دهد. تفاوت این است که به جای یادگیری مقادیر پارامترها در یک برنامه سخت کد شده (شبکه عصبی)، تولید می کنیم منبعاز طریق فرآیند جستجوی گسسته
من قطعاً انتظار دارم که در چند سال آینده دوباره علاقه زیادی به این حوزه وجود داشته باشد. به ویژه، من انتظار دارم که حوزه های مرتبط با یادگیری عمیق و ترکیب برنامه ها نفوذ کنند، جایی که ما فقط برنامه هایی را به زبان تولید نمی کنیم. همه منظوره، و جایی که ما شبکه های عصبی (جریان های پردازش داده های هندسی) را تولید خواهیم کرد. افزوده شده استمجموعه ای غنی از الگوریتم های اولیه مانند حلقه های for - و بسیاری دیگر. این باید بسیار راحت تر و مفیدتر از تولید مستقیم باشد کد منبعو به طور قابل توجهی مرزها را برای آن دسته از مشکلاتی که می توان با استفاده از یادگیری ماشین حل کرد گسترش می دهد - فضای برنامه هایی که می توانیم به طور خودکار تولید کنیم و داده های آموزشی مناسب را دریافت کنیم. ترکیبی از هوش مصنوعی نمادین و هوش مصنوعی هندسی. RNN های مدرن را می توان به عنوان جد تاریخی چنین مدل های الگوریتمی-هندسی ترکیبی در نظر گرفت.
نقاشی: یک برنامه آموزش دیده به طور همزمان بر اصول هندسی (تشخیص الگو، شهود) و اولیه الگوریتمی (استدلال، جستجو، حافظه) تکیه دارد.
فراتر از پس انتشار و لایه های قابل تمایز
اگر مدلهای یادگیری ماشین بیشتر شبیه برنامهها شوند، دیگر به سختی قابل تمایز خواهند بود - قطعاً، این برنامهها همچنان از لایههای هندسه پیوسته به عنوان زیربرنامه استفاده میکنند، که قابل تمایز باقی میمانند، اما کل مدل اینطور نخواهد بود. در نتیجه، استفاده از پس انتشار برای تنظیم مقادیر وزن در یک شبکه ثابت و رمزگذاری شده ممکن است همچنان روش ترجیحی برای مدلهای آموزشی در آینده نباشد - حداقل فقط به این روش محدود نشود. ما باید چگونگی آموزش موثرترین سیستمهای غیرقابل تمایز را بیابیم. رویکردهای فعلی شامل الگوریتمهای ژنتیک، «استراتژیهای تکاملی»، روشهای یادگیری تقویتی خاص، ADMM (روش ضربکننده لاگرانژ جهت متغیر) است. به طور طبیعی، نزول گرادیان دیگر راه به جایی نمی برد - اطلاعات گرادیان همیشه برای بهینه سازی توابع پارامتری قابل تمایز مفید خواهد بود. اما مدلهای ما قطعاً جاهطلبانهتر از توابع پارامتری قابل تمایز خواهند بود، و بنابراین توسعه خودکار آنها («آموزش در «یادگیری ماشین») به چیزی بیش از انتشار پسانداز نیاز دارد.علاوه بر این، پس انتشار یک چارچوب سرتاسری دارد که برای یادگیری تبدیل های زنجیره ای خوب مناسب است، اما از نظر محاسباتی کاملاً ناکارآمد است زیرا به طور کامل از مدولار بودن شبکه های عمیق بهره برداری نمی کند. برای افزایش کارایی هر چیزی، یک دستور العمل جهانی وجود دارد: ماژولار بودن و سلسله مراتب را معرفی کنید. بنابراین ما میتوانیم با معرفی ماژولهای یادگیری جداشده با نوعی مکانیسم همگامسازی بین آنها، که به شیوهای سلسله مراتبی سازماندهی شدهاند، انتشار پسانداز را کارآمدتر کنیم. این استراتژی تا حدی در کار اخیر DeepMind در مورد "شیب های مصنوعی" منعکس شده است. من انتظار دارم در آینده نزدیک کار بسیار بسیار بیشتری در این راستا انجام شود.
میتوان آیندهای را تصور کرد که در آن مدلهای غیرمتمایز جهانی (اما با بخشهای قابل تمایز) با استفاده از یک فرآیند جستجوی کارآمد که شیبها را اعمال نمیکند، یاد میگیرند - رشد میکنند، در حالی که قطعات متمایز با استفاده از گرادیانها با استفاده از شیبهای دیگر، حتی سریعتر یاد میگیرند. نسخه موثرپس انتشار
یادگیری ماشین خودکار
در آینده معماریها، مدلها بهجای دستنویس شدن توسط مهندسان، با آموزش ایجاد خواهند شد. مدلهای بهدستآمده از طریق آموزش بهطور خودکار با مجموعهای غنیتر از مدلهای یادگیری ماشینی اولیه و برنامهمانند کار میکنند.در حال حاضر، اغلب اوقات، یک توسعهدهنده یادگیری عمیق بیپایان دادهها را با اسکریپتهای پایتون تغییر میدهد، سپس معماری و فراپارامترهای شبکه یادگیری عمیق را تغییر میدهد تا یک مدل کار یا حتی یک مدل برجسته، اگر توسعهدهنده آنقدر بلندپرواز باشد، به دست آورد. نیازی به گفتن نیست که این بهترین وضعیت نیست. اما هوش مصنوعی در اینجا نیز می تواند کمک کند. متأسفانه، خودکارسازی بخش پردازش و آماده سازی داده ها دشوار است، زیرا اغلب به دانش دامنه و همچنین درک سطح بالایی از آنچه توسعه دهنده می خواهد به آن دست یابد، نیاز دارد. با این حال، تنظیم هایپرپارامتر یک روش جستجوی ساده است و در این موردما قبلاً میدانیم که توسعهدهنده میخواهد به چه چیزی برسد: این توسط عملکرد از دست دادن شبکه عصبی تعیین میشود که باید تنظیم شود. در حال حاضر، نصب سیستمهای AutoML اساسی که اکثر تغییرات تنظیمات مدل را انجام میدهند، به یک روش معمول تبدیل شده است. من خودم یکی را برای برنده شدن در مسابقات Kaggle نصب کردم.
در ابتدایی ترین سطح، چنین سیستمی به سادگی تعداد لایه ها در پشته، ترتیب آنها و تعداد عناصر یا فیلترها را در هر لایه تنظیم می کند. این کار معمولاً با استفاده از کتابخانه هایی مانند Hyperopt انجام می شود که در فصل 7 در مورد آن صحبت کردیم (توجه داشته باشید: یادگیری عمیق با کتاب های پایتون). اما شما می توانید خیلی فراتر بروید و سعی کنید معماری مناسب را از ابتدا یاد بگیرید، با حداقل مجموعهمحدودیت های. این امر برای مثال با یادگیری تقویتی یا با کمک الگوریتم های ژنتیک امکان پذیر است.
یکی دیگر از زمینه های مهم توسعه AutoML آموزش معماری مدل همزمان با وزن های مدل است. با آموزش مدل از ابتدا هر بار که معماریهای کمی متفاوت را امتحان میکنیم، که بسیار ناکارآمد است، بنابراین سیستم واقعاً قدرتمند AutoML تکامل معماریها را هدایت میکند در حالی که ویژگیهای مدل از طریق انتشار پسانداز روی دادههای آموزشی تنظیم میشوند، بنابراین همه افزونگیها حذف میشوند. از محاسبات همانطور که من این خطوط را می نویسم، رویکردهای مشابه قبلاً شروع به اعمال کرده اند.
وقتی همه اینها شروع به اتفاق افتادن می کند، توسعه دهندگان یادگیری ماشین بی کار نخواهند ماند - آنها به کارهای بیشتری خواهند رفت سطح بالادر زنجیره ارزش آنها تلاش بیشتری را برای ایجاد توابع زیان پیچیده ای که واقعاً اهداف تجاری را منعکس می کند انجام می دهند و درک عمیقی از نحوه تأثیر مدل هایشان بر اکوسیستم دیجیتالی که در آن فعالیت می کنند خواهند داشت (به عنوان مثال، مشتریانی که از پیش بینی های مدل استفاده می کنند و داده هایی را برای آن تولید می کنند. آموزش) مشکلاتی هستند که اکنون فقط بزرگترین شرکت ها می توانند از عهده آنها برآیند.
یادگیری مادام العمر و استفاده مجدد از روال های مدولار
اگر مدلها پیچیدهتر شوند و براساس الگوریتمهای اولیه غنیتر ساخته شوند، این پیچیدگی افزایشیافته به استفاده مجدد فشردهتر بین کارها نیاز دارد تا اینکه هر بار که یک کار جدید یا مجموعه داده جدید داریم، مدل را از ابتدا آموزش دهیم. در نهایت، بسیاری از مجموعه داده ها حاوی اطلاعات کافی برای توسعه یک مدل پیچیده جدید از ابتدا نیستند و به سادگی لازم است از اطلاعات مجموعه داده های قبلی استفاده شود. تو دوباره یاد نمی گیری زبان انگلیسیهر بار که باز می کنی کتاب جدید- این غیر ممکن خواهد بود. علاوه بر این، مدل های آموزش از ابتدا در هر کار جدید به دلیل همپوشانی قابل توجه بین وظایف فعلی و مواردی که قبلا با آن مواجه شده اند، بسیار ناکارآمد است.علاوه بر این، در سالهای اخیر، مشاهدات قابلتوجهی مکرراً انجام شده است که آموزش یک مدل برای انجام چندین کار با جفت آزاد نتایج آن را بهبود میبخشد. در هر یک از این وظایف. به عنوان مثال، آموزش همان شبکه عصبی برای ترجمه از انگلیسی به آلمانی و از فرانسوی به ایتالیایی منجر به مدلی می شود که در هر یک از این جفت های زبانی عملکرد بهتری دارد. آموزش یک مدل طبقهبندی تصویر همزمان با مدل تقسیمبندی تصویر، با یک پایه کانولوشنیک، منجر به مدلی میشود که در هر دو کار بهتر عمل میکند. و غیره. این کاملاً شهودی است: همیشه وجود دارد مقداریاطلاعاتی که بین این دو وظیفه ظاهراً متفاوت همپوشانی دارد و بنابراین مدل کلینسبت به مدلی که فقط در مورد آن کار خاص آموزش دیده است، به اطلاعات بیشتری در مورد هر کار فردی دسترسی دارد.
کاری که ما در واقع انجام میدهیم زمانی که دوباره مدل را در کارهای مختلف به کار میبریم، استفاده از وزنههای از قبل آموزشدیدهشده برای مدلهایی است که انجام میدهند. توابع عمومیمانند استخراج ویژگی های بصری. شما این را در عمل در فصل 5 مشاهده کردید. من انتظار دارم که در آینده یک نسخه کلی تر از این تکنیک در همه جا استفاده شود: ما نه تنها از ویژگی های قبلاً آموخته شده (وزن های مدل فرعی)، بلکه از معماری های مدل و روش های آموزشی استفاده خواهیم کرد. همانطور که مدل ها بیشتر شبیه برنامه ها می شوند، ما شروع به استفاده مجدد خواهیم کرد کارهای روزمرهدرست مانند توابع و کلاس ها در زبان های برنامه نویسی معمولی.
به این فکر کنید که فرآیند توسعه نرمافزار امروزی چگونه به نظر میرسد: هنگامی که یک مهندس مشکل خاصی را حل میکند (برای مثال درخواستهای HTTP در پایتون)، آن را به عنوان یک کتابخانه انتزاعی برای استفاده مجدد بستهبندی میکند. مهندسانی که در آینده با مشکل مشابهی مواجه خواهند شد، به سادگی به دنبال کتابخانه های موجود، دانلود و استفاده از آنها در پروژه های خود هستند. به همین ترتیب، در آینده، سیستمهای فرا یادگیری قادر خواهند بود برنامههای جدیدی را با غربال کردن یک کتابخانه جهانی از بلوکهای قابل استفاده مجدد در سطح بالا جمعآوری کنند. اگر سیستم شروع به توسعه روال های مشابه برای چندین کار مختلف کند، نسخه قابل استفاده مجدد «انتزاعی» از روال را منتشر می کند و آن را در کتابخانه جهانی ذخیره می کند. این فرآیند امکان را برای انتزاعاتیک جزء ضروری برای دستیابی به "تعمیم نهایی": می توان گفت برنامه ای فرعی که برای بسیاری از وظایف و زمینه ها مفید خواهد بود، برخی از جنبه های تصمیم گیری را "انتزاعی" می کند. به نظر نمی رسد این تعریف از "انتزاع" مفهوم انتزاع در توسعه نرم افزار باشد. این روال ها می توانند هندسی (ماژول های یادگیری عمیق با نمایش های از پیش آموزش دیده) یا الگوریتمی (نزدیک به کتابخانه هایی که برنامه نویسان مدرن با آنها کار می کنند) باشند.
نقاشی: یک سیستم فرا یادگیری که قادر است به سرعت مدلهای ویژه کار را با استفاده از الگوریتمهای قابل استفاده مجدد (الگوریتمی و هندسی) توسعه دهد و در نتیجه به «تعمیم نهایی» دست یابد.
خط پایانی: دید بلند مدت
به طور خلاصه، در اینجا چشم انداز بلند مدت من برای یادگیری ماشین است:- مدلها بیشتر شبیه برنامهها خواهند شد و قابلیتهایی خواهند داشت که بسیار فراتر از تبدیلهای هندسی پیوسته دادههای اصلی است که اکنون با آن کار میکنیم. شاید این برنامهها به مدلهای ذهنی انتزاعی که افراد در مورد محیط و خودشان نگه میدارند بسیار نزدیکتر باشند و به دلیل ماهیت الگوریتمیشان بتوانند قویتر تعمیم دهند.
- به طور خاص، مدل ها مخلوط خواهند شد ماژول های الگوریتمیبا استدلال رسمی، جستجو، توانایی انتزاع - و ماژول های هندسیبا شهود غیررسمی و تشخیص الگو. AlphaGo (سیستمی که به برنامهنویسی و معماری دستی فشرده نیاز داشت) نمونهای اولیه از ادغام هوش مصنوعی نمادین و هندسی است.
- آن ها خواهند رشد کرده باشدبه طور خودکار (و توسط برنامه نویسان انسانی نوشته نشده است)، با استفاده از قطعات مدولار از یک کتابخانه جهانی از زیر روال های قابل استفاده مجدد - کتابخانه ای که با جذب مدل های با کارایی بالا از هزاران وظیفه و مجموعه داده های قبلی تکامل یافته است. هنگامی که سیستم فرا یادگیری الگوهای رایج حل مسئله را تعریف کرد، آنها به زیر روال های قابل استفاده مجدد تبدیل می شوند - بسیار شبیه توابع و کلاس ها در برنامه نویسی مدرن - و به کتابخانه جهانی اضافه می شوند. این است که چگونه توانایی انتزاعات.
- کتابخانه جهانی و سیستم رشد مدل مرتبط قادر به دستیابی به نوعی "تعمیم نهایی" انسان نما خواهد بود: در مواجهه با چالش جدیددر شرایط جدید، سیستم قادر خواهد بود با استفاده از داده های بسیار کمی، یک مدل کاری جدید برای این مشکل جمع آوری کند، به لطف: 1) برنامه های اولیه غنی مانند برنامه که به خوبی تعمیم می دهند، و 2) تجربه گسترده در حل مسائل مشابه. به همان ترتیبی که افراد می توانند به سرعت یک بازی ویدئویی پیچیده جدید را یاد بگیرند، زیرا آنها تجربه قبلی بسیاری از بازی های دیگر را دارند و به این دلیل که مدل های مبتنی بر تجربه قبلی انتزاعی و شبیه برنامه هستند، نه اینکه محرک را صرفاً به عمل تبدیل کنند.
- اساساً، این سیستم در حال رشد مدل یادگیری مداوم را می توان به عنوان هوش مصنوعی قوی تعبیر کرد. اما انتظار نداشته باشید که یک آخرالزمان روبوی منحصر به فرد رخ دهد: این یک فانتزی ناب است که از فهرست طولانی سوء تفاهم های عمیق در درک هوش و فناوری زاده شده است. با این حال، این انتقاد به اینجا مربوط نمی شود.
امروزه نمودار یکی از قابل قبول ترین روش ها برای توصیف مدل های ایجاد شده در سیستم یادگیری ماشین است. این نمودارهای محاسباتی از رئوس نورون های متصل شده توسط لبه های سیناپس تشکیل شده اند که ارتباط بین رئوس را توصیف می کنند.
برخلاف CPU اسکالر یا GPU برداری، 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 مگابایت فضا نیاز دارد. با استفاده از یک مقدار دقت کمتر برای ذخیره این وزنها و فعالسازیها، میتوانیم این نیاز ذخیرهسازی را به نصف یا حتی چهار برابر کنیم.
یک مشکل جدی حافظه از این واقعیت ناشی میشود که پردازندههای گرافیکی به دادههایی که بهعنوان بردارهای متراکم نشان داده میشوند متکی هستند. بنابراین، آنها می توانند از یک جریان دستورالعمل واحد (SIMD) برای دستیابی به چگالی محاسباتی بالا استفاده کنند. CPU از بلوک های برداری مشابه برای محاسبات با کارایی بالا استفاده می کند.
GPU ها دارای عرض سیناپس 1024 بیت هستند، بنابراین از داده های ممیز شناور 32 بیتی استفاده می کنند، بنابراین اغلب آن ها را به مینی دسته ای موازی از 32 نمونه برای ایجاد بردارهای 1024 بیتی از داده ها تقسیم می کنند. این رویکرد به موازی سازی برداری، تعداد فعال سازی ها را 32 برابر و نیاز به بیش از 2 گیگابایت حافظه محلی را افزایش می دهد.
پردازندههای گرافیکی و سایر ماشینهای طراحیشده برای جبر ماتریسی نیز تحت فشار حافظه ناشی از وزنها یا فعالسازی شبکههای عصبی قرار دارند. پردازندههای گرافیکی نمیتوانند پیچیدگیهای کوچک مورد استفاده در شبکههای عصبی عمیق را به طور موثر انجام دهند. بنابراین، تبدیلی به نام "downgrade" برای تبدیل این پیچیدگیها به ضربهای ماتریس-ماتریس (GEMM) استفاده میشود که شتابدهندههای گرافیکی میتوانند به طور موثر از عهده آن برآیند.
حافظه اضافی نیز برای ذخیره داده های ورودی، مقادیر موقت و دستورالعمل های برنامه مورد نیاز است. اندازه گیری میزان مصرف حافظه در حین آموزش ResNet-50 بر روی یک GPU پیشرفته نشان داد که به بیش از 7.5 گیگابایت DRAM محلی نیاز دارد.
ممکن است کسی فکر کند که دقت محاسباتی کمتر می تواند مقدار حافظه مورد نیاز را کاهش دهد، اما اینطور نیست. با تغییر مقادیر داده ها به نیمی از دقت برای وزن ها و فعال سازی ها، تنها نیمی از عرض برداری SIMD را با استفاده از نیمی از منابع محاسباتی موجود پر می کنید. برای جبران این، وقتی از دقت کامل به نیم دقت روی GPU تغییر میکنید، باید اندازه مینی دسته را دوبرابر کنید تا موازیسازی دادهها به اندازه کافی برای استفاده از تمام محاسبات موجود اعمال شود. بنابراین، حرکت به سمت وزنهای دقیقتر و فعالسازیهای GPU همچنان به بیش از 7.5 گیگابایت حافظه پویا رایگان نیاز دارد.
با وجود داده های بسیار زیادی برای ذخیره، به سادگی غیرممکن است که همه آنها را در یک GPU قرار دهید. در هر لایه از یک شبکه عصبی کانولوشن، لازم است وضعیت DRAM خارجی ذخیره شود، لایه بعدی شبکه بارگذاری شود و سپس داده ها در سیستم بارگذاری شوند. در نتیجه، رابط تاخیر حافظه از قبل با پهنای باند محدود، بار اضافی بارگذاری مجدد تعادل و ذخیره و بازیابی توابع فعال سازی را متحمل می شود. این به طور قابل توجهی زمان تمرین را کاهش می دهد و مصرف انرژی را به میزان زیادی افزایش می دهد.
راه های مختلفی برای حل این مشکل وجود دارد. اول، عملیاتی مانند توابع فعالسازی را میتوان در محل انجام داد و اجازه میدهد ورودی مستقیماً روی خروجی بازنویسی شود. بنابراین می توان از حافظه موجود مجددا استفاده کرد. دوم، توانایی استفاده مجدد از حافظه را می توان با تجزیه و تحلیل وابستگی داده بین عملیات در شبکه و تخصیص همان حافظه برای عملیاتی که در آن لحظه از آن استفاده نمی کند، به دست آورد.
روش دوم به ویژه زمانی کارآمد است که کل شبکه عصبی را بتوان در زمان کامپایل برای ایجاد یک حافظه تخصیص یافته ثابت تجزیه کرد، زیرا سربار مدیریت حافظه به نزدیک به صفر کاهش می یابد. مشخص شد که ترکیبی از این روش ها می تواند استفاده از حافظه توسط یک شبکه عصبی را دو تا سه برابر کاهش دهد.
سومین رویکرد مهم اخیراً توسط تیم گفتار عمیق بایدو کشف شد. آنها تکنیکهای ذخیرهسازی حافظه مختلفی را برای کاهش ۱۶ برابری مصرف حافظه در عملکردهای فعالسازی به کار بردند، که به آنها اجازه داد شبکههایی را با ۱۰۰ لایه آموزش دهند. قبلاً با همین مقدار حافظه می توانستند شبکه هایی را با 9 لایه آموزش دهند.
ترکیب حافظه و منابع پردازش در یک دستگاه واحد پتانسیل قابل توجهی برای بهبود عملکرد و کارایی شبکههای عصبی کانولوشنال و همچنین سایر اشکال یادگیری ماشین دارد. برای دستیابی به تعادلی از قابلیت و عملکرد در سیستم، می توان بین حافظه و منابع محاسباتی مبادله ای ایجاد کرد.
شبکه های عصبی و مدل های دانش در سایر روش های یادگیری ماشینی را می توان به عنوان نمودارهای ریاضی در نظر گرفت. مقدار زیادی موازی سازی در این نمودارها وجود دارد. یک پردازنده موازی که برای بهره برداری از موازی گراف طراحی شده است، به mini-batch متکی نیست و می تواند مقدار ذخیره سازی محلی مورد نیاز را تا حد زیادی کاهش دهد.
نتایج تحقیقات مدرن نشان داده است که تمامی این روش ها می توانند عملکرد شبکه های عصبی را به میزان قابل توجهی بهبود بخشند. پردازندههای گرافیکی و پردازندههای مرکزی مدرن حافظه داخلی بسیار محدودی دارند، در مجموع تنها چند مگابایت. معماریهای پردازنده جدید که بهطور خاص برای یادگیری ماشین طراحی شدهاند، تعادلی بین حافظه و محاسبات روی تراشه ایجاد میکنند و عملکرد و کارایی قابلتوجهی را نسبت به CPUها و GPUهای امروزی ارائه میکنند.
گفت چقدر مصنوعی شبکه های عصبیتفاوت آنها با سنتی چیست؟ برنامه های کامپیوتریو چرا این روند برای مدت طولانی با ما خواهد ماند.
یادگیری عمیق چیست؟
برای اولین بار موفقیت یادگیری عمیق (deep learning) در سال 2012 شنیده شد و سه سال بعد همه در مورد آن صحبت می کنند. اینترنت در دوران متورم شدن حباب سرمایه گذاری هم همینطور بود. و از آنجایی که اکنون سرمایه گذاری های بزرگی در شبکه های عصبی انجام می شود، می توانیم با خیال راحت در مورد حباب جدیدی صحبت کنیم.
نمایش اینترنت آسان بود: ابتدا ایمیل های سریع (در مقابل کاغذ)، سپس وب سایت های رنگارنگ موجود در هر رایانه ای که به وب متصل است. در یادگیری عمیق، همه چیز متفاوت است: توجه به آن وجود دارد، اما نشان دادن چیزی خاص غیرممکن است. در واقع، چه چیزی برنامه ها و برنامه های تشخیص گفتار را به هم متصل می کند ترجمه خودکار، نرم افزار عیب یابی تجهیزات نفت و گاز و نرم افزار سنتز متن توصیف عکس؟
این تنوع تصادفی نیست: اگر اینترنت فقط نوعی ارتباط باشد، پس شبکههای عصبی عمیق (DNN) در واقع نوع جدیدی از برنامهها هستند که به اندازه برنامههای رایانهای سنتی همه کاره هستند. این جهانی بودن از نظر تئوری ثابت شده است: از نظر تئوری، یک شبکه عصبی میتواند به طور بینهایت هر تابعی از متغیرهای زیادی را تقریب بزند - و همچنین محاسباتی را انجام دهد که معادل با ماشین تورینگ است.
شبکه هایی برای یادگیری
امکان انتقال اطلاعات از طریق اینترنت به روشی بسیار یکنواخت و در بسته های یکپارچه وجود دارد و بر اساس این ایده ساخته شده است. اما اطلاعات را می توان به روش های مختلفی تولید و مصرف کرد. برنامه های کامپیوتری که این کار را انجام می دهند بسیار متفاوت هستند. شبکه های عصبی یکسان هستند، آنها تنوع پردازش یکسانی را ارائه می دهند.
توصیف امروز شبکه های عصبی به معنای توصیف برنامه های رایانه ای سنتی در اواخر دهه پنجاه است (و زبان فرترن در سال 1957 منتشر شد) - اگر بخواهید شروع به گفتن کنید که رایانه ها اشتعال هر خودرو را کنترل می کنند و همچنین فیلم های مستهجن را نشان می دهند. فیلم روی صفحه گوشی، شما را مسخره می کنند.
اگر الان به شما بگویم که با یک عصبی صحبت خواهید کرد شبکه کامپیوتریدر تبلت شما، و شبکه عصبی ماشین را بدون راننده کنترل می کند، شما هم باور نمی کنید - اما بیهوده.
به هر حال، "تصاویر پورن" در شبکه های اجتماعی دیگر توسط مردم کشف نمی شود، بلکه توسط خود شبکه ها کشف می شود. اما این کار توسط 100 هزار نفر در جهان انجام شد که ترابایت و ترابایت عکس و فیلم تماشا کردند. دنیای پردازش داده ها با ظهور یادگیری عمیق به طور ناگهانی و به سرعت شروع به تغییر کرد.
برخلاف برنامههای رایانهای سنتی، شبکههای عصبی نیازی به «نوشتن» ندارند، بلکه باید «آموزش» شوند. و می توان به آنها آموزش داد که پیاده سازی آن با مهندسی نرم افزار سنتی بی نهایت دشوار (اگر نه غیرممکن) است. به عنوان مثال، شبکه های عصبی قبلاً یاد گرفته اند که صدا و تصویر را در سطح افراد - و حتی بهتر از آنها - تشخیص دهند. یا برعکس، صدا و تصویر ایجاد کنید - اگر درک درستی از تصاویر برخی از اشیاء تجسم یافته در یک شبکه عصبی عمیق آموزش دیده دارید، از همین درک می توانید برای ایجاد تصاویر این اشیا استفاده کنید. ترکیب صدا، متن و تصویر هنوز در بازار ظاهر نشده است، اما آزمایشها در حال حاضر موفقیتهایی را نشان میدهند که قبلاً در این زمینه دست نیافتنی بود. علاوه بر این، شبکه های عصبی نه تنها می توانند داده ها را تجزیه و تحلیل کنند، بلکه دستوراتی را نیز صادر می کنند. بنابراین، آنها یاد گرفتند که بازی های Atari 2600 را انجام دهند و حتی بسیاری از آنها بهتر از یک مرد، و لازم نیست برای این کار به طور ویژه برنامه ریزی شده باشند.
چگونه این فقط امروز ممکن است؟ چرا چنین نتایجی مدت ها پیش حتی قبل از ظهور همان اینترنت به دست نیامد؟ بالاخره بحث در مورد قابلیت های شبکه های عصبی از همان دهه 50 قرن گذشته ادامه داشت!
ابتدا مشخص شد که چگونه شبکه های عصبی عمیق را آموزش دهیم - چه نوع ریاضیاتی در آنجا کار می کند. شبکه عصبی عمیق به معنای شبکه ای با عمق بیش از دو لایه است. اگر لایه های کمتری وجود دارد، پس ما در مورد یادگیری کم عمق (کم عمق) صحبت می کنیم. اگر تعداد لایه ها بیش از ده باشد، آنها در مورد یادگیری بسیار عمیق صحبت می کنند، اما تاکنون این نادر است. پیش از این، شبکههای عصبی سعی میکردند با آزمون و خطا یاد بگیرند (معروف به روش علمی) و بنابراین معلوم شد که فقط شبکههای کوچک را آموزش میدهند. با گذشت زمان، درک ریاضیات شبکه های عصبی چندلایه ظاهر شد، طراحی آنها ممکن شد، درک چگونگی ایجاد انواع جدیدی از شبکه ها و اطمینان از یادگیری آنها به دست آمد.
ثانیاً، شبکه عصبی سریع کار می کند، اما بسیار آهسته یاد می گیرد و این به حجم عظیمی از داده نیاز دارد - اطلاعات بزرگ. و هر چه تعداد لایه ها در شبکه عصبی بیشتر باشد، درخواست برای چنین شبکه ای بیشتر می شود قدرت پردازشهنگام یادگیری در واقع، تا همین اواخر، شبکههای عصبی فقط در یک ابر رایانه قابل آموزش بودند.
امروزه، وضعیت تغییر کرده است، زیرا کارتهای ویدئویی برای کار با شبکههای عصبی متصل شدهاند - و این امر آموزش آنها را ده برابر سرعت بخشیده است. اما حتی این یادگیری سریع اغلب به معنای ساعت ها و حتی روزها و گاهی هفته ها محاسبات است. تنها تسلیت این است که در مورد برنامه نویسی سنتی، حل همان مشکلات نه تنها به هفته ها، بلکه سال ها کار برنامه نویسان نیاز دارد.
اما هنگامی که یک شبکه عصبی عمیق آموزش داده می شود، معمولاً صدها تا هزاران بار سریعتر از الگوریتم های سنتی است. این برنامه صدها برابر رم کمتری با نتایج با کیفیت بهتر مصرف می کند.
« شبکه عصبی استادان»
ویژگیهای غیرمعمول این شبکهها به این واقعیت منجر شده است که تقریباً تمام رقابتهای بینالمللی در تحلیل دادهها توسط شبکههای عصبی عمیق برنده میشوند. و اگر نوعی کار تجزیه و تحلیل داده دارید، و تعداد زیادی از این داده ها وجود دارد، احتمال زیادی وجود دارد که در این مورد، شبکه های عصبی عمیق نیز برنده شوند.
حرفه افراد درگیر در شبکه های عصبی هنوز حتی نامی ندارد. اگر در سپیده دم اینترنت مفهوم "وب مستر" ظاهر شد (و برای پنج یا شش سال به طول انجامید)، پس هنوز هیچ حرفه مشابه "استاد شبکه عصبی" وجود ندارد. در زمینه داده های بزرگ، چنین متخصصانی خود را "دانشمندان داده" (دانشمندان داده) می نامند، اما همچنان کار آنها همان ماهیت مهندسی کار برنامه نویسان را دارد. مهندسان سیستم های هدف و ابزارهای مهندسی را اندازه گیری، تجزیه و تحلیل، طراحی، ساختن می کنند. مهندسی نرم افزار(مهندسی نرم افزار) با علم کامپیوتر متفاوت است. در مورد شبکه های عصبی هم همینطور است: هنوز نام حرفه ای وجود ندارد، اما در حال حاضر مهندسانی وجود دارند که به شما در ایجاد، آموزش و استفاده از آنها کمک می کنند. خوشبختانه در سال گذشته زیرساخت توسعه یافته برای یک حرفه جدید ظاهر شده است: دانشگاه دوره های آموزشی، ده ها آموزش، کتاب، مسابقات و زمین های آموزشی، تعداد زیادی از نرم افزار رایگان. امروز فقط در جامعه یادگیری عمیق روسی زبان VKontakte