Рыночный этикет или правила хорошего тона на минном поле - страница 30

 
FION >>:

В вашем коде - if(NormalizeDouble(SquarHid[i,j],4) != 0.0), сравнение не катит . Обсуждали уже сравнение дублей.

Спасибо, но ошибки "деление на ноль" в моем коде тоже нет.

 
Neutron >>:

Привет, Серёга!

А вот Grasn говорил, что 14-ая версия коцаная и движок там дохлый и дифуры с ошибками считает. Вобщем, paralocus, взвесь все за и против, полазь по инету поузнавай. В ларьках дистрибутив Маткада стоит 100 руб.

Не совсем "коцанная". grasn говорил совсем другое, что в 14 движек более дешевый и все в итоге сводится к старому спору, какой из движков лучший Waterloo Maple vs SciFace Software. А на самом деле, что то лучше, что то хуже - смотреть надо, что нужно тебе. Вот пример, есть такая классическая задача о движении 3 планет. При определенных начальных условиях одна планета захватывает траекторию другой.


Вот решение в 13 маткаде (захватывает)


Вот решение в 14 маткаде (отсылает нах)



А так много плюсов и у 14 версии, очень много. Мне то видимо придется перети на нее, поскольку в висте 13 просто сваливается. А глюков у 13 доже предостаточно, а чего уж говорить о более старых версиях.

 

Привет, Серёга!

Классные ты задачки привёл. Красивые. Может дело в точности для численного метода? Задать точность выше и решения сойдуться...

 
Neutron, если я ввожу этот регулирующий коэффициент (1 - J/N) то должен ли я использовать его для всех весов, или можно использовать его, например для весов скрытого слоя, а для весов выходного нейрона - не использовать? Сейчас он у меня только для весов скрытого слоя используется. Веса более-менее стабилизировались +/-50. В качестве N я использую количество эпох.
 
Neutron писал(а) >>

Привет, Серёга!

Классные ты задачки привёл. Красивые. Может дело в точности для численного метода? Задать точность выше и решения сойдуться...

нет, дело не в точности.

 
paralocus писал(а) >>
Neutron, если я ввожу этот регулирующий коэффициент (1 - J/N) то должен ли я использовать его для всех весов, или можно использовать его, например для весов скрытого слоя, а для весов выходного нейрона - не использовать? Сейчас он у меня только для весов скрытого слоя используется. Веса более-менее стабилизировались +/-50. В качестве N я использую количество эпох.

Попробуй так и этак. Я у себя применяю его ко всем без исключения весам. Но, связано это с моей любовью к упрощению во всём, стемлению к одинаковости. Может у тебя и выгорит чего. N - количество эпох.

 

Смущает меня одна весчь:

Коррекция в этой системе происходит постоянно, вне зависимости от того, нужна она, или нет. Тем более станно это для сетки с бинарным входом.

Т.е. если знак угадан правильно, но есть разница между амплитудой на выходе сетки и тестовым сигналом, коррекция все равно происходит. А вот нужна ли она?

Ведь сетка, в данном случае, не ошиблась...

 
Neutron >>:

... Но, связано это с моей любовью к упрощению во всём, стемлению к одинаковости....

Не ветка, а мастер-класс! Благодарю за массу полезного! ОРО не занимаюсь, но рекомендации по обучению отлично работают и на PNN. Ещё раз: спасибо Neutron!

 

Спасибо, rsi, за тёплые слова. Всегда рад поделиться знаниями!

paralocus писал(а) >>

Смущает меня одна весчь:

Коррекция в этой системе происходит постоянно, вне зависимости от того, нужна она, или нет. Тем более станно это для сетки с бинарным входом.

Т.е. если знак угадан правильно, но есть разница между амплитудой на выходе сетки и тестовым сигналом, коррекция все равно происходит. А вот нужна ли она?

Ведь сетка, в данном случае, не ошиблась...

У меня так же ведёт себя.

Это и правильно, ведь сетка постоянно оттачивает точность прогноза не только сам знак...

 

Привет, Neurton! Вобщем, с двухслойкой пока не получается.

Написал однослойный перцептрон с ОРО и вчера весь день его гонял. Странно он себя ведет. То учится, то не учится и катастрофически зависит от количества эпох.

Т.е. мои результаты таковы: 8 эпох - сетка не учится, 12 эпох - сетка учится, 13 эпох - сетка не учится.

Короче результатами похвастать пока не могу.

На всякий случай распишу алгоритм, который у меня реализован. Посмотри, может я что-то упустил.


1. В перцептроне D бинарных входов, один из которых постоянный +1.

2. Используемый ВР - последовательные приращения котира по ряду Open.

3. До начала работы все веса инициализируются небольшими случайными величинами из диапазона +/-1.

4. Длинна обучающего вектора расчитывается как P = 4 * D*D /D = 4*D.

5. Обучающий вектор подается на вход сетки и вычисляется ошибка сети как Qs = Test - OUT, где Test - значение ВР на n+1, т.е. следующем, отсчете, OUT - выход сетки на n отсчете.

6. Для получения значения ошибки на входах Q ошибка сетки Qs умножается на производную сжимающей функции (1 - OUT+OUT): Q = Qs *(1 - OUT*OUT) .

7. Расчитывается и накапливается в течении всей эпохи вектор коррекции для каждого веса, входящего в нейрон COR[i] += Q*D[i]

8. Отдельно расчитывается и накапливается в течении всей эпохи квадрат ветора коррекции для каждого веса, входящего в нейрон SQR[i] += COR[i]*COR[i]

9. По окончании эпохи, для каждого веса вычисляется персональная коррекция и добавляется к этому весу W[i] += COR[i]/SQR[i]


Пробовал использовать коэффициент (1 - j/N), а так же рандомировать веса, абсолютные значения которых выросли свыше 20. Рандомирование помогает лучше.

P.S поправил ошибку в тексте

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