#machine-learning #computer-vision #neural-network #deep-learning #conv-neural-network
#машинное обучение #компьютерное зрение #нейронная сеть #глубокое обучение #conv-нейронная сеть
Вопрос:
Я использую сверточные нейронные сети (через Keras) в качестве моей модели для распознавания выражения лица (55 субъектов). Мой набор данных довольно сложный и составляет около 450 тысяч с 7 классами. Я сбалансировал свой набор тренировок по предмету и по классу.
Я реализовал очень простую архитектуру CNN (с расширением данных в реальном времени).:
model = Sequential()
model.add(Convolution2D(32, 3, 3, border_mode=borderMode, init=initialization, input_shape=(48, 48, 3)))
model.add(BatchNormalization())
model.add(PReLU())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(256))
model.add(BatchNormalization())
model.add(PReLU())
model.add(Dropout(0.5))
model.add(Dense(nb_output))
model.add(Activation('softmax'))
После первой эпохи мои потери в обучении постоянно уменьшаются, в то время как потери при проверке увеличиваются. Может ли переобучение произойти так скоро? Или есть проблема с тем, что мои данные сбивают с толку? Должен ли я также сбалансировать свой набор тестов?
Комментарии:
1. Если вы считаете, что переобучение — это ваша проблема, вы можете попробовать различные способы решения проблемы переобучения, например, увеличение объема данных ( keras.io/preprocessing/image ), больше отсева, более простая сетевая архитектура и так далее.
Ответ №1:
Возможно, задачу легко решить, и после одной эпохи модель узнала достаточно, чтобы решить ее, а обучение для большего количества эпох просто увеличивает переобучение.
Но если вы сбалансировали набор обучающих программ, а не набор тестов, может произойти то, что вы тренируетесь для одной задачи (распознавание выражений на равномерно распределенных данных), а затем тестируете немного другую задачу, потому что набор тестов не сбалансирован.
Комментарии:
1. Кроме того, я перетасовал свой тестовый набор перед тестированием. В любом случае, поможет ли балансировка набора тестов повысить точность моего тестирования?
2. Перетасовка тестового набора не повлияет на точность тестирования, поскольку используемая вами метрика производительности не зависит от порядка выборок. Что касается второго вопроса, балансировка вашего тестового набора повысит точность тестирования, ЕСЛИ низкая точность является проблемой того, что обучающие и тестовые наборы не относятся к аналогичному дистрибутиву. Если это проблема огромного переобучения, это не сильно поможет.
3. Спасибо, я приму это к сведению, звучит для меня ясно! 🙂