Я использую tenorflow для написания простых нейронных сетей для небольшого количества исследований, и у меня было много проблем с весами 'nan' во время обучения. Я пробовал много разных решений, таких как смена оптимизатора, изменение потерь, размера данных и т. Д., Но безрезультатно. Наконец, я заметил, что изменение в скорости обучения сделало невероятную разницу в моих весах.
Используя уровень обучения 0,001 (который я считал довольно консервативным), функция минимизации фактически экспоненциально увеличивает потери. После одной эпохи потери могут возрасти от числа в тысячах до триллиона, а затем до бесконечности («нан»). Когда я снизил скорость обучения до 0,0001, все работало нормально.
1) Почему один порядок величины имеет такой эффект?
2) Почему функция минимизации буквально выполняет функцию, противоположную ее функции, и максимизирует потери? Мне кажется, что это не должно происходить, независимо от скорости обучения.