← Вернуться к списку

Почему не уменьшается loss моей нейронной сети после 2500 итераций?

Краткое содержание

Я разработал с нуля базовую нейронную сеть прямого распространения для классификации изображений: кошка или не кошка. Она работает нормально, но после 2500 итераций моя функция потерь не уменьшается должным образом. Я использую функцию потерь $L(\hat{y},y) = -ylog\hat{y}-(1-y)log(1-\hat{y})$. Не могли бы вы указать, где я ошибаюсь? Ссылка на блокнот: https://www.kaggle.com/sidcodegladiator/catnoncat-nn?

Полный текст

Почему после 2500 итераций не уменьшается ошибка моей нейронной сети? Задать вопрос

Задан 5 лет, 5 месяцев назад Изменен сегодня Просмотрен 1000 раз

Задан 5 лет, 5 месяцев назад

1 $\begingroup$ Я разработал базовую feedforward neural network с нуля для классификации изображений: кошка или не кошка. Она работает нормально, но после 2500 итераций моя cost function не уменьшается должным образом. Функция потерь, которую я использую: $L(\hat{y},y) = -ylog\hat{y}-(1-y)log(1-\hat{y})$. Не могли бы вы указать, где я ошибаюсь? Ссылка на блокнот: https://www.kaggle.com/sidcodegladiator/catnoncat-nn ? neural-networks deep-learning feedforward-neural-networks Share Improve this question Follow edited Jul 12, 2020 at 3:37 asked Jul 11, 2020 at 17:01 Siddarth 19 3 3 bronze badges $\endgroup$ 5 $\begingroup$ Возможно, это проблема исчезающего градиента (vanishing gradient problem). $\endgroup$ efedoganay – efedoganay 2020-07-11 17:45:51 +00:00 Commented Jul 11, 2020 at 17:45 3 $\begingroup$ Это не CNN, это базовый MLP, и то, что он работает плохо, неудивительно. $\endgroup$ FourierFlux – FourierFlux 2020-12-16 06:49:24 +00:00 Commented Dec 16, 2020 at 6:49 $\begingroup$ Какой оптимизатор вы используете? Я бы предложил попробовать Adam. $\endgroup$ SpiderRico – SpiderRico 2022-04-11 06:31:16 +00:00 Commented Apr 11, 2022 at 6:31 $\begingroup$ Какие архитектуры вы используете? Размер батча? Learning rate? $\endgroup$ CoffeDeveloper – CoffeDeveloper 2024-03-30 19:34:58 +00:00 Commented Mar 30, 2024 at 19:34 $\begingroup$ Какое значение вы используете в качестве learning rate, в каком диапазоне находятся ваши weights/biases/kernels, и какой диапазон у ваших данных $x$? $\endgroup$ David Hoelzer – David Hoelzer 2024-03-31 00:16:03 +00:00 Commented Mar 31, 2024 at 0:16 Add a comment | 3 Answers 3 Sorted by: Reset to default Highest score (default) Date modified (newest first) Date created (oldest first) 0 $\begingroup$ Вы можете попробовать сначала настроить learning rate. Поскольку learning rate сильно влияет на изменение весов и значения смещения. Посмотрите, изменились ли результаты после настройки learning rate. Share Improve this answer Follow answered Jul 16, 2020 at 8:04 Oscar916 1 $\endgroup$ 3 $\begingroup$ Я пробовал это тоже. Что вы предлагаете, каким должен быть мой learning rate? $\endgroup$ Siddarth – Siddarth 2020-07-16 08:13:05 +00:00 Commented Jul 16, 2020 at 8:13 $\begingroup$ Вы можете попробовать установить learning rate равным 0.01 или 0.1, чтобы посмотреть, будут ли результаты лучше или нет. $\endgroup$ Oscar916 – Oscar916 2020-07-16 08:18:24 +00:00 Commented Jul 16, 2020 at 8:18 $\begingroup$ Я пробовал 0.01, 0.1 и даже 1. Что я заметил, так это то, что скорость, с которой уменьшается cost function, хорошая, но проблема в том, что она все еще достигает плато на уровне 0.64 после 2500 эпох. $\endgroup$ Siddarth – Siddarth 2020-07-16 08:49:59 +00:00 Commented Jul 16, 2020 at 8:49 Add a comment | 0 $\begingroup$ Поскольку после некоторого числа итераций cost function не уменьшается, это можно диагностировать как проблему исчезающего градиента (vanishing gradient problem). Решением этого является использование Residual neural network. Другим решением является тщательная инициализация ваших весов, поскольку на протяжении всей вашей нейронной сети ваш градиент может экспоненциально взрываться или экспоненциально исчезать. Посмотрите это видео о том, как инициализировать веса по-настоящему случайно: https://www.youtube.com/watch?v=s2coXdufOzE Edit: Другой возможной причиной вашей проблемы является то, что ваш алгоритм имеет проблему высокого смещения (high bias problem). Это происходит из-за того, что ваш алгоритм плохо работает на обучающем наборе. В вашем случае одним из лучших решений было бы сделать вашу сеть глубже, и тогда она сможет выполнять более сложные функции и, следовательно, лучше работать на вашем обучающем наборе. Share Improve this answer Follow edited Jul 19, 2020 at 5:06 answered Jul 18, 2020 at 7:45 jr235 55 6 6 bronze badges $\endgroup$ 5 $\begingroup$ Спасибо за совет, после этого я инициализировал свои веса так: parameters['W'+str(l)]=np.random.randn(layers_dims_vector[l],layers_dims_vector[l-1])*np.sqrt(2