МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
________________________________________
Факультет Инфокоммуникационных сетей и систем
Кафедра Программной инженерии и вычислительной техники
Отчет по преддипломной практике
Предприятие: ГУТ
Период прохождения практики: 23.04.22 – 06.06.22
|
Выполнил Коваленко Леонид Александрович, ИКПИ-84 (Ф.И.О., № группы)
Подпись студента_____________________
Руководитель практики от базы практики:
_____________________________________ (Ф.И.О., Подпись)
Оценка ______________________________
Руководитель практики от кафедры: _____________________________________ (кафедра, Ф.И.О.) _____________________________________ (Подпись)
|
Санкт-Петербург
2022
СОДЕРЖАНИЕ
Введение 3
1.1 Обзор предметной области 5
1.1.1 Введение в предметную область 5
1.1.2 Классификация изображений 6
1.1.3 Классификация текста 7
1.2 Анализ существующих решений 8
1.2.1 MATLAB Deep Learning Toolbox 8
1.2.2 Графические приложения на основе IPython 9
1.2.3 Neural Network Console WinAPP 13
1.2.4 Net Maker 14
1.2.5 Simbrain 15
1.3 Обзор состояния науки о данных и машинного обучения 16
1.4 Выводы 17
Заключение 18
Список использованных источников 18
Искусственная нейронная сеть — математическая модель, а также ее программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей.
Интерес ученых и специалистов области IT к нейронным сетям растет с каждым годом. Все из-за того, что они позволяют гибко решать задачи различного рода подобно человеческому мозгу: сначала обучаясь на некоторых входных данных, а затем применяя накопленные знания на практике. Возрастает потребность в специалистах этой области, а вместе с тем и в упрощении процесса поиска наиболее жизнеспособных гипотез.
Нейронные сети используются для решения бизнес-задач различного уровня сложности. Каждая задача характеризуется набором последовательных шагов, так называемым конвейером машинного обучения (англ. «machine learning pipeline»). Конвейер включает в себя предобработку данных, создание модели нейронной сети, ее обучение, валидацию, тестирование и экспорт для последующего использования. Некоторые части не изменяются от эксперимента к эксперименту, поэтому их можно выделить в группы и использовать повторно.
Целью данной работы является приложение для упрощения процесса разработки нейронных сетей. Приложение предназначено для решения нескольких проблем конструкторов нейронных сетей: разделение и объединение проектов по средам исполнения, повторное использование кода, разработка графических приложений для визуализации обучения и тестирования нейронной сети.
Наиболее распространенным среди исследователей инструментом для обработки данных и построения моделей нейронных сетей является язык программирования Python. В связи с этим, необходимо акцентировать внимание на этом языке, на существующих решениях, которые связаны с использованием этого языка, и их подходами к разработке.
В качестве задач, которые решало бы данное приложение, были выбраны: классификация изображений и классификация текста. Кроме этих задач, приложение должно позволять пользователю выполнять другие задачи машинного обучения.
Для достижения целей работы необходимо выполнить следующие задачи:
Написание формализованных требований;
Создание настольного приложения;
Визуализация тестирования моделей машинного обучения в пределах установленных задач.
Искусственный интеллект — свойство интеллектуальных систем выполнять творческие функции, которые традиционно считаются прерогативой человека [1].
Машинное обучение — распространенный раздел искусственного интеллекта, цель которого не в прямом решении задачи, а в обучении за счет применения решений множества схожих задач.
Задача машинного обучения — с помощью некоторого алгоритма найти закономерности в исходных данных и научится предсказывать ответ.
Нейросети — один из видов машинного обучения. Преимущества нейронных сетей в способности выявлять очень сложные закономерности в исходных данных, в устойчивости к шумам, в высокой степени параллелизма, в способности к обобщению [2].
В качестве решаемых задач выбраны: классификация изображений и классификация текста. Все эти задачи являются примерами так называемого обучения с учителем, т.е. данные представляют собой пары «входов» и «выходов». Входные данные итеративно проходят через модель, вычисляется ошибка, которая затем распространяется через всю модель, благодаря чему она обучается. Есть необходимость в большом количестве размеченных данных (в которых для каждого элемента известен правильный ответ), но, с другой стороны, это позволяет добиваться достаточно высокого качества обучения.
Для выбранных задач чаще всего используется обобщенный конвейер жизненного цикла данных и моделей, изображенный на рисунке 1.1.
Рисунок 1.1 — Обобщенный конвейер машинного обучения
Некоторые шаги конвейера (выбор параметров обучения и валидации, сохранение результатов, экспорт моделей) от задачи к задаче почти не меняются. Чаще всего используется один подготовленный набор данных (англ. «dataset»), а в ходе экспериментов меняются только модели и параметры обучения. Из этого следует, что значительные части кода можно сделать шаблонными для максимального повторного использования.
Задача классификации является одной из самых популярных. Об этом свидетельствует портал «Machine Learning» (PapersWithCode): 3772 научных документов — самое большое среди всех методологий, представленных на портале [3].
Классификация конкретно изображений используется достаточно широко, например, в распознавании рукописных цифр и букв.
Классификация изображений является многоклассовой классификацией; входными данными являются изображения, а выходными —метки классов.
Конвейер машинного обучения может выглядеть следующим образом:
Обработка входного изображения (изменение размера, преобразование цветового пространства и др.);
Искажение изображения (англ. «augmentation») для более качественного обучения модели;
Построение модели;
Настройка параметров обучения;
Запуск обучения.
Визуализация (графики точности и функции потерь, визуализация промежуточных результатов модели);
Экспорт моделей.
Классификация текста — задача, заключающаяся в отнесении документа к одной из нескольких категорий на основании содержания. Является многоклассовой классификацией; входными данными являются тексты, а выходными — метки классов. Применяется для поиска похожих документов, в задаче определения языка, в задаче категоризации новостей.
Анализ тональности текста — задача, заключающаяся в определении эмоциональной окраски (тональности) текста. Является бинарной классификацией; входными данными являются тексты, а выходными — группы «positive» и «negative». Применяется для анализа настроений пользователей, их отношений к чему-либо.
Предобработка текстов может быть различна — приведение к нижнему регистру, удаление служебных слов, удаление пунктуации, стемминг (нахождение основной формы слова), лемматизирование (нахождение правильной словарной формы слова, т.е. леммы) и т.д. Однако любая предобработка может привести к некачественным результатам, например, удаление пунктуации в случае «строить, нельзя сносить», или стемминг в случае «добрый — добро», или приведение к нижнему регистру в случае «периметр — Периметр» (комплекс автоматического управления ответным ядерным ударом).
Текст, в отличие от изображения, в исходном виде не является последовательностью чисел, поэтому его нужно переводить в числовую последовательность. Таким образом, обработка данных для текстов отличается.
MATLAB Deep Learning Toolbox
MATLAB Deep Learning Toolbox предоставляет платформу для проектирования и реализации глубоких нейронных сетей с алгоритмами, предварительно обученными моделями и приложениями [4]. Можно выполнять классификацию и регрессию изображений, временных рядов и текстовых данных. Можно создавать сетевые архитектуры, такие как генеративные состязательные сети (GAN) и сиамские сети (Siamese Network), используя автоматическое дифференцирование, пользовательские циклы обучения и общие веса.
Приложение Deep Network Designer позволяет проектировать, анализировать и обучать сети в графическом виде.
Приложение Experiment Manager позволяет управлять несколькими экспериментами глубокого обучения, отслеживать параметры обучения, анализировать результаты и сравнивать код из разных экспериментов. Можно визуализировать активации слоев и графически отслеживать ход обучения.
Можно импортировать/экспортировать модели из/в формат ONNX (рис. 1.2). Инструментарий поддерживает трансферное обучение (метод, в котором используются предварительно обученные модели) с DarkNet-53, ResNet-50, NASNet, SqueezeNet и многими другими.
Рисунок 1.2 — Возможности импорта и экспорта в MATLAB Deep Learning Toolbox
Скриншот MATLAB Deep Learning Toolbox приведен на рисунке 1.3.
Рисунок 1.3 — MATLAB Deep Learning Toolbox
IPython — интерактивная оболочка, первоначально разработанная для языка программирования Python, которая предлагает визуализацию данных, поддержку некоторых инструментариев GUI, командный синтаксис, подсветку кода, автоматическое дополнение, параллельные вычисления.
К графическим приложениям на основе IPython относятся:
JupyterLab и Jupyter-Notebook (Desktop) (рис. 1.4) [5];
Visual Studio Code Jupyter-Notebooks Extension (Desktop) (рис. 1.5) [6];
Google Colaboratory (Web) (рис. 1.6) [7];
Kaggle Notebooks (Web) (рис. 1.7) [8];
Paperspace Gradient (Web) (рис. 1.8) [9];
Amazon SageMaker Studio Lab (Web) (рис. 1.9) [10];
Microsoft Azure Notebooks (Web) (рис. 1.10) [11].
Отличия во внешнем виде и некоторых дополнительных функциях.
Рисунок 1.4 — JupyterLab
Рисунок 1.5 — Visual Studio Code, Jupyter-Notebooks Extension
Рисунок 1.6 — Google Colaboratory
Рисунок 1.7 — Kaggle Notebooks
Рисунок 1.8 — Paperspace Gradient
Рисунок 1.9 — Amazon SageMaker Studio Lab
Рисунок 1.10 — Microsoft Azure Notebooks
Neural Network Console WinAPP
Neural Network Console WinAPP — настольное приложение, разработанное компанией Sony, являющееся конструктором нейронных сетей (рис. 1.11) [12]. Позволяет достаточно гибко выстраивать различные архитектуры.
Рисунок 1.11 — Neural Network Console WinAPP
Приложение может быть полезно для исследовательских целей.
Имеются инструменты AutoML — автоматическая оптимизация структуры моделей и поиск наиболее подходящих архитектур. Однако эти инструменты нельзя детально настраивать, из-за чего исследователь может лучше знать, как выстроить поиск, чем это сделает алгоритм.
Net Maker
NetMaker — бесплатный пакет для построения нейронных сетей (рис. 1.12) [13]. Был разработан в первую очередь для классификации взаимодействия частиц в экспериментах по физике высоких энергий.