Время на прочтение
2 мин
Количество просмотров 2.6K
Исследователи Microsoft разработали инструмент на базе ИИ, который, по мнению ученых, поможет программистам быстрее находить и исправлять ошибки в коде. ПО получило название BugLab и основано оно на принципах работы генеративно-состязательных сетей.
Всего в BugLab задействовано две конкурирующие GAN-сети, которые учатся, «играя» между собой в прятки. А сам процесс построен следующим образом. Первая сеть получает на вход эталонный программный код и решает стоит ли вводит в код ошибку и точно формулирует свою ошибку. К примеру, решает заменить знак сложения знаком вычитания. После этого код редактируется и в него специально заносятся ошибки. Затем другая сеть ищет ошибку, сделанную первой сетью, и пытается ее исправить.
Эти две GAN-сети обучаются самостоятельно в режиме самоконтроля. Первая сеть учится прятать ошибки в коде таким образом, чтобы их было тяжело найти, а вторая учится искать даже самые неочевидные баги. В итоге обе сети получают пользу — первая может с каждым разом генерировать все более сложные ошибки, а вторая их находить.Такой подход к обучению схож с принципами работы генеративно-состязательных сетей, за исключением того, что новые фрагменты кода не создаются с нуля, а перезаписывают данные уже существующих отрывков. Исследователи из Microsoft отметили, что процесс обучения схож с игрой в прятки, когда один участник ищет наиболее подходящее место, в котором его бы не нашли, а второй анализирует ситуацию и пытается найти такие места.
В компании отметили, что нынешние модели машинного обучения пока не умеют находить сложные логические и архитектурные баги, поэтому исследователи сконцентрировались на обучении ИИ определять самые распространенные ошибки, к которым относятся:
-
ошибки использования символов сравнения;
-
неправильное применения логических операторов;
-
ошибки в именах переменных.
Также исследователи заявили, что во время обучения использовали фрагменты кода на языке программирования Python. А после процесса обучения протестировали ИИ на отрывках кода из Python Package Index (PyPI). Испытания показали, что подобный метод обучения на 30% эффективнее альтернатив.
Далее специалисты из Microsoft опробовали BugLab на проектах с открытым исходным кодом на GitHub. Среди всех найденных ошибок, 19 оказались ранее неизвестными. Но кроме этого, эксперименты показали, что инструмент еще далек от идеала и часто выдает ложные срабатывания.
В ближайшем будущем исследователи планируют обучить ИИ понимать структуру кода, для этого планируется представить фрагменты кода в виде вершин графа и ребрами указать их отношения между собой. Такой подход позволит применить стандартные модели машинного обучения и добиться более точного определения ошибок
Ученые представили новую модель на основе ИИ, которая быстро находит ошибки в коде. Она ускорит разработку минимум на 30%.
Читайте «Хайтек» в
Исследователи компании Microsoft разработали решение на основе искусственного интеллекта (ИИ), которое поможет быстрее и лучше писать код. ИИ под названием BugLab основан на игровой модели hide and seek и работает по принципу генеративно-состязательных сетей (GAN).
В блоге исследователи Милтос Алламанис и Марк Брокшмидт рассказали, как они создали две сети и как они обучали друг друга, когда их настроили на состязательность.
«Для измерения производительности мы вручную аннотировали небольшой набор данных с ошибками из пакетов в Python Package Index и показали, что модели, обученные с помощью нашего метода, работают на 30% лучше по сравнению с альтернативами. Например, детекторами, обученными на случайно вставленных ошибках», — отметили в блоге.
Одна сеть предназначена для создания ошибок в коде, а другая — для их поиска. По мере того, как игра продолжается, оба алгоритма становятся лучше. Затем ИИ учится до того момента, когда он становится достаточно точным, чтобы найти ошибки в реальном коде.
Обе модели обучали совместно, без использования маркированных данных самоконтролируемым способом на миллионах фрагментов кода, объясняют исследователи. Несмотря на то, что идея заключалась в создании программы, способной выявлять произвольно сложные ошибки, они все еще находятся «за пределами досягаемости современных методов ИИ», утверждают ученые.
Читать далее
Китайский самолет летит в 5 раз быстрее скорости звука: он облетит Землю за несколько часов
Древний меч викингов оказался очень хрупким: узор гарды проявился лишь в рентген-лучах
Посмотрите на метеорит, который пролетел над Канадой
Самое интересное в обзорах
Получивший широкую популярность ИИ-бот ChatGPT способен выполнять самые разные задачи. Исследователям из университета им. Иоганна Гутенберга в Майнце (Германия) совместно с коллегами из Университетского колледжа Лондона удалось задействовать сервис для поиска и устранения ошибок в программном коде.
Источник изображения: Arif Riyanto/unsplash.com
Исследователи предоставили 40 фрагментов кода, содержащих ошибки, четырём системам ChatGPT, Codex, CoCoNut и Standard APR, предназначенным для устранения багов. По сути, они буквально спросили: «Что не так с этим кодом?» и вставили фрагмент кода в окно чата.
В первый раз ChatGPT проявил себя не хуже других напичканных интеллектом систем. Он устранил 19 проблем из 40, Codex — 21 из 40, CoCoNut — 19, а APR — только 7. Проведённые оценочные тесты показали, что ответы ChatGPT во многом дублируют решения, предлагаемые Codex, в чём нет ничего удивительного, поскольку ChatGPT и Codex относятся к одному семейству языковых моделей.
Впрочем, в дальнейшем ChatGPT продемонстрировал свои преимущества. Поскольку бот позволяет вести с ним обсуждение и вносить уточнения после получения первоначального ответа, в результате исследователям удалось решить 31 из 40 задач, намного больше, чем способны были сделать другие системы аналогичного назначения. Более того, выяснилось, что ChatGPT может решать задачи быстрее конкурентов, причём он давал пользователю разные варианты ответов на одну и ту же задачу. Если сначала на один из запросов бот требовал больше информации, то после некоторого количества попыток он уверенно приводил ответ на тот же вопрос.
Источник изображения: Arif Riyanto/unsplash.com
Исследователи предоставили 40 фрагментов кода, содержащих ошибки, четырём системам ChatGPT, Codex, CoCoNut и Standard APR, предназначенным для устранения багов. По сути, они буквально спросили: «Что не так с этим кодом?» и вставили фрагмент кода в окно чата.
В первый раз ChatGPT проявил себя не хуже других напичканных интеллектом систем. Он устранил 19 проблем из 40, Codex — 21 из 40, CoCoNut — 19, а APR — только 7. Проведённые оценочные тесты показали, что ответы ChatGPT во многом дублируют решения, предлагаемые Codex, в чём нет ничего удивительного, поскольку ChatGPT и Codex относятся к одному семейству языковых моделей.
Впрочем, в дальнейшем ChatGPT продемонстрировал свои преимущества. Поскольку бот позволяет вести с ним обсуждение и вносить уточнения после получения первоначального ответа, в результате исследователям удалось решить 31 из 40 задач, намного больше, чем способны были сделать другие системы аналогичного назначения. Более того, выяснилось, что ChatGPT может решать задачи быстрее конкурентов, причём он давал пользователю разные варианты ответов на одну и ту же задачу. Если сначала на один из запросов бот требовал больше информации, то после некоторого количества попыток он уверенно приводил ответ на тот же вопрос.
Источник изображения: Dominik Sobania, Martin Briesch, Carol Hanna, Justyna Petke
По мнению экспертов, успех проведённого исследования потенциально способен привести к модификации существующего рынка ИИ-решений совокупной стоимостью $600 млн, предназначенных для помощи инженерам в поиске и устранении недоработок в программном коде. Платформы вроде Sentry уже стали распространённым инструментов среди программистов, намного ускоряя рабочие процессы.
Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Самые обсуждаемые публикации
Нейросеть — Codeium
ИИ для программирования, позволяет разработчикам быстро вносить изменения в незнакомые языки и кодовые базы, используя естественный язык. Также помогает минимизировать шаблонное кодирование, находить и использовать API и создавать модульные тесты. Он поддерживает Python, CSS, JavaScript, Java.
Нейросеть онлайн
Нейросеть — AI Code Reviewer
Искусственный интеллект проверяет ваш код, если в вашем коде что-то не так, AI сообщит вам об этом. Если у вас есть какие-либо вопросы, вы также можете задать их ИИ напрямую.
Нейросеть онлайн
Нейросеть — Ghostwriter
Стартап Replit — запустил первый в мире «живой» чат-бот с ИИ для написания кода. Генерирует фрагменты кода, добавляет в него конкретные функции. Автоматически ищет ошибки в коде и комментирует его за вас. Полезный инструмент для любой задачи кодирования, попробовать бесплатно можно в бета-версии.
Нейросеть онлайн
Независимый разработчик рассказал на Reddit о своём проекте — дебагере на основе искусственного интеллекта. Инструмент называется Adrenaline и работает на базе нейросети GPT-3. Он умеет выделять проблемный код и объяснять, почему он работает неправильно.
Изображение: Reddit
В основе Adrenaline лежит нейросеть OpenAI Codex, которая умеет писать код по текстовому описанию. Инструмент поддерживает 22 языка программирования — например, Python, Java, JavaScript и C++.
Как заметил один пользователь Reddit, Adrenaline — это API, который вызывает нейросеть GPT-3 через команду fix this error {error}:
Подробнее узнать об Adrenaline можно на официальном сайте, а протестировать — в песочнице. Также у инструмента есть репозиторий на GitHub.
Чтобы использовать Adrenaline, нужно получить токен от OpenAI API. Но сделать это с территории России нельзя, потому что компания заблокировала доступ. Единственный доступный вариант — создать новый Google-аккаунт под VPN и потом войти через него на сайте OpenAI.