Вопросы по азам нейронок

 
Вчера я наконец попробовал сделать свою первую нейронку, что описана в книге Ф. Уоссермен «Нейрокомпьютерная техника» на странице 25. Самую простую - по определению четности числа. И у меня получилось. Даже замахнулся на загадку от Vinina. Но если с определением четности числа у меня справилась сеть всего из 1 нейрона с 4 входами, то задачу от Vinina она не потянула.
К сожалению, о попытках написания сеток в MQL можно пока забыть. Слишком неудобно в контроле состояния переменных (дебага нет, просмотра тоже). Пришлось делать все на родимом vc++

Но я столкнулся сразу с такими проблемами как задание представления числа и задание начальных весов.
Можете ли вы посоветовать, как лучше всего задавать начальные веса – случайной генерацией или по какой-то возрастающей прогрессии (ведь все ровно при обучении веса подкорректируются).

И вопрос №2. Какое представление числам лучше всего давать при подаче их в сеть. В случае с четностью числа мне пришлось делать двоичное представление числа. Но если я захочу классифицировать модели рынка по некоторым индикаторам, которые будут иметь вещественные значения, то, как тогда задавать их представления для сети?

Спасибо.
 
sergeev:
Вчера я наконец попробовал сделать свою первую нейронку, что описана в книге Ф. Уоссермен «Нейрокомпьютерная техника» на странице 25. Самую простую - по определению четности числа. И у меня получилось. Даже замахнулся на загадку от Vinina. Но если с определением четности числа у меня справилась сеть всего из 1 нейрона с 4 входами, то задачу от Vinina она не потянула.
К сожалению, о попытках написания сеток в MQL можно пока забыть. Слишком неудобно в контроле состояния переменных (дебага нет, просмотра тоже). Пришлось делать все на родимом vc++

Но я столкнулся сразу с такими проблемами как задание представления числа и задание начальных весов.
Можете ли вы посоветовать, как лучше всего задавать начальные веса – случайной генерацией или по какой-то возрастающей прогрессии (ведь все ровно при обучении веса подкорректируются).

И вопрос №2. Какое представление числам лучше всего давать при подаче их в сеть. В случае с четностью числа мне пришлось делать двоичное представление числа. Но если я захочу классифицировать модели рынка по некоторым индикаторам, которые будут иметь вещественные значения, то, как тогда задавать их представления для сети?

Спасибо.



Тренироваться с сетями имхо все-таки лучше начинать со специализированных (но дружественных) программ типа Нейрошелл 2.

По моему опыту инициализировать начальные веса лучше случайными величинами (зависит от сжимающей функции), для гипер тангенса - от [ -1 до 1]

Это справедливо для итеррационных методов обучения. Если использовать ГА, то начальная инициализация особой роли не играет.

Входы нужно обязательно маштабировать в диапазон (зависит от сжимающей функции), для гипер тангенса - от [ -1 до 1]

 
sergeev:
...

И вопрос №2. Какое представление числам лучше всего давать при подаче их в сеть. В случае с четностью числа мне пришлось делать двоичное представление числа. Но если я захочу классифицировать модели рынка по некоторым индикаторам, которые будут иметь вещественные значения, то, как тогда задавать их представления для сети?

Спасибо.


А Вам не кажется что вы решили задачу классификации четных и нечетных чисел еще до подачи на вход нейросети путем преобразования в двоичное представление?
 
Bones писал (а):
А Вам не кажется что вы решили задачу классификации четных и
нечетных чисел еще до подачи на вход нейросети путем преобразования
в двоичное представление?
Да так в принципе оно и есть. Для меня просто было главное удостоверится в сходимости ряда подбора весов. Что я и получил.
 
sergeev писал (а): Да так в принципе оно и есть. Для меня просто было главное удостоверится в сходимости ряда подбора весов. Что я и получил.

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