В последнее десятилетие, с открытием глубокого обучения, классификация изображений пережила ренессанс. Традиционные методы машинного обучения были заменены более новыми и более мощными алгоритмами глубокого обучения, такими как сверточная нейронная сеть. Однако, чтобы по-настоящему понять и оценить глубокое обучение, мы должны знать, почему оно оказывается успешным там, где другие методы терпят неудачу. В этой статье мы попытаемся ответить на некоторые из этих вопросов, применяя различные алгоритмы классификации к набору данных Fashion MNIST.

Информация о наборе данныхFashion MNIST был представлен в августе 2017 года исследовательской лабораторией Zalando Fashion. Его цель — служить новым эталоном для тестирования алгоритмов машинного обучения, поскольку MNIST стал слишком простым и чрезмерно используемым. В то время как MNIST состоит из рукописных цифр, Fashion MNIST
состоит из изображений 10 различных предметов одежды. Каждое изображение имеет следующие свойства:

  • Его размер 28×28 пикселей.
  • Повернуто соответствующим образом и представлено в оттенках серого с целыми значениями в диапазоне от 0 до 255.
  • Пустое пространство, представленное черным цветом и имеющее значение 0.

В наборе данных мы различаем следующие объекты одежды:

  • Футболка/Топ
  • Брюки
  • Натяни
  • Одеваться
  • Пальто
  • Сандалии
  • Рубашка
  • кроссовки
  • Сумка
  • Ботильоны

Исследовательский анализ данных. Поскольку набор данных доступен как часть библиотеки Keras, а изображения уже обработаны, с нашей стороны не требуется длительная предварительная обработка. Единственные изменения, которые мы внесли, заключались в преобразовании изображений из 2D-массива в 1D-массив, поскольку это упрощает работу с ними.

Набор данных состоит из 70 000 изображений, из которых 60 000 составляют обучающий набор, а 10 000 — тестовый. Как и в исходном наборе данных MNIST, элементы распределены равномерно (6000 в каждом обучающем наборе и 1000 в тестовом наборе).

Однако одно изображение по-прежнему имеет 784 измерения, поэтому мы обратились к анализу основных компонентов (PCA), чтобы увидеть, какие пиксели являются наиболее важными. Мы установили традиционный эталон в 80% совокупной дисперсии, и график показал нам, что это стало возможным всего лишь с 25 основными компонентами (3% от общего числа ПК). Однако это неудивительно, поскольку на фотографии выше мы видим, что в каждом изображении есть много общего неиспользованного пространства и что разные классы одежды имеют разные части изображений, которые окрашены в черный цвет. Последнее может быть связано с тем, что около 70% кумулятивной дисперсии объясняется всего 8 главными компонентами.

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

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

СВЕРТОЧНАЯ НЕЙРОННАЯ СЕТЬ (CNN) Первым методом, который мы использовали, был CNN. Поскольку изображения были в оттенках серого, мы применили только один канал. Мы выбрали следующую архитектуру:

  • Два сверточных слоя с 32 и 64 фильтрами, размером ядра 3 × 3 и активацией relu.
  • Слои опроса выбирались для работы с тайлами размером 2 × 2 и для выбора в них максимального элемента.
  • Два набора плотных слоев, первый из которых выбирает 128 функций с активацией relu и softmax.

Ничего особенного в этой архитектуре нет. Фактически, это одна из самых простых архитектур, которые мы можем использовать для CNN. Это показывает нам истинную мощь этого класса методов: получение отличных результатов с эталонной структурой.

В качестве функции потерь мы выбрали категориальную кросс-энтропию. Чтобы избежать переобучения, мы выбрали 9400 изображений из обучающего набора, чтобы они служили проверочным набором для наших параметров. Мы использовали новый оптимизатор adam, который улучшает
стандартные методы градиентного спуска и использует разную скорость обучения для каждого параметра и размер пакета, равный 64. Модель обучалась за 50 эпох. Мы представляем значения точности и потерь на графиках ниже.

Мы видим, что алгоритм сошелся через 15 эпох, что он не перетренирован, поэтому мы его протестировали. Полученная точность тестирования составила
89%, что является лучшим результатом, полученным из всех методов!

Прежде чем перейти к другим методам, давайте объясним, что сделали сверточные слои. Интуитивное объяснение состоит в том, что первый слой захватывал прямые линии, а второй кривые. На обоих слоях мы применили max pooling, который выбирает максимальное значение в ядре, отделяя части одежды от пустого пространства. Таким образом, мы фиксируем репрезентативный характер данных. В других случаях нейронные сети выполняют выбор признаков сами по себе. После последнего слоя объединения мы получаем искусственную нейронную сеть. Поскольку мы имеем дело с проблемой классификации, последний слой
использует активацию softmax для получения вероятностей классов. Поскольку вероятности классов следуют определенному распределению, кросс-энтропия указывает расстояние от предпочтительного распределения сетей.

Полиномиальная логистическая регрессия Поскольку значения пикселей являются категориальными переменными, мы можем применить полиномиальную логистическую регрессию. Мы применяем его один против остальных, обучая десять классификаторов бинарной логистической регрессии, которые мы будем использовать для выбора элементов. Чтобы не перетренироваться, мы использовали регуляризацию L2. Точность этого алгоритма составляет 80%, что на 9% меньше, чем у сверточных нейронных сетей. Но мы должны принять во внимание, что этот алгоритм работал на изображениях в градациях серого, которые центрированы и повернуты нормально, с большим количеством пустого пространства, поэтому он может не работать для более сложных изображений.

Алгоритмы ближайших соседей и центроидовМы использовали два разных алгоритма ближайших расстояний:

  • K-ближайшие соседи
  • Ближайший центроид

Алгоритм ближайшего центроида находит средние значения элементов каждого класса и относит тестовый элемент к классу, которому присвоен ближайший центроид. Оба алгоритма были реализованы относительно расстояния L1 и L2. Точность k-ближайших алгоритмов составила 85%, тогда как алгоритм центроида имел точность 67%. Эти результаты были получены для k=12. Высокая точность k-ближайших соседей говорит нам о том, что изображения, принадлежащие к одному классу, имеют тенденцию занимать одинаковые места на изображениях, а также иметь одинаковую интенсивность пикселей. В то время как ближайшие соседи получили хорошие результаты, они по-прежнему работают хуже, чем CNN, поскольку они не работают в окрестности каждой конкретной функции, в то время как центроиды терпят неудачу, поскольку они не различают внешне похожие объекты (например, пуловер против футболки/топа). )

Случайный лес Чтобы выбрать лучшие параметры для оценки, мы выполнили поиск по сетке с квадратным корнем (бэггингом) и полным числом признаков, критерием Джини и энтропии, а также с деревьями, имеющими максимальную глубину 5 и 6. Сетка поиск подсказал, что мы должны использовать квадрат числа признаков с критерием энтропии (оба ожидаемы для задачи классификации). Однако полученная точность составила всего 77%, что означает, что случайный лес не особенно хорош для этой задачи. Причина неудачи в том, что основные компоненты не представляют собой прямоугольный раздел, который может иметь образ, на котором работают случайные леса. Те же рассуждения применимы и к полноразмерным изображениям, так как деревья будут слишком глубокими и потеряют интерпретируемость.

Машины опорных векторов (SVM) Мы применили SVM с использованием радиального и полиномиального ядра. Радиальное ядро ​​имеет точность 77%, в то время как полиномиальное ядро ​​с треском терпит неудачу и имеет точность только 46%. Хотя классификация изображений не является их сильной стороной, они все же очень полезны для других задач бинарной классификации. Их самая большая оговорка заключается в том, что они требуют выбора признаков, что снижает точность, а без этого они могут быть дорогостоящими в вычислительном отношении. Кроме того, они применяют мультиклассовую классификацию по принципу «один против остальных», что усложняет эффективное создание разделяющей гиперплоскости, что снижает ценность при работе с задачами небинарной классификации.

Выводы. В этой статье мы применили различные методы классификации к задаче классификации изображений. Мы объяснили, почему CNN — лучший метод, который мы можем использовать из рассмотренных, и почему другие методы не работают. Вот некоторые из причин, по которым CNN являются наиболее практичным и, как правило, наиболее точным методом:

  • Они могут передавать обучение через слои, сохраняя выводы и делая новые на последующих слоях.
  • Нет необходимости в извлечении признаков перед использованием алгоритма, это делается во время обучения.
  • Он распознает важные особенности.

Однако и у них есть свои оговорки. Известно, что они не работают на изображениях, которые по-разному повернуты и масштабированы, но здесь это не так, поскольку данные были предварительно обработаны. И хотя другие методы не дают столь же хороших результатов на этом наборе данных, они все же используются для других задач, связанных с обработкой изображений (повышение резкости, сглаживание и т. д.).

Код: https://github.com/radenjezic153/Stat_ML/blob/master/project.ipynb