Нейронная сеть Backpropagation, слишком много нейронов в слое причиняя выход быть слишком высока

Наличие нейронной сети с большим количеством входов вызывает мои сетевые проблемы, такие как

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

Нейронная сеть использует tanh в качестве активной функции во всех слоях.
Много размышляя, я придумал следующие решения:

  1. Инициализация меньших случайных значений веса (Weighttrandom / PreviousLayerNeuronCount )

или

  1. После вычисления суммы выходов или градиентов, деление суммы на количество «нейронов в слое previus для выходной суммы «и количество» нейронов в следующем слое для градиентной суммы», а затем передача суммы в функцию активации/производной.

Я не чувствую себя комфортно с решениями, которые я придумал.

Решение 1. не решает проблему полностью. Возможность получения градиента или выходной суммы до максимума все еще есть. Решение 2. кажется, чтобы решить проблему, но я боюсь, что это полностью меняет поведение сети таким образом, что это не может решить некоторые проблемы больше.

Что бы вы предложили мне в этой ситуации, имея в виду, что уменьшение количества нейронов в слоях не является вариантом?

Заранее спасибо!

1 ответ

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