Как понять потерю acc val_loss val_acc в подгонке модели Keras

Я новичок в Keras и у меня есть несколько вопросов о том, как понять результаты моей модели. Вот мой результат: (для вашего удобства я вставляю убыток acc val_loss val_acc после каждой эпохи здесь)

Поезд на 4160 образцов, проверить на 1040 образцов, как показано ниже:

Epoch 1/20
4160/4160 - loss: 3.3455 - acc: 0.1560 - val_loss: 1.6047 - val_acc: 0.4721

Epoch 2/20
4160/4160 - loss: 1.7639 - acc: 0.4274 - val_loss: 0.7060 - val_acc: 0.8019

Epoch 3/20
4160/4160 - loss: 1.0887 - acc: 0.5978 - val_loss: 0.3707 - val_acc: 0.9087

Epoch 4/20
4160/4160 - loss: 0.7736 - acc: 0.7067 - val_loss: 0.2619 - val_acc: 0.9442

Epoch 5/20
4160/4160 - loss: 0.5784 - acc: 0.7690 - val_loss: 0.2058 - val_acc: 0.9433

Epoch 6/20
4160/4160 - loss: 0.5000 - acc: 0.8065 - val_loss: 0.1557 - val_acc: 0.9750

Epoch 7/20
4160/4160 - loss: 0.4179 - acc: 0.8296 - val_loss: 0.1523 - val_acc: 0.9606

Epoch 8/20
4160/4160 - loss: 0.3758 - acc: 0.8495 - val_loss: 0.1063 - val_acc: 0.9712

Epoch 9/20
4160/4160 - loss: 0.3202 - acc: 0.8740 - val_loss: 0.1019 - val_acc: 0.9798

Epoch 10/20
4160/4160 - loss: 0.3028 - acc: 0.8788 - val_loss: 0.1074 - val_acc: 0.9644

Epoch 11/20
4160/4160 - loss: 0.2696 - acc: 0.8923 - val_loss: 0.0581 - val_acc: 0.9856

Epoch 12/20
4160/4160 - loss: 0.2738 - acc: 0.8894 - val_loss: 0.0713 - val_acc: 0.9837

Epoch 13/20
4160/4160 - loss: 0.2609 - acc: 0.8913 - val_loss: 0.0679 - val_acc: 0.9740

Epoch 14/20
4160/4160 - loss: 0.2556 - acc: 0.9022 - val_loss: 0.0599 - val_acc: 0.9769

Epoch 15/20
4160/4160 - loss: 0.2384 - acc: 0.9053 - val_loss: 0.0560 - val_acc: 0.9846

Epoch 16/20
4160/4160 - loss: 0.2305 - acc: 0.9079 - val_loss: 0.0502 - val_acc: 0.9865

Epoch 17/20
4160/4160 - loss: 0.2145 - acc: 0.9185 - val_loss: 0.0461 - val_acc: 0.9913

Epoch 18/20
4160/4160 - loss: 0.2046 - acc: 0.9183 - val_loss: 0.0524 - val_acc: 0.9750

Epoch 19/20
4160/4160 - loss: 0.2055 - acc: 0.9120 - val_loss: 0.0440 - val_acc: 0.9885

Epoch 20/20
4160/4160 - loss: 0.1890 - acc: 0.9236 - val_loss: 0.0501 - val_acc: 0.9827

Вот мое понимание:

  1. Две потери (и loss, и val_loss) уменьшаются, а буксировка acc (acc и val_acc) увеличивается. Так что это указывает на то, что моделирование обучено хорошим способом.

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

Мои вопросы:

  1. Acc (набор для обучения) всегда меньше, фактически намного меньше, чем val_acc. Это нормально? Почему это происходит? На мой взгляд, acc должен быть похож на лучший, чем val_acc.

  2. После 20 эпох акк продолжает расти. Так я должен использовать больше эпох и остановиться, когда акк перестает расти? Или я должен остановиться там, где значение val_acc перестает расти, независимо от тенденций соотв.

  3. Есть ли другие мысли о моих результатах?

Спасибо!

Ответ 1

Отвечая на ваши вопросы:

  1. Как описано на официальном FAQ по keras

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

  1. Обучение должно быть остановлено, когда val_acc перестанет расти, иначе ваша модель, вероятно, будет перегружена. Вы можете использовать функцию обратного вызова, чтобы остановить обучение.

  2. Ваша модель, кажется, достигает очень хороших результатов. Продолжайте хорошую работу.