Есть 2 вопроса по BP:
1) Правильно ли я понимаю, что dYj/dSj в формуле (11) это производная в данном
случае от сигмоиды, взятая для точки, являющейся просуммированным (и умноженным на текущие веса) входом j-го нейрона в n-м слое., т.е.
dYj/dSj = dsigmoid(summa(w,x)), где
dsigmoid(y) = sigmoid'(y) = ALPHA * sigmoid(y) * (1-sigmoid(y))
2) Правильно ли я понимаю, что веса (в случае непакетного обучения) коррректируются
только после рассчета delta_Wij для всех слоев сети на данном шаге, т.е. при расчете delta для очередного слоя будут использоваться еще не измененные на данном шаге Wij со следующего слоя (в формуле 11)
3) Следует ли как-либо нормализовывать данные для обучени? Например, приводить к отрезку [0,1]?
4) Как осуществляется "встряхивание" сети при достижении локального минимума?
Т.е. как именно следует рандомизировать веса?
Простите за глупые вопросы, но почему-то моя реализация BP
ведет себя очень странно. При попытке моделирования линейной функции
f(x1,x2)=x1+x2
на обучающей выборке типа:
{0,0} -> 0
{0,1} -> 1
{1,0} -> 1
{1,1} -> 2
{2,0} -> 2
{0,2} -> 2
{1,2} -> 3
сеть застревает на уровне ошибки порядка 4.5
Попытки переинициализировать Wij ничего не дает, момент тоже не помогает.
Хотя Network Analyzer с тем же алгоритмом (надеюсь что с тем же) и train set в случае использования моментов сходится к нормальному уровню ошибки
Пожалуйста помогите!
Код проверял много раз :)
Сергей