Непрямое обучение нейронной сети с прямой связью

Я столкнулся с этой проблемой:

Мне нужно построить FFNN, который должен аппроксимировать неизвестную функцию f:R^2 -> R^2. Данные, которыми я располагаю для проверки сети, представляют собой одномерный R-вектор. Я знаю функцию g:R^2->R, которая будет отображать вывод сети в пространство моих данных. Поэтому я бы использовал нейронную сеть в качестве фильтра от предвзятости данных. Но столкнулся с двумя проблемами:

Во-первых, как я могу обучить свою сеть таким образом?

Во-вторых, я думаю о добавлении дополнительного скрытого слоя, который отображает R^2->R и позволяет сети самостоятельно находить правильные карты, а затем удалять дополнительный слой. Будет ли этот алгоритм правильным? А именно, будет ли результат таким же, как я искал?


person emanuele    schedule 24.11.2013    source источник


Ответы (1)


Ваша идея с дополнительным слоем хороша, хотя проблема в том, что ваши веса в этом слое должны быть фиксированными. Таким образом, на практике вам нужно вычислить частные производные вашего отображения R ^ 2-> R, которые можно использовать в качестве ошибки для распространения по вашей сети во время обучения. К сожалению, это может привести к известной «проблеме исчезающего градиента», которая остановила развитие НС на многие годы.

Короче говоря, вы можете либо вручную вычислить частные производные, и, учитывая ожидаемый результат в R, просто передать вычисленные «обратные» ошибки в сеть, ищущую отображение R ^ 2-> R ^ 2, или, как вы сказали, - создать дополнительный слой, и тренируйте его нормально, но вам придется сделать верхние веса постоянными (что потребует некоторых изменений в реализации).

person lejlot    schedule 25.11.2013