Гибридные нейросети. - страница 17

 

Кто пробовал?

...........................................................

Комбинирование обратного распространения с обучением Коши

Коррекция весов в комбинированном алгоритме, использующем обратное распространение и обучение Коши, состоит из двух компонент: (1) направленной компоненты, вычисляемой с использованием алгоритма обратного распространения, и (2) случайной компоненты, определяемой распределением Коши.

Эти компоненты вычисляются для каждого веса, и их сумма является величиной, на которую изменяется вес. Как и в алгоритме Коши, после вычисления изменения веса вычисляется целевая функция. Если имеет место улучшение, изменение сохраняется. В противном случае оно сохраняется с вероятностью, определяемой распределением Больцмана.

Коррекция веса вычисляется с использованием представленных ранее уравнений для каждого из алгоритмов:

wmn,k(n+1) = wmn,k(n) + η [aΔwmn,k(n) + (1 – a) δ n,k OUT m,j ] + (1 – η) xс,

где η – коэффициент, управляющий относительными величинами Коши и обратного распространения в компонентах весового шага. Если η приравнивается нулю, система становится полностью машиной Коши. Если η приравнивается единице, система становится машиной обратного распространения.

........................................................

 
gumgum >>:

Можно поподробней по квази-ньютоновским и LMA.

LMA = Levenberg–Marquardt algorithm

Quasi-Newton method

Градиентные методы второго порядка


Много писать, вкратце:


алгоритм Ньютона,
xk+1 = xk - sk*H^(-1)(xk)grad f(xk),где
H^(-1)(xk) обратная матрицы Гессе в точке xk,
sk - величина шага,
gradf(xk) - градиент функции в точке xk.

так вот в квазиньютоновском методе вместо H^(-1)(xk) используется матрица H(xk), которая строиться из частных производных второго порядка,
в квазиньютоновском методе вторые производные вычисляются через метод крайних разностей. Соответственно имеем две наиболее часто применяемые

формулы вычислений КР:


Бройдена — Флетчера — Гольдфарба — Шанно (BFGS)

Девидона — Флетчера — Пауэлла (DFP)


LMA:


тоже относится к методам второго порядка, т.е. необходимо вычисление частных производных второго порядка,


xk+1 = xk - sk*H^(-1)(xk)grad f(xk),где

так вот, H^(-1)(xk)вычисляется как H= J^t*J, где J - якобиан

соответственно gradf(xk) = J^t*E, J^t - транспонированный якобиан, E - вектор ошибок сети, то

xk+1 = xk - [J^t*J + mu*I]^(-1)*J^t*E, где mu - скаляр, если mu - 0, имеем метод Ньютона с аппроксимацией гессениана, если mu -> + Inf,

градиентный метод с маленьким шагом.


Вот тут есть еще обсуждения:


Нейро-синтезатор, конструктор+лаборатория

 
rip писал(а) >>

LMA = Levenberg–Marquardt algorithm

Quasi-Newton method

Градиентные методы второго порядка

Много писать, вкратце:

алгоритм Ньютона,
xk+1 = xk - sk*H^(-1)(xk)grad f(xk),где
H^(-1)(xk) обратная матрицы Гессе в точке xk,
sk - величина шага,
gradf(xk) - градиент функции в точке xk.

так вот в квазиньютоновском методе вместо H^(-1)(xk) используется матрица H(xk), которая строиться из частных производных второго порядка,
в квазиньютоновском методе вторые производные вычисляются через метод крайних разностей. Соответственно имеем две наиболее часто применяемые

формулы вычислений КР:

Бройдена — Флетчера — Гольдфарба — Шанно (BFGS)

Девидона — Флетчера — Пауэлла (DFP)


LMA:

тоже относится к методам второго порядка, т.е. необходимо вычисление частных производных второго порядка,

xk+1 = xk - sk*H^(-1)(xk)grad f(xk),где

так вот, H^(-1)(xk)вычисляется как H= J^t*J, где J - якобиан

соответственно gradf(xk) = J^t*E, J^t - транспонированный якобиан, E - вектор ошибок сети, то

xk+1 = xk - [J^t*J + mu*I]^(-1)*J^t*E, где mu - скаляр, если mu - 0, имеем метод Ньютона с аппроксимацией гессениана, если mu -> + Inf,

градиентный метод с маленьким шагом.

Вот тут есть еще обсуждения:


Нейро-синтезатор, конструктор+лаборатория

Спасибо.

Остался вопрос... Где правда?

Верхний левый угол(RProp). Зачем DE/DW=0 при DE/DW(t-1)*DE/DW<0?

 
gumgum >>:

Спасибо.

Остался вопрос... Где правда?

Верхний левый угол. Зачем DE/DW=0 при DE/DW(t-1)*DE/DW<0?

отрицательное произведение градиентов говорит о том, что алгоритм "перескочил" нужный экстремум. Поэтому та ячейка памяти, где хранится значение градиента на текущем шаге (заметьте, именно ячейка памяти, а не сам градиент) обнуляется для того, чтобы на следующем сработало третье условие. В этом фишка алгоритма, если Вы читали статью полностью.

 
alsu писал(а) >>

отрицательное произведение градиентов говорит о том, что алгоритм "перескочил" нужный экстремум. Поэтому та ячейка памяти, где хранится значение градиента на текущем шаге (заметьте, именно ячейка памяти, а не сам градиент) обнуляется для того, чтобы на следующем сработало третье условие. В этом фишка алгоритма, если Вы читали статью полностью.

Но тогда нужно de/dw(t-1)=0

 
gumgum >>:

Но тогда нужно de/dw(t-1)=0

на данном шаге это de/dw(t), на следующем оно станет de/dw(t-1)

 
alsu писал(а) >>

на данном шаге это de/dw(t), на следующем оно станет de/dw(t-1)

Спасибо. Может вы подскажите с JRprop q индивидуальна для каждого веса или как?

 

Я уже запутался одни пишут deltaW=-n*DE/DW другие deltaW=n*DE/DW другие и т.д. и т.п. ......

 
gumgum >>:

Спасибо. Может вы подскажите с JRprop q индивидуальна для каждого веса или как?

насколько я понимаю, ку одно для всех

 
gumgum >>:

Я уже запутался одни пишут deltaW=-n*DE/DW другие deltaW=n*DE/DW другие и т.д. и т.п. ......

Давайте с самого начала, RProp эвристический алгоритм, он для действия использует анализ знака первой производной от ф-ции ошибки по весу синапса.

Если знак производной положительный не изменился, dEdW(t)*dEdW(t-1) > 0 т.е. минимизация ошибки выполняется, мы движемся в правильно направлении.

Если знак изменился, т.е. dEdW(t)*dEdW(t-1) < 0, мы проскочили минимум (локальный минимум), надо сделать 2 шага назад. Первый чтобы компенсировать минимум который мы проскочили - в вашем примере, DELTAij(t) считается от предыдущего значения дельты и -eta, можно не делать коррекцию Wij(t) на этом шаге, тогда мы вернемся только к предыдущему значению Wij, но так как у вас делается, значит что мы дважды движемся назад, от точки изменения знака производной.


Относительно <deltaW=-n*DE/DW другие deltaW=n*DE/DW>, не имеет значения, вы должны просто понимать, какой шагает делает, в каком направлении и в какой момент времени.


Так как это эвристика, точное соблюдение формул не важно, важен принцип.

Причина обращения: