Введение 3
Постановка задачи 4
Глава 1. Архитектура модели 5
1.1. Обзор литературы 5
1.2. Основные принципы моделей оценки качества 6
1.3. Структура модели 7
1.4. Обучение 10
1.5. Обзор RLHF подхода 11
1.6. Статистические тесты 13
Глава 2. Детали реализации и анализ экспериментов 15
2.1. Датасет 15
2.2. Сравнение архитектур финальной головы 16
2.3. Изучение влияния порога чувствительности на точность пред¬сказаний модели 18
2.4. Оценка качества ответов с помощью GPT-4 19
2.5. Анализ полученного статистического критерия и детали его
применения 26
Заключение 27
Список литературы 28
Приложение
Большие языковые модели (LLM) за последние несколько лет начали
широко применяться во многих областях. Одной из наиболее перспективных является ассистирование в программировании, причем не только в качестве простого генератора программного кода, но и в качестве полноценной
вопросно-ответной системы, агрегирующий в себе множество знаний. Взаимодействие с такой моделью осуществляется посредством промптов (prompts),
представляющими собой сообщения на естественном языке, в которых человек описывает вопрос или команды, которые необходимо исполнить языковой
модели. Некоторые модели могут обрабатывать промпты, содержащие дополнительные данные, например сниппеты кода - небольшие части программного
кода. В ответах таких моделей, конечно, тоже могут содержаться сниппеты
кода или другие виды данных помимо текста на естественном языке.
Языковые модели имеют множество преимуществ: скорость ответа, простота использования и большой объем агрегированной информации, полученной при обучении. Однако важными недостатками являются необходимость
специализированных аппаратных ускорителей (GPU) для использования модели, возможные ошибки в ответе и возможная плохая читаемость самого
ответа, который становится слишком запутанным и может содержать много
лишней информации.
В этой работе описано создание новой архитектуры для оценки качества
ответа на вопрос по программированию на Python с точки зрения человека,
т.е. учитывая релевантность ответа, понятность и читаемость самого кода и
т.д.. Модель использует и LLM для извлечения семантических эмбеддингов
и последующей генерации из них признаков релевантности, и статические
метрики кода для генерации признаков, что обеспечивает высокую скорость
работы и интерпретируемость самой модели. Весь проект с открытым исходным кодом и доступен на Github1, вместе с обученной моделью (датасет -
архив Stack Overflow 2022) и удобным пайплайном, позволяющим легко использовать модель. Также проведено множество экспериментов для изучения
влияния различных решений по архитектуре самой модели и фильтрации
1https://github.com/VencelB/Copper
3датасета на точность предсказаний. Кроме того, проведено сравнение предлагаемой модели с GPT-4 и выяснено, что в ряде сценариев наша модель
показывает сопоставимую точность, требуя значительно меньше ресурсов. И
наконец, экспериментально изучена мощность статистических критериев для
сравнения качества ответов, использующих предлагаемую модель, и показано, что такой критерий может не только отличать хорошие ответы от плохих,
но и плохие ответы от совсем бесполезных и некорректных, то есть имеет
достаточно неплохую чувствительность.
Проведенное исследование продемонстрировало высокий потенциал
перспектив внедрения моделей машинного обучения в бизнес-процессы, потенциально позволяя достичь значительного снижения количества требуемых
ресурсов в процессе разработки вопросно-ответных моделей-ассистентов.
Фактически, предложенная модель представляет собой способ оценки изменений без участия людей, который может быть использован для оценки таких
трудно формализуемых критериев как воспринимаемость или понятность,
важно подчеркнуть, что построенная модель достаточно хорошо интерпретируема и позволяет не только получить некоторую количественную оценку,
но и показать сильные и слабые стороны ответа, обозначая потенциальные
точки роста вопросно-ответной LLM.
Хотя RLHF-решения показали чуть более точные результаты, предлагаемая нами модель имеет несколько весомых преимуществ:
Во-первых, она требует немного памяти GPU, использование предложенного end-to-end пайплайна требует не более 12 гигабайт памяти, в то время
как для развертывания LLM и основанных на них reward-моделей требуются
сотни гигабайт памяти, а точность предсказаний в pointwise варианте задачи
не хуже, чем у GPT-4,
Во-вторых, предлагаемая модель может не только сказать какая из версий модели хуже, но и дать численную оценку того насколько сильной была
27деградация, и как было выяснено в ходе экспериментов, вполне способна
отличить не очень хорошие ответы от совсем плохих, а также, благодаря
своей структуре, предоставить множество хорошо интерпретируемых метрик
качества, которые могут быть полезны при анализе работы LLM-модели,
И наконец, предлагаемая модель с полностью открытым исходным кодом6, включая датасет, так что ее можно дообучить на задачи своего домена
(например, не на ответы по языку Python, а ответы по data science библиотекам
языка Python), повышая точность именно на той задаче, которая необходима.
Безусловно, проведенное исследование не исчерпывает всех возможностей внедрения подобных подходов - наоборот, оно демонстрирует множество
потенциальных точек роста для предложенного решения. Одним из наиболее
полезных и перспективных направлений дальнейшей работы в этой области
является уменьшение размера используемой в нем языковой модели без потери точности, что позволило бы лишь улучшить наиболее сильные стороны
созданной модели оценки качества - хорошее соотношение точности предсказаний и размера модели, что оставляет большой простор для дальнейших
исследований темы.
[Dewangan et al.(2021)] Seema Dewangan, Rajwant Singh Rao, Alok Mishra, and Manjari Gupta. 2021. A novel approach for code smell detection: an empirical study. IEEE Access 9(2021), 162869-162883.
[Lavazza et al.(2023)] Luigi Lavazza, Abedallah Zaid Abualkishik, Geng Liu, and Sandro Morasca. 2023. An empirical evaluation of the “Cognitive Complexity” measure as a predictor of code understandability. Journal of Systems and Software 197 (2023), 111561.
[Meldrum et al.(2020)] Sarah Meldrum, Sherlock A. Licorish, Caitlin A. Owen, and Bastin Tony Roy Savarimuthu. 2020. Understanding stack overflow code quality: A recommendation of caution. Science of Computer Programming 199 (2020), 102516.
[Ouyang et al.(2022)] Long Ouyang, Jeffrey Wu, Xu Jiang, Diogo Almeida, Carroll Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, et al. 2022. Training language models to follow instructions with human feedback. Advances in Neural Information Processing Systems 35 (2022), 27730-27744.
[Papamichail et al.(2016)] Michail Papamichail, Themistoklis Diamantopoulos, and Andreas Symeonidis. 2016. User-perceived source code quality estimation based on static analysis metrics. In 2016 IEEE International Conference on Software Quality, Reliability and Security (QRS). IEEE, 100-107.
[Sharma et al.(2019)] Tushar Sharma, Vasiliki Efstathiou, Panos Louridas, and Diomidis Spinellis. 2019. On the feasibility of transfer-learning code smells using deep learning. arXivpreprint arXiv:1904.03031 (2019).