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

 
Neutron >>:

Благо Маткад позволяет на любом шаге визуализировать процесс счёта. Экспериментируй.

А можно об этом пару слов? У меня графики строятся только по окончании всех расчетов.

 

У меня тоже:-(

Я имел в виду, что ты можешь выводить на просмотр любую интересующую тебя информацию и пердставлять её в удобном для последующего анализа виде.

 
Ты где-то писал, что на протяжении всего обучающего вектора сеть учится распознавать только n+1-вый отсчет. Следует ли понимать это так, что в течении N эпох позиция обучающего отсчета не сдвигается? Вообще-то я так и сделал(в том листинге, где была куча разных функций), то есть на протяжении всего вектора ошибка вычислялась как TEST-OUT, где TEST - это и был n+1-вый отсчет. Сейчас, в данной реализации, TEST это отсчет, следующий да последним(наибольшим) входом. Т.е. он смещается на протяжении всего сектора от d+1-го до n+1-го. Может быть здесь ошибка?
 

Щас, погоди.

Мы подаём на вход НС вектор данных длиной d, где d - число информационных входов сетки (не считая смещения). На ВЫХОД сети, для её тренировки мы подаём d+1 отсчёт. Веса у нас на этом шаге случайные. Получили на этом этапе дельту для коррекции каждого вектора. Запомнили её (ничего не корректируем). Сдвигаемся на один отсчёт и повторяем процедуру. Складываем коррекции и отдельно её квадраты. Так поступаем Р раз (без коррекции весов). Наконец, первый раз корректируем все веса, это ПЕРВАЯ эпоха обучения. Теперь, начинаем всё заново на тех же данных, но стартуем уже с найденными весами. В конце корректируем веса, это ВТОРАЯ эпоха обучения. Так поступаем 100 раз (для примера), это 100 эпох обучения. Всё. Сеть готова к предсказанию. Суём ей на вход весь вектор данных с самым свежим последним отсчётом и получаем прогноз. После прихода реального (не прогнозного) отсчёта, переобучаем сеть заново, с рандомизацией весов.

 
Тогда ошибки нет.
 

Интересная дискуссия.:) Neutron, кстати, ты так и не ответил мне на вопрос что же все таки с начальными весами? Ты сказал только о том, как ты переучиваешь сеть. Но даже без этого, если обучить хотя бы один раз сеть будет иметь погрешность и даже ощутимую. Расхождение с прогнозами бывает ну просто очень большим, это я про свой опыт работы с backprop-м говорю.:) На самом деле меня интересует только этот вопрос, все остальное в технике сетки это не главное. Комитеты сетей, как ты на это смотришь, и нужно ли это вообще, может быть как-то можно подстроить веса изначально, чтобы сетка оказывалась вблизи глобального минимума на старте обучения, чтобы комитеты просто не были нужны?

 
paralocus писал(а) >>
Тогда ошибки нет.

Я переходя от эпохи к эпохе, поджимаю каждый вес с помощью во такого "поджимателя":

Это позволяет избежать расползания весов в область насыщения и удерживает их в процессе обучения в диапазоне +/-5.

registred писал(а) >>

Neutron, кстати, ты так и не ответил мне на вопрос что же все таки с начальными весами? Ты сказал только о том, как ты переучиваешь сеть. Но даже без этого, если обучить хотя бы один раз сеть будет иметь погрешность и даже ощутимую. Расхождение с прогнозами бывает ну просто очень большим, это я про свой опыт работы с backprop-м говорю.:) На самом деле меня интересует только этот вопрос, все остальное в технике сетки это не главное. Комитеты сетей, как ты на это смотришь, и нужно ли это вообще, может быть как-то можно подстроить веса изначально, чтобы сетка оказывалась вблизи глобального минимума на старте обучения, чтобы комитеты просто не были нужны?

Начальные веса я рандомизирую случайной величиной распределённой по полочке в диапазоне +/-1. Делаю это на каждом отсчёте. Сетка, переобучаясь на каждом шаге в среднем находит именно глобальный минимум и это преимущество переобучения на каждом шаге, по сравнению с раз и на всегда обученной сеткой. Там она может случайно залезть в локальную яму и все её прогнозы будут не адекватными. В этом случае действительно важно искать способы оптимизации точки старта для весов. Я эту проблему не решал.

Что касается коммитета сетей, то это вещь полезная, но ресурсоёмкая. Можно показать, что простое увеличение числа нейронов в скрытом слое по-сути и есть коммитет, но более ресурсоёмким в обучении чем классический вариант, зато и более мощный из-за интегрированной нелинейности членов коммитета. Тут экспериментировать нужно.

 
Neutron >>:

Я переходя от эпохи к эпохе, поджимаю каждый вес с помощью во такого "поджимателя":

Это позволяет избежать расползания весов в область насыщения и удерживает их в процессе обучения в диапазоне +/-5.

Я просто интервал сжимаю при нормировке не от [-1;1], а от [-0.9;0.9] эффект тот же, насыщения нет. Я несколько о другом, начальные весовые коэффициенты в процессе подстройки весов могут просто не достичь опимальных значений из-за так называемой овражности функции. Над этим я бьюсь честно говоря. Да и у вас тоже эта проблема скорее всего не решена, поэтому что-то стоящее получить на рынке с помощью backprop сложно, даже если доказательная база неплохая для моделирования.

 
Neutron >>:

Начальные веса я рандомизирую случайной величиной распределённой по полочке в диапазоне +/-1. Делаю это на каждом отсчёте. Сетка, переобучаясь на каждом шаге в среднем находит именно глобальный минимум и это преимущество переобучения на каждом шаге, по сравнению с раз и на всегда обученной сеткой. Там она может случайно залезть в локальную яму и все её прогнозы будут не адекватными. В этом случае действительно важно искать способы оптимизации точки старта для весов. Я эту проблему не решал.

Что касается коммитета сетей, то это вещь полезная, но ресурсоёмкая. Можно показать, что простое увеличение числа нейронов в скрытом слое по-сути и есть коммитет, но более ресурсоёмким в обучении чем классический вариант, зато и более мощный из-за интегрированной нелинейности членов коммитета. Тут экспериментировать нужно.

Вот эта вещь всю малину и портит.:) Кстати, в результате моих наблюдений, наилучшая рандомизация весов, при которой сетка быстро обучается находится в интервале [-0.07; +0.07]. Незнаю, почему так.:)

 
registred писал(а) >>

Я просто интервал сжимаю при нормировке не от [-1;1], а от [-0.9;0.9] эффект тот же, насыщения нет. Я несколько о другом, начальные весовые коэффициенты в процессе подстройки весов могут просто не достичь опимальных значений из-за так называемой овражности функции. Над этим я бьюсь честно говоря. Да и у вас тоже эта проблема скорее всего не решена, поэтому что-то стоящее получить на рынке с помощью backprop сложно, даже если доказательная база неплохая для моделирования.

Тут бережённого - Бог бережёт! Процедура поджатия не сложна, обученность НС не страдает - эффективный метод.

Что касается неприменного достижения оптимальных значений, так это блеф чистой воды для наших ВР. Я понимаю, если ты прогнозируешь синусоиду! - тут да, - есть оптимальные значения. А что таковыми являются в условиях рыночного дребезга? Сейчас оптимум тут, а на следующем шаге (который ты и прогнозируешь), он - там... а ты его всеми силами искал "тут". Короче, не стоит задача точной локализации, и она решается удовлетворительно переобучением на каждом шаге.