Сравнение точности, кривых ROC и AUC трех моделей классификатора двоичных изображений с использованием TensorFlow / Keras. Как вы думаете, что будет лучше всего?
В мире машинного обучения есть три модели, которые вы можете использовать для выполнения классификации двоичных изображений: полностью подключенная сеть, сверточная нейронная сеть или предварительно обученная сеть, такая как MobileNet с применением трансферного обучения. Это". В своих предыдущих рассказах я показал, как реализовать эти модели для создания классификатора изображений, который может классифицировать одуванчики и траву и оценивать их производительность, вычисляя их точность, кривые ROC и показатель AUC. В этом рассказе я буду сравнивать эти модели бок о бок и сравнивать их характеристики. Если вы хотите пройти все обучение, оценку и сравнение этих моделей, «следуйте этой тетради. Вы можете запустить код, сохранив свою копию, выбрав Файл - ›Сохранить копию.
Как вы думаете, какая модель будет работать лучше всего?
Обзор модельных архитектур
Во-первых, давайте взглянем на три архитектуры моделей и посмотрим, чем они отличаются:
FULLY-CONNECTED MODEL Layer (type) Output Shape Param # ================================================================= flatten (Flatten) (None, 120000) 0 _________________________________________________________________ dense (Dense) (None, 128) 15360128 _________________________________________________________________ dense_1 (Dense) (None, 1) 129 ================================================================= Total params: 15,360,257 Trainable params: 15,360,257 Non-trainable params: 0 CONVOLUTIONAL NEURAL NETWORK MODEL Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 198, 198, 16) 448 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 99, 99, 16) 0 _________________________________________________________________ conv2d_1 (Conv2D) (None, 97, 97, 32) 4640 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 48, 48, 32) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 46, 46, 64) 18496 _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (None, 23, 23, 64) 0 _________________________________________________________________ conv2d_3 (Conv2D) (None, 21, 21, 64) 36928 _________________________________________________________________ max_pooling2d_3 (MaxPooling2 (None, 10, 10, 64) 0 _________________________________________________________________ conv2d_4 (Conv2D) (None, 8, 8, 64) 36928 _________________________________________________________________ max_pooling2d_4 (MaxPooling2 (None, 4, 4, 64) 0 _________________________________________________________________ flatten (Flatten) (None, 1024) 0 _________________________________________________________________ dense (Dense) (None, 512) 524800 _________________________________________________________________ dense_1 (Dense) (None, 1) 513 ================================================================= Total params: 622,753 Trainable params: 622,753 Non-trainable params: 0 MOBILENET w/ TRANSFER LEARNING Layer (type) Output Shape Param # ================================================================= mobilenetv2_1.00_224 (Model) (None, 7, 7, 1280) 2257984 _________________________________________________________________ global_average_pooling2d (Gl (None, 1280) 0 _________________________________________________________________ dense (Dense) (None, 1) 1281 ================================================================= Total params: 2,259,265 Trainable params: 1,281 Non-trainable params: 2,257,984
Обратите внимание на то, что модель с полным подключением имеет наибольшее количество обучаемых параметров, за ней следует модель CNN, а затем модель MobileNet. В модели FC каждое соединение в слое Flatten связано с каждым соединением в слое Dense, что приводит к большему количеству параметров. В CNN требуется меньше параметров, поскольку каждый сверточный слой уменьшает размер входных данных за счет операции свертки. И в отличие от этих двух моделей, модель MobileNet использует так называемое трансферное обучение: она не тренируется на предварительно обученных слоях, а только тренирует последний плотный слой. Он использует возможности извлечения признаков предварительно обученных слоев для обучения последнего слоя, поэтому для обучения модели требуется лишь несколько параметров.
Сравнение точности
Для каждой модели я использовал один и тот же набор данных и обучил модель 15 эпохам. Давайте объединим результаты и сравним их бок о бок, начиная с точности:
FC accuracy: 0.5987 CNN accuracy: 0.7197 MobileNet accuracy: 0.8917
Модель MobileNet имеет наивысшую точность, за ней следует модель CNN, за которой следует модель с полным подключением.
Сравнение кривых ROC и AUC
Точность - не лучший способ сравнить характеристики модели. Лучшие метрики для задач классификации включают кривые ROC и AUC, которые измеряют, насколько наша модель способна различать наши два класса, одуванчики и траву. Чем выше AUC, тем лучше наша модель классифицируется. На графике выше MobileNet набирает самые высокие баллы по AUC, за ней идет CNN, а за ней - FC.
Вот выводы из этих сравнений:
- Модель MobileNet является превосходной моделью с точки зрения точности и кривой ROC / AUC, даже несмотря на то, что у нее не так много параметров. Это показывает мощь трансферного обучения над мощной обученной моделью.
- Модель CNN занимает второе место. Сверточные нейронные сети работают лучше, чем полностью связанные сети по классификации двоичных изображений, с гораздо меньшим количеством параметров из-за их архитектуры с разделяемыми весами и характеристик инвариантности трансляции.
- Полносвязная модель работает лучше, чем случайная классификация двоичных изображений, но это не оптимальная модель для этого.