Подтвердить что ты не робот

Что означает стандартный вывод модели Keras? Что такое эпоха и потеря в Keras?

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

Что такое эпоха и потеря в Keras?

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

Epoch 1/20
1213/1213 [==============================] - 0s - loss: 0.1760     
Epoch 2/20
1213/1213 [==============================] - 0s - loss: 0.1840     
Epoch 3/20
1213/1213 [==============================] - 0s - loss: 0.1816     
Epoch 4/20
1213/1213 [==============================] - 0s - loss: 0.1915     
Epoch 5/20
1213/1213 [==============================] - 0s - loss: 0.1928     
Epoch 6/20
1213/1213 [==============================] - 0s - loss: 0.1964     
Epoch 7/20
1213/1213 [==============================] - 0s - loss: 0.1948     
Epoch 8/20
1213/1213 [==============================] - 0s - loss: 0.1971     
Epoch 9/20
1213/1213 [==============================] - 0s - loss: 0.1899     
Epoch 10/20
1213/1213 [==============================] - 0s - loss: 0.1957     
Epoch 11/20
1213/1213 [==============================] - 0s - loss: 0.1923     
Epoch 12/20
1213/1213 [==============================] - 0s - loss: 0.1910     
Epoch 13/20
1213/1213 [==============================] - 0s - loss: 0.2104     
Epoch 14/20
1213/1213 [==============================] - 0s - loss: 0.1976     
Epoch 15/20
1213/1213 [==============================] - 0s - loss: 0.1979     
Epoch 16/20
1213/1213 [==============================] - 0s - loss: 0.2036     
Epoch 17/20
1213/1213 [==============================] - 0s - loss: 0.2019     
Epoch 18/20
1213/1213 [==============================] - 0s - loss: 0.1978     
Epoch 19/20
1213/1213 [==============================] - 0s - loss: 0.1954     
Epoch 20/20
1213/1213 [==============================] - 0s - loss: 0.1949
4b9b3361

Ответ 1

Просто чтобы ответить на вопросы более конкретно, вот определение эпохи и потерь:

Эпоха: полный проход по всем вашим учебным данным.

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

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

Обычно это средняя квадратичная ошибка (MSE), как сказал Дэвид Мауст, или часто в Keras, категориальная кросс-энтропия


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

Как упоминалось в jaycode, вам нужно будет посмотреть на производительность вашей модели по невидимым данным, поскольку это общий прецедент Machine Learning.

Таким образом, вы должны включить список показателей в свой метод компиляции, который может выглядеть так:

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

Также, как и ваша модель для проверки во время метода подгонки, например:

model.fit(data, labels, validation_split=0.2)

Там гораздо больше объяснений, но, надеюсь, вам это поможет.

Ответ 2

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

Я сказал "кажется", так как мы пока не можем точно сказать, что модель не была протестирована с использованием надлежащего метода перекрестной проверки, т.е. оценивается только по сравнению с его данными обучения.

Способы улучшения вашей модели:

  • Используйте перекрестную проверку в своей модели Keras, чтобы узнать, как реально работает модель, хорошо ли она хорошо обобщается при прогнозировании новых данных, которые она никогда раньше не видела?
  • Отрегулируйте скорость обучения, структуру модели нейронной сети, количество скрытых единиц/слоев, параметры инициализации, оптимизатора и активатора, используемые в вашей модели, среди множества других вещей.

Объединение sklearn GridSearchCV с Keras может автоматизировать этот процесс.