Обсуждение:Практикум на ЭВМ (317)/Autoencoder
Материал из MachineLearning.
Вопрос №1: Каким образом можно справиться с переполнением, возникающим при подстановке числа 3000-4000 в степень экспоненты сигмоидальной функции активации (и ее производной)? Сразу отмечу, что вариант "сократить на квадрат экспоненты" не проходит, так как встречаются и положительные, и отрицательные числа такого порядка--Alex.Ryzhkov 20:37, 1 марта 2013 (MSK)
- Александр, сигмоида стремится к нулю или единице при больших по модулю значениях аргумента. При использовании вещественных типов эти случаи даже не нужно специально обрабатывать: при переполнении экспонента будет равна +Inf, и вся дробь будет равна нулю. Или я неправильно понял вопрос? Shapovalov 13:17, 3 марта 2013 (MSK)
- Роман, а если взять и рассмотреть производную сигмоиды? У нее и сверху, и снизу экспоненты, причем снизу даже квадрат, и при вычислении экспоненты уже получается Inf, а при вычислении производной сигмоиды в такой точке имеем, что Inf / Inf = NaN, что собственно и печалит всю картину..--Alex.Ryzhkov 13:31, 3 марта 2013 (MSK)
- Если поступать так, то нужно рассматривать этот случай отдельно и раскрывать неопределённость. Обычно же делают проще: производная сигмоиды выражается через её значение (которое ограничено), и там не возникает неопределённостей. Shapovalov 13:40, 3 марта 2013 (MSK)
- Спасибо, помогло =) --Alex.Ryzhkov 13:58, 3 марта 2013 (MSK)
По итогам консультации. 1. В качестве функционала ошибки лучше использовать среднюю квадратичную ошибку по объектам (MSE), а не сумму. Предлагаемые в задании параметры алгоритмов должны хорошо работать именно с нормированной ошибкой.
2. При использовании online или mini-batch оптимизации, номер итерации при подсчёте величины шага — это не номер эпохи. Нужно увеличивать номер итерации с каждым вычислением градиента. Shapovalov 15:40, 4 марта 2013 (MSK)