Программисты открывают новые проблемы и исследуют различные решения, используя множество механизмов сознательного и подсознательного мышления. Напротив, большинство алгоритмов машинного обучения требуют четко определенных задач и большого количества аннотированных данных для разработки моделей, которые могут решать те же проблемы.
Экспертным сообществом было приложено много усилий для создания наборов данных и тестов для разработки и оценки систем «ИИ для кода». Но, учитывая творческий и открытый характер разработки программного обеспечения, очень сложно создать идеальный набор данных для программирования.
С помощью Project CodeNet исследователи IBM попытались создать многоцелевой набор данных, который можно использовать для обучения моделей машинного обучения различным задачам. Создатели CodeNet описывают его как «очень крупномасштабный, разнообразный и высококачественный набор данных для ускорения алгоритмических достижений в области искусственного интеллекта для кода».
Набор данных содержит 14 млн примеров кода с 500 млн строк кода, написанных на 55 различных языках программирования. Образцы кода были получены из представленных почти на 4 000 задач, размещенных на онлайн-платформах кодирования AIZU и AtCoder. Примеры кода включают как правильные, так и неправильные ответы на поставленные задачи.
Одна из ключевых особенностей CodeNet — это количество аннотаций, добавленных к примерам. Каждая из задач кодирования, включенных в набор данных, имеет текстовое описание, а также время процессора и ограничения памяти. Каждая отправка кода содержит дюжину частей информации, включая язык, дату отправки, размер, время выполнения, принятие и типы ошибок.
Исследователи из IBM также приложили огромные усилия, чтобы обеспечить сбалансированность набора данных по различным параметрам, включая язык программирования, приемлемость и типы ошибок.
CodeNet — не единственный набор данных для обучения моделей машинного обучения задачам программирования. Но есть несколько характеристик, которые выделяют его. Во-первых, это огромный размер набора данных, включая количество образцов и разнообразие языков.
Но, возможно, более важны метаданные, которые идут с образцами кода. Богатые аннотации, добавленные в CodeNet, делают его подходящим для разнообразного набора задач, в отличие от других наборов данных кодирования, которые специализируются на конкретных задачах программирования.
Есть несколько способов использования CodeNet для разработки моделей машинного обучения для задач программирования. Один из них — языковой перевод. Поскольку каждая задача кодирования в наборе данных содержит представления различных языков программирования, специалисты по данным могут использовать ее для создания моделей машинного обучения, которые переводят код с одного языка на другой. Это может быть удобно для организаций, которые хотят перенести старый код на новые языки и сделать их доступными для новых поколений программистов.
Читайте также
Ученые выяснили, что сверхобогащенное золото образуется как простокваша
Крошечный водородный двигатель заменил аналоги на ископаемом топливе
Высокий рост, пропавшие зубы, новые кости: что произошло с телом человека за сто лет