شرکت DeepMind که بهخاطر پیشرفتهای خود در زمینه هوش مصنوعی و ساخت شبکههای عصبی با قابلیت انجام بازیهای رایانهای و رومیزی در سطح انسان شناخته میشود، پروژه AlphaCode را ارائه کرد که در حال توسعه یک سیستم یادگیری ماشینی برای تولید کد است که میتواند در آن مشارکت کند. در مسابقات برنامه نویسی در پلتفرم Codeforces و نشان دادن نتیجه متوسط. یکی از ویژگیهای کلیدی توسعه، توانایی تولید کد در پایتون یا C++، گرفتن متنی با یک بیانیه مشکل به زبان انگلیسی به عنوان ورودی است.
برای آزمایش این سیستم، 10 مسابقه جدید Codeforces با بیش از 5000 شرکت کننده انتخاب شد که پس از اتمام آموزش مدل یادگیری ماشین برگزار شد. نتایج تکمیل وظایف به سیستم AlphaCode این امکان را داد که تقریباً در وسط رتبه بندی این مسابقات (54.3٪) قرار گیرد. امتیاز کلی پیشبینیشده AlphaСode 1238 امتیاز بود، که ورود به 28٪ برتر را در بین تمام شرکتکنندگان Codeforces که حداقل یک بار در طول 6 ماه گذشته در مسابقات شرکت کردهاند را تضمین میکند. خاطرنشان می شود که این پروژه هنوز در مرحله اولیه توسعه است و در آینده برنامه ریزی شده است تا کیفیت کد تولید شده را بهبود بخشد و همچنین AlphaCode را به سمت سیستم هایی که در نوشتن کد کمک می کنند یا ابزارهای توسعه برنامه کاربردی که می توانند توسط افراد بدون مهارت برنامه نویسی استفاده می شود.
این پروژه از معماری شبکه عصبی Transformer در ترکیب با تکنیکهای نمونهبرداری و فیلتر برای تولید انواع کدهای غیرقابل پیشبینی مختلف که با متن زبان طبیعی مطابقت دارند، استفاده میکند. پس از فیلتر کردن، خوشهبندی و رتبهبندی، بهینهترین کد کاری از جریان گزینههای تولید شده حذف میشود، که سپس برای اطمینان از به دست آوردن نتیجه صحیح بررسی میشود (هر کار مسابقه نمونهای از دادههای ورودی و نتیجه مربوط به این مثال را نشان میدهد. که باید پس از اجرای برنامه بدست آید).
برای آموزش تقریباً سیستم یادگیری ماشین، از یک پایه کد موجود در مخازن عمومی GitHub استفاده کردیم. پس از تهیه مدل اولیه، مرحله بهینه سازی بر اساس مجموعه ای از کدها با نمونه هایی از مشکلات و راه حل های ارائه شده توسط شرکت کنندگان در مسابقات Codeforces، CodeChef، HackerEarth، AtCoder و Aizu انجام شد. در مجموع، 715 گیگابایت کد از GitHub و بیش از یک میلیون نمونه راه حل برای مشکلات معمول مسابقات برای آموزش استفاده شد. قبل از حرکت به سمت تولید کد، متن کار یک مرحله عادی سازی را طی کرد که در طی آن همه چیز غیر ضروری حذف شد و فقط بخش های مهمی باقی ماند.
منبع: opennet.ru