Разработка программной платформы для оптимизации гиперпараметров

Цель работы – разработка программной платформы для выполнения оптимизации гиперпараметров
Author image
Timur
Тип
Дипломная работа
Дата загрузки
16.01.2023
Объем файла
2135 Кб
Количество страниц
30
Уникальность
Неизвестно
Стоимость работы:
2400 руб.
3000 руб.
Заказать написание работы может стоить дешевле

ВВЕДЕНИЕ
В связи с большим количеством программного обеспечения, разрабатываемого на языках высокого уровня, актуальным является вопрос об эффективности используемых алгоритмов и их оптимальной настройке.
Множество алгоритмов, в том числе машинного обучения, могут принимать на вход веса, различные предположения, характеристики для их работы. Параметры, значения которых определяются непосредственно перед запуском и не меняют своего значения во время исполнения алгоритма, называются гиперпараметрами. 
Конкретный набор значений гиперпараметров является оптимальным, если целевая функция достигает экстремальных значений на этом наборе. Не существует строгого способа выбора значений гиперпараметров, поэтому для достижения наилучших результатов необходимо перебрать некоторое количество их комбинаций.
На практике гиперпараметры часто настраиваются исследователями вручную методом проб и ошибок. Это требует значительных затрат времени и вычислений.
С целью ускорения процесса поиска оптимальной комбинации гиперпараметров создаются программные платформы и библиотеки оптимизации. Часто алгоритмы, подлежащие оптимизации, очень затратны по времени, поэтому очень важно использовать оптимальные алгоритмы оптимизации.

 

СОДЕРЖАНИЕ

ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ 4

ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И ОБОЗНАЧЕНИЙ 5

ВВЕДЕНИЕ 6

1 Проектно-исследовательский раздел 8

1.1 Обзор предметной области и постановка задачи 8

1.2 Обзор алгоритмов оптимизации гиперпараметров 10

1.3 Разработка диаграммы классов 14

1.4 Разработка схемы хранения данных 19

2 Технологический раздел 25

2.1 Детали реализации программной платформы 25

2.2 Тестирование платформы и результаты работы 31

ЗАКЛЮЧЕНИЕ 51

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 52

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Opentuner: An extensible framework for program autotuning [Электронный ресурс] - URL: https://opentuner.org/ (дата обращения 20.05.2022)

2. Hyperopt [Электронный ресурс]: Github. - URL: https://github.com/hyperopt/hyperopt (дата обращения 20.05.2022).

3. Spearmint [Электронный ресурс]: Github. - URL: https://github.com/HIPS/Spearmint (дата обращения 20.05.2022).

4. Ю.Е Нестеров. Методы выпуклой оптимизации. -М:МЦНМО, 2010. – 281 c.

5. Оптимизация гиперпараметров [Электронный ресурс]: Википедия. Свободная энциклопедия. – URL: https://ru.wikipedia.org/wiki/Оптимизация_гиперпараметров (дата обращения: 26.05.2022).

6. Г. Буч, Д. Рамбо, И. Якобсон. Язык UML. Руководство пользователя. -М:ДМК, 2006. – 494 с.

7. PlantUML [Электронный ресурс] – URL: https://plantuml.com/ru/ (дата обращения: 20.05.2022).

8. Илюшечкин В.М. Основы использования и проектирования баз данных: учебник академического бакалавриата М.:Издательство Юрайт; ИД Юрайт, 2014. 

9. Смирнов Н. В. Проектирование информационных систем [Текст]: Пособие по курсовому проектированию –СПб : БГТУ «Военмех» им. Д. Ф. Устинова, 2009.

10. Иванова Г. С. Технологии программирования: Учебник для вузов. М.: Изд-во МГТУ им. Н. Э. Баумана, 2006. 336 с.

11. Python [Электронный ресурс] – URL: https://www.python.org/ (дата обращения 26.05.2022)

12. Git [Электронный ресурс] – URL: https://git-scm.com/ (дата обращения 26.05.2022)

13. Python-Poetry [Электронный ресурс] – URL: https://python-poetry.org/ (дата обращения 26.05.2022)

14. ORM [Электронный ресурс]: Википедия. Свободная энциклопедия. – URL: https://ru.wikipedia.org/wiki/ORM (дата обращения: 26.05.2022).

15. Scikit-optimize [Электронный ресурс] – URL: https://scikit-optimize.github.io/stable/ (дата обращения 26.05.2022)

16. Rich [Электронный ресурс] – URL: https://rich.readthedocs.io/en/stable/introduction.html (дата обращения 26.05.2022)

17. Numpy [Электронный ресурс] – URL: https://numpy.org/ (дата обращения 26.05.2022)

18. Pandas [Электронный ресурс] – URL: https://pandas.pydata.org/ (дата обращения 26.05.2022)

19. Pytest [Электронный ресурс] – URL: https://docs.pytest.org/ (дата обращения 26.05.2022)

20. Контейнеризация [Электронный ресурс]: Википедия. Свободная энциклопедия. – URL: https://ru.wikipedia.org/wiki/Контейнеризация (дата обращения: 26.05.2022).

21. Docker [Электронный ресурс] – URL: https://www.docker.com/ (дата обращения 26.05.2022)

22. Различные виды тестирования ПО [Электронный ресурс]: Atlassian – URL: https://www.atlassian.com/ru/continuous-delivery/software-testing/types-of-software-testing (дата обращения 26.05.2022)

23. Методология разработки CI/CD [Электронный ресурс]: Selectel – URL: https://selectel.ru/blog/what-is-ci-cd/ (дата обращения 26.05.2022)

24. Actions [Электронный ресурс]: Github – URL: https://github.com/features/actions (дата обращения 26.05.2022)

25. Kaggle [Электронный ресурс] – URL: https://www.kaggle.com/ (дата обращения 26.05.2022)

26. Sklearn [Электронный ресурс] – URL: https://scikit-learn.org/stable/ (дата обращения 26.05.2022)

27. Raytracer [Электронный ресурс]: Scratchpixel – URL: https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing (дата обращения 26.05.2022)

28. Matrix-multiply [Электронный ресурс]: Github – URL:  https://github.com/jansel/opentuner/blob/master/examples/gccflags/apps/matrixmultiply.cpp (дата обращения 26.05.2022) 

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