Новая нейросеть поможет компьютерам кодировать самих себя

Друзья, с момента основания проекта прошло уже 20 лет и мы рады сообщать вам, что сайт, наконец, переехали на новую платформу.

Какое-то время продолжим трудится на общее благо по адресу https://n-n-n.ru.
На новой платформе мы уделили особое внимание удобству поиска материалов.
Особенно рекомендуем познакомиться с работой рубрикатора.

Спасибо, ждём вас на N-N-N.ru

TilekSamiev: Представляю вашему вниманию перевод статьи «A new neural network could help computers code themselves» автора Will Douglas Heaven. Инструмент обнаруживает сходство между программами, чтобы помочь программистам писать более быстрое и эффективное программное обеспечение.

Компьютерное программирование никогда не было легким. Первые кодеры написали программы от руки, чертя символы на миллиметровой бумаге, прежде чем конвертировать их в большие стопки перфокарт, которые могли быть обработаны компьютером. Одна допущенная ошибка, и все это, возможно, придется переделывать.

В настоящее время кодеры используют множество мощных инструментов, которые автоматизируют большую часть работы, от перехвата ошибок при вводе текста до тестирования кода перед его применением. Но в остальном мало что изменилось. Одна глупая ошибка все еще может привести к сбою целого программного обеспечения. И поскольку системы становятся все более и более сложными, отслеживание этих ошибок становится все более и более трудным.

«Иногда командам кодеров может потребоваться несколько дней, чтобы исправить одну ошибку», — говорит Джастин Готшлих (Justin Gottschlich), директор исследовательской группы по машинному программированию в Intel.

Вот почему некоторые люди думают, что мы должны просто заставить машины программировать себя. Автоматическая генерация кода была горячей темой исследований в течение ряда лет.

Microsoft встраивает базовую генерацию кода в свои широко используемые инструменты разработки программного обеспечения, Facebook создал систему под названием Aroma, которая автоматически завершает небольшие программы, а DeepMind разработал нейронную сеть, которая может создавать более эффективные версии простых алгоритмов, чем разработанные людьми. Даже модель языка OpenAI GPT-3 может составлять простые фрагменты кода, такие как макеты веб-страниц, из запросов на естественном языке.

Готшлих и его коллеги называют это машинным программированием. Работая с группой из Intel, MIT и Технологического института Джорджии в Атланте, он разработал систему под названием «Схожесть машинного кода» (Machine Inferred Code Similarity), или MISIM, которая может извлечь значение фрагмента кода — то, о чем код говорит компьютеру — во многом так же, как системы обработки естественного языка (Natural Language Processing, NLP) могут читать абзац, написанный на английском языке.

Затем MISIM может предложить другие способы написания кода, предлагая исправления и способы сделать его быстрее или эффективнее. Способность инструмента понимать то, что пытается сделать программа, позволяет ему идентифицировать другие программы, которые делают подобные вещи. Теоретически, этот подход может использоваться машинами, которые написали свое собственное программное обеспечение, опираясь на лоскутное одеяло из уже существующих программ с минимальным человеческим контролем или вкладом.

MISIM работает, сравнивая фрагменты кода с миллионами других программ, которые он уже видел, взятых из большого количества онлайн-хранилищ. Сначала он переводит код в форму, которая фиксирует то, что он делает, но игнорирует, как он написан, потому что две программы, написанные очень разными способами, иногда делают одно и то же. Затем MISIM использует нейронную сеть для поиска другого кода, имеющего аналогичное значение. В препринте Готшлих и его коллеги сообщают, что MISIM в 40 раз точнее, чем предыдущие системы, которые пытаются это сделать, включая Aroma.

MISIM — это захватывающий шаг вперед, — говорит Веселин Райчев (Veselin Raychev), технический директор швейцарской компании DeepCode, чьи средства обнаружения ошибок — одни из самых передовых на рынке — используют нейронные сети, обученные миллионам программ, чтобы предлагать улучшения кодерам при их написании. – Но машинное обучение все еще не способно предсказать, является ли что-то ошибкой, говорит Райчев. Это потому, что трудно научить нейронную сеть тому, что является или не является ошибкой, если она не помечена человеком как таковая.

По его словам, было проведено много интересных исследований с глубокими нейронными сетями и исправлением ошибок, «но практически их еще нет, с очень большим отрывом». По его словам, как правило, инструменты для ловли ошибок ИИ дают много ложных срабатываний.

MISIM справляется с этим, используя машинное обучение для выявления сходств между программами, а не для непосредственного выявления ошибок. Сравнивая новую программу с существующим программным обеспечением, которое, как известно, является правильным, оно может предупредить кодировщика о важных различиях, которые и привести к ошибкам.

Intel планирует использовать этот инструмент в качестве системы рекомендаций для собственных разработчиков, предлагая альтернативные способы написания кода, более быстрого или более эффективного. Но поскольку MISIM не привязан к синтаксису конкретной программы, он может сделать гораздо больше. Например, его можно использовать для перевода кода, написанного на старом языке, таком как COBOL, в более современный язык, такой как Python. Это важно, потому что многие учреждения, включая правительство США, по-прежнему полагаются на программное обеспечение, написанное на языках, которые немногие кодеры знают, как поддерживать или обновлять.

В конечном счете, Готшлих считает, что эта идея может быть применена к естественному языку. В сочетании с NLP (Natural Language Processing, не путать с Нейролингвистическим программированием) способность работать со смыслом кода отдельно от его текстового представления может однажды позволить людям писать программное обеспечение, просто описывая то, что они хотят сделать словами, говорит он.

«Создание небольших приложений для телефона или подобных вещей поможет вам в повседневной жизни — я думаю, что это не так уж и далеко, — говорит Готшлих. – Я хотел бы, чтобы 8 миллиардов человек создавали программное обеспечение любым естественным для них способом».

Пожалуйста, оцените статью:
Ваша оценка: None Средняя: 3.8 (4 votes)
Источник(и):

Хабр