Сообщение от гocть
|
прошу прощения, забыл раньше написать, но там внутри еще добавляют константу: f(x,w) = 1/(1 + exp(-w1 x1 - w2 x2 - w3 x3 - w4)).
итак, допустим у нас 3 входных значения: x1, x2, x3. (их называют первым, входной слоев нейронов)
один скрытый слой с двумя нейронами, выходы которых обозначим за y1, y2, с обычной сигмоидной функцией активации.
и один выходной слой с одним нейроном (одним т.к. предсказываем одну величину) с линейной функцией активации. линейная функция активации предпочтительнее когда у нас задача регрессии, а не классификации.
уравнения:
y1 = 1/(1 + exp(-w11 x1 - w12 x2 - w13 x3 - w14))
y2 = 1/(1 + exp(-w21 x1 - w22 x2 - w23 x3 - w24))
z1 = w31 y1 + w32 y2 + w30
если вам так удобнее, все можно конечно свести и в одну формулу:
f(x, w) = z1 =
w31/(1 + exp(-w11 x1 - w12 x2 - w13 x3 - w14)) +
w32/(1 + exp(-w21 x1 - w22 x2 - w23 x3 - w24)) +
w30
но лучше работать с диаграммой. для двух скрытых слоев и больше по диаграмме даже и считаться быстрее будет, т.к. в раскрытой формуле начнут повторяться члены.
значит придется использовать значения из предыдущих дат.
веса инициализируют небольшим случайными числами около нуля.
сигмоида 1/(1 + exp(-wx)) симметрична вокруг нуля, поэтому надо брать не [0, 1] а например [-0.5, 0.5].
в процессе обучения веса могут быть в принципе стать столь угодно большими. это плохо сказывается на обучении (проблема зовется "паралич сети"), с этим стоит бороться.
стандартный прием: добавить к целевой функции регуляризующий член, который бы стягивал веса к нулю. обычно берут сумму квадратов весов всех нейронов. но только тогда нужно следить чтобы входные значения были примерно одинакового масштаба, иначе сумма квадратов будет штрафовать какие-то веса намного сильнее, чем другие.
|
Здравствуйте!
Сделал все как Вы написали в данном ответе. Пока взял туже архитектуру ИНС, т.е 3 нейрона на входном слое: x1,x2,x3; 2 нейрона на скрытом 1-ом слое и 1 выходной слой с одним нейроном. На вход (x1,x2,x3) подал значения тех факторов, от которых зависит выходное значение, а именно x1=252, x2=1716, x3=115. Получил след. функцию:
Z = W31/(1+E^(-W11*X1-W12*X2-W13*X3-W14))+ W32/(1+E^(-W21*X1-W22*X2-W23*X3-W24))+W30
нашел минимум с интервалом поиска [-1,1], равный в точке
(-1;-0,018;0,074;-0,351;0,573; 0,276; -0,017; 0,2; -0,01, 0,045; -0,26, 0,103) со значением -1,95 !!!
Но временной ряд который я предсказываю в данный момент времени равен 254, т.е. мое значение ф-ии в минимальной точке не идет ни в какое сравнение с реальным значением ряда. Подскажите, пожалуйста, где я допустил методологическую ошибку???
Заранее благодарю! С нетерпением жду ответа!
