На радость нейросетевикам, быстрая и бесплатная библиотека для MT4 - страница 15

 
lasso >>:

Дополню. Или в случае краха терминала. Но решение вроде найдено.

Вопрос другой. Владислав вы вроде без "посредников" читаете С++ код.

Не могли бы прокомментировать проблему с одинаковыми ответами коммитета сетей и правильность инициализации значений весов? (подробно озвучены здесь и ещё логи, а здесь вопрос по весам)

Просмотрел коды. Рандомизация есть. Чего нет : поскольку в стандартном С\С++ генератор квази-случайных чисел, то перед каждым вызовом rand(), рекомендуют переинициализировать ядро (seed - srand(int ) - сдвинуть точку отсчета)

int rand( void );
  Return Value 
rand returns a pseudorandom number, as described above. There is no error return.

  Remarks 
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX (32767). 
Use the srand function to seed the pseudorandom-number generator before calling rand.

//------------------------------------------------

Sets a random starting point.


void srand(
   unsigned int seed 
);
  Parameters 
seed
Seed for random-number generation

  Remarks 
The srand function sets the starting point for generating a series of pseudorandom integers in the current thread. 
To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets the generator to a random 
starting point. rand retrieves the pseudorandom numbers that are generated. 
Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.

  


 
Henry_White писал(а) >>

Да. На каждую сетку входы разные, хотя это и не принципиально. Можно взять стандартный сигнал, например тот же RSI и одну сетку, и все равно на брутфорсе получите отрицательные значения при любых входах.

Начальная инициализация весов -1, 1.

На счет профайла... Вы имеете ввиду результирующий файл обученной сети?

Нет. Мы говорим о разном. Я спрашивал Вас о выходах !? Пожайлуста, вникните вот здесь. Т.е. имеем комитет из 16-ти сетей, инициализируем рандомными весами, подаем на вход каждой единый &input_vector[], в результате выходы получаю одинаковые!!! (по ссылке все логи выложены)

Вот вопрос то в чём!!!

........

Да. результирующий файл обученной сети покажите здесь, или на мыло .... Интересуют значения весов. Хорошо бы еще профайл сети сразу после инициализации, без обучения. Ок?

 
lasso >>:

Нет. Мы говорим о разном. Я спрашивал Вас о выходах !? Пожайлуста, вникните вот здесь. Т.е. имеем комитет из 16-ти сетей, инициализируем рандомными весами, подаем на вход каждой единый &input_vector[], в результате выходы получаю одинаковые!!! (по ссылке все логи выложены)

Вот вопрос то в чём!!!

........

Да. результирующий файл обученной сети покажите здесь, или на мыло .... Интересуют значения весов. Хорошо бы еще профайл сети сразу после инициализации, без обучения. Ок?

Мы действительно говорим о разных вещах )) Я вашу проблему понял. И проверил. И подтвердил, что да, такой эффект присутствует.

В своем последнем посте я написал "Еще одна странность", что означает что она никак не связана с проблемой рандомизации начальных весов и идентичностью работы комитета сеток с единым входным вектором.

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

 

Кстати, проверил инициализацию начальных весов (записал сразу после создания). Все работает. Рандомизация есть.

Но вот каккую странную запись я нашел в профайле:

layer_sizes=31 31 17 2

И это при:

ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1); при AnnInputs=30

скрытых слоев почему-то указано на один больше, чем было объявлено. Но еще больше меня смущает размер выходного слоя "2" при объявленном "1"  !!!

 
Henry_White >>:

Кстати, проверил инициализацию начальных весов (записал сразу после создания). Все работает. Рандомизация есть.

Но вот каккую странную запись я нашел в профайле:

layer_sizes=31 31 17 2

И это при:

ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1); при AnnInputs=30

скрытых слоев почему-то указано на один больше, чем было объявлено. Но еще больше меня смущает размер выходного слоя "2" при объявленном "1" !!!

Там все верно. Всего слоев 4 : входной, 2-а скрытых, выходной. В каждом слое есть bias = 1, он в "пользовательской" размерности не участвует. Это из документации по FANN.


Удачи.

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

Кстати, проверил инициализацию начальных весов (записал сразу после создания). Все работает. Рандомизация есть.

Да рандомизация весов есть. Но всё же повторюсь:

Замечено. Рандомизация от -1 до 1, а в профайле сети значения весов от -10.0е--003 до 10.0e-003

Пример: (12, -7.35577636217311400000e-003) (13, 7.63970005423449810000e-002)

Это правильно?

Поэтому и просил показать Ваши профили сетей....

 
lasso >>:

Да рандомизация весов есть. Но всё же повторюсь:

Замечено. Рандомизация от -1 до 1, а в профайле сети значения весов от -10.0е--003 до 10.0e-003

Пример: (12, -7.35577636217311400000e-003) (13, 7.63970005423449810000e-002)

Это правильно?

Поэтому и просил показать Ваши профили сетей....

Проверил - у меня значения разные и разбросаны почти равномерно. Вот одна из инициализаций :

connections (connected_to_neuron, weight)=(0, -9.94689941406250000000e-001) (1, -6.88415527343750000000e-001) (2, 6.51367187500000000000e-001) (3, -8.20678710937500000000e-001) (4, 9.83703613281250000000e-001) (5, -6.84936523437500000000e-001) (6, 3.60107421875000000000e-001) (7, 2.90527343750000000000e-001) (8, 7.54638671875000000000e-001) (9, -7.60314941406250000000e-001) (10, -7.78137207031250000000e-001) (11, 7.55432128906250000000e-001) (12, -6.61560058593750000000e-001) (13, 1.65771484375000000000e-001) (14, 5.71044921875000000000e-001) (15, -1.54785156250000000000e-001) (16, 9.85107421875000000000e-002) (17, -5.26916503906250000000e-001) (18, 8.58947753906250000000e-001) (19, -5.66528320312500000000e-001) (20, 7.31445312500000000000e-001) (21, -8.80310058593750000000e-001) (22, 6.82373046875000000000e-002)

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

(42, -6.95373535156250000000e-001) (43, -7.01538085937500000000e-001) (44, -7.38952636718750000000e-001) (45, -3.44238281250000000000e-002) (46, -1.99401855468750000000e-001) (47, 2.73132324218750000000e-001) (48, 4.53186035156250000000e-001) (49, -4.70947265625000000000e-001) (50, -7.74169921875000000000e-001) (51, -9.54711914062500000000e-001) (52, 8.09509277343750000000e-001) (53, 9.92370605468750000000e-001) (54, -4.13391113281250000000e-001) (55, 6.67297363281250000000e-001) (56, 9.59289550781250000000e-001) (57, 1.09252929687500000000e-001) (58, -3.02551269531250000000e-001) (59, -5.29785156250000000000e-001) (60, 5.85754394531250000000e-001) (61, 7.99987792968750000000e-001) (62, -1.11999511718750000000e-001) (63, -8.07495117187500000000e-001) (64, -7.08862304687500000000e-001) (65, 8.05236816406250000000e-001) (66, 2.92602539062500000000e-001) (67, 3.61633300781250000000e-001) (68, -2.99011230468750000000e-001) (69, 6.24816894531250000000e-001) (70, -7.15759277343750000000e-001) (71, -7.57202148437500000000e-001) (72, -1.31774902343750000000e-001) (73, 5.53894042968750000000e-001) (74, -3.85009765625000000000e-001) (75, -3.33618164062500000000e-001) (76, -9.58740234375000000000e-001) (77, -3.70544433593750000000e-001) (78, 8.26904296875000000000e-001)


ЗЫ Правда собирал библиотеку сам. Несколько отличается от f2M. Хотя идеология автора f2M мне понравилась и привел к похожему виду. Сегодня как раз добавил переинициализацию генератора - не знаю насколько это влияет.


 
VladislavVG писал(а) >>

Проверил - у меня значения разные и разбросаны почти равномерно. Вот одна из инициализаций :

Веса у Вас более чем корректны, а каковы значения выходов сетей при одинаковом входном векторе?

 
lasso >>:

Веса у Вас более чем корректны, а каковы значения выходов сетей при одинаковом входном векторе?

Еще не все толком оттестировал - пока работает тестер на оптимизации. Не хочу прерывать.

Могу прицепить dll, mqh и эксперта - там есть отличия от оригинальных - возможно быстрее удастся привести к рабочему виду.

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