1

Я немного скептически отношусь к следующему журналу, который я получаю при обучении глубокой нейронной сети для значений регрессионных целей от -1,0 до 1,0, с обучающей скоростью 0,001 и 19200/4800 образцов подготовки/проверками:Интерпретация учебной трассы глубокой нейронной сети: очень низкая потеря тренировки и даже более низкая потеря достоверности

____________________________________________________________________________________________________ 
Layer (type)      Output Shape   Param #  Connected to 
==================================================================================================== 
cropping2d_1 (Cropping2D)  (None, 138, 320, 3) 0   cropping2d_input_1[0][0] 
____________________________________________________________________________________________________ 
lambda_1 (Lambda)    (None, 66, 200, 3) 0   cropping2d_1[0][0] 
____________________________________________________________________________________________________ 
lambda_2 (Lambda)    (None, 66, 200, 3) 0   lambda_1[0][0] 
____________________________________________________________________________________________________ 
convolution2d_1 (Convolution2D) (None, 31, 98, 24) 1824  lambda_2[0][0] 
____________________________________________________________________________________________________ 
spatialdropout2d_1 (SpatialDropo (None, 31, 98, 24) 0   convolution2d_1[0][0] 
____________________________________________________________________________________________________ 
convolution2d_2 (Convolution2D) (None, 14, 47, 36) 21636  spatialdropout2d_1[0][0] 
____________________________________________________________________________________________________ 
spatialdropout2d_2 (SpatialDropo (None, 14, 47, 36) 0   convolution2d_2[0][0] 
____________________________________________________________________________________________________ 
convolution2d_3 (Convolution2D) (None, 5, 22, 48)  43248  spatialdropout2d_2[0][0] 
____________________________________________________________________________________________________ 
spatialdropout2d_3 (SpatialDropo (None, 5, 22, 48)  0   convolution2d_3[0][0] 
____________________________________________________________________________________________________ 
convolution2d_4 (Convolution2D) (None, 3, 20, 64)  27712  spatialdropout2d_3[0][0] 
____________________________________________________________________________________________________ 
spatialdropout2d_4 (SpatialDropo (None, 3, 20, 64)  0   convolution2d_4[0][0] 
____________________________________________________________________________________________________ 
convolution2d_5 (Convolution2D) (None, 1, 18, 64)  36928  spatialdropout2d_4[0][0] 
____________________________________________________________________________________________________ 
spatialdropout2d_5 (SpatialDropo (None, 1, 18, 64)  0   convolution2d_5[0][0] 
____________________________________________________________________________________________________ 
flatten_1 (Flatten)    (None, 1152)   0   spatialdropout2d_5[0][0] 
____________________________________________________________________________________________________ 
dropout_1 (Dropout)    (None, 1152)   0   flatten_1[0][0] 
____________________________________________________________________________________________________ 
activation_1 (Activation)  (None, 1152)   0   dropout_1[0][0] 
____________________________________________________________________________________________________ 
dense_1 (Dense)     (None, 100)   115300  activation_1[0][0] 
____________________________________________________________________________________________________ 
dropout_2 (Dropout)    (None, 100)   0   dense_1[0][0] 
____________________________________________________________________________________________________ 
dense_2 (Dense)     (None, 50)   5050  dropout_2[0][0] 
____________________________________________________________________________________________________ 
dense_3 (Dense)     (None, 10)   510   dense_2[0][0] 
____________________________________________________________________________________________________ 
dropout_3 (Dropout)    (None, 10)   0   dense_3[0][0] 
____________________________________________________________________________________________________ 
dense_4 (Dense)     (None, 1)    11   dropout_3[0][0] 
==================================================================================================== 
Total params: 252,219 
Trainable params: 252,219 
Non-trainable params: 0 
____________________________________________________________________________________________________ 
None 
Epoch 1/5 
19200/19200 [==============================] - 795s - loss: 0.0292 - val_loss: 0.0128 
Epoch 2/5 
19200/19200 [==============================] - 754s - loss: 0.0169 - val_loss: 0.0120 
Epoch 3/5 
19200/19200 [==============================] - 753s - loss: 0.0161 - val_loss: 0.0114 
Epoch 4/5 
19200/19200 [==============================] - 723s - loss: 0.0154 - val_loss: 0.0100 
Epoch 5/5 
19200/19200 [==============================] - 1597s - loss: 0.0151 - val_loss: 0.0098 

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

ответ

4

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

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

С точки зрения потери, чтобы быть маленьким - вы не указали, какова ваша потеря, но при условии, что ваша задача является регрессией - я догадался о ее mse - и в этом случае средняя квадратичная ошибка на уровне 0.01 означает что среднее эвклидовое расстояние между истинным значением и фактическим значением равно 0.1, что соответствует 5% диаметра ваших значений [-1, 1]. Итак - эта ошибка на самом деле такая маленькая?

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

Чтобы проверить, хорошо ли обучена ваша модель, я советую вам построить участок correlation plot при планировании участка y_pred напр. Ось X и y_true по оси Y. Тогда вы действительно увидите, как ваша модель фактически обучается.

EDIT: Как упоминал Нейл, может быть еще больше причин, связанных с небольшой ошибкой проверки - как не хорошее разделение случаев. Я бы также добавил, что это факт того, что 5 эпох состояли не более чем на 90 минут - может быть, хорошо проверить результат модели, используя классическую схему перекрестного валидации, например. 5 сгибов. Это заверило бы вас, что в случае вашего набора данных ваша модель будет работать хорошо.

+0

Спасибо за понимание. Вы были правы: я использую mse. И размер партии - 128. – user1934212

+0

Я дал вам еще один намек. Вы можете добавить этот сюжет в свой пост. –

+2

Стоит отметить, что одной из возможных причин неожиданно низких оценок валидации является плохое разделение тренировочных и выборочных выборок. Например, если входы представляют собой изображения и несколько изображений, сделанных в похожих сценариях (или вы используете увеличение данных * до * разделения на поезд/cv), ваш набор cv может быть слишком похож на обучение, и вы получаете неточные результаты cv. Нет прямого указания на это с поста OP, но это что-то для проверки и защиты. Исправление состоит в том, чтобы вы сохраняли взаимосвязанные примеры вместе (по набору) - все должно храниться вместе либо в наборе, либо в наборе. –

 Смежные вопросы

  • Нет связанных вопросов^_^