Настройка малоразмерных сверточных нейронных сетей классификации изображений с использованием генетического алгоритма

Дипломная работа, в ходе выполнения которой рассмотрены основные принципы работы используемые в сверточных нейронных сетей, произведен обзор существующих архитектур сверточных нейросетей предназначенных для классификации изображений и показано превосходство данного алгоритма при решении этой задачи. Также была рассмотрена задача настройки гиперпараметров нейросети и ее возможные решения. Наилучшие результат показывают алгоритмы на основе градиентного спуска и генетические алгоритмы, немного уступает им байесовская оптимизация.
Author image
Radik
Тип
Дипломная работа
Дата загрузки
05.10.2022
Объем файла
1935 Кб
Количество страниц
65
Уникальность
Неизвестно
Стоимость работы:
2240 руб.
2800 руб.
Заказать написание работы может стоить дешевле

ВВЕДЕНИЕ

В настоящее время сверточные нейронные сети с каждом годом становятся все более популярными для решения задач классификации, сегментации, детекции, прогнозирования и т.д. Сверточная нейронная сеть - это архитектура искусственной нейронной сети, предложенная в 1988 году Яном Лекуном [1], структура которой заключается в чередовании сверточных слоев и слоев подвыборки, является вариантом глубокой нейросети – искусственной нейронной сети с несколькими слоями между входом и выходом[2]. Искусственная нейронная сеть в свою очередь представляет собой математическую модель применяемую в глубоком обучении, а также ее программное воплощение, построенное по принципу организации и функционирования биологических нейронных сетей [3]. Всплеск интереса к данной области машинного обучения, произошел в 2012 году, когда А. Крижевским и его командой была разработана сверточная нейронная сеть [5], победившая в крупном конкурсе ImageNet с большим преимуществом по сравнению с классическими методами ма

СОДЕРЖАНИЕ

Введение 8

1 Сверточные нейронные сети 10

1.1 Структура сверточной нейронной сети 10

1.1.1 Сверточный слой 11

1.1.2 Субдискретизирующий слой 14

1.1.3 Полносвязный слой 15

1.2 Обзор известных архитектур сверточных нейронных сетей классификации изображений 16

1.2.1 AlexNet 16

1.2.2 ZFNet 17

1.2.3 VGGNet 18

1.2.4 GoogLeNet 19

1.2.5 Inception-v2 и Inception-v3 20

1.2.6 ResNet 21

1.3 Обзор архитектур малоразмерных сверточных нейронных сетей 22

1.3.1 SqueezeNet 22

1.3.2 MobileNet 24

1.3.3 EfficientNet 25

1.4 Выводы по главе 1 26

2 Настройка сверточных нейронных сетей 27

2.1 Поиск по сетке 28

2.2 Случайный поиск 29

2.3 Байесовская оптимизация 30

2.4 Оптимизация на основе градиента 31

2.5 Оптимизация с использованием генетического алгоритма 32

2.6 Выводы по главе 2 33

3 Обзор применения генетических алгоритмов для настройки сверточных нейронных сетей 34

3.1 Самоконфигурируемый генетический алгоритм 34

3.2 Устойчивый генетический алгоритм 35

3.3 Поколенческий генетический алгоритм 35

3.4 Генетический алгоритм со стратегией элитизма 36

3.5 Вывод по главе 3 37

4 Способы реализации генетических алгоритмов для сверточных нейронных сетей классификации изображений 38

4.1 PyGAD 38

4.2 DEAP 39

4.3 TPOT 41

4.4 FEDOT 42

4.5 DEvol 42

4.6 TUNE 43

4.7 Другие методы 44

4.8 Выводы по главе 4 44

5 Тестирование методов настройки сверточных нейронных сетей классификации изображений 48

5.1 Реализация 48

5.2 Тест №1 49

5.3 Тест №2 51

5.4 Вывод по главе 5 53

6 Полное обучение сверточной нейронной сети классификации изображений с помощью генетического алгоритма 54

6.1 Реализация 54

6.2 Тест 54

6.3 Вывод по главе 6 55

7 Финишное обучение сверточной нейронной сети классификации изображений с использованием генетического алгоритма 56

7.1 Реализация 56

7.2 Тест 56

7.3 Вывод по главе 6 56

8 Подбор архитектуры сверочной нейронной сети классификации изображений с использованием генетического алгоритма 57

8.1 Реализация 57

8.2 Тест 57

8.3 Вывод по главе 8 61

9 Совмещение методов применения генетического алгоритма к настройке нейросетей 63

9.1 Тест и реализация 63

9.2 Вывод по главе 9 64

Заключение 66

Список используемых источников 67

Приложение А. Программаный код реализации случайного поиска и поска при помощи байесовской реализации 73

Приложение Б. Программный код реализации поиска по сетке 73

Приложение В. Программный код реализации генетического поиска по сетке 73

Приложение Г. Программный код реализации прямого генетического подхода 73

Приложение Д. Прогораммный код реализации полного обучения сети с использованием генетического алгоритма 73

Приложение Е. Программный код реализации дообучения сети 73

Приложение Ж. Программная реализация подбора архитектуры 73

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

1. Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard and L. D. Jackel: Backpropagation Applied to Handwritten Zip Code Recognition, Neural Computation, 1(4):541-551, Winter 1989.

2. Bengio, Yoshua.: Learning Deep Architectures for AI. In: Foundations and Trends in Machine Learning. 2 (1): 1–127.(2009) 

3. Нейронная сеть // Большая российская энциклопедия: [в 35 т.] / гл. ред. Ю. С. Осипов. — М. : Большая российская энциклопедия, 2004—2017.

4. Ян Лекун.: Как учится машина. Революция в области нейронных сетей и глубокого обучения. (Библиотека Сбера: Искусственный интеллект). — М.: Альпина нон-фикшн. (2021)

5. Krizhevsky, Alex; Sutskever, Ilya; Hinton, Geoffry.: ImageNet Classification with Deep Convolutional Neural Networks. In: NIPS 2012: Neural Information Processing Systems, Lake Tahoe, Nevada. (2012)

6. Javaheripi, M., Samragh, M., Javidi, T., & Koushanfar, F. (2020). GeneCAI: genetic evolution for acquiring compact AI. Proceedings of the 2020 Genetic and Evolutionary Computation Conference.

7. Hof, Robert D.: Is Artificial Intelligence Finally Coming into Its Own? In: MIT Technology Review. (2018) 

8. Claesen, Marc, Bart De Moor.: Hyperparameter Search in Machine Learning. (2015)

9. Галушкин А. И. Синтез многослойных систем распознавания образов. — М.: «Энергия», 1974.

10. Rumelhart D.E., Hinton G.E., Williams R.J., Learning Internal Representations by Error Propagation. In: Parallel Distributed Processing, vol. 1, pp. 318—362. Cambridge, MA, MIT Press. 1986

11. Ian Goodfellow, Yoshua Bengio, Aaron Courville. 2016. Deep Learning. MIT Press, Massachusetts, US.

12. Тилаб, Ахмед (01.12.2018). «Прогнозирование временных рядов с использованием методологий искусственных нейронных сетей: систематический обзор» . Журнал Future Computing and Informatics . 3 (2): 334–340

13. Krizhevsky, Alex; Sutskever, Ilya; Hinton, Geoffrey E. (2017-05-24). "ImageNet classification with deep convolutional neural networks"

14. Geoffrey Hinton, Nitish Srivastava, Alex Krizhevsky, Ilya Sutskever, Ruslan R Salakhutdinov. 2012. Improving neural networks by preventing coadaptation of feature detectors. arXiv preprint arXiv:1207.0580

15. Matthew D Zeiler, Rob Fergus. 2014. Visualizing and understanding convolutional networks. European conference on computer vision, pp. 818-833. Springer International Publishing.

16. Karen Simonyan, Andrew Zisserman. 2014. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.

17. Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich. 2015. Going deeper with convolutions. The IEEE Conference on Computer Vision and Pattern Recognition, pp. 1-9

18. Sergey Ioffe, Christian Szegedy, 2015. Batch normalization: Accelerating deep network training by reducing internal covariate shift. arXiv preprint arXiv:1502.03167.

19. Geoffrey Hinton, Nitish Srivasta, Kevin Swersky. 2012. «Lecture 6a Overview of Mini – Batch Gradient Descent» 

20. Razvan Pascanu, Tomas Mikolov, Yoshua Bengio. 2013. On the difficulty of training recurrent neural networks. ICML 28(3), pp. 1310-1318.

21. Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. 2016. Deep residual learning for image recognition. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 770-778

22. Zifeng Wu, Chunhua Shen, Anton van den Hengel. 2016. Wider or Deeper: Revisiting the ResNet Model for Visual Recognition arXiv preprint arXiv:1611.10080

23. F. N. Iandola, S. Han, M. W. Moskewicz, K. Ashraf, W. J. Dally and K. Keutzer, "SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size", 2016

24. Z. Wentao, G. Lan and Z. Zhisong, "Garbage Classification and Recognition Based on SqueezeNet," 2020 3rd World Conference on Mechanical Engineering and Intelligent Manufacturing (WCMEIM), 2020, pp. 122-125, doi: 10.1109/WCMEIM52463.2020.00032

25. Howard, Andrew & Zhu, Menglong & Chen, Bo & Kalenichenko, Dmitry & Wang, Weijun & Weyand, Tobias & Andreetto, Marco & Adam, Hartwig. (2017). MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications. 

26. F. Chollet, "Xception: Deep Learning with Depthwise Separable Convolutions," 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017, pp. 1800-1807, doi: 10.1109/CVPR.2017.195.

27. Mingxing Tan, Quoc V. Le: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks. CoRR abs/1905.11946 (2019)

28. Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Quoc V. Le: MnasNet: Platform-Aware Neural Architecture Search for Mobile. CoRR abs/1807.11626 (2018)

29. Hussain Alibrahim; Simone A. Ludwig.: Hyperparameter Optimization: Comparing Genetic Algorithm against Grid Search and Bayesian Optimization. In: IEEE Congress on Evolutionary Computation (CEC). (2021)

30. Ari Nugroho; Heru Suhartanto.: Hyper-Parameter Tuning based on Random Search for DenseNet Optimization. In: 7th International Conference on Information Technology, Computer, and Electrical Engineering (ICITACEE). (2020)

31. Prasanna Balaprakash; Michael Salim; Thomas D. Uram; Venkat Vishwanath; Stefan M. Wild.: DeepHyper: Asynchronous Hyperparameter Search for Deep Neural Networks. In: IEEE 25th International Conference on High Performance Computing (HiPC). (2018)

32. James Bergstra, Yoshua Bengio. Random Search for Hyper-Parameter Optimization. In: J. Machine Learning Research. (2012)

33. Hutter F., Hoos H.H., Leyton-Brown K. Sequential Model-Based Optimization for General Algorithm Configuration. In: Proceedings of the conference on Learning and Intelligent OptimizatioN (LION 5).  Rome, Italy: Springer-Verlag, (2011)

34. James Bergstra, Remi Bardenet, Yoshua Bengio, Balazs Kegl. Algorithms for hyper-parameter optimization. In: Advances in Neural Information Processing Systems. (2011)

35. Jasper Snoek, Hugo Larochelle, Ryan Adams. Practical Bayesian Optimization of Machine Learning Algorithms. In: Advances in Neural Information Processing Systems. (2012)

36. Chris Thornton, Frank Hutter, Holger Hoos, Kevin Leyton-Brown. Auto-WEKA: Combined selection and hyperparameter optimization of classification algorithms. In: Knowledge Discovery and Data Mining. (2013)

37. Martin Wistuba; Nicolas Schilling; Lars Schmidt-Thieme.: Learning hyperparameter optimization initializations. In: IEEE International Conference on Data Science and Advanced Analytics (DSAA). (2015)

38. Chiara Di Francescomarino, Marlon Dumas, Marco Federici, Chiara Ghidini, Fabrizio Maria Maggi, Williams Rizzi, Luca Simonetto.: Genetic Algorithms for Hyperparameter Optimizationin Predictive Business Process Monitoring. In: FBK-IRST, Via Sommarive 18, 38123 Trento, Italy; University of Tartu, ¨Ulikooli 18, 50090 Tartu, Estonia; University of Amsterdam, 1012 WX Amsterdam, The Netherlands; University of Trento, Via Sommarive 9, 38123 Trento, Italy. (2018)

39. Han Shu , Yunhe Wang.: Automatically Searching for U-Net Image Translator Architecture. In: Huawei Noah’s Ark Lab. (2020)

40. Semenkin E., Semenkina M. Self-configuring genetic algorithm with modified uniform crossover operator // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). 2012. 7331 LNCS (PART 1). P. 414–421.

41. Федотов Д.В., Попов Е.А., Охорзин В.А. Оптимизация структуры сверточной нейронной сети с помощью самоконфигурируемого эволюционного алгоритма в одной задаче идентификации // Сибирский аэрокосмический журнал. 2015. №4. URL: https://cyberleninka.ru/article/n/optimizatsiya-struktury-svertochnoy-neyronnoy-seti-s-pomoschyu-samokonfiguriruemogo-evolyutsionnogo-algoritma-v-odnoy-zadache (дата обращения: 20.01.2022).

42. Esfahanian Parsa, Akhavan Mohammad. GACNN: Training Deep Convolutional Neural Networks with Genetic Algorithm. (2019)

43. F. Vavak, T. C. Fogerty.: A comparative study of steady state and generational genetic algorithms for use in non stationary environment. In: Faculty of Computer Studies and Mathematics University of the West of England. (1996)

44. Alison Jenkins, Vinika Gupta, Alexis Myrick, Mary Lenoir: Variations of Genetic Algorithms. CoRR abs/1911.00490 (2019)

45. Ahmed Fawzy Gad. PyGAD: An Intuitive Genetic Algorithm Python Library. In: School of Electrical Engineering and Computer Science,  University of Ottawa. (2021)

46. Harris, C.R., Millman, K.J., van der Walt, S.J. et al. Array programming with NumPy. Nature 585, 357–362 (2020). https://doi.org/10.1038/s41586-020-2649-2

47. Keras // https://keras.io (дата обращения 13.05.2022)

48. Paszke. PyTorch: An Imperative Style, High-Performance Deep Learning Library. In: Advances in Neural Information Processing Systems 32. Curran Associates, Inc., pp. 8024–8035 (2019)

49. De Grainville, François-Michel & Fortin, Felix-Antoine & Gardner, Marc-André & Parizeau, Marc & Gagné, Christian.  DEEP: A Python framework for Evolutionary Algorithms. In: GECCO'12 - Proceedings of the 14th International Conference on Genetic and Evolutionary Computation Companion. 85-92. (2012)

50. Olson, R.S., Moore, J.H. TPOT: A Tree-Based Pipeline Optimization Tool for Automating Machine Learning. In: Hutter, F., Kotthoff, L., Vanschoren, J. (eds) Automated Machine Learning. (2019)

51. Pedregosa, Fabian & Varoquaux, Gael & Gramfort, … Gilles. Scikit-learn: Machine Learning in Python. Journal of Machine Learning Research. (2012)

52. Fedot // https://github.com/nccr-itmo/FEDOT (дата обращения 13.05.2022)

53. DEvol - Deep Neural Network Evolution // https://github.com/joeddav/devol (дата обращения 13.05.2022)

54. Tune: Scalable Hyperparameter Tuning // https://docs.ray.io/en/latest/tune/index.html (дата обращения 13.05.2022)

55. Determined AI // https://www.determined.ai (дата обращения 13.05.2022)

56. Evolve a neural network with a genetic algorithm, https://github.com/harvitronix/neural-network-genetic-algorithm, последнее посещение 13.05.2022.

57. Neuro-evolution // https://github.com/subpath/neuro-evolution (дата обращения 13.05.2022)

58. KerasTuner // https://keras.io/keras_tuner (дата обращения: 12.05.2022)

59. Sklearn-genetic-opt // https://sklearn-genetic-opt.readthedocs.io/en/stable (дата обращения 12.05.2022)

До начала каждого из циклов проиходит пересчет вероятности для операторов. При выполнении критерия остановки работа генетического алгоритма завершается.
Исходя из описанных преимуществ, исследователями из Сибирского государственного аэрокосмического института алгоритм SelfCGA был выбран для настройки структуры сверточной нейронной сети для задачи идентификации [41]. Авторами было проведено исследовании, в ходе которого ставилась задача определения возраста по фотографии. Задача генетического алгоритма состояла в определении начальных весов, в обычной сети они генерируются случайным образом, что дает некоторую гарантию не попадания функции ошибки в локальный оптимум при применении метода обратного распространения ошибки во время обучения. Также SelfCGA применялся для настройки самой структуры сети и настраивал такие гиперпараметры как количество сл