Точность проверки не улучшается после достижения 90% - PullRequest
1 голос
/ 18 октября 2019

У меня есть около 14 000 изображений для задачи двоичной классификации по распознаванию лиц. Около 12 000 изображений используются для обучения и 2200 для проверки. Моя архитектура CNN выглядит следующим образом -

regularizer = tf.keras.regularizers.l2(l=0.001)
init = tf.initializers.he_uniform()
model = tf.keras.models.Sequential([

    tf.keras.layers.Conv2D(filters = 32, kernel_size = (3, 3), strides = (1, 1), padding='same', activation='relu', kernel_initializer=init, kernel_regularizer=regularizer, input_shape=(ht, wd, 3)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),

    tf.keras.layers.Conv2D(64, (5, 5), (1, 1), padding='same', activation='relu', kernel_initializer=init, kernel_regularizer=regularizer),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.MaxPooling2D((2, 2), (2, 2)),

    tf.keras.layers.Conv2D(64, (3, 3), (1, 1), padding='same', activation='relu', kernel_initializer=init, kernel_regularizer=regularizer),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.MaxPooling2D((2, 2), (2, 2)),

    tf.keras.layers.Conv2D(128, (3, 3), (1, 1), padding='same', activation='relu', kernel_initializer=init, kernel_regularizer=regularizer),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.MaxPooling2D((2, 2), (2, 2)),

    tf.keras.layers.Conv2D(128, (3, 3), (1, 1), padding='same', activation='relu', kernel_initializer=init, kernel_regularizer=regularizer),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.MaxPooling2D((2, 2), (2, 2)),

    tf.keras.layers.Flatten(),

    tf.keras.layers.Dense(256, activation = 'relu', kernel_regularizer= regularizer),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.25),
    tf.keras.layers.Dense(1, activation = 'sigmoid')
])

Размеры моего входного изображения составляют 150 * 180 * 3. CNN имеет около 900k - 1M параметров. Я использую партию размером 16/32. Кроме того, мой планировщик скорости обучения (начальный lr = 0,001) оптимизатора Adam выглядит следующим образом:

reduce_lr_2 = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', 
                                             factor=0.2, 
                                             patience=2, 
                                             verbose=0, 
                                             mode='auto',
                                             min_delta=0.0001, 
                                             cooldown=1,
                                             min_lr=0)

Я применил увеличение данных многих типов. Точность обучения, которую я достигаю, составляет около 95-96%, а точность проверки - около 90%. Я пытался изменить многие гиперпараметры, но точность проверки остается на уровне около 90%. Есть ли способ улучшить точность проверки?

1 Ответ

0 голосов
/ 24 октября 2019

Существует 4 способа улучшить производительность глубокого обучения:

  1. Улучшить производительность с данными.
  2. Улучшить производительность с помощью алгоритмов.
  3. Улучшить производительность с помощью настройки алгоритма.
  4. Улучшение производительности с ансамблями.

Улучшение производительности с данными:

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

Повышение производительности с помощью алгоритмов

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

Улучшение производительности с настройкой алгоритма

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

Диагностика. Инициализация веса. Скорость обучения. Функции активации. Топология сети. Партии и эпохи. Регуляризация. Оптимизация и потеря. Ранняя остановка.

Повышение производительности с помощью ансамблей

трех основных областей ансамблей, которые вы можете рассмотреть:

Объединение моделей. Объединить взгляды. Stacking.

проверьте ниже ссылку для получения дополнительной информации: https://machinelearningmastery.com/improve-deep-learning-performance/

...