Набор данных MNIST (модифицированный Национальный институт стандартов и технологий) представляет собой большую базу данных рукописных цифр, которая обычно используется для обучения различных моделей классификации рукописного ввода.

Исходный код



Эта пользовательская модель, разработанная для классификации почерка MNIST, не основана на каких-либо фреймворках машинного обучения, а полностью написана с использованием numpy с нуля. Он следует структуре модели глубокого обучения сверточной нейронной сети (CNN), которая состоит из трех основных сегментов: Сверточный слой, за которым следует Объединяющий слой, являющийся результатом который передается в полностью подключенный слой, которыйиспользует функцию активации регрессии Softmax на своем выходе для точной классификации пикселя 28x28 введите рукописное изображение в одну из 10 цифр (0,1,2,3,4,5,6,7,8,9).

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

Слой свертки использует фильтр для извлечения характерных признаков из входного изображения размером 28x28 пикселей и преобразования его в карту объектов размером 26x26 пикселей. Фильтр, также известный как ядро, используемый для этой модели, представляет собой матрицу 3x3, показанную на рис. 1ниже.

Объединяющий слой

Слой пула используется для уменьшения размера входных данных до более управляемых и полезных данных без значительной потери функций. Слой объединения для этой модели принимает изображение размером 26x26 пикселей в качестве входных данных и использует алгоритм среднего объединения для вывода изображения размером 13x13 пикселей.

Несмотря на то, что размер входных данных для модели обучения или прогнозирования уменьшен вдвое по сравнению с исходным размером, модель работает хорошо благодаря процедуре извлечения признаков, используемой в свернутом слое с использованием ядра. Таким образом, несмотря на то, что количество входных признаков для полносвязного слоя уменьшено с 784 до 169, функционирование модели по-прежнему зависит от выдающихся признаков, в результате чего получается надежная модель.

Визуализация данных

Выходные данные каждого слоя для исходных данных изображения (рис. 2.1) показаны на рис. 2.2 и рис. 2.3.

Полностью подключенный слой

Слой Fully Connected принимает на вход функции 13x13 (169) [выход слоя объединения], имеет два скрытых слоя с 4 узлами в каждом и состоит из выходного слоя с 10 узлами, который представляет одну из 10 цифр. Кроме того, выходной слой использует многоклассовый алгоритм логистической регрессии (функция активации регрессии Softmax), который позволяет прогнозировать дискретное распределение вероятностей по десяти классам. Это означает, что узел с максимальной вероятностью является наиболее вероятным результатом переданных данных.

Два внутренних скрытых слоя, однако, используют для активации простую нелинейную сигмовидную функцию, потому что она помогает модели точно разработать нелинейную границу для классификации, а также снижает сложность использования мультиклассовой активации для внутренних слоев ( который будет работать аналогично множественным сигмовидным функциям, которые использовались).

Инициализация

Модель полносвязного слоя содержит функцию инициализации, которую можно использовать для настройки скрытых слоев (количество скрытых слоев и количество узлов для каждого из них). В этом проекте эта функция использовалась для инициализации двух скрытых слоев с 4 узлами в каждом.

Кроме того, этот уровень также упрощает назначение весов и смещений для каждого узла текущего уровня с помощью случайно сгенерированных данных для каждого узла предыдущего уровня с помощью функции initializeParameter.

Переход вперед

Во время прямого прохода веса и смещения используются для расчета ожидаемого результата модели. Для этого случайно сгенерированные веса и смещения для входного слоя используются для вычисления выходных значений (z) для каждого узла в первом скрытом слое. Этот выход активируется с помощью сигмовидной функции активации. Аналогичный процесс повторяется для первого скрытого слоя, в результате чего активируется вывод для второго скрытого слоя.

Однако для окончательного классифицированного выходного слоя процесс немного изменен. Как и раньше, мы применяем веса и смещения ко второму скрытому слою и находим 10 выходных данных класса для каждого узла выходного слоя. Затем вместо сигмовидной функции мы используем функцию активации регрессии Multi-class Softmax для создания распределения вероятностей по десяти классам. Это назначит каждому из этих выходных узлов вероятность фактического результата, который затем можно будет сравнить с целевым выходом, чтобы найти несоответствие модели.

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

Обратный проход

Для обратного прохода цель состоит в том, чтобы минимизировать функцию потерь. Для этого вычисляется производная функции потерь по весам и смещениям. Это приведет к двум векторам направления [один для весов, а другой для смещений], где функция потерь стремится к минимуму. Этот процесс называется градиентным спуском.

Поскольку рассматриваемая модель имеет несколько уровней вычислений, процесс градиентного спуска происходит в обратном порядке. Сначала вычисляется градиент функции потерь относительно активированного выхода. Затем следует градиент функции потерь относительно неактивированного выхода, за которым следует расчет градиента функции потерь относительно неактивированного выхода. к весам и смещениям, как показано ниже.

Обновление параметров

Как только получено направление как для весов, так и для смещений, которое минимизирует потери, оба этих параметра обновляются путем перемещения в рассчитанном направлении на определенный фактор, называемый скоростью обучения.

Все вместе

Когда прямая и обратная модель готова, получается полная модель. Полная модель многократно проходит прямой и обратный проход в течение определенного количества итераций для всех обучающих данных и настраивает веса и смещения, чтобы снизить общую стоимость модели.

По завершении обучения модель вернет окончательные обученные параметры, которые были настроены для прогнозирования результата для изображения рукописных цифр размером 28x28 пикселей.

Заключение

Модель использует 60 000 обучающих наборов данных для настройки параметров веса и смещения и 10 000 тестовых наборов данных для проверки точности внешних данных.

Связанная модель была обучена для 40 000 итераций в течение примерно 70 минут с конечной стоимостью 0,569387. Полученная точность составила 83,38% для тестового набора данных и 83,182% для обучающего набора данных.

Однако, прежде чем этот результат был достигнут, модель обучалась в течение 38 минут с использованием 20 000 итераций с теми же начальными параметрами, в результате чего точность составила около 78,31% (обучение) и 78,38% (тестирование) при стоимости 0,710538.

ресурсы:

  1. http://yann.lecun.com/exdb/mnist/
  2. https://www.ics.uci.edu/~pjsadows/notes.pdf
  3. https://www.kaggle.com/code/javaclll/mnist-handwriting-classification-using-custom-cnn/data