НЕЙРОСЕТЕВАЯ АРХИТЕКТУРА ДЛЯ ГЕНЕРАЦИИ PYTHON-КОДА ПО РУССКОЯЗЫЧНЫМ ТЕКСТОВЫМ ОПИСАНИЯМ

НЕЙРОСЕТЕВАЯ АРХИТЕКТУРА ДЛЯ ГЕНЕРАЦИИ PYTHON-КОДА ПО РУССКОЯЗЫЧНЫМ ТЕКСТОВЫМ ОПИСАНИЯМ

Авторы публикации

Рубрика

Информационные технологии

Просмотры

1

Журнал

Журнал «Научный лидер» выпуск # 22 (275), Июнь ‘26

Поделиться

Статья посвящена разработке специализированной нейросетевой архитектуры CodeTransformer для автоматической генерации синтаксически корректного кода на языке Python по текстовым описаниям задач на русском языке. Предложена архитектура типа encoder-decoder на основе трансформера с ротационными позиционными эмбеддингами RoPE, активационной функцией SwiGLU и механизмом Flash Attention, а также раздельными BPE-токенизаторами для кириллического и программного алфавитов. Модель с 14,5 млн параметров обучена на корпусе из 6 228 пар «русскоязычное описание — Python-код» и достигла значений CodeBLEU = 0,69, BLEU = 0,42, синтаксической корректности — 54,0%, точного совпадения — 35,4% на полном тестовом наборе; на коротких функциях BLEU составил 0,97, ExactMatch — 85,7%.

Задача генерации программного кода по текстовому описанию на естественном языке приобретает всё большую актуальность в условиях цифровизации образования. Применение существующих коммерческих решений в российской образовательной среде ограничено: при переходе от англоязычных запросов к русскоязычным качество генерации кода заметно снижается. Указанное обстоятельство обосновывает необходимость разработки специализированной системы с полноценной поддержкой русского языка и педагогическими функциями.

Целью настоящей работы является описание архитектуры, алгоритмов обучения и результатов оценки системы CodeTransformer, разработанной для генерации Python-кода по русскоязычным описаниям задач.

В качестве базовой архитектуры выбрана модель encoder-decoder на основе трансформера [2]. Среди рассмотренных альтернатив — многослойных перцептронов, свёрточных и рекуррентных сетей, а также гибридных моделей Transformer+GNN — архитектура трансформера обеспечивает оптимальный баланс точности и вычислительных затрат по сравнению с гибридными моделями, которые требуют значительно больше ресурсов.

Архитектура дополнена тремя современными улучшениями. Ротационные позиционные эмбеддинги (RoPE) заменяют абсолютное позиционное кодирование, обеспечивая лучшее обобщение на последовательности длиннее обучающих примеров. Активационная функция SwiGLU в блоках прямого распространения повышает стабильность обучения по сравнению со стандартной ReLU. Механизм Flash Attention снижает потребление памяти при вычислении матриц внимания без потери точности.

Принципиальным проектным решением является использование двух независимых BPE-словарей: для русскоязычных описаний (1 856 токенов) и для Python-кода (4 298 токенов). Объединение разноалфавитных последовательностей в едином словаре неизбежно влечёт потери либо в покрытии русской лексики, либо в специфике синтаксиса языка программирования [3]. Итоговая модель насчитывает 14,5 млн параметров.

Таблица 1.

Сравнение архитектур нейронных сетей для задачи кодогенерации

Архитектура

Контекст

Параллелизм

Вычислит. затраты

Трансформер (enc-dec)

Глобальный

Полный

Высокие

LSTM/GRU

Локальный

Последовательный

Умеренные

Transformer + GNN

Глобальный + AST

Частичный

Очень высокие

CNN

Локальный

Полный

Низкие

 

Обучающий корпус составил 6 228 пар «русскоязычное описание — Python-код», сформированных из открытого датасета CodeSearchNet (Python-подмножество) с последующим машинным переводом описаний на русский язык и ручной верификацией выборки [4]. Для оптимизации применялся AdamW с косинусным планировщиком скорости обучения и линейным warmup-периодом; обрезка нормы градиентов (max_norm = 1,0) обеспечивала стабильность обучения.

Дообучение выполнено посредством LoRA-адаптеров (rank = 8): 48 адаптеров с суммарным числом обучаемых параметров 4,3 млн из 14,5 млн позволили адаптировать модель без полного переобучения весов. Данный подход снижает риск катастрофического забывания и сокращает требования к вычислительным ресурсам при последующей специализации на новых учебных курсах.

Оценка проводилась по пяти метрикам: BLEU, взвешенный BLEU (wBLEU), CodeBLEU, среднее sentence-level BLEU и доля синтаксически корректных программ. Метрика CodeBLEU, предложенная Рен и соавт. [1], учитывает совпадение токенов, ключевых слов языка программирования, структурное сходство абстрактных синтаксических деревьев и сходство потоков данных, что делает её более информативной по сравнению со стандартным BLEU применительно к коду.

Лучший чекпоинт (эпоха 20, val_loss = 1,339) достиг значений, представленных в таблице 2. Устойчивое расхождение между BLEU (0,42) и взвешенным wBLEU (0,97) свидетельствует о том, что модель уверенно воспроизводит ключевые слова Python (def, return, if, for), однако испытывает трудности с точным воспроизведением полных последовательностей при росте их длины.

Таблица 2.

Итоговые метрики качества генерации кода

Модель

BLEU

wBLEU

CodeBLEU

Синтаксис

ExactMatch

Token F1

best_model (эп. 20)

0,42

0,97

0,69

54,0%

35,4%

87,6%

best_finetuned (эп. 25)

0,42

0,97

0,69

54,0%

35,4 %

87,5%

Короткие ф-ции (≤32 ток.)

0,97

100 %

85,7%

Длинные ф-ции (92–191 ток.)

0,08

33,3%

 

Анализ примеров генерации при val_loss = 1,339 показывает, что модель уверенно справляется с короткими однострочными функциями — функциями объединения строк, замены символов, создания счётчиков. Снижение качества на длинных последовательностях объясняется их недостаточной представленностью в обучающей выборке, а не архитектурными ограничениями: модуль дообучения с поддержкой LoRA технически готов к работе с расширенным датасетом.

Разработанная система CodeTransformer демонстрирует применимость для поддержки обучения базовому синтаксису Python: на коротких функциях достигнуты BLEU = 0,97 и ExactMatch = 85,7%. Приоритетным направлением дальнейших исследований является расширение обучающего корпуса за счёт длинных алгоритмически сложных примеров. Открытый исходный код системы обеспечивает образовательным учреждениям независимость от внешних поставщиков и возможность дообучения модели на данных конкретного учебного курса.

Список литературы

  1. Ren, S. CodeBLEU: a method for automatic evaluation of code synthesis / S. Ren, D. Guo, S. Lu [et al.] // arXiv preprint arXiv:2003.08225. – 2020
  2. Vaswani, A. Attention is all you need / A. Vaswani, N. Shazeer, N. Parmar [et al.] // Advances in Neural Information Processing Systems. – 2017. – Vol. 30. – P. 5998–6008
  3. Sennrich, R. Neural machine translation of rare words with subword units / R. Sennrich, B. Haddow, A. Birch // arXiv preprint arXiv:1508.07909. – 2015
  4. Laskari, V. Seq2Code: Transformer-Based Encoder-Decoder Model for Python Source Code Generation / V. Laskari, G. Sanabria, P. S. G. de Oliveira // International Conference on Intelligent Systems and Pattern Recognition. — Springer, 2023. — P. 315–328. — DOI: 10.1007/978-981-19-9225-4_23
  5. Code generation with large language models: a survey from neural program synthesis to autonomous software development // Applied Intelligence. — 2026. — Vol. 56. — Article number 200. — DOI: 10.1007/s10489-026-07230-0
Справка о публикации и препринт статьи
предоставляется сразу после оплаты
Прием материалов
c по
Осталось 4 дня до окончания
Размещение электронной версии
Загрузка материалов в elibrary
Публикация за 24 часа
Узнать подробнее
Акция
Cкидка 20% на размещение статьи, начиная со второй
Бонусная программа
Узнать подробнее