В этой теме соединены основы глубокого обучения и вычислительная графика. Классификатор на ирисах считается базовым примером в машинном обучении, однако его визуализация во времени требует строгого контроля за шагами градиентного спуска и грамотной работы с размерностями признаков.
Предобработка признаков и снижение размерности
Датасет Iris содержит 150 записей по 50 экземпляров трех видов: Setosa, Versicolor и Virginica. Каждый образец описывается четырьмя признаками. Напрямую построить двумерный график разделяющих плоскостей для четырех измерений невозможно. В расчетной части нужно решить этот вопрос одним из двух способов. Первый путь заключается в выборе двух наиболее информативных признаков, которыми обычно выступают длина и ширина лепестка (petal length и petal width). Второй путь предполагает применение метода главных компонент (PCA) для сжатия четырех признаков в две ортогональные координаты. Входные данные обязательно масштабируют через стандартизацию Z-оценкой или нормализацию в диапазон от нуля до единицы, иначе градиентный спуск будет сходиться медленно и неравномерно.
Архитектура классификатора и логирование параметров
Для уверенного разделения нелинейных классов Versicolor и Virginica потребуется многослойный перцептрон с одним скрытым слоем на 4–8 нейронов. Выходной слой содержит три нейрона с функцией активации Softmax, которая выдает вероятности принадлежности объекта к каждому классу. Для визуализации процесса обучения стандартный цикл подгонки модели дополняют механизмом сохранения промежуточных состояний. На каждой эпохе или каждые 5–10 шагов оптимизатора скрипт записывает значения матриц весов, векторов смещений, функции потерь Cross-Entropy и показателя точности. Этот массив сохраненных численных срезов служит кадрами для будущей визуализации.
Построение динамических разделяющих поверхностей
Отрисовка границ решений выполняется генерацией двумерной сетки с мелким шагом через функцию координатной сетки в выбранном диапазоне признаков. Все точки этой сетки пропускаются через сеть в текущем состоянии весов, определяя преобладающий класс для каждого сектора плоскости. С помощью средств контурной заливки плоскость окрашивается в три цвета, поверх которых наносятся реальные точки обучающей выборки. По мере прохождения эпох зритель видит трансформацию разделяющих линий от случайного начального положения к четкому обособлению классов.
Что проверяет преподаватель
На защите внимание обращают на математическую обоснованность алгоритмов и корректность программной реализации. Преподаватель оценивает следующие аспекты:
- Правильность расчета частных производных и обновления весов алгоритмом обратного распространения ошибки.
- Корректность многоклассовой границы решений с тремя цветовыми зонами вместо сведения задачи к бинарной классификации.
- Чистоту разделения данных на обучающую и тестовую выборки без утечки информации при масштабировании признаков.
- Связность анимации и отсутствие резких паразитных скачков линий, вызванных завышенным шагом обучения.
Источники данных и программный стек
Исходный набор данных берут из открытого репозитория UCI Machine Learning или загружают напрямую из библиотеки scikit-learn. Для теоретического описания алгоритма опираются на классические университетские учебники по нейронным сетям и машинному обучению. В качестве инструментов разработки оптимален язык Python. Нейросеть можно написать на чистом модуле NumPy для демонстрации глубокого понимания формул либо использовать фреймворки PyTorch или TensorFlow. Для построения кадров и генерации файлов анимации подходят библиотеки Matplotlib с модулем FuncAnimation, а также интерактивные среды Plotly или Streamlit.
Частые вопросы
Писать ли алгоритм обратного распространения вручную или брать готовый фреймворк?
Для курсовой работы по информатике реализация прямого и обратного проходов на NumPy приветствуется выше, так как она подтверждает знание матричного дифференцирования. Если кафедра требует PyTorch, используйте его, но логируйте градиенты весов вручную через хуки или обращение к параметрам.
Как представить анимацию в печатном отчете курсовой работы?
В текст пояснительной записки помещают статичную раскадровку из 4–6 ключевых эпох, например для шагов 0, 10, 50, 100, 300 и 1000. В подписях к рисункам указывают значение функции потерь и точности на данном шаге, а полную анимацию в формате GIF или MP4 прикладывают к проекту на электронном носителе.
С какой частотой нужно сохранять кадры для плавного видео?
На первых двадцати эпохах веса меняются быстро, поэтому кадры целесообразно сохранять каждую эпоху. После стабилизации функции потерь шаг сохранения можно увеличить до одного кадра каждые 10–20 эпох, чтобы анимация не получилась затянутой и статичной ближе к концу.