هوش مصنوعیِ ساختهشده توسط هوش مصنوعی؛ نسل جدیدی از یادگیری ماشین در حال شکلگیری است
شبکههای عصبی عمیق، نوع جدیدی از هوش مصنوعی است که از الگوریتمهای 10 سال پیش بهتر عمل میکند.
بخش عمدهای از آنچه امروزه هوش مصنوعی نامیده میشود، فقط یک بازی با اعداد است. اما شبکههای عصبی عمیق نوعی از هوش مصنوعی است که میتواند در بین دادهها، الگوها را تشخیص دهد. این شبکهها، از الگوریتمهای 10 سال گذشتهی هوش مصنوعی بهتر عمل میکنند، زیرا ما در حال حاضر هم بهاندازهی کافی داده در اختیار داریم، و هم منابع پردازشی کافی برای بهکارگیری چنین شبکههایی وجود دارد.
شبکههای عصبی امروزی، بهشدت تشنهی دادهها و منابع پردازشی هستند. ایجاد چنین شبکههایی نیازمند تنظیم دقیق مقادیر میلیونها و حتی میلیاردها پارامتر است که این شبکهها را تعریف میکنند و این، قدرت ارتباطات بین نورونهای مصنوعی شبکه را نشان میدهند. هدف اصلی این است که برای این شبکهها به تنظیماتی نزدیک به حالت ایدهآل دست پیدا کنیم. فرایندی که به آن بهینهسازی (Optimization) میگوییم. اما اینکه به شبکهی عصبی یاد بدهیم که به این هدف دست پیدا کند کار راحتی نیست.
به دست آوردن Hyper
در حال حاضر، کارآمدترین دستاورد برای یادگیری شبکههای عمیق، پروسهای به نام شیب نزولی تصادفی (SGD) است. این روش مبتنی بر کاهش نقصهای شبکه عمل میکند و از آن میتوان در کارهای خاصی مانند پردازش تصویر استفاده کرد. یک تابع SGD مقدار زیادی از دادههای شناساییشده را پردازش میکند تا بر اساس آنها و برای کاهش خطاها و نواقص، تنظیمات شبکه را تغییر دهد. تابع SGD از مقادیر بالای نواقص و تلفات شبکه بهصورت نزولی و تکرارشونده، پردازش را آغاز کرده و در هر تکرار، نقصها را کاهش میدهد تا به نتیجهی قابل قبولی دست پیدا کند.
البته این استراتژی فقط در شرایطی کارآمد است که شما یک شبکه برای بهبود یافتن داشته باشید. مهندسین برای ساختن شبکههای اولیه، یک سری قوانین شهودی و اولیه را ملاک قرار میدهند. شبکههای اولیه هم از لایههای متعدد نورونهای عصبی که دو به دو به هم متصل هستند ساخته میشود. تعداد لایههای نورونها، تعداد نورونها در هر لایه و فاکتورهای دیگر زیادی میتوانند در طراحیهای مختلف با هم متفاوت باشند.
الگوریتم SGD ، با نشان دادن مقادیری که باعث ایجاد نقصهای بیشتری میشوند، یک نمای کلی از وضعیت کلی نواقص و خطاها به دست میآورد. سپس این الگوریتم برای کاهش میزان این نقصها، به دنبال کمترین مقدار در کل شبکه میگردد تا به عبارتی به Hyper دست پیدا کند.
یک شبکه از گرافهای Hyper ، در ابتدا از یک شبکهی کاندید شده آغاز میشود که باید بهینهسازی شود. سپس الگوریتم تلاش میکند تا بهترین پارامترها را برای کاندیدای ارائهشده، پیشبینی کند. در ادامه باید پارامترهای یک شبکهی عصبی واقعی را روی مقادیر موجود تنظیم کرد و یک تست با هدف خاص را روی الگوریتم اجرا کرد. تیم آقای Ren در تحقیقات خود روی این موضوع، نشان داده است که این استراتژی، برای رتبهبندی کاندیداها چطور عمل کرده و بهترین مورد را انتخاب میکند.
یادگیریِ الگوریتم
آقای Knyazev و همکارانش که آنها هم در این حوزه فعالیت میکنند، شبکهی Hyper خودشان را GHN-2 نامگذاری کردهاند و در آن دو مشخصهی کلیدی شبکهی گرافهای Hyper متعلق به تحقیقات تیم آقای Ren را بهبود دادهاند.
در ابتدا آنها از تکنیک تشکیل معماری شبکهی آقای Ren ، بهصورت درختی استفاده کردند. هر نقطه در این گراف، نشاندهندهی یک زیرمجموعه از نورونها بود که نوع خاصی از محاسبات را انجام میداد. لبههای گراف نشان میداد که چطور اطلاعات از نقاط ابتدایی، به نقاط مقصد حرکت میکنند.
دومین ایدهای که آنها روی آن کارکردند، پروسهی یادگیری شبکهی Hyper برای ارائهی پیشبینی لازم برای کاندیداهای جدید بود. این ایده، نیازمند ادغام کردن دو شبکهی عصبی جداگانه با همدیگر است. شبکهی اول برای محاسبات مربوط به گراف اصلی و اصلاح نقصهای شبکه و اختصاص اطلاعات موردنیاز به هر نقطه از شبکه در نظر گرفته میشود. سپس شبکهی دوم، نقاط تعیینشدهی شبکهی اول را بهعنوان ورودی در نظر گرفته و برای عناصر محاسباتی شبکهی عصبی پیشنهادشده، نتایج مطلوب را پیشبینی میکند. هرکدام از این شبکهها، شرایط مخصوص خود را دارند که باید قبل از تشکیل شبکهی Hyper بر روی آنها تعیین شده باشند. با این کار نتیجهی پارامترهای پیشبینیشده، دقیقتر خواهد بود.
برای انجام همهی این کارها، به یک نمونهگیری تصادفی از نقشهی شبکههای عصبی مصنوعی (ANN) مختلف هم نیاز داریم. برای مثال کار را با یک گراف در هر شبکهی طراحیشده آغاز میکنیم. سپس از شبکهی Hyper درختی برای پیشبینی پارامترها و ساختن ANN مربوط به آنها استفاده میکنیم. سپس این شبکههای عصبی مصنوعی را برای اجرای یک وظیفهی خاص مانند پردازش تصویر، اجرا میکنیم. ابتدا میزان خطای این شبکه را محاسبه کرده و سپس برای پیشبینی نتایج بهتر، بهجای اینکه پارامترهای شبکه را تنظیم کنیم، تنظیمات شبکهی Hyper را طوری تغییر میدهیم که در اولین مرحله پیشبینی را انجام دهد. این کار به شبکهی Hyper کمک میکند تا در دفعات بعدی بهتر عمل کند. تکرار زیاد این مراحل در مثالهای مختلف و شبکههای تصادفی متفاوت باعث کاهش خطاها در هر مرحله نسبت به مرحلهی قبل میشود. این روند تا جایی ادامه دارد که الگوریتم دیگر نتواند نتیجهی بهتری پیدا کند و عملکرد خودش را بهبود ببخشد. درنهایت با انجام این مراحل به یک شبکهی Hyper آموزشدیده دست پیدا خواهیم کرد.
ازآنجاییکه تیم آقای Ren کدهای اصلی خودشان را در دسترس محققان قرار ندادند، تیم آقای Knyazev با استفاده از مفاهیم تحقیقات Ren ، از ابتدا برنامهی اختصاصی خودشان را برای این کار ایجاد کردند و سپس آن را بهبود دادند. Knyazev و همکارانش در ابتدا 15 نوع مختلف از نقاط شبکه را که ممکن است با ادغام آنها عملاً یک شبکهی عصبی عمیق مدرن ساخته شود را شناسایی کردند. سپس توانستند چنین پیشرفتهایی را برای بهبود عملکرد و افزایش دقت پیشبینی شبکه، انجام بدهند.
درمجموع، نتیجهی چنین فعالیتهایی، باعث رسیدن به شبکههای یادگیرندهی عمیق عصبی خواهد شد که میتوانند از طریق خودشان توسعهیافته و پیشرفت کنند.