Я пишу базовую нейронную сеть в Java, и я пишу функции активации (в настоящее время я только что написал сигмовидную функцию). Я пытаюсь использовать double
с (как указано в BigDecimal
), надеясь, что обучение на самом деле займет разумное время. Однако я заметил, что функция не работает с большими входами. В настоящее время моя функция:Насколько точна функция активации, и насколько велики ее входы?
public static double sigmoid(double t){
return (1/(1 + Math.pow(Math.E, -t)));
}
Эта функция возвращает довольно точные значения вплоть до когда это t = -100
, но когда t >= 37
функция возвращает 1.0
. В типичной нейронной сети, когда ввод нормализуется, это прекрасно? Будет ли нейрон когда-либо получать входы, суммирующие более ~ 37? Если размер суммы входов, вводимых в функцию активации, варьируется от NN до NN, каковы некоторые из факторов, влияющих на нее? Кроме того, есть ли способ сделать эту функцию более точной? Есть ли более точная и/или более эффективная альтернатива?