Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
4) параметры инициализации весов - форма распределения значений и их дисперсия.
Нашел. Есть возможность задавать параметры инициализации весов.
Похоже я использовал значения по умолчанию.
Краткосрочные курсы повышения квалификации "Искусственные нейронные сети
и генетические алгоритмы"
Заканчивается прием заявок на прохождение краткосрочных курсов повышения
квалификации "Искусственные нейронные сети и генетические алгоритмы",
проводимых факультетом дополнительного образования Московского
Государственного Университета им. М.В.Ломоносова на базе НИИ ядерной
физики МГУ. Окончившим курсы МГУ выдаёт удостоверение государственного
образца о повышении квалификации.
Занятия будут проходить два раза в неделю в вечернее время с 19-00.
Начало занятий 25 февраля 2011 г.
Ознакомиться с программой курсов, получить более подробную информацию и
подать заявку для прохождения курсов Вы можете по адресу:
http://www.neuroproject.ru/kpk.php
Нашел. Есть возможность задавать параметры инициализации весов.
Похоже я использовал значения по умолчанию.
Ну, кажется, понятно в чем тут дело.
Если отталкиваться от вашей задачи (как я понимаю, у вас имеются одномерные данные, которые вы хотите разбить на два класса), то суть ее состоит в том, чтобы найти на множестве входных значений точку (всего одну!), оптимальным образом производящую указанное разбиение. Допустим, вы взяли для этого сеть 1-7-1. В этой сети количество весов равно 21 ( семь входных у скрытого слоя, семь смещений у него же и семь входов выходного нейрона). Получается, что мы пытаемся найти одну точку, подбирая при этом 21 переменную. При такой избыточности двадцать один к одному нет ничего удивительного в том, что показания сети так пляшут - любое самое малое различие в начальных весах приводит к существенному разбросу выходов после обучения. Грубо говоря, выходит, что задача слишком проста для сети, но так как сама она об этом не знает, то и ищет то, чего нет. Формально это, наверное, можно назвать переобучением, но по сути - стрельба из пушки по воробьям.
Строго говоря, задачу разбиения одномерных данных на два класса с успехом выполняет единичный нейрон с одним входным весом и одним bias'ом.
И еще. Меня настораживает "узость" диапазона актуальных выходов сети. Поясню:
-- сеть MLP 1-7-1
-- значения подаваемые на входы НС равномерно распределены в диапазоне [0;1], выходы в обучающих примерах представлены значениями 1 и -1.
Если после обучения через сеть прогнать весь диапазон значений входов, то мы увидим, что выходы сети лежат в очень узком диапазоне. Например:
opt_max_act=-0.50401336 opt_min_act=-0.50973881 step=0.0000286272901034
или даже так
opt_max_real=-0.99997914 opt_min_real=-0.99999908 step=0.00000010
.............................
Это правильно или нет?
Сложно сказать насчет правильности... зависит от ситуации
По вашему примеру:
Этот случай означает, что первая сеть на всех входах говорит "не знаю", а вторая на тех же входах "класс -1". Если данные одни и те же, а различия только в инициализации весов, то скорее всего, дело в сильной перемешанности классов ввиду чего сетки не могут толково разобрать закономерность обучения и в результате действуют "наобум". Говоря о том, каким образом это может происходить, я допускаю, что если в сети (наверное это так) использованы нейроны со смещением, то сетка просто обнуляет веса всех информационных входов и оставляет себе для анализа только bias. "Анализ", естественно, получается лишь номинальный, сеть работает по принципу страуса - она просто не видит входов. Для того, чтобы это подтвердить или опровергнуть, надо увидеть матрицы обученной сети.
Вот сгенерированный "Статистикой" код MLP НС:
Сложно сказать насчет правильности... зависит от ситуации
По вашему примеру:
Этот случай означает, что первая сеть на всех входах говорит "не знаю", а вторая на тех же входах "класс -1". Если данные одни и те же, а различия только в инициализации весов, то скорее всего, дело в сильной перемешанности классов ввиду чего сетки не могут толково разобрать закономерность обучения и в результате действуют "наобум". Говоря о том, каким образом это может происходить, я допускаю, что если в сети (наверное это так) использованы нейроны со смещением, то сетка просто обнуляет веса всех информационных входов и оставляет себе для анализа только bias. "Анализ", естественно, получается лишь номинальный, сеть работает по принципу страуса - она просто не видит входов. Для того, чтобы это подтвердить или опровергнуть, надо увидеть матрицы обученной сети.
И еще: в FANN действительно применяется bias-смещение в каждом слое, кроме входящего...
Но в описании пакета NN программы "Статистика 6" я не нашел ничего похожего на bias.
Для новичка в НС все эти разности реально выносят мозг...
Да, очень похоже на то, что я говорил, только наоборот. Сеть просто заблудилась в данных. Обрати внимание - из архитектуры сети следует, что все веса первого слоя равно равнозначны по отношению ко входным данным и должны по идее равномерно распределиться вокруг нуля - но как видишь на картинке, их загнало вверх, из-за чего нейроны скрытого слоя ушли в насыщение (у тебя логистическая функция активации). Пороги активации не спасли, т.к. они как раз таки остались в районе нуля, как и выходной нейрон, который, как и ожидалось, ничего не понял из того, что говорит ему первый - но мы уже разобрались, что с ним произошло.
Великолепно!!
Значения весов и порогов в виде диаграммы.
И совсем другой взгляд. Спасибо.
Вот сгенерированный "Статистикой" код MLP НС:
Добрый день!
Могли бы Вы подсказать в двух словах, можно ли с помощью программиста научиться компилировать dll-файл из C-файла с нейронной сетью, сгенерированного Statistica? Я имею в виду, чтобы один раз объяснили процедуру, чтобы потом делать самому по схеме. Просто уровень программирования на Basic в школе, а НС-модель для работы форех вырисовывается, но нужно регулярно сеть обновлять - читай новый dll генерировать. В коде MQL каждый раз ее корректировать - это как то сложновато.
Добрый день!
можно ли с помощью программиста научиться компилировать dll-файл из C-файла с нейронной сетью, сгенерированного Statistica?
Доброй ночи!
Думаю нет, исключение только в том случае, если только этот программист не работает в самой компании "Статистика" ))
В коде MQL каждый раз ее корректировать - это как то сложновато.
А Какой тип НС вы используете в Статистика ?
Если Вы что то корректируете руками, значит есть алгоритм, вот его и надо автоматизировать....
...............................
Выше мне рекомендовали использовать ГА, и как раз сегодня с помощью библиотеки joo (UGALib) удалось получить желаемый и стабильный результат.
Теперь буду это дело перетаскивать на 4-ку...
Андрею (автору) низкий поклон. Очень перспективное и гибкое направление.
.....................
Может стоит копнуть в эту сторону?