добавление скрытого слоя, резко снижающего производительность нейронной сети

#artificial-intelligence

#искусственный интеллект

Вопрос:

У меня есть некоторый код для однослойной нейронной сети:

 class network {

var outputs;
var weights;
var biases;

feedforward(inputs) {
}

outputFunction(number) {
}

}
  

Функция вывода представляет собой сигмоиду (поэтому возвращает число от 0 до 1). Входные данные представляют собой массив из единиц и 0.

Я добавил скрытый слой, добавив outputs2, weights2, biases2, а затем выполнив:

 feedforward2(inputs) {
    use weights2, biases2, etc.
}

feedforwad(inputs) {
   inputs = feedforward2(inputs)
   ....
}
  

Я понял, что входы выходных узлов теперь являются выходами моего скрытого слоя, поэтому он должен иметь, по крайней мере, аналогичную производительность. Тем не менее, производительность резко снизилась после повторного обучения сети. Есть идеи? При обучении пока нет обратного распространения на скрытый слой, он просто обновляет веса выходного слоя, а веса скрытого слоя всегда остаются неизменными.

Ответ №1:

Если веса скрытого слоя случайны и фиксированы, то все, что они делают, это искажают сигнал.

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