Компьютер

В России предложили способ улучшить структуру тестов, создаваемых ИИ

Сотрудники факультета вычислительной математики и кибернетики МГУ разработали методику, позволяющую большим языковым моделям генерировать юнит-тесты с улучшенной структурой. Подход уже прошел первые экспериментальные проверки и может быть интегрирован в системы автоматической генерации проверочного кода.
Автор Наука Mail
Ученые МГУ предложили подход к улучшению структуры юнит-тестов, автоматически создаваемых большими языковыми моделями
Ученые МГУ предложили подход к улучшению структуры юнит-тестов, автоматически создаваемых большими языковыми моделямиИсточник: ВШЭ

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

Специалисты факультета вычислительной математики и кибернетики МГУ имени М. В. Ломоносова предложили способ решения этой проблемы. Вместо того чтобы просто учить нейросеть выдавать результат, ученые сфокусировались на структуре получаемого кода. Их подход позволяет сделать качество создаваемого ИИ-кода более управляемым и предсказуемым.

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

Секрет нового метода кроется в системе «кнута и пряника» для алгоритма. Исследователи применили обучение с подкреплением — модель получает не абстрактную оценку за конечный результат, а детальный сигнал о том, какие именно элементы структуры теста нуждаются в доработке. Если встроенный статический анализатор обнаруживает в коде дефект дизайна, нейросеть получает штраф, а за чистый и логичный тест — вознаграждение. В ходе такого обучения искусственный интеллект учится избегать типичных архитектурных ошибок.

«Мы использовали обучение с подкреплением, чтобы научить модель избегать типичных дефектов дизайна тестов и тем самым улучшить качество автоматически создаваемых решений», — пояснил доцент кафедры алгоритмических языков факультета ВМК МГУ Игорь Головин.

Для тренировки модели был собран крупный датасет на основе реальных проектов на языке Python, включающий как сами методы программ, так и написанные к ним юнит-тесты. Для каждого набора тестов специальные инструменты статического анализа фиксировали наличие или отсутствие недостатков дизайна. Первые эксперименты доказали работоспособность предложенного подхода. В перспективе ту же методику можно адаптировать для улучшения других критериев качества кода — обучая ИИ делать результат более понятным, структурированным и удобным для человека.

Ранее декан МГУ объяснил, как изменятся домашние задания из-за нейросетей.