Эта статья AI раскрывает последние научные исследования Amazon по машинному обучению на тему ошибок в больших моделях языка

Новейшие научные исследования Amazon ошибок в больших моделях языка – взгляд AI

Программирование может быть сложным, и писать код без ошибок иногда невозможно. Были разработаны большие языковые модели кода (Code-LLMs), которые помогают с завершением кода, но иногда они пропускают ошибки в контексте кода. Чтобы решить эту проблему, исследователи из Университета Висконсин-Мэдисон и Amazon Web Services провели исследование, чтобы улучшить работу LLMs в обнаружении возможных ошибок при генерации кода.

Исследования в автоматическом программном ремонте на основе Code-LLMs направлены на смягчение необходимости в идентификации и исправлении программных ошибок. Аналогично атакам с намеренно внесенными изменениями в других областях, небольшие семантически сохраняющие трансформации кода могут снизить производительность моделей обучения коду. Создание искусственных ошибок через мутации кода или обучение созданию ошибок стали путями синтеза дополнительных данных.

Завершение кода, важная функция в интегрированных средах разработки, получило новые возможности с использованием моделей языка на основе Transformer. Однако эти модели часто игнорируют наличие ошибок, что встречается в разработке программного обеспечения. В рамках исследования представлен концепт завершения кода с ошибками (bCC), где возможные ошибки присутствуют в контексте кода, и исследовано поведение Code-LLMs в таких сценариях. Введены наборы данных для оценки Code-LLMs в присутствии синтетических и реалистичных ошибок (buggy-HumanEval и buggy-FixEval), что приводит к значительному снижению производительности. Рассматриваются способы устранения этой проблемы с помощью методов пост-смягчения.

Предлагаемые методы смягчения включают удаление-затем-завершение, устранение ошибок; завершение-затем-переписывание, исправление ошибок после завершения с помощью моделей, например RealiT; и переписать-затем-завершить, устранение ошибок путем переписывания строк кода перед завершением. Производительность, измеряемая путем успешного прохождения тестов, предпочтительна в методах завершения-затем-переписывание и переписать-затем-завершить. Code-LLMs, такие как RealiT и INCODER-6B, служат исправителями ошибок, заполняя модели языка в этих методах.

Присутствие возможных ошибок существенно снижает производительность генерации Code-LLMs, с более чем 50% снижением успешного прохождения тестов при одной ошибке. С использованием информации о месте ошибки, Heuristic Oracle показывает заметную разницу в производительности между buggy-HumanEval и buggy-FixEval, подчеркивая важность определения места ошибки. Вероятностные методы показывают различную производительность на двух наборах данных, что указывает на то, что характер ошибки влияет на выбор метода агрегации. Методы пост-смягчения, включая удаление-затем-завершение и переписать-затем-завершить, предлагают улучшение производительности. Однако существует разрыв, указывающий на необходимость дальнейших исследований с целью улучшения завершения кода с возможными ошибками.

В итоге проведенного исследования можно выделить следующие моменты:

  • В исследовании вводится новая задача под названием bCC.
  • bCC генерирует функциональные реализации из контекста кода с возможными ошибками.
  • Исследование оценивается на двух наборах данных с названиями buggy-HumanEval и buggy-FixEval.
  • Производительность Code-LLMs существенно снижается, с показателями успешного прохождения тестов ниже 5%.
  • Предлагаются методы пост-смягчения, включая удаление-затем-завершение и переписать-затем-завершить, однако сохраняются разрывы в производительности.
  • Эта работа способствует лучшему пониманию Code-LLMs в bCC.
  • Исследование предлагает способы улучшения завершения кода в присутствии возможных ошибок.